==> Synchronizing chroot copy [/home/alhp/workspace/chroot/root] -> [build_f62e1791-16a7-4f93-aad6-5e37beb0122b]...done
==> Making package: curl 8.23.0-1.1 (Thu Oct 15 21:21:51 2026)
==> Retrieving sources...
  -> Cloning curl git repo...
Cloning into bare repository '/home/alhp/workspace/build/x86-64-v4/curl-8.23.0-1/curl'...
==> Validating source files with sha512sums...
    curl ... Passed
==> Verifying source file signatures with gpg...
    curl git repo ... Passed
Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file.
==> Making package: curl 8.23.0-1.1 (Thu Oct 15 19:22:34 2026)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for conflicting packages...

Package (9)           New Version  Net Change

core/debuginfod       0.196-1        0.44 MiB
core/libmicrohttpd    1.0.10-1       0.62 MiB
extra/perl-error      0.17030-3      0.04 MiB
extra/perl-mailtools  2.22-3         0.10 MiB
extra/perl-timedate   2.35-1         0.15 MiB
extra/zlib-ng         2.3.3-1        0.28 MiB
extra/git             2.56.0-1      33.54 MiB
extra/patchelf        0.19.2-1       0.30 MiB
extra/valgrind        3.25.1-9      74.98 MiB

Total Installed Size:  110.46 MiB

:: Proceed with installation? [Y/n] 
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing perl-error...
installing perl-timedate...
installing perl-mailtools...
installing zlib-ng...
installing git...
Optional dependencies for git
    git-zsh-completion: upstream zsh completion
    tk: gitk and git gui
    openssh: ssh transport and crypto
    man: show help with `git command --help`
    perl-libwww: git svn
    perl-term-readkey: git svn and interactive.singlekey setting
    perl-io-socket-ssl: git send-email TLS support
    perl-authen-sasl: git send-email TLS support
    perl-cgi: gitweb (web interface) support
    python: git svn & git p4 [installed]
    subversion: git svn
    org.freedesktop.secrets: keyring credential helper
    libsecret: libsecret credential helper [installed]
    less: the default pager for git
installing patchelf...
installing libmicrohttpd...
installing debuginfod...
Optional dependencies for debuginfod
    elfutils=0.196: for translations [installed]
installing valgrind...
Optional dependencies for valgrind
    lib32-glibc: 32-bit ABI support [installed]
    python: cg_* scripts [installed]
:: Running post-transaction hooks...
(1/4) Creating system user accounts...
Creating group 'git' with GID 969.
Creating user 'git' (git daemon user) with UID 969 and GID 969.
(2/4) Reloading system manager configuration...
  Skipped: Current root is not booted.
(3/4) Arming ConditionNeedsUpdate...
(4/4) Updating the info directory file...
==> Retrieving sources...
==> WARNING: Skipping all source file integrity checks.
==> Extracting sources...
  -> Creating working copy of curl git repo...
Cloning into 'curl'...
done.
Switched to a new branch 'makepkg'
==> Starting prepare()...
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Remember to add 'LT_INIT' to configure.ac.
configure.ac:154: installing './compile'
configure.ac:544: installing './config.guess'
configure.ac:544: installing './config.sub'
configure.ac:154: installing './install-sh'
configure.ac:157: installing './missing'
docs/examples/Makefile.am: installing './depcomp'
==> Starting build()...
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable curl debug features (for developing curl)... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable HTTPSRR support... no
checking whether to enable ECH support... no
checking whether to enable SSL session export support... no
checking whether to enable HTTP/3 proxy support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking that grep -E works... yes
checking for ar... /usr/bin/ar
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C23 features... none needed
checking whether gcc understands -c and -o together... yes
checking how to run the C preprocessor... gcc -E
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for stdatomic.h... yes
checking if _Atomic is available... yes
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking xargs -n works... yes
checking whether UID '1002' is supported by ustar format... yes
checking whether GID '1002' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking dependency style of gcc... gcc3
checking curl version... 8.23.0
checking for perl... /usr/bin/perl
checking for httpd... no
checking for apache2... no
checking for apxs... no
configure: httpd/apache2 not in PATH, http tests disabled
configure: apxs not in PATH, http tests disabled
checking for danted... no
checking for danted... no
checking for sshd... no
checking for sshd... no
checking for sftp-server... no
checking for sftp-server... no
checking for nghttpx... no
checking for caddy... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for egrep -e... /usr/bin/grep -E
checking if OS is AIX (to define _ALL_SOURCE)... no
checking if _THREAD_SAFE is already defined... no
checking if _THREAD_SAFE is actually needed... no
checking if _THREAD_SAFE is onwards defined... no
checking if _REENTRANT is already defined... no
checking if _REENTRANT is actually needed... no
checking if _REENTRANT is onwards defined... no
checking for gcc option to support large files... none needed
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for file... file
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ranlib... ranlib
checking for archiver @FILE support... @
checking for strip... strip
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dlfcn.h... yes
checking which variant of shared library versioning to provide... (default) aix
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to build shared libraries with -version-info... yes
checking whether to build shared libraries with -no-undefined... no
checking whether to build shared libraries with -mimpure-text... no
checking whether to build shared libraries with PIC... yes
checking whether to build static libraries with PIC... yes
checking whether to build shared libraries only... no
checking whether to build static libraries only... no
checking for windres... no
checking if cpp -P is needed... yes
checking if cpp -P works... yes
checking if compiler is DEC/Compaq/HP C... no
checking if compiler is HP-UX C... no
checking if compiler is IBM C... no
checking if compiler is Intel C... no
checking if compiler is clang... no
checking if compiler is GNU C... yes
checking compiler version... gcc '1600' (raw: '16')
checking if compiler is SunPro C... no
checking if compiler is Tiny C... no
checking for code coverage support... no
checking whether build target is a native Windows one... no
checking if compiler accepts some basic options... yes
configure: compiler options added: -Werror-implicit-function-declaration 
checking if compiler optimizer assumed setting might be used... no
checking if compiler accepts strict warning options... yes
configure: compiler options added: -Wno-system-headers 
checking if compiler halts on compilation errors... yes
checking if compiler halts on negative sized arrays... yes
checking if compiler halts on function prototype mismatch... yes
checking if compiler supports hiding library internal symbols... yes
checking whether build target supports Win32 crypto API... no
checking whether to build libcurl and curl in "unity" mode... no
checking whether to support http... yes
checking whether to support ftp... yes
checking whether to support file... yes
checking whether to support IPFS... yes
checking whether to support ldap... no
checking whether to support ldaps... no
checking whether to support rtsp... yes
checking whether to support proxies... yes
checking whether to support dict... yes
checking whether to support telnet... yes
checking whether to support tftp... yes
checking whether to support pop3... yes
checking whether to support imap... yes
checking whether to support smtp... yes
checking whether to support gopher... yes
checking whether to support mqtt... no
checking enable curl_global_init_mem debug build... no
checking whether to provide built-in manual... no
checking whether to build documentation... yes
checking whether to enable generation of C code... yes
checking whether to use libgcc... no
checking whether to use libbacktrace... no
checking if X/Open network library is required... no
checking for gethostbyname... yes
checking whether build target is a native Windows one... (cached) no
checking for proto/bsdsocket.h... no
checking for connect in libraries... yes
checking for sys/types.h... (cached) yes
checking for monotonic clock_gettime... yes
checking for clock_gettime in libraries... no additional lib required
checking if monotonic clock_gettime works... yes
checking for sys/types.h... (cached) yes
checking for raw monotonic clock_gettime... yes
checking for pkg-config... /usr/bin/pkg-config
checking for zlib options with pkg-config... found
checking for zlib.h... yes
configure: found both libz and libz.h header
checking for BrotliDecoderDecompress in -lbrotlidec... yes
checking for brotli/decode.h... yes
checking for ZSTD_createDStream in -lzstd... yes
checking for zstd.h... yes
checking whether to enable IPv6... yes
checking if struct sockaddr_in6 has sin6_scope_id member... yes
checking if argv can be written to... yes
checking if GSS-API support is requested... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for mit-krb5-gssapi options with pkg-config... found
checking for gss.h... no
checking for gssapi/gssapi.h... yes
checking for gssapi/gssapi_generic.h... yes
checking for gssapi/gssapi_krb5.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for mit-krb5-gssapi options with pkg-config... found
configure: GSS-API MIT Kerberos version detected: 1.22.2
checking if we can link against GSS-API library... yes
checking for gss_set_neg_mechs... yes
checking whether to enable Windows native SSL/TLS... no
checking whether to enable Amiga native SSL/TLS (AmiSSL 5)... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for openssl options with pkg-config... found
configure: pkg-config: SSL_LIBS: "-lssl -lcrypto"
configure: pkg-config: SSL_LDFLAGS: ""
configure: pkg-config: SSL_CPPFLAGS: ""
checking for HMAC_Update in -lcrypto... yes
checking for SSL_connect in -lssl... yes
checking for openssl/rsa.h... yes
checking for openssl/crypto.h... yes
checking for openssl/pem.h... yes
checking for openssl/ssl.h... yes
checking for openssl/err.h... yes
checking for AWS-LC... no
checking for BoringSSL... no
checking for LibreSSL... no
checking for OpenSSL >= 3... checking for SSL_set_quic_use_legacy_codepoint... no
checking for SSL_set_quic_tls_cbs... yes
configure: OpenSSL with QUIC APIv2
checking for DES support in OpenSSL... yes
checking whether to enable Apple OS native certificate validation... no
configure: built with one SSL backend
checking whether to use native CA store... no
checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt
checking whether to use OpenSSL's built-in CA store... no
checking CA cert bundle path to embed in the curl tool... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libpsl options with pkg-config... found
checking for psl_builtin in -lpsl... yes
checking for libpsl.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libssh2 options with pkg-config... found
checking for libssh2_agent_get_identity_path in -lssh2... yes
checking for libssh2.h... yes
checking whether versioned symbols are wanted... yes
checking if libraries can be versioned... yes
checking whether to build with libidn2... (assumed) yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libidn2 options with pkg-config... found
configure: pkg-config: IDN_LIBS: "-lidn2"
configure: pkg-config: IDN_LDFLAGS: ""
configure: pkg-config: IDN_CPPFLAGS: ""
configure: pkg-config: IDN_DIR: ""
checking if idn2_lookup_ul can be linked... yes
checking for idn2.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp2 options with pkg-config... found
configure: -l is -lnghttp2
configure: -I is 
configure: -L is 
checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes
checking for nghttp2/nghttp2.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2 options with pkg-config... found
configure: -l is -lngtcp2
configure: -I is 
configure: -L is 
checking for ngtcp2_conn_client_new_versioned in -lngtcp2... yes
checking for ngtcp2/ngtcp2.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2_crypto_ossl options with pkg-config... found
configure: -l is -lngtcp2_crypto_ossl
configure: -I is 
configure: -L is 
checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_ossl... yes
checking for ngtcp2/ngtcp2_crypto.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp3 options with pkg-config... found
configure: -l is -lnghttp3
configure: -I is 
configure: -L is 
checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes
checking for nghttp3/nghttp3.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for sys/types.h... (cached) yes
checking for sys/select.h... yes
checking for sys/ioctl.h... yes
checking for unistd.h... (cached) yes
checking for arpa/inet.h... yes
checking for net/if.h... yes
checking for netinet/in.h... yes
checking for netinet/in6.h... no
checking for sys/un.h... yes
checking for linux/tcp.h... yes
checking for netinet/tcp.h... yes
checking for netinet/udp.h... yes
checking for netinet/ip.h... yes
checking for netdb.h... yes
checking for sys/sockio.h... no
checking for sys/param.h... yes
checking for termios.h... yes
checking for termio.h... no
checking for fcntl.h... yes
checking for io.h... no
checking for pwd.h... yes
checking for utime.h... yes
checking for sys/utime.h... no
checking for sys/poll.h... yes
checking for poll.h... yes
checking for sys/resource.h... yes
checking for libgen.h... yes
checking for locale.h... yes
checking for stdbool.h... yes
checking for sys/filio.h... no
checking for sys/eventfd.h... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for sys/types.h... (cached) yes
checking for struct timeval... yes
checking runtime libs availability... fine
checking size of size_t... 8
checking size of long... 8
checking size of int... 4
checking size of time_t... 8
checking size of off_t... 8
checking size of curl_off_t... 8
checking size of curl_socket_t... 4
checking for ssize_t... yes
checking for bool... yes
checking for sa_family_t... yes
checking for suseconds_t... yes
checking if time_t is unsigned... no
checking for struct sockaddr_storage... yes
checking for sys/types.h... (cached) yes
checking for recv... yes
checking for sys/types.h... (cached) yes
checking for send... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking if alarm can be linked... yes
checking if alarm is prototyped... yes
checking if alarm is compilable... yes
checking if alarm usage allowed... yes
checking if alarm might be used... yes
checking for sys/types.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for libgen.h... (cached) yes
checking if basename can be linked... yes
checking if basename is prototyped... yes
checking if basename is compilable... yes
checking if basename usage allowed... yes
checking if basename might be used... yes
checking if closesocket can be linked... no
checking if closesocket might be used... no
checking for sys/types.h... (cached) yes
checking if CloseSocket can be linked... no
checking if CloseSocket might be used... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for fcntl.h... (cached) yes
checking if fcntl can be linked... yes
checking if fcntl is prototyped... yes
checking if fcntl is compilable... yes
checking if fcntl usage allowed... yes
checking if fcntl might be used... yes
checking if fcntl O_NONBLOCK is compilable... yes
checking if fcntl O_NONBLOCK usage allowed... yes
checking if fcntl O_NONBLOCK might be used... yes
checking whether build target is a native Windows one... (cached) no
checking for sys/types.h... (cached) yes
checking for netdb.h... (cached) yes
checking if freeaddrinfo can be linked... yes
checking if freeaddrinfo is prototyped... yes
checking if freeaddrinfo is compilable... yes
checking if freeaddrinfo usage allowed... yes
checking if freeaddrinfo might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/xattr.h... yes
checking if fsetxattr can be linked... yes
checking if fsetxattr is prototyped... yes
checking if fsetxattr takes 5 args.... yes
checking if fsetxattr is compilable... yes
checking if fsetxattr usage allowed... yes
checking if fsetxattr might be used... yes
checking for sys/types.h... (cached) yes
checking if getaddrinfo can be linked... yes
checking if getaddrinfo is prototyped... yes
checking if getaddrinfo is compilable... yes
checking if getaddrinfo seems to work... yes
checking if getaddrinfo usage allowed... yes
checking if getaddrinfo might be used... yes
checking if getaddrinfo is thread-safe... yes
checking if gethostbyname_r can be linked... yes
checking if gethostbyname_r is prototyped... yes
checking if gethostbyname_r takes 3 args.... no
checking if gethostbyname_r takes 5 args.... no
checking if gethostbyname_r takes 6 args.... yes
checking if gethostbyname_r is compilable... yes
checking if gethostbyname_r usage allowed... yes
checking if gethostbyname_r might be used... yes
checking if gethostname can be linked... yes
checking if gethostname is prototyped... yes
checking if gethostname is compilable... yes
checking for gethostname arg 2 data type... size_t
checking if gethostname usage allowed... yes
checking if gethostname might be used... yes
checking for sys/types.h... (cached) yes
checking for netinet/in.h... (cached) yes
checking for ifaddrs.h... yes
checking if getifaddrs can be linked... yes
checking if getifaddrs is prototyped... yes
checking if getifaddrs is compilable... yes
checking if getifaddrs seems to work... yes
checking if getifaddrs usage allowed... yes
checking if getifaddrs might be used... yes
checking if getpeername can be linked... yes
checking if getpeername is prototyped... yes
checking if getpeername is compilable... yes
checking if getpeername usage allowed... yes
checking if getpeername might be used... yes
checking if getsockname can be linked... yes
checking if getsockname is prototyped... yes
checking if getsockname is compilable... yes
checking if getsockname usage allowed... yes
checking if getsockname might be used... yes
checking for sys/types.h... (cached) yes
checking if gmtime_r can be linked... yes
checking if gmtime_r is prototyped... yes
checking if gmtime_r is compilable... yes
checking if gmtime_r seems to work... yes
checking if gmtime_r usage allowed... yes
checking if gmtime_r might be used... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/ioctl.h... (cached) yes
checking for stropts.h... no
checking if ioctl can be linked... yes
checking if ioctl is prototyped... yes
checking if ioctl is compilable... yes
checking if ioctl usage allowed... yes
checking if ioctl might be used... yes
checking if ioctl FIONBIO is compilable... yes
checking if ioctl FIONBIO usage allowed... yes
checking if ioctl FIONBIO might be used... yes
checking if ioctl SIOCGIFADDR is compilable... yes
checking if ioctl SIOCGIFADDR usage allowed... yes
checking if ioctl SIOCGIFADDR might be used... yes
checking if ioctlsocket can be linked... no
checking if ioctlsocket might be used... no
checking if IoctlSocket can be linked... no
checking if IoctlSocket might be used... no
checking if localtime_r can be linked... yes
checking if localtime_r is prototyped... yes
checking if localtime_r is compilable... yes
checking if localtime_r seems to work... yes
checking if localtime_r usage allowed... yes
checking if localtime_r might be used... yes
checking if memrchr can be linked... yes
checking if memrchr is prototyped... yes
checking if memrchr is compilable... yes
checking if memrchr usage allowed... yes
checking if memrchr might be used... yes
checking for sys/types.h... (cached) yes
checking if sigaction can be linked... yes
checking if sigaction is prototyped... yes
checking if sigaction is compilable... yes
checking if sigaction usage allowed... yes
checking if sigaction might be used... yes
checking if siginterrupt can be linked... yes
checking if siginterrupt is prototyped... yes
checking if siginterrupt is compilable... yes
checking if siginterrupt usage allowed... yes
checking if siginterrupt might be used... yes
checking if signal can be linked... yes
checking if signal is prototyped... yes
checking if signal is compilable... yes
checking if signal usage allowed... yes
checking if signal might be used... yes
checking for sys/types.h... (cached) yes
checking if sigsetjmp can be linked... no
checking if sigsetjmp seems a macro... yes
checking if sigsetjmp is compilable... yes
checking if sigsetjmp usage allowed... yes
checking if sigsetjmp might be used... yes
checking if socket can be linked... yes
checking if socket is prototyped... yes
checking if socket is compilable... yes
checking if socket usage allowed... yes
checking if socket might be used... yes
checking if socketpair can be linked... yes
checking if socketpair is prototyped... yes
checking if socketpair is compilable... yes
checking if socketpair usage allowed... yes
checking if socketpair might be used... yes
checking if strerror_r can be linked... yes
checking if strerror_r is prototyped... yes
checking if strerror_r is compilable... yes
checking if strerror_r is glibc like... yes
checking if strerror_r seems to work... yes
checking if strerror_r usage allowed... yes
checking if strerror_r might be used... yes
checking for accept4... yes
checking for eventfd... yes
checking for fnmatch... yes
checking for geteuid... yes
checking for getpass_r... no
checking for getppid... yes
checking for getpwuid... yes
checking for getpwuid_r... yes
checking for getrlimit... yes
checking for mach_absolute_time... no
checking for pipe... yes
checking for poll... yes
checking for sendmmsg... yes
checking for sendmsg... yes
checking for setlocale... yes
checking for setrlimit... yes
checking for utime... yes
checking for utimes... yes
checking for pipe2... yes
checking for fchmod... yes
checking for gettimeofday... yes
checking for if_nametoindex... yes
checking for realpath... yes
checking for sched_yield... yes
checking if strcasecmp can be linked... yes
checking if strcasecmp is prototyped... yes
checking if strcasecmp is compilable... yes
checking if strcasecmp usage allowed... yes
checking if strcasecmp might be used... yes
checking if strcmpi can be linked... no
checking if strcmpi might be used... no
checking if stricmp can be linked... no
checking if stricmp might be used... no
checking if memset_s can be linked... no
checking if memset_s might be used... no
checking for memset_explicit... yes
checking for fseeko... yes
checking for gcc options to detect undeclared functions... none needed
checking for gcc options to ignore future-version functions... none needed
checking whether fseeko is declared... yes
checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK
checking whether to enable the threaded resolver... yes
checking for pthread.h... yes
checking for pthread_create... yes
checking for dirent.h... yes
checking for opendir... yes
checking convert -I options to -isystem... yes
checking whether to enable curl_easy_setopt()/curl_easy_getinfo() type checking... yes
checking whether to enable verbose strings... yes
checking whether to enable SSPI support (Windows native builds only)... no
checking whether to enable basic authentication method... yes
checking whether to enable bearer authentication method... yes
checking whether to enable digest authentication method... yes
checking whether to enable kerberos authentication method... yes
checking whether to enable negotiate authentication method... yes
checking whether to enable aws-sigv4 methods... yes
checking whether to enable HTTP Message Signatures (RFC 9421)... no
checking whether to support NTLM... no
checking whether to enable Unix domain sockets... auto
checking for struct sockaddr_un.sun_path... yes
checking whether to support cookies... yes
checking whether to support socketpair... yes
checking whether to support HTTP authentication... yes
checking whether to support DoH... yes
checking whether to support the MIME API... yes
checking whether to support binding connections locally... yes
checking whether to support the form API... yes
checking whether to support date parsing... yes
checking whether to support netrc parsing... yes
checking whether to support progress-meter... yes
checking whether to support the SHA-512/256 hash algorithm... yes
checking whether to support DNS shuffling... yes
checking whether to support curl_easy_option*... yes
checking whether to support alt-svc... yes
checking whether to support headers-api... yes
checking whether to support HSTS... yes
checking whether to enable HTTPS-RR support... no
checking for SSL_set0_wbio... yes
checking whether to support WebSockets... yes
checking whether hiding of library internal symbols does actually happen... yes
checking if this build supports HTTPS-proxy... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating docs/examples/Makefile
config.status: creating docs/libcurl/Makefile
config.status: creating docs/libcurl/opts/Makefile
config.status: creating docs/cmdline-opts/Makefile
config.status: creating include/Makefile
config.status: creating include/curl/Makefile
config.status: creating src/Makefile
config.status: creating lib/Makefile
config.status: creating scripts/Makefile
config.status: creating lib/libcurl.vers
config.status: creating tests/Makefile
config.status: creating tests/config
config.status: creating tests/configurehelp.pm
config.status: creating tests/certs/Makefile
config.status: creating tests/data/Makefile
config.status: creating tests/http/config.ini
config.status: creating tests/http/Makefile
config.status: creating tests/libtest/Makefile
config.status: creating tests/perf/Makefile
config.status: creating tests/server/Makefile
config.status: creating tests/tunit/Makefile
config.status: creating tests/unit/Makefile
config.status: creating projects/Makefile
config.status: creating projects/vms/Makefile
config.status: creating curl-config
config.status: creating libcurl.pc
config.status: creating lib/curl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-pc-linux-gnu
  Install prefix:   /usr
  Compiler:         gcc
   CFLAGS:          -march=x86-64-v4 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/curl -flto=auto -falign-functions=32 -Werror-implicit-function-declaration -Wno-system-headers
   CFLAGS extras:   
   CPPFLAGS:        -D_GNU_SOURCE
   LDFLAGS:         -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto -falign-functions=32
     curl-config:   
   LIBS:            -lnghttp3 -lngtcp2_crypto_ossl -lngtcp2 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lssl -lcrypto -lssl -lcrypto -lgssapi_krb5 -lzstd -lbrotlidec -lz

  curl version:     8.23.0
  SSL:              enabled (OpenSSL)
  SSH:              enabled (libssh2)
  zlib:             enabled
  brotli:           enabled (libbrotlidec)
  zstd:             enabled (libzstd)
  GSS-API:          enabled (MIT Kerberos)
  GSASL:            no       (--with-gsasl)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              enabled (libidn2)
  Build docs:       enabled  (--disable-docs)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  no       (--enable-manual)
  --libcurl option: enabled  (--disable-libcurl-option)
  Type checking:    enabled  (--disable-typecheck)
  Verbose errors:   enabled  (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no       (--enable-sspi)
  CA native:        no
  CA cert bundle:   /etc/ssl/certs/ca-certificates.crt
  CA cert path:     no
  CA cert embed:    no
  CA fallback:      no
  LDAP:             no       (--enable-ldap / --with-ldap-lib / --with-lber-lib)
  LDAPS:            no       (--enable-ldaps)
  IPFS/IPNS:        enabled
  RTSP:             enabled
  PSL:              enabled
  Alt-svc:          enabled  (--disable-alt-svc)
  Headers API:      enabled  (--disable-headers-api)
  HSTS:             enabled  (--disable-hsts)
  HTTP1:            enabled  (internal)
  HTTP2:            enabled (nghttp2)
  HTTP3:            enabled (ngtcp2 + nghttp3)
  proxy-HTTP3:      no      (--enable-proxy-http3)
  ECH:              no      (--enable-ech)
  HTTPS RR:         no      (--enable-httpsrr)
  SSLS-EXPORT:      no      (--enable-ssls-export)
  Protocols:        dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt mqtts pop3 pop3s rtsp scp sftp smtp smtps telnet tftp ws wss
  Features:         alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz PSL SPNEGO SSL threadsafe UnixSockets zstd

Making all in lib
make[1]: Entering directory '/startdir/src/build-curl/lib'
make  all-am
make[2]: Entering directory '/startdir/src/build-curl/lib'
  CC       libcurl_la-altsvc.lo
  CC       libcurl_la-amigaos.lo
  CC       libcurl_la-api.lo
  CC       libcurl_la-bufq.lo
  CC       libcurl_la-bufref.lo
  CC       libcurl_la-cf-h1-proxy.lo
  CC       libcurl_la-cf-h2-proxy.lo
  CC       libcurl_la-cf-haproxy.lo
  CC       libcurl_la-cf-https-connect.lo
  CC       libcurl_la-cf-ip-happy.lo
  CC       libcurl_la-cf-recvbuf.lo
  CC       libcurl_la-cf-setup.lo
  CC       libcurl_la-cf-socket.lo
  CC       libcurl_la-cfilters.lo
  CC       libcurl_la-conncache.lo
  CC       libcurl_la-connect.lo
  CC       libcurl_la-content_encoding.lo
  CC       libcurl_la-creds.lo
  CC       libcurl_la-cookie.lo
  CC       libcurl_la-cshutdn.lo
  CC       libcurl_la-curl_addrinfo.lo
  CC       libcurl_la-curl_fnmatch.lo
  CC       libcurl_la-curl_endian.lo
  CC       libcurl_la-curl_fopen.lo
  CC       libcurl_la-curl_get_line.lo
  CC       libcurl_la-curl_gethostname.lo
  CC       libcurl_la-curl_gssapi.lo
  CC       libcurl_la-curl_memrchr.lo
  CC       libcurl_la-curl_ntlm_core.lo
  CC       libcurl_la-curl_range.lo
  CC       libcurl_la-curl_sasl.lo
  CC       libcurl_la-curl_sha512_256.lo
  CC       libcurl_la-curl_share.lo
  CC       libcurl_la-curl_sspi.lo
  CC       libcurl_la-curl_threads.lo
  CC       libcurl_la-curl_trc.lo
  CC       libcurl_la-cw-out.lo
  CC       libcurl_la-cw-pause.lo
  CC       libcurl_la-dict.lo
  CC       libcurl_la-dynhds.lo
  CC       libcurl_la-easy.lo
  CC       libcurl_la-easygetopt.lo
  CC       libcurl_la-easyoptions.lo
  CC       libcurl_la-escape.lo
  CC       libcurl_la-fake_addrinfo.lo
  CC       libcurl_la-file.lo
  CC       libcurl_la-fileinfo.lo
  CC       libcurl_la-formdata.lo
  CC       libcurl_la-ftp.lo
  CC       libcurl_la-ftplistparser.lo
  CC       libcurl_la-getenv.lo
  CC       libcurl_la-getinfo.lo
  CC       libcurl_la-gopher.lo
  CC       libcurl_la-hash.lo
  CC       libcurl_la-headers.lo
  CC       libcurl_la-hmac.lo
  CC       libcurl_la-hsts.lo
  CC       libcurl_la-http.lo
  CC       libcurl_la-http1.lo
  CC       libcurl_la-http2.lo
  CC       libcurl_la-http_aws_sigv4.lo
  CC       libcurl_la-http_httpsig.lo
  CC       libcurl_la-curl_ed25519.lo
  CC       libcurl_la-http_chunks.lo
  CC       libcurl_la-http_digest.lo
  CC       libcurl_la-http_negotiate.lo
  CC       libcurl_la-http_ntlm.lo
  CC       libcurl_la-http_proxy.lo
  CC       libcurl_la-idn.lo
  CC       libcurl_la-if2ip.lo
  CC       libcurl_la-imap.lo
  CC       libcurl_la-ldap.lo
  CC       libcurl_la-llist.lo
  CC       libcurl_la-macos.lo
  CC       libcurl_la-md4.lo
  CC       libcurl_la-md5.lo
  CC       libcurl_la-memdebug.lo
  CC       libcurl_la-mime.lo
  CC       libcurl_la-mprintf.lo
  CC       libcurl_la-mqtt.lo
  CC       libcurl_la-multi.lo
  CC       libcurl_la-multi_ev.lo
  CC       libcurl_la-multi_ntfy.lo
  CC       libcurl_la-netrc.lo
  CC       libcurl_la-openldap.lo
  CC       libcurl_la-parsedate.lo
  CC       libcurl_la-peer.lo
  CC       libcurl_la-pingpong.lo
  CC       libcurl_la-pop3.lo
  CC       libcurl_la-progress.lo
  CC       libcurl_la-protocol.lo
  CC       libcurl_la-proxy.lo
  CC       libcurl_la-psl.lo
  CC       libcurl_la-ptrarray.lo
  CC       libcurl_la-rand.lo
  CC       libcurl_la-ratelimit.lo
  CC       libcurl_la-request.lo
  CC       libcurl_la-rtsp.lo
  CC       libcurl_la-select.lo
  CC       libcurl_la-sendf.lo
  CC       libcurl_la-setopt.lo
  CC       libcurl_la-sha256.lo
  CC       libcurl_la-slist.lo
  CC       libcurl_la-smtp.lo
  CC       libcurl_la-socketpair.lo
  CC       libcurl_la-socks.lo
  CC       libcurl_la-socks_gssapi.lo
  CC       libcurl_la-socks_sspi.lo
  CC       libcurl_la-splay.lo
  CC       libcurl_la-strcase.lo
  CC       libcurl_la-strequal.lo
  CC       libcurl_la-strerror.lo
  CC       libcurl_la-telnet.lo
  CC       libcurl_la-tftp.lo
  CC       libcurl_la-thrdqueue.lo
  CC       libcurl_la-thrdpool.lo
  CC       libcurl_la-transfer.lo
  CC       libcurl_la-u8_strset.lo
  CC       libcurl_la-u32_ptrset.lo
  CC       libcurl_la-uint-bset.lo
  CC       libcurl_la-uint-spbset.lo
  CC       libcurl_la-uint-table.lo
  CC       libcurl_la-url.lo
  CC       libcurl_la-urlapi.lo
  CC       libcurl_la-version.lo
  CC       libcurl_la-ws.lo
  CC       libcurlu_la-altsvc.lo
  CC       libcurlu_la-amigaos.lo
  CC       libcurlu_la-api.lo
  CC       libcurlu_la-bufq.lo
  CC       libcurlu_la-bufref.lo
  CC       libcurlu_la-cf-h1-proxy.lo
  CC       libcurlu_la-cf-h2-proxy.lo
  CC       libcurlu_la-cf-haproxy.lo
  CC       libcurlu_la-cf-https-connect.lo
  CC       libcurlu_la-cf-ip-happy.lo
  CC       libcurlu_la-cf-recvbuf.lo
  CC       libcurlu_la-cf-setup.lo
  CC       libcurlu_la-cf-socket.lo
  CC       libcurlu_la-cfilters.lo
  CC       libcurlu_la-conncache.lo
  CC       libcurlu_la-connect.lo
  CC       libcurlu_la-content_encoding.lo
  CC       libcurlu_la-cookie.lo
  CC       libcurlu_la-creds.lo
  CC       libcurlu_la-cshutdn.lo
  CC       libcurlu_la-curl_addrinfo.lo
  CC       libcurlu_la-curl_endian.lo
  CC       libcurlu_la-curl_fnmatch.lo
  CC       libcurlu_la-curl_fopen.lo
  CC       libcurlu_la-curl_get_line.lo
  CC       libcurlu_la-curl_gethostname.lo
  CC       libcurlu_la-curl_memrchr.lo
  CC       libcurlu_la-curl_gssapi.lo
  CC       libcurlu_la-curl_ntlm_core.lo
  CC       libcurlu_la-curl_range.lo
  CC       libcurlu_la-curl_sasl.lo
  CC       libcurlu_la-curl_sha512_256.lo
  CC       libcurlu_la-curl_share.lo
  CC       libcurlu_la-curl_sspi.lo
  CC       libcurlu_la-curl_threads.lo
  CC       libcurlu_la-curl_trc.lo
  CC       libcurlu_la-cw-out.lo
  CC       libcurlu_la-cw-pause.lo
  CC       libcurlu_la-dict.lo
  CC       libcurlu_la-dynhds.lo
  CC       libcurlu_la-easy.lo
  CC       libcurlu_la-easygetopt.lo
  CC       libcurlu_la-easyoptions.lo
  CC       libcurlu_la-escape.lo
  CC       libcurlu_la-fake_addrinfo.lo
  CC       libcurlu_la-file.lo
  CC       libcurlu_la-fileinfo.lo
  CC       libcurlu_la-formdata.lo
  CC       libcurlu_la-ftp.lo
  CC       libcurlu_la-ftplistparser.lo
  CC       libcurlu_la-getenv.lo
  CC       libcurlu_la-getinfo.lo
  CC       libcurlu_la-gopher.lo
  CC       libcurlu_la-hash.lo
  CC       libcurlu_la-headers.lo
  CC       libcurlu_la-hmac.lo
  CC       libcurlu_la-hsts.lo
  CC       libcurlu_la-http.lo
  CC       libcurlu_la-http1.lo
  CC       libcurlu_la-http2.lo
  CC       libcurlu_la-http_aws_sigv4.lo
  CC       libcurlu_la-http_httpsig.lo
  CC       libcurlu_la-curl_ed25519.lo
  CC       libcurlu_la-http_chunks.lo
  CC       libcurlu_la-http_digest.lo
  CC       libcurlu_la-http_negotiate.lo
  CC       libcurlu_la-http_ntlm.lo
  CC       libcurlu_la-http_proxy.lo
  CC       libcurlu_la-idn.lo
  CC       libcurlu_la-if2ip.lo
  CC       libcurlu_la-imap.lo
  CC       libcurlu_la-ldap.lo
  CC       libcurlu_la-llist.lo
  CC       libcurlu_la-macos.lo
  CC       libcurlu_la-md4.lo
  CC       libcurlu_la-md5.lo
  CC       libcurlu_la-memdebug.lo
  CC       libcurlu_la-mime.lo
  CC       libcurlu_la-mprintf.lo
  CC       libcurlu_la-mqtt.lo
  CC       libcurlu_la-multi.lo
  CC       libcurlu_la-multi_ev.lo
  CC       libcurlu_la-multi_ntfy.lo
  CC       libcurlu_la-netrc.lo
  CC       libcurlu_la-parsedate.lo
  CC       libcurlu_la-openldap.lo
  CC       libcurlu_la-peer.lo
  CC       libcurlu_la-pingpong.lo
  CC       libcurlu_la-pop3.lo
  CC       libcurlu_la-progress.lo
  CC       libcurlu_la-protocol.lo
  CC       libcurlu_la-proxy.lo
  CC       libcurlu_la-psl.lo
  CC       libcurlu_la-ptrarray.lo
  CC       libcurlu_la-rand.lo
  CC       libcurlu_la-ratelimit.lo
  CC       libcurlu_la-request.lo
  CC       libcurlu_la-rtsp.lo
  CC       libcurlu_la-select.lo
  CC       libcurlu_la-sendf.lo
  CC       libcurlu_la-setopt.lo
  CC       libcurlu_la-sha256.lo
  CC       libcurlu_la-slist.lo
  CC       libcurlu_la-smtp.lo
  CC       libcurlu_la-socketpair.lo
  CC       libcurlu_la-socks.lo
  CC       libcurlu_la-socks_gssapi.lo
  CC       libcurlu_la-socks_sspi.lo
  CC       libcurlu_la-splay.lo
  CC       libcurlu_la-strcase.lo
  CC       libcurlu_la-strequal.lo
  CC       libcurlu_la-strerror.lo
  CC       libcurlu_la-telnet.lo
  CC       libcurlu_la-tftp.lo
  CC       libcurlu_la-thrdpool.lo
  CC       libcurlu_la-thrdqueue.lo
  CC       libcurlu_la-transfer.lo
  CC       libcurlu_la-u8_strset.lo
  CC       libcurlu_la-u32_ptrset.lo
  CC       libcurlu_la-uint-bset.lo
  CC       libcurlu_la-uint-spbset.lo
  CC       libcurlu_la-uint-table.lo
  CC       libcurlu_la-url.lo
  CC       libcurlu_la-urlapi.lo
  CC       libcurlu_la-version.lo
  CC       libcurlu_la-ws.lo
  CC       vauth/libcurlu_la-cleartext.lo
  CC       vauth/libcurlu_la-cram.lo
  CC       vauth/libcurlu_la-digest.lo
  CC       vauth/libcurlu_la-digest_sspi.lo
  CC       vauth/libcurlu_la-gsasl.lo
  CC       vauth/libcurlu_la-krb5_gssapi.lo
  CC       vauth/libcurlu_la-krb5_sspi.lo
  CC       vauth/libcurlu_la-ntlm.lo
  CC       vauth/libcurlu_la-ntlm_sspi.lo
  CC       vauth/libcurlu_la-oauth2.lo
  CC       vauth/libcurlu_la-spnego_gssapi.lo
  CC       vauth/libcurlu_la-spnego_sspi.lo
  CC       vauth/libcurlu_la-vauth.lo
  CC       vdns/libcurlu_la-asyn-ares.lo
  CC       vdns/libcurlu_la-asyn-base.lo
  CC       vdns/libcurlu_la-asyn-thrdd.lo
  CC       vdns/libcurlu_la-cf-dns.lo
  CC       vdns/libcurlu_la-dnscache.lo
  CC       vdns/libcurlu_la-doh.lo
  CC       vdns/libcurlu_la-hostip.lo
  CC       vdns/libcurlu_la-hostip4.lo
  CC       vdns/libcurlu_la-hostip6.lo
  CC       vdns/libcurlu_la-httpsrr.lo
  CC       vtls/libcurlu_la-apple.lo
  CC       vtls/libcurlu_la-cipher_suite.lo
  CC       vtls/libcurlu_la-gtls.lo
  CC       vtls/libcurlu_la-hostcheck.lo
  CC       vtls/libcurlu_la-keylog.lo
  CC       vtls/libcurlu_la-mbedtls.lo
  CC       vtls/libcurlu_la-openssl.lo
  CC       vtls/libcurlu_la-rustls.lo
  CC       vtls/libcurlu_la-schannel.lo
  CC       vtls/libcurlu_la-schannel_verify.lo
  CC       vtls/libcurlu_la-vtls.lo
  CC       vtls/libcurlu_la-vtls_config.lo
  CC       vtls/libcurlu_la-vtls_scache.lo
  CC       vtls/libcurlu_la-vtls_spack.lo
  CC       vtls/libcurlu_la-wolfssl.lo
  CC       vtls/libcurlu_la-x509asn1.lo
  CC       vquic/libcurlu_la-capsule.lo
  CC       vquic/libcurlu_la-cf-capsule.lo
  CC       vquic/libcurlu_la-cf-ngtcp2.lo
  CC       vquic/libcurlu_la-cf-ngtcp2-cmn.lo
  CC       vquic/libcurlu_la-cf-ngtcp2-proxy.lo
  CC       vquic/libcurlu_la-cf-quiche.lo
  CC       vquic/libcurlu_la-vquic.lo
  CC       vquic/libcurlu_la-vquic-tls.lo
  CC       vssh/libcurlu_la-libssh.lo
  CC       vssh/libcurlu_la-libssh2.lo
  CC       vssh/libcurlu_la-vssh.lo
  CC       curlx/libcurlu_la-base64.lo
  CC       curlx/libcurlu_la-basename.lo
  CC       curlx/libcurlu_la-dynbuf.lo
  CC       curlx/libcurlu_la-win32-fopen.lo
  CC       curlx/libcurlu_la-inet_ntop.lo
  CC       curlx/libcurlu_la-inet_pton.lo
  CC       curlx/libcurlu_la-multibyte.lo
  CC       curlx/libcurlu_la-nonblock.lo
  CC       curlx/libcurlu_la-snprintf.lo
  CC       curlx/libcurlu_la-strcopy.lo
  CC       curlx/libcurlu_la-strdup.lo
  CC       curlx/libcurlu_la-strerr.lo
  CC       curlx/libcurlu_la-strparse.lo
  CC       curlx/libcurlu_la-timediff.lo
  CC       curlx/libcurlu_la-timeval.lo
  CC       curlx/libcurlu_la-version_win32.lo
  CC       curlx/libcurlu_la-wait.lo
  CC       curlx/libcurlu_la-warnless.lo
  CC       curlx/libcurlu_la-winapi.lo
  CC       vauth/libcurl_la-cleartext.lo
  CC       vauth/libcurl_la-cram.lo
  CC       vauth/libcurl_la-digest.lo
  CC       vauth/libcurl_la-digest_sspi.lo
  CC       vauth/libcurl_la-gsasl.lo
  CC       vauth/libcurl_la-krb5_gssapi.lo
  CC       vauth/libcurl_la-krb5_sspi.lo
  CC       vauth/libcurl_la-ntlm.lo
  CC       vauth/libcurl_la-ntlm_sspi.lo
  CC       vauth/libcurl_la-oauth2.lo
  CC       vauth/libcurl_la-spnego_gssapi.lo
  CC       vauth/libcurl_la-spnego_sspi.lo
  CC       vauth/libcurl_la-vauth.lo
  CC       vdns/libcurl_la-asyn-ares.lo
  CC       vdns/libcurl_la-asyn-base.lo
  CC       vdns/libcurl_la-asyn-thrdd.lo
  CC       vdns/libcurl_la-cf-dns.lo
  CC       vdns/libcurl_la-dnscache.lo
  CC       vdns/libcurl_la-doh.lo
  CC       vdns/libcurl_la-hostip.lo
  CC       vdns/libcurl_la-hostip4.lo
  CC       vdns/libcurl_la-hostip6.lo
  CC       vdns/libcurl_la-httpsrr.lo
  CC       vtls/libcurl_la-apple.lo
  CC       vtls/libcurl_la-cipher_suite.lo
  CC       vtls/libcurl_la-gtls.lo
  CC       vtls/libcurl_la-hostcheck.lo
  CC       vtls/libcurl_la-keylog.lo
  CC       vtls/libcurl_la-mbedtls.lo
  CC       vtls/libcurl_la-openssl.lo
  CC       vtls/libcurl_la-rustls.lo
  CC       vtls/libcurl_la-schannel.lo
  CC       vtls/libcurl_la-schannel_verify.lo
  CC       vtls/libcurl_la-vtls.lo
  CC       vtls/libcurl_la-vtls_config.lo
  CC       vtls/libcurl_la-vtls_scache.lo
  CC       vtls/libcurl_la-vtls_spack.lo
  CC       vtls/libcurl_la-wolfssl.lo
  CC       vtls/libcurl_la-x509asn1.lo
  CC       vquic/libcurl_la-capsule.lo
  CC       vquic/libcurl_la-cf-capsule.lo
  CC       vquic/libcurl_la-cf-ngtcp2.lo
  CC       vquic/libcurl_la-cf-ngtcp2-cmn.lo
  CC       vquic/libcurl_la-cf-ngtcp2-proxy.lo
  CC       vquic/libcurl_la-cf-quiche.lo
  CC       vquic/libcurl_la-vquic.lo
  CC       vquic/libcurl_la-vquic-tls.lo
  CC       vssh/libcurl_la-libssh.lo
  CC       vssh/libcurl_la-libssh2.lo
  CC       vssh/libcurl_la-vssh.lo
  CC       curlx/libcurl_la-base64.lo
  CC       curlx/libcurl_la-basename.lo
  CC       curlx/libcurl_la-dynbuf.lo
  CC       curlx/libcurl_la-win32-fopen.lo
  CC       curlx/libcurl_la-inet_ntop.lo
  CC       curlx/libcurl_la-inet_pton.lo
  CC       curlx/libcurl_la-multibyte.lo
  CC       curlx/libcurl_la-nonblock.lo
  CC       curlx/libcurl_la-snprintf.lo
  CC       curlx/libcurl_la-strcopy.lo
  CC       curlx/libcurl_la-strdup.lo
  CC       curlx/libcurl_la-strerr.lo
  CC       curlx/libcurl_la-strparse.lo
  CC       curlx/libcurl_la-timediff.lo
  CC       curlx/libcurl_la-timeval.lo
  CC       curlx/libcurl_la-version_win32.lo
  CC       curlx/libcurl_la-wait.lo
  CC       curlx/libcurl_la-warnless.lo
  CC       curlx/libcurl_la-winapi.lo
  CCLD     libcurlu.la
  CCLD     libcurl.la
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c: In function 'inet_pton6':
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:180:19: warning: writing 32 bytes into a region of size 0 [-Wstringop-overflow=]
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:115:17: note: at offset [-9223372036854775760, -16] into destination object 'tmp' of size 16
make[2]: Leaving directory '/startdir/src/build-curl/lib'
make[1]: Leaving directory '/startdir/src/build-curl/lib'
Making all in docs
make[1]: Entering directory '/startdir/src/build-curl/docs'
  RENDER  mk-ca-bundle.1
  RENDER  curl-config.1
Making all in .
make[2]: Entering directory '/startdir/src/build-curl/docs'
  RENDER  wcurl.1
make[2]: Leaving directory '/startdir/src/build-curl/docs'
Making all in cmdline-opts
make[2]: Entering directory '/startdir/src/build-curl/docs/cmdline-opts'
  GENERATE curl.1
  GENERATE curl.txt
make[2]: Leaving directory '/startdir/src/build-curl/docs/cmdline-opts'
Making all in libcurl
make[2]: Entering directory '/startdir/src/build-curl/docs/libcurl'
Making all in opts
make[3]: Entering directory '/startdir/src/build-curl/docs/libcurl/opts'
  RENDER  CURLINFO_ACTIVESOCKET.3
  RENDER  CURLINFO_APPCONNECT_TIME.3
  RENDER  CURLINFO_APPCONNECT_TIME_T.3
  RENDER  CURLINFO_CAINFO.3
  RENDER  CURLINFO_CAPATH.3
  RENDER  CURLINFO_CERTINFO.3
  RENDER  CURLINFO_CONDITION_UNMET.3
  RENDER  CURLINFO_CONNECT_TIME.3
  RENDER  CURLINFO_CONN_ID.3
  RENDER  CURLINFO_CONNECT_TIME_T.3
  RENDER  CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
  RENDER  CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
  RENDER  CURLINFO_CONTENT_LENGTH_UPLOAD.3
  RENDER  CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
  RENDER  CURLINFO_CONTENT_TYPE.3
  RENDER  CURLINFO_COOKIELIST.3
  RENDER  CURLINFO_EARLYDATA_SENT_T.3
  RENDER  CURLINFO_EFFECTIVE_METHOD.3
  RENDER  CURLINFO_EFFECTIVE_URL.3
  RENDER  CURLINFO_FILETIME.3
  RENDER  CURLINFO_FILETIME_T.3
  RENDER  CURLINFO_FTP_ENTRY_PATH.3
  RENDER  CURLINFO_HEADER_SIZE.3
  RENDER  CURLINFO_HTTP_CONNECTCODE.3
  RENDER  CURLINFO_HTTP_VERSION.3
  RENDER  CURLINFO_HTTPAUTH_AVAIL.3
  RENDER  CURLINFO_HTTPAUTH_USED.3
  RENDER  CURLINFO_LASTSOCKET.3
  RENDER  CURLINFO_LOCAL_IP.3
  RENDER  CURLINFO_LOCAL_PORT.3
  RENDER  CURLINFO_NAMELOOKUP_TIME.3
  RENDER  CURLINFO_NAMELOOKUP_TIME_T.3
  RENDER  CURLINFO_NUM_CONNECTS.3
  RENDER  CURLINFO_OS_ERRNO.3
  RENDER  CURLINFO_PRETRANSFER_TIME.3
  RENDER  CURLINFO_PRETRANSFER_TIME_T.3
  RENDER  CURLINFO_POSTTRANSFER_TIME_T.3
  RENDER  CURLINFO_PRIMARY_IP.3
  RENDER  CURLINFO_PRIMARY_PORT.3
  RENDER  CURLINFO_PRIVATE.3
  RENDER  CURLINFO_PROTOCOL.3
  RENDER  CURLINFO_PROXY_ERROR.3
  RENDER  CURLINFO_PROXY_SSL_VERIFYRESULT.3
  RENDER  CURLINFO_PROXYAUTH_AVAIL.3
  RENDER  CURLINFO_PROXYAUTH_USED.3
  RENDER  CURLINFO_QUEUE_TIME_T.3
  RENDER  CURLINFO_REDIRECT_COUNT.3
  RENDER  CURLINFO_REDIRECT_TIME.3
  RENDER  CURLINFO_REDIRECT_TIME_T.3
  RENDER  CURLINFO_REDIRECT_URL.3
  RENDER  CURLINFO_REFERER.3
  RENDER  CURLINFO_REQUEST_SIZE.3
  RENDER  CURLINFO_RESPONSE_CODE.3
  RENDER  CURLINFO_RETRY_AFTER.3
  RENDER  CURLINFO_RTSP_CLIENT_CSEQ.3
  RENDER  CURLINFO_RTSP_CSEQ_RECV.3
  RENDER  CURLINFO_RTSP_SERVER_CSEQ.3
  RENDER  CURLINFO_RTSP_SESSION_ID.3
  RENDER  CURLINFO_SCHEME.3
  RENDER  CURLINFO_SIZE_DELIVERED.3
  RENDER  CURLINFO_SIZE_DOWNLOAD.3
  RENDER  CURLINFO_SIZE_DOWNLOAD_T.3
  RENDER  CURLINFO_SIZE_UPLOAD.3
  RENDER  CURLINFO_SIZE_UPLOAD_T.3
  RENDER  CURLINFO_SPEED_DOWNLOAD.3
  RENDER  CURLINFO_SPEED_DOWNLOAD_T.3
  RENDER  CURLINFO_SPEED_UPLOAD.3
  RENDER  CURLINFO_SPEED_UPLOAD_T.3
  RENDER  CURLINFO_SSL_ENGINES.3
  RENDER  CURLINFO_SSL_VERIFYRESULT.3
  RENDER  CURLINFO_STARTTRANSFER_TIME.3
  RENDER  CURLINFO_STARTTRANSFER_TIME_T.3
  RENDER  CURLINFO_TLS_SESSION.3
  RENDER  CURLINFO_TLS_SSL_PTR.3
  RENDER  CURLINFO_TOTAL_TIME.3
  RENDER  CURLINFO_TOTAL_TIME_T.3
  RENDER  CURLINFO_USED_PROXY.3
  RENDER  CURLINFO_XFER_ID.3
  RENDER  CURLMINFO_XFERS_ADDED.3
  RENDER  CURLMINFO_XFERS_CURRENT.3
  RENDER  CURLMINFO_XFERS_DONE.3
  RENDER  CURLMINFO_XFERS_PENDING.3
  RENDER  CURLMINFO_XFERS_RUNNING.3
  RENDER  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
  RENDER  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
  RENDER  CURLMOPT_MAX_CONCURRENT_STREAMS.3
  RENDER  CURLMOPT_MAX_HOST_CONNECTIONS.3
  RENDER  CURLMOPT_MAX_PIPELINE_LENGTH.3
  RENDER  CURLMOPT_MAX_TOTAL_CONNECTIONS.3
  RENDER  CURLMOPT_MAXCONNECTS.3
  RENDER  CURLMOPT_NETWORK_CHANGED.3
  RENDER  CURLMOPT_NOTIFYDATA.3
  RENDER  CURLMOPT_NOTIFYFUNCTION.3
  RENDER  CURLMOPT_PIPELINING.3
  RENDER  CURLMOPT_PIPELINING_SERVER_BL.3
  RENDER  CURLMOPT_PIPELINING_SITE_BL.3
  RENDER  CURLMOPT_PUSHDATA.3
  RENDER  CURLMOPT_PUSHFUNCTION.3
  RENDER  CURLMOPT_QUICK_EXIT.3
  RENDER  CURLMOPT_RESOLVE_THREADS_MAX.3
  RENDER  CURLMOPT_SOCKETDATA.3
  RENDER  CURLMOPT_SOCKETFUNCTION.3
  RENDER  CURLMOPT_TIMERDATA.3
  RENDER  CURLMOPT_TIMERFUNCTION.3
  RENDER  CURLOPT_ACCEPT_ENCODING.3
  RENDER  CURLOPT_ABSTRACT_UNIX_SOCKET.3
  RENDER  CURLOPT_ACCEPTTIMEOUT_MS.3
  RENDER  CURLOPT_ADDRESS_SCOPE.3
  RENDER  CURLOPT_ALTSVC.3
  RENDER  CURLOPT_ALTSVC_CTRL.3
  RENDER  CURLOPT_APPEND.3
  RENDER  CURLOPT_AUTOREFERER.3
  RENDER  CURLOPT_AWS_SIGV4.3
  RENDER  CURLOPT_BUFFERSIZE.3
  RENDER  CURLOPT_CAINFO.3
  RENDER  CURLOPT_CAINFO_BLOB.3
  RENDER  CURLOPT_CAPATH.3
  RENDER  CURLOPT_CA_CACHE_TIMEOUT.3
  RENDER  CURLOPT_CERTINFO.3
  RENDER  CURLOPT_CHUNK_BGN_FUNCTION.3
  RENDER  CURLOPT_CHUNK_DATA.3
  RENDER  CURLOPT_CHUNK_END_FUNCTION.3
  RENDER  CURLOPT_CLOSESOCKETDATA.3
  RENDER  CURLOPT_CLOSESOCKETFUNCTION.3
  RENDER  CURLOPT_CONNECT_ONLY.3
  RENDER  CURLOPT_CONNECT_TO.3
  RENDER  CURLOPT_CONNECTTIMEOUT.3
  RENDER  CURLOPT_CONNECTTIMEOUT_MS.3
  RENDER  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
  RENDER  CURLOPT_CONV_FROM_UTF8_FUNCTION.3
  RENDER  CURLOPT_CONV_TO_NETWORK_FUNCTION.3
  RENDER  CURLOPT_COOKIE.3
  RENDER  CURLOPT_COOKIEFILE.3
  RENDER  CURLOPT_COOKIEJAR.3
  RENDER  CURLOPT_COOKIELIST.3
  RENDER  CURLOPT_COOKIESESSION.3
  RENDER  CURLOPT_COPYPOSTFIELDS.3
  RENDER  CURLOPT_CRLF.3
  RENDER  CURLOPT_CRLFILE.3
  RENDER  CURLOPT_CURLU.3
  RENDER  CURLOPT_CUSTOMREQUEST.3
  RENDER  CURLOPT_DEBUGDATA.3
  RENDER  CURLOPT_DEBUGFUNCTION.3
  RENDER  CURLOPT_DEFAULT_PROTOCOL.3
  RENDER  CURLOPT_DIRLISTONLY.3
  RENDER  CURLOPT_DISALLOW_USERNAME_IN_URL.3
  RENDER  CURLOPT_DNS_CACHE_TIMEOUT.3
  RENDER  CURLOPT_DNS_INTERFACE.3
  RENDER  CURLOPT_DNS_LOCAL_IP4.3
  RENDER  CURLOPT_DNS_LOCAL_IP6.3
  RENDER  CURLOPT_DNS_SERVERS.3
  RENDER  CURLOPT_DNS_SHUFFLE_ADDRESSES.3
  RENDER  CURLOPT_DNS_USE_GLOBAL_CACHE.3
  RENDER  CURLOPT_DOH_SSL_VERIFYHOST.3
  RENDER  CURLOPT_DOH_SSL_VERIFYPEER.3
  RENDER  CURLOPT_DOH_SSL_VERIFYSTATUS.3
  RENDER  CURLOPT_DOH_URL.3
  RENDER  CURLOPT_ECH.3
  RENDER  CURLOPT_EGDSOCKET.3
  RENDER  CURLOPT_ERRORBUFFER.3
  RENDER  CURLOPT_EXPECT_100_TIMEOUT_MS.3
  RENDER  CURLOPT_FAILONERROR.3
  RENDER  CURLOPT_FILETIME.3
  RENDER  CURLOPT_FNMATCH_DATA.3
  RENDER  CURLOPT_FNMATCH_FUNCTION.3
  RENDER  CURLOPT_FOLLOWLOCATION.3
  RENDER  CURLOPT_FORBID_REUSE.3
  RENDER  CURLOPT_FRESH_CONNECT.3
  RENDER  CURLOPT_FTP_ACCOUNT.3
  RENDER  CURLOPT_FTP_ALTERNATIVE_TO_USER.3
  RENDER  CURLOPT_FTP_CREATE_MISSING_DIRS.3
  RENDER  CURLOPT_FTP_FILEMETHOD.3
  RENDER  CURLOPT_FTP_SKIP_PASV_IP.3
  RENDER  CURLOPT_FTP_SSL_CCC.3
  RENDER  CURLOPT_FTP_USE_EPRT.3
  RENDER  CURLOPT_FTP_USE_EPSV.3
  RENDER  CURLOPT_FTP_USE_PRET.3
  RENDER  CURLOPT_FTPPORT.3
  RENDER  CURLOPT_FTPSSLAUTH.3
  RENDER  CURLOPT_GSSAPI_DELEGATION.3
  RENDER  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
  RENDER  CURLOPT_HAPROXYPROTOCOL.3
  RENDER  CURLOPT_HAPROXY_CLIENT_IP.3
  RENDER  CURLOPT_HEADER.3
  RENDER  CURLOPT_HEADERDATA.3
  RENDER  CURLOPT_HEADERFUNCTION.3
  RENDER  CURLOPT_HEADEROPT.3
  RENDER  CURLOPT_HSTS.3
  RENDER  CURLOPT_HSTS_CTRL.3
  RENDER  CURLOPT_HSTSREADDATA.3
  RENDER  CURLOPT_HSTSREADFUNCTION.3
  RENDER  CURLOPT_HSTSWRITEDATA.3
  RENDER  CURLOPT_HSTSWRITEFUNCTION.3
  RENDER  CURLOPT_HTTP09_ALLOWED.3
  RENDER  CURLOPT_HTTP200ALIASES.3
  RENDER  CURLOPT_HTTP_CONTENT_DECODING.3
  RENDER  CURLOPT_HTTP_TRANSFER_DECODING.3
  RENDER  CURLOPT_HTTP_VERSION.3
  RENDER  CURLOPT_HTTPAUTH.3
  RENDER  CURLOPT_HTTPGET.3
  RENDER  CURLOPT_HTTPHEADER.3
  RENDER  CURLOPT_HTTPPOST.3
  RENDER  CURLOPT_HTTPPROXYTUNNEL.3
  RENDER  CURLOPT_HTTPSIG_ALGORITHM.3
  RENDER  CURLOPT_HTTPSIG_HEADERS.3
  RENDER  CURLOPT_HTTPSIG_KEY.3
  RENDER  CURLOPT_HTTPSIG_KEYID.3
  RENDER  CURLOPT_IGNORE_CONTENT_LENGTH.3
  RENDER  CURLOPT_INFILESIZE.3
  RENDER  CURLOPT_INFILESIZE_LARGE.3
  RENDER  CURLOPT_INTERFACE.3
  RENDER  CURLOPT_INTERLEAVEDATA.3
  RENDER  CURLOPT_INTERLEAVEFUNCTION.3
  RENDER  CURLOPT_IOCTLDATA.3
  RENDER  CURLOPT_IOCTLFUNCTION.3
  RENDER  CURLOPT_IPRESOLVE.3
  RENDER  CURLOPT_ISSUERCERT.3
  RENDER  CURLOPT_ISSUERCERT_BLOB.3
  RENDER  CURLOPT_KEEP_SENDING_ON_ERROR.3
  RENDER  CURLOPT_KEYPASSWD.3
  RENDER  CURLOPT_KRBLEVEL.3
  RENDER  CURLOPT_LOCALPORT.3
  RENDER  CURLOPT_LOCALPORTRANGE.3
  RENDER  CURLOPT_LOGIN_OPTIONS.3
  RENDER  CURLOPT_LOW_SPEED_LIMIT.3
  RENDER  CURLOPT_LOW_SPEED_TIME.3
  RENDER  CURLOPT_MAIL_AUTH.3
  RENDER  CURLOPT_MAIL_FROM.3
  RENDER  CURLOPT_MAIL_RCPT.3
  RENDER  CURLOPT_MAIL_RCPT_ALLOWFAILS.3
  RENDER  CURLOPT_MAX_RECV_SPEED_LARGE.3
  RENDER  CURLOPT_MAX_SEND_SPEED_LARGE.3
  RENDER  CURLOPT_MAXAGE_CONN.3
  RENDER  CURLOPT_MAXCONNECTS.3
  RENDER  CURLOPT_MAXFILESIZE.3
  RENDER  CURLOPT_MAXFILESIZE_LARGE.3
  RENDER  CURLOPT_MAXLIFETIME_CONN.3
  RENDER  CURLOPT_MAXREDIRS.3
  RENDER  CURLOPT_MIME_OPTIONS.3
  RENDER  CURLOPT_MIMEPOST.3
  RENDER  CURLOPT_NETRC.3
  RENDER  CURLOPT_NETRC_FILE.3
  RENDER  CURLOPT_NEW_DIRECTORY_PERMS.3
  RENDER  CURLOPT_NEW_FILE_PERMS.3
  RENDER  CURLOPT_NOBODY.3
  RENDER  CURLOPT_NOPROGRESS.3
  RENDER  CURLOPT_NOPROXY.3
  RENDER  CURLOPT_NOSIGNAL.3
  RENDER  CURLOPT_OPENSOCKETDATA.3
  RENDER  CURLOPT_OPENSOCKETFUNCTION.3
  RENDER  CURLOPT_PASSWORD.3
  RENDER  CURLOPT_PATH_AS_IS.3
  RENDER  CURLOPT_PINNEDPUBLICKEY.3
  RENDER  CURLOPT_PIPEWAIT.3
  RENDER  CURLOPT_PORT.3
  RENDER  CURLOPT_POST.3
  RENDER  CURLOPT_POSTFIELDS.3
  RENDER  CURLOPT_POSTFIELDSIZE.3
  RENDER  CURLOPT_POSTFIELDSIZE_LARGE.3
  RENDER  CURLOPT_POSTQUOTE.3
  RENDER  CURLOPT_POSTREDIR.3
  RENDER  CURLOPT_PRE_PROXY.3
  RENDER  CURLOPT_PREQUOTE.3
  RENDER  CURLOPT_PREREQDATA.3
  RENDER  CURLOPT_PREREQFUNCTION.3
  RENDER  CURLOPT_PRIVATE.3
  RENDER  CURLOPT_PROGRESSDATA.3
  RENDER  CURLOPT_PROGRESSFUNCTION.3
  RENDER  CURLOPT_PROTOCOLS.3
  RENDER  CURLOPT_PROTOCOLS_STR.3
  RENDER  CURLOPT_PROXY.3
  RENDER  CURLOPT_PROXY_CAINFO.3
  RENDER  CURLOPT_PROXY_CAINFO_BLOB.3
  RENDER  CURLOPT_PROXY_CAPATH.3
  RENDER  CURLOPT_PROXY_CRLFILE.3
  RENDER  CURLOPT_PROXY_ISSUERCERT.3
  RENDER  CURLOPT_PROXY_ISSUERCERT_BLOB.3
  RENDER  CURLOPT_PROXY_KEYPASSWD.3
  RENDER  CURLOPT_PROXY_PINNEDPUBLICKEY.3
  RENDER  CURLOPT_PROXY_SERVICE_NAME.3
  RENDER  CURLOPT_PROXY_SSL_CIPHER_LIST.3
  RENDER  CURLOPT_PROXY_SSL_OPTIONS.3
  RENDER  CURLOPT_PROXY_SSL_VERIFYHOST.3
  RENDER  CURLOPT_PROXY_SSL_VERIFYPEER.3
  RENDER  CURLOPT_PROXY_SSLCERT.3
  RENDER  CURLOPT_PROXY_SSLCERT_BLOB.3
  RENDER  CURLOPT_PROXY_SSLCERTTYPE.3
  RENDER  CURLOPT_PROXY_SSLKEY.3
  RENDER  CURLOPT_PROXY_SSLKEY_BLOB.3
  RENDER  CURLOPT_PROXY_SSLKEYTYPE.3
  RENDER  CURLOPT_PROXY_SSLVERSION.3
  RENDER  CURLOPT_PROXY_TLS13_CIPHERS.3
  RENDER  CURLOPT_PROXY_TLSAUTH_PASSWORD.3
  RENDER  CURLOPT_PROXY_TLSAUTH_TYPE.3
  RENDER  CURLOPT_PROXY_TLSAUTH_USERNAME.3
  RENDER  CURLOPT_PROXY_TRANSFER_MODE.3
  RENDER  CURLOPT_PROXYAUTH.3
  RENDER  CURLOPT_PROXYHEADER.3
  RENDER  CURLOPT_PROXYPASSWORD.3
  RENDER  CURLOPT_PROXYPORT.3
  RENDER  CURLOPT_PROXYTYPE.3
  RENDER  CURLOPT_PROXYUSERNAME.3
  RENDER  CURLOPT_PROXYUSERPWD.3
  RENDER  CURLOPT_PUT.3
  RENDER  CURLOPT_QUICK_EXIT.3
  RENDER  CURLOPT_QUOTE.3
  RENDER  CURLOPT_RANDOM_FILE.3
  RENDER  CURLOPT_RANGE.3
  RENDER  CURLOPT_READDATA.3
  RENDER  CURLOPT_READFUNCTION.3
  RENDER  CURLOPT_REDIR_PROTOCOLS.3
  RENDER  CURLOPT_REDIR_PROTOCOLS_STR.3
  RENDER  CURLOPT_REFERER.3
  RENDER  CURLOPT_REQUEST_TARGET.3
  RENDER  CURLOPT_RESOLVE.3
  RENDER  CURLOPT_RESOLVER_START_DATA.3
  RENDER  CURLOPT_RESOLVER_START_FUNCTION.3
  RENDER  CURLOPT_RESUME_FROM.3
  RENDER  CURLOPT_RESUME_FROM_LARGE.3
  RENDER  CURLOPT_RTSP_CLIENT_CSEQ.3
  RENDER  CURLOPT_RTSP_REQUEST.3
  RENDER  CURLOPT_RTSP_SERVER_CSEQ.3
  RENDER  CURLOPT_RTSP_SESSION_ID.3
  RENDER  CURLOPT_RTSP_STREAM_URI.3
  RENDER  CURLOPT_RTSP_TRANSPORT.3
  RENDER  CURLOPT_SASL_AUTHZID.3
  RENDER  CURLOPT_SASL_IR.3
  RENDER  CURLOPT_SEEKDATA.3
  RENDER  CURLOPT_SERVER_RESPONSE_TIMEOUT.3
  RENDER  CURLOPT_SEEKFUNCTION.3
  RENDER  CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.3
  RENDER  CURLOPT_SHARE.3
  RENDER  CURLOPT_SERVICE_NAME.3
  RENDER  CURLOPT_SOCKOPTDATA.3
  RENDER  CURLOPT_SOCKOPTFUNCTION.3
  RENDER  CURLOPT_SOCKS5_AUTH.3
  RENDER  CURLOPT_SOCKS5_GSSAPI_SERVICE.3
  RENDER  CURLOPT_SOCKS5_GSSAPI_NEC.3
  RENDER  CURLOPT_SSH_AUTH_TYPES.3
  RENDER  CURLOPT_SSH_COMPRESSION.3
  RENDER  CURLOPT_SSH_HOSTKEYDATA.3
  RENDER  CURLOPT_SSH_HOSTKEYFUNCTION.3
  RENDER  CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
  RENDER  CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3
  RENDER  CURLOPT_SSH_KEYDATA.3
  RENDER  CURLOPT_SSH_KEYFUNCTION.3
  RENDER  CURLOPT_SSH_KNOWNHOSTS.3
  RENDER  CURLOPT_SSH_PRIVATE_KEYFILE.3
  RENDER  CURLOPT_SSH_PUBLIC_KEYFILE.3
  RENDER  CURLOPT_SSL_CIPHER_LIST.3
  RENDER  CURLOPT_SSL_CTX_DATA.3
  RENDER  CURLOPT_SSL_CTX_FUNCTION.3
  RENDER  CURLOPT_SSL_EC_CURVES.3
  RENDER  CURLOPT_SSL_ENABLE_ALPN.3
  RENDER  CURLOPT_SSL_ENABLE_NPN.3
  RENDER  CURLOPT_SSL_FALSESTART.3
  RENDER  CURLOPT_SSL_OPTIONS.3
  RENDER  CURLOPT_SSL_SESSIONID_CACHE.3
  RENDER  CURLOPT_SSL_SIGNATURE_ALGORITHMS.3
  RENDER  CURLOPT_SSL_VERIFYHOST.3
  RENDER  CURLOPT_SSL_VERIFYPEER.3
  RENDER  CURLOPT_SSL_VERIFYSTATUS.3
  RENDER  CURLOPT_SSLCERT.3
  RENDER  CURLOPT_SSLCERT_BLOB.3
  RENDER  CURLOPT_SSLCERTTYPE.3
  RENDER  CURLOPT_SSLENGINE.3
  RENDER  CURLOPT_SSLENGINE_DEFAULT.3
  RENDER  CURLOPT_SSLKEY.3
  RENDER  CURLOPT_SSLKEY_BLOB.3
  RENDER  CURLOPT_SSLKEYTYPE.3
  RENDER  CURLOPT_SSLVERSION.3
  RENDER  CURLOPT_STDERR.3
  RENDER  CURLOPT_STREAM_DEPENDS.3
  RENDER  CURLOPT_STREAM_DEPENDS_E.3
  RENDER  CURLOPT_STREAM_WEIGHT.3
  RENDER  CURLOPT_SUPPRESS_CONNECT_HEADERS.3
  RENDER  CURLOPT_TCP_FASTOPEN.3
  RENDER  CURLOPT_TCP_KEEPALIVE.3
  RENDER  CURLOPT_TCP_KEEPIDLE.3
  RENDER  CURLOPT_TCP_KEEPINTVL.3
  RENDER  CURLOPT_TCP_KEEPCNT.3
  RENDER  CURLOPT_TCP_NODELAY.3
  RENDER  CURLOPT_TELNETOPTIONS.3
  RENDER  CURLOPT_TFTP_BLKSIZE.3
  RENDER  CURLOPT_TFTP_NO_OPTIONS.3
  RENDER  CURLOPT_TIMECONDITION.3
  RENDER  CURLOPT_TIMEOUT.3
  RENDER  CURLOPT_TIMEOUT_MS.3
  RENDER  CURLOPT_TIMEVALUE.3
  RENDER  CURLOPT_TIMEVALUE_LARGE.3
  RENDER  CURLOPT_TLSAUTH_PASSWORD.3
  RENDER  CURLOPT_TLS13_CIPHERS.3
  RENDER  CURLOPT_TLSAUTH_TYPE.3
  RENDER  CURLOPT_TLSAUTH_USERNAME.3
  RENDER  CURLOPT_TRAILERDATA.3
  RENDER  CURLOPT_TRAILERFUNCTION.3
  RENDER  CURLOPT_TRANSFER_ENCODING.3
  RENDER  CURLOPT_TRANSFERTEXT.3
  RENDER  CURLOPT_UNIX_SOCKET_PATH.3
  RENDER  CURLOPT_UNRESTRICTED_AUTH.3
  RENDER  CURLOPT_UPKEEP_INTERVAL_MS.3
  RENDER  CURLOPT_UPLOAD.3
  RENDER  CURLOPT_UPLOAD_BUFFERSIZE.3
  RENDER  CURLOPT_UPLOAD_FLAGS.3
  RENDER  CURLOPT_URL.3
  RENDER  CURLOPT_USE_SSL.3
  RENDER  CURLOPT_USERAGENT.3
  RENDER  CURLOPT_USERNAME.3
  RENDER  CURLOPT_USERPWD.3
  RENDER  CURLOPT_VERBOSE.3
  RENDER  CURLOPT_WILDCARDMATCH.3
  RENDER  CURLOPT_WRITEDATA.3
  RENDER  CURLOPT_WRITEFUNCTION.3
  RENDER  CURLOPT_WS_OPTIONS.3
  RENDER  CURLOPT_XFERINFODATA.3
  RENDER  CURLOPT_XFERINFOFUNCTION.3
  RENDER  CURLOPT_XOAUTH2_BEARER.3
  RENDER  CURLSHOPT_LOCKFUNC.3
  RENDER  CURLSHOPT_SHARE.3
  RENDER  CURLSHOPT_UNLOCKFUNC.3
  RENDER  CURLSHOPT_UNSHARE.3
  RENDER  CURLSHOPT_USERDATA.3
make[3]: Leaving directory '/startdir/src/build-curl/docs/libcurl/opts'
make[3]: Entering directory '/startdir/src/build-curl/docs/libcurl'
  RENDER  curl_easy_cleanup.3
  RENDER  curl_easy_duphandle.3
  RENDER  curl_easy_escape.3
  RENDER  curl_easy_getinfo.3
  RENDER  curl_easy_header.3
  RENDER  curl_easy_init.3
  RENDER  curl_easy_nextheader.3
  RENDER  curl_easy_option_by_id.3
  RENDER  curl_easy_option_by_name.3
  RENDER  curl_easy_option_next.3
  RENDER  curl_easy_pause.3
  RENDER  curl_easy_perform.3
  RENDER  curl_easy_recv.3
  RENDER  curl_easy_reset.3
  RENDER  curl_easy_send.3
  RENDER  curl_easy_setopt.3
  RENDER  curl_easy_ssls_export.3
  RENDER  curl_easy_ssls_import.3
  RENDER  curl_easy_strerror.3
  RENDER  curl_easy_unescape.3
  RENDER  curl_easy_upkeep.3
  RENDER  curl_escape.3
  RENDER  curl_formadd.3
  RENDER  curl_formfree.3
  RENDER  curl_formget.3
  RENDER  curl_free.3
  RENDER  curl_getdate.3
  RENDER  curl_getenv.3
  RENDER  curl_global_cleanup.3
  RENDER  curl_global_init.3
  RENDER  curl_global_init_mem.3
  RENDER  curl_global_sslset.3
  RENDER  curl_mime_addpart.3
  RENDER  curl_global_trace.3
  RENDER  curl_mime_data.3
  RENDER  curl_mime_data_cb.3
  RENDER  curl_mime_encoder.3
  RENDER  curl_mime_filedata.3
  RENDER  curl_mime_filename.3
  RENDER  curl_mime_free.3
  RENDER  curl_mime_headers.3
  RENDER  curl_mime_init.3
  RENDER  curl_mime_name.3
  RENDER  curl_mime_subparts.3
  RENDER  curl_mime_type.3
  RENDER  curl_mprintf.3
  RENDER  curl_multi_add_handle.3
  RENDER  curl_multi_assign.3
  RENDER  curl_multi_cleanup.3
  RENDER  curl_multi_fdset.3
  RENDER  curl_multi_get_handles.3
  RENDER  curl_multi_get_offt.3
  RENDER  curl_multi_info_read.3
  RENDER  curl_multi_notify_disable.3
  RENDER  curl_multi_init.3
  RENDER  curl_multi_notify_enable.3
  RENDER  curl_multi_perform.3
  RENDER  curl_multi_poll.3
  RENDER  curl_multi_remove_handle.3
  RENDER  curl_multi_setopt.3
  RENDER  curl_multi_socket.3
  RENDER  curl_multi_socket_action.3
  RENDER  curl_multi_socket_all.3
  RENDER  curl_multi_strerror.3
  RENDER  curl_multi_timeout.3
  RENDER  curl_multi_wait.3
  RENDER  curl_multi_waitfds.3
  RENDER  curl_multi_wakeup.3
  RENDER  curl_pushheader_byname.3
  RENDER  curl_pushheader_bynum.3
  RENDER  curl_share_cleanup.3
  RENDER  curl_share_init.3
  RENDER  curl_share_setopt.3
  RENDER  curl_share_strerror.3
  RENDER  curl_slist_append.3
  RENDER  curl_slist_free_all.3
  RENDER  curl_strequal.3
  RENDER  curl_strnequal.3
  RENDER  curl_unescape.3
  RENDER  curl_url.3
  RENDER  curl_url_cleanup.3
  RENDER  curl_url_dup.3
  RENDER  curl_url_get.3
  RENDER  curl_url_set.3
  RENDER  curl_url_strerror.3
  RENDER  curl_version.3
  RENDER  curl_version_info.3
  RENDER  curl_ws_meta.3
  RENDER  curl_ws_recv.3
  RENDER  curl_ws_send.3
  RENDER  curl_ws_start_frame.3
  RENDER  libcurl-easy.3
  RENDER  libcurl-env-dbg.3
  RENDER  libcurl-env.3
  RENDER  libcurl-errors.3
  RENDER  libcurl-multi.3
  RENDER  libcurl-security.3
  RENDER  libcurl-share.3
  RENDER  libcurl-symbols.md
  RENDER  libcurl-thread.3
  RENDER  libcurl-tutorial.3
  RENDER  libcurl-url.3
  RENDER  libcurl-ws.3
  RENDER  libcurl.3
  RENDER  libcurl-symbols.3
make[3]: Leaving directory '/startdir/src/build-curl/docs/libcurl'
make[2]: Leaving directory '/startdir/src/build-curl/docs/libcurl'
make[1]: Leaving directory '/startdir/src/build-curl/docs'
Making all in src
make[1]: Entering directory '/startdir/src/build-curl/src'
  CC       curl-config2setopts.o
  CC       curl-slist_wc.o
  CC       curl-terminal.o
  CC       curl-tool_cb_dbg.o
  CC       curl-tool_cb_hdr.o
  CC       curl-tool_cb_prg.o
  CC       curl-tool_cb_rea.o
  CC       curl-tool_cb_soc.o
  CC       curl-tool_cb_see.o
  CC       curl-tool_cb_wrt.o
  CC       curl-tool_cfgable.o
  CC       curl-tool_dirhie.o
  CC       curl-tool_doswin.o
  CC       curl-tool_easysrc.o
  CC       curl-tool_filetime.o
  CC       curl-tool_findfile.o
  CC       curl-tool_formparse.o
  CC       curl-tool_getparam.o
  CC       curl-tool_getpass.o
  CC       curl-tool_help.o
  CC       curl-tool_helpers.o
  CC       curl-tool_ipfs.o
  CC       curl-tool_libinfo.o
  CC       curl-tool_listhelp.o
  CC       curl-tool_msgs.o
  CC       curl-tool_main.o
  CC       curl-tool_operate.o
  CC       curl-tool_operhlp.o
  CC       curl-tool_paramhlp.o
  CC       curl-tool_parsecfg.o
  CC       curl-tool_progress.o
  CC       curl-tool_setopt.o
  CC       curl-tool_ssls.o
  CC       curl-tool_stderr.o
  CC       curl-tool_urlglob.o
  CC       curl-tool_util.o
  CC       curl-tool_vms.o
  CC       curl-tool_writeout.o
  CC       curl-tool_writeout_json.o
  CC       curl-tool_xattr.o
  CC       curl-var.o
echo '/* !checksrc! disable COPYRIGHT all */' > tool_hugehelp.c;   \
echo '#include "tool_hugehelp.h"' >> tool_hugehelp.c
echo '/* !checksrc! disable COPYRIGHT all */' > tool_ca_embed.c
echo 'extern const void *curl_ca_embed; const void *curl_ca_embed;' >> tool_ca_embed.c
  CC       ../lib/curlx/curl-base64.o
  CC       ../lib/curlx/curl-basename.o
  CC       ../lib/curlx/curl-dynbuf.o
  CC       ../lib/curlx/curl-win32-fopen.o
  CC       ../lib/curlx/curl-multibyte.o
  CC       ../lib/curlx/curl-nonblock.o
  CC       ../lib/curlx/curl-strcopy.o
  CC       ../lib/curlx/curl-strdup.o
  CC       ../lib/curlx/curl-strerr.o
  CC       ../lib/curlx/curl-strparse.o
  CC       ../lib/curlx/curl-timediff.o
  CC       ../lib/curlx/curl-timeval.o
  CC       ../lib/curlx/curl-version_win32.o
  CC       ../lib/curlx/curl-wait.o
  CC       ../lib/curlx/curl-warnless.o
  CC       ../lib/curlx/curl-winapi.o
  CC       curlinfo.o
  CC       libcurltool_la-config2setopts.lo
  CC       libcurltool_la-slist_wc.lo
  CC       libcurltool_la-terminal.lo
  CC       libcurltool_la-tool_cb_dbg.lo
  CC       libcurltool_la-tool_cb_hdr.lo
  CC       libcurltool_la-tool_cb_prg.lo
  CC       libcurltool_la-tool_cb_rea.lo
  CC       libcurltool_la-tool_cb_see.lo
  CC       libcurltool_la-tool_cb_soc.lo
  CC       libcurltool_la-tool_cb_wrt.lo
  CC       libcurltool_la-tool_cfgable.lo
  CC       libcurltool_la-tool_dirhie.lo
  CC       libcurltool_la-tool_doswin.lo
  CC       libcurltool_la-tool_easysrc.lo
  CC       libcurltool_la-tool_filetime.lo
  CC       libcurltool_la-tool_findfile.lo
  CC       libcurltool_la-tool_formparse.lo
  CC       libcurltool_la-tool_getparam.lo
  CC       libcurltool_la-tool_getpass.lo
  CC       libcurltool_la-tool_help.lo
  CC       libcurltool_la-tool_helpers.lo
  CC       libcurltool_la-tool_ipfs.lo
  CC       libcurltool_la-tool_libinfo.lo
  CC       libcurltool_la-tool_listhelp.lo
  CC       libcurltool_la-tool_main.lo
  CC       libcurltool_la-tool_msgs.lo
  CC       libcurltool_la-tool_operate.lo
  CC       libcurltool_la-tool_operhlp.lo
  CC       libcurltool_la-tool_paramhlp.lo
  CC       libcurltool_la-tool_parsecfg.lo
  CC       libcurltool_la-tool_progress.lo
  CC       libcurltool_la-tool_setopt.lo
  CC       libcurltool_la-tool_ssls.lo
  CC       libcurltool_la-tool_stderr.lo
  CC       libcurltool_la-tool_urlglob.lo
  CC       libcurltool_la-tool_util.lo
  CC       libcurltool_la-tool_vms.lo
  CC       libcurltool_la-tool_writeout.lo
  CC       libcurltool_la-tool_writeout_json.lo
  CC       libcurltool_la-tool_xattr.lo
  CC       libcurltool_la-var.lo
  CC       toolx/libcurltool_la-tool_time.lo
  CC       ../lib/curlx/libcurltool_la-base64.lo
  CC       ../lib/curlx/libcurltool_la-basename.lo
  CC       ../lib/curlx/libcurltool_la-dynbuf.lo
  CC       ../lib/curlx/libcurltool_la-win32-fopen.lo
  CC       ../lib/curlx/libcurltool_la-multibyte.lo
  CC       ../lib/curlx/libcurltool_la-nonblock.lo
  CC       ../lib/curlx/libcurltool_la-strcopy.lo
  CC       ../lib/curlx/libcurltool_la-strdup.lo
  CC       ../lib/curlx/libcurltool_la-strerr.lo
  CC       ../lib/curlx/libcurltool_la-strparse.lo
  CC       ../lib/curlx/libcurltool_la-timediff.lo
  CC       ../lib/curlx/libcurltool_la-timeval.lo
  CC       ../lib/curlx/libcurltool_la-version_win32.lo
  CC       ../lib/curlx/libcurltool_la-wait.lo
  CC       ../lib/curlx/libcurltool_la-warnless.lo
  CC       ../lib/curlx/libcurltool_la-winapi.lo
  CC       toolx/curl-tool_time.o
  CC       curl-tool_hugehelp.o
  CC       curl-tool_ca_embed.o
  CCLD     curlinfo
  CCLD     curl
  CCLD     libcurltool.la
make[1]: Leaving directory '/startdir/src/build-curl/src'
Making all in scripts
make[1]: Entering directory '/startdir/src/build-curl/scripts'
/usr/bin/perl /startdir/src/curl/scripts/completion.pl --opts-dir /startdir/src/curl/docs/cmdline-opts --shell zsh > _curl
/usr/bin/perl /startdir/src/curl/scripts/completion.pl --opts-dir /startdir/src/curl/docs/cmdline-opts --shell fish > curl.fish
make[1]: Leaving directory '/startdir/src/build-curl/scripts'
make[1]: Entering directory '/startdir/src/build-curl'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/startdir/src/build-curl'
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable curl debug features (for developing curl)... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable HTTPSRR support... no
checking whether to enable ECH support... no
checking whether to enable SSL session export support... no
checking whether to enable HTTP/3 proxy support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking that grep -E works... yes
checking for ar... /usr/bin/ar
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C23 features... none needed
checking whether gcc understands -c and -o together... yes
checking how to run the C preprocessor... gcc -E
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for stdatomic.h... yes
checking if _Atomic is available... yes
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking xargs -n works... yes
checking whether UID '1002' is supported by ustar format... yes
checking whether GID '1002' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking dependency style of gcc... gcc3
checking curl version... 8.23.0
checking for perl... /usr/bin/perl
checking for httpd... no
checking for apache2... no
checking for apxs... no
configure: httpd/apache2 not in PATH, http tests disabled
configure: apxs not in PATH, http tests disabled
checking for danted... no
checking for danted... no
checking for sshd... no
checking for sshd... no
checking for sftp-server... no
checking for sftp-server... no
checking for nghttpx... no
checking for caddy... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for egrep -e... /usr/bin/grep -E
checking if OS is AIX (to define _ALL_SOURCE)... no
checking if _THREAD_SAFE is already defined... no
checking if _THREAD_SAFE is actually needed... no
checking if _THREAD_SAFE is onwards defined... no
checking if _REENTRANT is already defined... no
checking if _REENTRANT is actually needed... no
checking if _REENTRANT is onwards defined... no
checking for gcc option to support large files... none needed
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for file... file
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ranlib... ranlib
checking for archiver @FILE support... @
checking for strip... strip
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dlfcn.h... yes
checking which variant of shared library versioning to provide... (default) aix
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to build shared libraries with -version-info... yes
checking whether to build shared libraries with -no-undefined... no
checking whether to build shared libraries with -mimpure-text... no
checking whether to build shared libraries with PIC... yes
checking whether to build static libraries with PIC... yes
checking whether to build shared libraries only... no
checking whether to build static libraries only... no
checking for windres... no
checking if cpp -P is needed... yes
checking if cpp -P works... yes
checking if compiler is DEC/Compaq/HP C... no
checking if compiler is HP-UX C... no
checking if compiler is IBM C... no
checking if compiler is Intel C... no
checking if compiler is clang... no
checking if compiler is GNU C... yes
checking compiler version... gcc '1600' (raw: '16')
checking if compiler is SunPro C... no
checking if compiler is Tiny C... no
checking for code coverage support... no
checking whether build target is a native Windows one... no
checking if compiler accepts some basic options... yes
configure: compiler options added: -Werror-implicit-function-declaration 
checking if compiler optimizer assumed setting might be used... no
checking if compiler accepts strict warning options... yes
configure: compiler options added: -Wno-system-headers 
checking if compiler halts on compilation errors... yes
checking if compiler halts on negative sized arrays... yes
checking if compiler halts on function prototype mismatch... yes
checking if compiler supports hiding library internal symbols... yes
checking whether build target supports Win32 crypto API... no
checking whether to build libcurl and curl in "unity" mode... no
checking whether to support http... yes
checking whether to support ftp... yes
checking whether to support file... yes
checking whether to support IPFS... yes
checking whether to support ldap... no
checking whether to support ldaps... no
checking whether to support rtsp... yes
checking whether to support proxies... yes
checking whether to support dict... yes
checking whether to support telnet... yes
checking whether to support tftp... yes
checking whether to support pop3... yes
checking whether to support imap... yes
checking whether to support smtp... yes
checking whether to support gopher... yes
checking whether to support mqtt... no
checking enable curl_global_init_mem debug build... no
checking whether to provide built-in manual... no
checking whether to build documentation... yes
checking whether to enable generation of C code... yes
checking whether to use libgcc... no
checking whether to use libbacktrace... no
checking if X/Open network library is required... no
checking for gethostbyname... yes
checking whether build target is a native Windows one... (cached) no
checking for proto/bsdsocket.h... no
checking for connect in libraries... yes
checking for sys/types.h... (cached) yes
checking for monotonic clock_gettime... yes
checking for clock_gettime in libraries... no additional lib required
checking if monotonic clock_gettime works... yes
checking for sys/types.h... (cached) yes
checking for raw monotonic clock_gettime... yes
checking for pkg-config... /usr/bin/pkg-config
checking for zlib options with pkg-config... found
checking for zlib.h... yes
configure: found both libz and libz.h header
checking for BrotliDecoderDecompress in -lbrotlidec... yes
checking for brotli/decode.h... yes
checking for ZSTD_createDStream in -lzstd... yes
checking for zstd.h... yes
checking whether to enable IPv6... yes
checking if struct sockaddr_in6 has sin6_scope_id member... yes
checking if argv can be written to... yes
checking if GSS-API support is requested... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for mit-krb5-gssapi options with pkg-config... found
checking for gss.h... no
checking for gssapi/gssapi.h... yes
checking for gssapi/gssapi_generic.h... yes
checking for gssapi/gssapi_krb5.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for mit-krb5-gssapi options with pkg-config... found
configure: GSS-API MIT Kerberos version detected: 1.22.2
checking if we can link against GSS-API library... yes
checking for gss_set_neg_mechs... yes
checking whether to enable Windows native SSL/TLS... no
checking whether to enable Amiga native SSL/TLS (AmiSSL 5)... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for openssl options with pkg-config... found
configure: pkg-config: SSL_LIBS: "-lssl -lcrypto"
configure: pkg-config: SSL_LDFLAGS: ""
configure: pkg-config: SSL_CPPFLAGS: ""
checking for HMAC_Update in -lcrypto... yes
checking for SSL_connect in -lssl... yes
checking for openssl/rsa.h... yes
checking for openssl/crypto.h... yes
checking for openssl/pem.h... yes
checking for openssl/ssl.h... yes
checking for openssl/err.h... yes
checking for AWS-LC... no
checking for BoringSSL... no
checking for LibreSSL... no
checking for OpenSSL >= 3... checking for SSL_set_quic_use_legacy_codepoint... no
checking for SSL_set_quic_tls_cbs... yes
configure: OpenSSL with QUIC APIv2
checking for DES support in OpenSSL... yes
checking whether to enable Apple OS native certificate validation... no
configure: built with one SSL backend
checking whether to use native CA store... no
checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt
checking whether to use OpenSSL's built-in CA store... no
checking CA cert bundle path to embed in the curl tool... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libpsl options with pkg-config... found
checking for psl_builtin in -lpsl... yes
checking for libpsl.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libssh2 options with pkg-config... found
checking for libssh2_agent_get_identity_path in -lssh2... yes
checking for libssh2.h... yes
checking whether versioned symbols are wanted... no
checking whether to build with libidn2... (assumed) yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libidn2 options with pkg-config... found
configure: pkg-config: IDN_LIBS: "-lidn2"
configure: pkg-config: IDN_LDFLAGS: ""
configure: pkg-config: IDN_CPPFLAGS: ""
configure: pkg-config: IDN_DIR: ""
checking if idn2_lookup_ul can be linked... yes
checking for idn2.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp2 options with pkg-config... found
configure: -l is -lnghttp2
configure: -I is 
configure: -L is 
checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes
checking for nghttp2/nghttp2.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2 options with pkg-config... found
configure: -l is -lngtcp2
configure: -I is 
configure: -L is 
checking for ngtcp2_conn_client_new_versioned in -lngtcp2... yes
checking for ngtcp2/ngtcp2.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2_crypto_ossl options with pkg-config... found
configure: -l is -lngtcp2_crypto_ossl
configure: -I is 
configure: -L is 
checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_ossl... yes
checking for ngtcp2/ngtcp2_crypto.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp3 options with pkg-config... found
configure: -l is -lnghttp3
configure: -I is 
configure: -L is 
checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes
checking for nghttp3/nghttp3.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for sys/types.h... (cached) yes
checking for sys/select.h... yes
checking for sys/ioctl.h... yes
checking for unistd.h... (cached) yes
checking for arpa/inet.h... yes
checking for net/if.h... yes
checking for netinet/in.h... yes
checking for netinet/in6.h... no
checking for sys/un.h... yes
checking for linux/tcp.h... yes
checking for netinet/tcp.h... yes
checking for netinet/udp.h... yes
checking for netinet/ip.h... yes
checking for netdb.h... yes
checking for sys/sockio.h... no
checking for sys/param.h... yes
checking for termios.h... yes
checking for termio.h... no
checking for fcntl.h... yes
checking for io.h... no
checking for pwd.h... yes
checking for utime.h... yes
checking for sys/utime.h... no
checking for sys/poll.h... yes
checking for poll.h... yes
checking for sys/resource.h... yes
checking for libgen.h... yes
checking for locale.h... yes
checking for stdbool.h... yes
checking for sys/filio.h... no
checking for sys/eventfd.h... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for sys/types.h... (cached) yes
checking for struct timeval... yes
checking runtime libs availability... fine
checking size of size_t... 8
checking size of long... 8
checking size of int... 4
checking size of time_t... 8
checking size of off_t... 8
checking size of curl_off_t... 8
checking size of curl_socket_t... 4
checking for ssize_t... yes
checking for bool... yes
checking for sa_family_t... yes
checking for suseconds_t... yes
checking if time_t is unsigned... no
checking for struct sockaddr_storage... yes
checking for sys/types.h... (cached) yes
checking for recv... yes
checking for sys/types.h... (cached) yes
checking for send... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking if alarm can be linked... yes
checking if alarm is prototyped... yes
checking if alarm is compilable... yes
checking if alarm usage allowed... yes
checking if alarm might be used... yes
checking for sys/types.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for libgen.h... (cached) yes
checking if basename can be linked... yes
checking if basename is prototyped... yes
checking if basename is compilable... yes
checking if basename usage allowed... yes
checking if basename might be used... yes
checking if closesocket can be linked... no
checking if closesocket might be used... no
checking for sys/types.h... (cached) yes
checking if CloseSocket can be linked... no
checking if CloseSocket might be used... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for fcntl.h... (cached) yes
checking if fcntl can be linked... yes
checking if fcntl is prototyped... yes
checking if fcntl is compilable... yes
checking if fcntl usage allowed... yes
checking if fcntl might be used... yes
checking if fcntl O_NONBLOCK is compilable... yes
checking if fcntl O_NONBLOCK usage allowed... yes
checking if fcntl O_NONBLOCK might be used... yes
checking whether build target is a native Windows one... (cached) no
checking for sys/types.h... (cached) yes
checking for netdb.h... (cached) yes
checking if freeaddrinfo can be linked... yes
checking if freeaddrinfo is prototyped... yes
checking if freeaddrinfo is compilable... yes
checking if freeaddrinfo usage allowed... yes
checking if freeaddrinfo might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/xattr.h... yes
checking if fsetxattr can be linked... yes
checking if fsetxattr is prototyped... yes
checking if fsetxattr takes 5 args.... yes
checking if fsetxattr is compilable... yes
checking if fsetxattr usage allowed... yes
checking if fsetxattr might be used... yes
checking for sys/types.h... (cached) yes
checking if getaddrinfo can be linked... yes
checking if getaddrinfo is prototyped... yes
checking if getaddrinfo is compilable... yes
checking if getaddrinfo seems to work... yes
checking if getaddrinfo usage allowed... yes
checking if getaddrinfo might be used... yes
checking if getaddrinfo is thread-safe... yes
checking if gethostbyname_r can be linked... yes
checking if gethostbyname_r is prototyped... yes
checking if gethostbyname_r takes 3 args.... no
checking if gethostbyname_r takes 5 args.... no
checking if gethostbyname_r takes 6 args.... yes
checking if gethostbyname_r is compilable... yes
checking if gethostbyname_r usage allowed... yes
checking if gethostbyname_r might be used... yes
checking if gethostname can be linked... yes
checking if gethostname is prototyped... yes
checking if gethostname is compilable... yes
checking for gethostname arg 2 data type... size_t
checking if gethostname usage allowed... yes
checking if gethostname might be used... yes
checking for sys/types.h... (cached) yes
checking for netinet/in.h... (cached) yes
checking for ifaddrs.h... yes
checking if getifaddrs can be linked... yes
checking if getifaddrs is prototyped... yes
checking if getifaddrs is compilable... yes
checking if getifaddrs seems to work... yes
checking if getifaddrs usage allowed... yes
checking if getifaddrs might be used... yes
checking if getpeername can be linked... yes
checking if getpeername is prototyped... yes
checking if getpeername is compilable... yes
checking if getpeername usage allowed... yes
checking if getpeername might be used... yes
checking if getsockname can be linked... yes
checking if getsockname is prototyped... yes
checking if getsockname is compilable... yes
checking if getsockname usage allowed... yes
checking if getsockname might be used... yes
checking for sys/types.h... (cached) yes
checking if gmtime_r can be linked... yes
checking if gmtime_r is prototyped... yes
checking if gmtime_r is compilable... yes
checking if gmtime_r seems to work... yes
checking if gmtime_r usage allowed... yes
checking if gmtime_r might be used... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/ioctl.h... (cached) yes
checking for stropts.h... no
checking if ioctl can be linked... yes
checking if ioctl is prototyped... yes
checking if ioctl is compilable... yes
checking if ioctl usage allowed... yes
checking if ioctl might be used... yes
checking if ioctl FIONBIO is compilable... yes
checking if ioctl FIONBIO usage allowed... yes
checking if ioctl FIONBIO might be used... yes
checking if ioctl SIOCGIFADDR is compilable... yes
checking if ioctl SIOCGIFADDR usage allowed... yes
checking if ioctl SIOCGIFADDR might be used... yes
checking if ioctlsocket can be linked... no
checking if ioctlsocket might be used... no
checking if IoctlSocket can be linked... no
checking if IoctlSocket might be used... no
checking if localtime_r can be linked... yes
checking if localtime_r is prototyped... yes
checking if localtime_r is compilable... yes
checking if localtime_r seems to work... yes
checking if localtime_r usage allowed... yes
checking if localtime_r might be used... yes
checking if memrchr can be linked... yes
checking if memrchr is prototyped... yes
checking if memrchr is compilable... yes
checking if memrchr usage allowed... yes
checking if memrchr might be used... yes
checking for sys/types.h... (cached) yes
checking if sigaction can be linked... yes
checking if sigaction is prototyped... yes
checking if sigaction is compilable... yes
checking if sigaction usage allowed... yes
checking if sigaction might be used... yes
checking if siginterrupt can be linked... yes
checking if siginterrupt is prototyped... yes
checking if siginterrupt is compilable... yes
checking if siginterrupt usage allowed... yes
checking if siginterrupt might be used... yes
checking if signal can be linked... yes
checking if signal is prototyped... yes
checking if signal is compilable... yes
checking if signal usage allowed... yes
checking if signal might be used... yes
checking for sys/types.h... (cached) yes
checking if sigsetjmp can be linked... no
checking if sigsetjmp seems a macro... yes
checking if sigsetjmp is compilable... yes
checking if sigsetjmp usage allowed... yes
checking if sigsetjmp might be used... yes
checking if socket can be linked... yes
checking if socket is prototyped... yes
checking if socket is compilable... yes
checking if socket usage allowed... yes
checking if socket might be used... yes
checking if socketpair can be linked... yes
checking if socketpair is prototyped... yes
checking if socketpair is compilable... yes
checking if socketpair usage allowed... yes
checking if socketpair might be used... yes
checking if strerror_r can be linked... yes
checking if strerror_r is prototyped... yes
checking if strerror_r is compilable... yes
checking if strerror_r is glibc like... yes
checking if strerror_r seems to work... yes
checking if strerror_r usage allowed... yes
checking if strerror_r might be used... yes
checking for accept4... yes
checking for eventfd... yes
checking for fnmatch... yes
checking for geteuid... yes
checking for getpass_r... no
checking for getppid... yes
checking for getpwuid... yes
checking for getpwuid_r... yes
checking for getrlimit... yes
checking for mach_absolute_time... no
checking for pipe... yes
checking for poll... yes
checking for sendmmsg... yes
checking for sendmsg... yes
checking for setlocale... yes
checking for setrlimit... yes
checking for utime... yes
checking for utimes... yes
checking for pipe2... yes
checking for fchmod... yes
checking for gettimeofday... yes
checking for if_nametoindex... yes
checking for realpath... yes
checking for sched_yield... yes
checking if strcasecmp can be linked... yes
checking if strcasecmp is prototyped... yes
checking if strcasecmp is compilable... yes
checking if strcasecmp usage allowed... yes
checking if strcasecmp might be used... yes
checking if strcmpi can be linked... no
checking if strcmpi might be used... no
checking if stricmp can be linked... no
checking if stricmp might be used... no
checking if memset_s can be linked... no
checking if memset_s might be used... no
checking for memset_explicit... yes
checking for fseeko... yes
checking for gcc options to detect undeclared functions... none needed
checking for gcc options to ignore future-version functions... none needed
checking whether fseeko is declared... yes
checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK
checking whether to enable the threaded resolver... yes
checking for pthread.h... yes
checking for pthread_create... yes
checking for dirent.h... yes
checking for opendir... yes
checking convert -I options to -isystem... yes
checking whether to enable curl_easy_setopt()/curl_easy_getinfo() type checking... yes
checking whether to enable verbose strings... yes
checking whether to enable SSPI support (Windows native builds only)... no
checking whether to enable basic authentication method... yes
checking whether to enable bearer authentication method... yes
checking whether to enable digest authentication method... yes
checking whether to enable kerberos authentication method... yes
checking whether to enable negotiate authentication method... yes
checking whether to enable aws-sigv4 methods... yes
checking whether to enable HTTP Message Signatures (RFC 9421)... no
checking whether to support NTLM... no
checking whether to enable Unix domain sockets... auto
checking for struct sockaddr_un.sun_path... yes
checking whether to support cookies... yes
checking whether to support socketpair... yes
checking whether to support HTTP authentication... yes
checking whether to support DoH... yes
checking whether to support the MIME API... yes
checking whether to support binding connections locally... yes
checking whether to support the form API... yes
checking whether to support date parsing... yes
checking whether to support netrc parsing... yes
checking whether to support progress-meter... yes
checking whether to support the SHA-512/256 hash algorithm... yes
checking whether to support DNS shuffling... yes
checking whether to support curl_easy_option*... yes
checking whether to support alt-svc... yes
checking whether to support headers-api... yes
checking whether to support HSTS... yes
checking whether to enable HTTPS-RR support... no
checking for SSL_set0_wbio... yes
checking whether to support WebSockets... yes
checking whether hiding of library internal symbols does actually happen... yes
checking if this build supports HTTPS-proxy... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating docs/examples/Makefile
config.status: creating docs/libcurl/Makefile
config.status: creating docs/libcurl/opts/Makefile
config.status: creating docs/cmdline-opts/Makefile
config.status: creating include/Makefile
config.status: creating include/curl/Makefile
config.status: creating src/Makefile
config.status: creating lib/Makefile
config.status: creating scripts/Makefile
config.status: creating lib/libcurl.vers
config.status: creating tests/Makefile
config.status: creating tests/config
config.status: creating tests/configurehelp.pm
config.status: creating tests/certs/Makefile
config.status: creating tests/data/Makefile
config.status: creating tests/http/config.ini
config.status: creating tests/http/Makefile
config.status: creating tests/libtest/Makefile
config.status: creating tests/perf/Makefile
config.status: creating tests/server/Makefile
config.status: creating tests/tunit/Makefile
config.status: creating tests/unit/Makefile
config.status: creating projects/Makefile
config.status: creating projects/vms/Makefile
config.status: creating curl-config
config.status: creating libcurl.pc
config.status: creating lib/curl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-pc-linux-gnu
  Install prefix:   /usr
  Compiler:         gcc
   CFLAGS:          -march=x86-64-v4 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/curl -flto=auto -falign-functions=32 -Werror-implicit-function-declaration -Wno-system-headers
   CFLAGS extras:   
   CPPFLAGS:        -D_GNU_SOURCE
   LDFLAGS:         -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto -falign-functions=32
     curl-config:   
   LIBS:            -lnghttp3 -lngtcp2_crypto_ossl -lngtcp2 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lssl -lcrypto -lssl -lcrypto -lgssapi_krb5 -lzstd -lbrotlidec -lz

  curl version:     8.23.0
  SSL:              enabled (OpenSSL)
  SSH:              enabled (libssh2)
  zlib:             enabled
  brotli:           enabled (libbrotlidec)
  zstd:             enabled (libzstd)
  GSS-API:          enabled (MIT Kerberos)
  GSASL:            no       (--with-gsasl)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              enabled (libidn2)
  Build docs:       enabled  (--disable-docs)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  no       (--enable-manual)
  --libcurl option: enabled  (--disable-libcurl-option)
  Type checking:    enabled  (--disable-typecheck)
  Verbose errors:   enabled  (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no       (--enable-sspi)
  CA native:        no
  CA cert bundle:   /etc/ssl/certs/ca-certificates.crt
  CA cert path:     no
  CA cert embed:    no
  CA fallback:      no
  LDAP:             no       (--enable-ldap / --with-ldap-lib / --with-lber-lib)
  LDAPS:            no       (--enable-ldaps)
  IPFS/IPNS:        enabled
  RTSP:             enabled
  PSL:              enabled
  Alt-svc:          enabled  (--disable-alt-svc)
  Headers API:      enabled  (--disable-headers-api)
  HSTS:             enabled  (--disable-hsts)
  HTTP1:            enabled  (internal)
  HTTP2:            enabled (nghttp2)
  HTTP3:            enabled (ngtcp2 + nghttp3)
  proxy-HTTP3:      no      (--enable-proxy-http3)
  ECH:              no      (--enable-ech)
  HTTPS RR:         no      (--enable-httpsrr)
  SSLS-EXPORT:      no      (--enable-ssls-export)
  Protocols:        dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt mqtts pop3 pop3s rtsp scp sftp smtp smtps telnet tftp ws wss
  Features:         alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz PSL SPNEGO SSL threadsafe UnixSockets zstd

make: Entering directory '/startdir/src/build-curl-compat/lib'
make  all-am
make[1]: Entering directory '/startdir/src/build-curl-compat/lib'
  CC       libcurl_la-altsvc.lo
  CC       libcurl_la-amigaos.lo
  CC       libcurl_la-api.lo
  CC       libcurl_la-bufq.lo
  CC       libcurl_la-bufref.lo
  CC       libcurl_la-cf-h1-proxy.lo
  CC       libcurl_la-cf-h2-proxy.lo
  CC       libcurl_la-cf-haproxy.lo
  CC       libcurl_la-cf-https-connect.lo
  CC       libcurl_la-cf-ip-happy.lo
  CC       libcurl_la-cf-recvbuf.lo
  CC       libcurl_la-cf-setup.lo
  CC       libcurl_la-cf-socket.lo
  CC       libcurl_la-cfilters.lo
  CC       libcurl_la-conncache.lo
  CC       libcurl_la-content_encoding.lo
  CC       libcurl_la-connect.lo
  CC       libcurl_la-cookie.lo
  CC       libcurl_la-creds.lo
  CC       libcurl_la-cshutdn.lo
  CC       libcurl_la-curl_addrinfo.lo
  CC       libcurl_la-curl_endian.lo
  CC       libcurl_la-curl_fnmatch.lo
  CC       libcurl_la-curl_fopen.lo
  CC       libcurl_la-curl_get_line.lo
  CC       libcurl_la-curl_gethostname.lo
  CC       libcurl_la-curl_gssapi.lo
  CC       libcurl_la-curl_memrchr.lo
  CC       libcurl_la-curl_ntlm_core.lo
  CC       libcurl_la-curl_range.lo
  CC       libcurl_la-curl_sasl.lo
  CC       libcurl_la-curl_sha512_256.lo
  CC       libcurl_la-curl_share.lo
  CC       libcurl_la-curl_sspi.lo
  CC       libcurl_la-curl_threads.lo
  CC       libcurl_la-curl_trc.lo
  CC       libcurl_la-cw-out.lo
  CC       libcurl_la-cw-pause.lo
  CC       libcurl_la-dict.lo
  CC       libcurl_la-dynhds.lo
  CC       libcurl_la-easy.lo
  CC       libcurl_la-easygetopt.lo
  CC       libcurl_la-easyoptions.lo
  CC       libcurl_la-escape.lo
  CC       libcurl_la-fake_addrinfo.lo
  CC       libcurl_la-file.lo
  CC       libcurl_la-fileinfo.lo
  CC       libcurl_la-formdata.lo
  CC       libcurl_la-ftp.lo
  CC       libcurl_la-ftplistparser.lo
  CC       libcurl_la-getenv.lo
  CC       libcurl_la-getinfo.lo
  CC       libcurl_la-gopher.lo
  CC       libcurl_la-hash.lo
  CC       libcurl_la-headers.lo
  CC       libcurl_la-hmac.lo
  CC       libcurl_la-hsts.lo
  CC       libcurl_la-http.lo
  CC       libcurl_la-http1.lo
  CC       libcurl_la-http2.lo
  CC       libcurl_la-http_aws_sigv4.lo
  CC       libcurl_la-http_httpsig.lo
  CC       libcurl_la-curl_ed25519.lo
  CC       libcurl_la-http_chunks.lo
  CC       libcurl_la-http_digest.lo
  CC       libcurl_la-http_negotiate.lo
  CC       libcurl_la-http_ntlm.lo
  CC       libcurl_la-http_proxy.lo
  CC       libcurl_la-idn.lo
  CC       libcurl_la-if2ip.lo
  CC       libcurl_la-imap.lo
  CC       libcurl_la-ldap.lo
  CC       libcurl_la-llist.lo
  CC       libcurl_la-macos.lo
  CC       libcurl_la-md4.lo
  CC       libcurl_la-md5.lo
  CC       libcurl_la-memdebug.lo
  CC       libcurl_la-mime.lo
  CC       libcurl_la-mprintf.lo
  CC       libcurl_la-mqtt.lo
  CC       libcurl_la-multi.lo
  CC       libcurl_la-multi_ev.lo
  CC       libcurl_la-multi_ntfy.lo
  CC       libcurl_la-netrc.lo
  CC       libcurl_la-openldap.lo
  CC       libcurl_la-peer.lo
  CC       libcurl_la-parsedate.lo
  CC       libcurl_la-pingpong.lo
  CC       libcurl_la-pop3.lo
  CC       libcurl_la-progress.lo
  CC       libcurl_la-protocol.lo
  CC       libcurl_la-proxy.lo
  CC       libcurl_la-psl.lo
  CC       libcurl_la-ptrarray.lo
  CC       libcurl_la-rand.lo
  CC       libcurl_la-ratelimit.lo
  CC       libcurl_la-request.lo
  CC       libcurl_la-rtsp.lo
  CC       libcurl_la-select.lo
  CC       libcurl_la-sendf.lo
  CC       libcurl_la-setopt.lo
  CC       libcurl_la-sha256.lo
  CC       libcurl_la-slist.lo
  CC       libcurl_la-smtp.lo
  CC       libcurl_la-socketpair.lo
  CC       libcurl_la-socks.lo
  CC       libcurl_la-socks_gssapi.lo
  CC       libcurl_la-socks_sspi.lo
  CC       libcurl_la-splay.lo
  CC       libcurl_la-strcase.lo
  CC       libcurl_la-strequal.lo
  CC       libcurl_la-strerror.lo
  CC       libcurl_la-telnet.lo
  CC       libcurl_la-tftp.lo
  CC       libcurl_la-thrdpool.lo
  CC       libcurl_la-thrdqueue.lo
  CC       libcurl_la-transfer.lo
  CC       libcurl_la-u8_strset.lo
  CC       libcurl_la-u32_ptrset.lo
  CC       libcurl_la-uint-bset.lo
  CC       libcurl_la-uint-spbset.lo
  CC       libcurl_la-uint-table.lo
  CC       libcurl_la-url.lo
  CC       libcurl_la-urlapi.lo
  CC       libcurl_la-version.lo
  CC       libcurl_la-ws.lo
  CC       libcurlu_la-altsvc.lo
  CC       libcurlu_la-amigaos.lo
  CC       libcurlu_la-api.lo
  CC       libcurlu_la-bufq.lo
  CC       libcurlu_la-bufref.lo
  CC       libcurlu_la-cf-h1-proxy.lo
  CC       libcurlu_la-cf-h2-proxy.lo
  CC       libcurlu_la-cf-haproxy.lo
  CC       libcurlu_la-cf-https-connect.lo
  CC       libcurlu_la-cf-ip-happy.lo
  CC       libcurlu_la-cf-recvbuf.lo
  CC       libcurlu_la-cf-setup.lo
  CC       libcurlu_la-cfilters.lo
  CC       libcurlu_la-cf-socket.lo
  CC       libcurlu_la-conncache.lo
  CC       libcurlu_la-connect.lo
  CC       libcurlu_la-content_encoding.lo
  CC       libcurlu_la-cookie.lo
  CC       libcurlu_la-creds.lo
  CC       libcurlu_la-cshutdn.lo
  CC       libcurlu_la-curl_addrinfo.lo
  CC       libcurlu_la-curl_endian.lo
  CC       libcurlu_la-curl_fnmatch.lo
  CC       libcurlu_la-curl_fopen.lo
  CC       libcurlu_la-curl_get_line.lo
  CC       libcurlu_la-curl_gethostname.lo
  CC       libcurlu_la-curl_gssapi.lo
  CC       libcurlu_la-curl_memrchr.lo
  CC       libcurlu_la-curl_ntlm_core.lo
  CC       libcurlu_la-curl_range.lo
  CC       libcurlu_la-curl_sasl.lo
  CC       libcurlu_la-curl_sha512_256.lo
  CC       libcurlu_la-curl_share.lo
  CC       libcurlu_la-curl_sspi.lo
  CC       libcurlu_la-curl_threads.lo
  CC       libcurlu_la-curl_trc.lo
  CC       libcurlu_la-cw-out.lo
  CC       libcurlu_la-cw-pause.lo
  CC       libcurlu_la-dict.lo
  CC       libcurlu_la-dynhds.lo
  CC       libcurlu_la-easy.lo
  CC       libcurlu_la-easygetopt.lo
  CC       libcurlu_la-easyoptions.lo
  CC       libcurlu_la-escape.lo
  CC       libcurlu_la-fake_addrinfo.lo
  CC       libcurlu_la-file.lo
  CC       libcurlu_la-fileinfo.lo
  CC       libcurlu_la-formdata.lo
  CC       libcurlu_la-ftp.lo
  CC       libcurlu_la-ftplistparser.lo
  CC       libcurlu_la-getenv.lo
  CC       libcurlu_la-getinfo.lo
  CC       libcurlu_la-gopher.lo
  CC       libcurlu_la-hash.lo
  CC       libcurlu_la-headers.lo
  CC       libcurlu_la-hmac.lo
  CC       libcurlu_la-hsts.lo
  CC       libcurlu_la-http.lo
  CC       libcurlu_la-http1.lo
  CC       libcurlu_la-http2.lo
  CC       libcurlu_la-http_aws_sigv4.lo
  CC       libcurlu_la-http_httpsig.lo
  CC       libcurlu_la-curl_ed25519.lo
  CC       libcurlu_la-http_chunks.lo
  CC       libcurlu_la-http_digest.lo
  CC       libcurlu_la-http_negotiate.lo
  CC       libcurlu_la-http_ntlm.lo
  CC       libcurlu_la-http_proxy.lo
  CC       libcurlu_la-idn.lo
  CC       libcurlu_la-if2ip.lo
  CC       libcurlu_la-imap.lo
  CC       libcurlu_la-ldap.lo
  CC       libcurlu_la-llist.lo
  CC       libcurlu_la-macos.lo
  CC       libcurlu_la-md4.lo
  CC       libcurlu_la-md5.lo
  CC       libcurlu_la-memdebug.lo
  CC       libcurlu_la-mime.lo
  CC       libcurlu_la-mprintf.lo
  CC       libcurlu_la-mqtt.lo
  CC       libcurlu_la-multi.lo
  CC       libcurlu_la-multi_ev.lo
  CC       libcurlu_la-multi_ntfy.lo
  CC       libcurlu_la-netrc.lo
  CC       libcurlu_la-openldap.lo
  CC       libcurlu_la-parsedate.lo
  CC       libcurlu_la-peer.lo
  CC       libcurlu_la-pingpong.lo
  CC       libcurlu_la-pop3.lo
  CC       libcurlu_la-progress.lo
  CC       libcurlu_la-protocol.lo
  CC       libcurlu_la-proxy.lo
  CC       libcurlu_la-psl.lo
  CC       libcurlu_la-ptrarray.lo
  CC       libcurlu_la-rand.lo
  CC       libcurlu_la-ratelimit.lo
  CC       libcurlu_la-request.lo
  CC       libcurlu_la-rtsp.lo
  CC       libcurlu_la-select.lo
  CC       libcurlu_la-sendf.lo
  CC       libcurlu_la-setopt.lo
  CC       libcurlu_la-sha256.lo
  CC       libcurlu_la-slist.lo
  CC       libcurlu_la-smtp.lo
  CC       libcurlu_la-socketpair.lo
  CC       libcurlu_la-socks.lo
  CC       libcurlu_la-socks_gssapi.lo
  CC       libcurlu_la-socks_sspi.lo
  CC       libcurlu_la-splay.lo
  CC       libcurlu_la-strcase.lo
  CC       libcurlu_la-strequal.lo
  CC       libcurlu_la-strerror.lo
  CC       libcurlu_la-telnet.lo
  CC       libcurlu_la-tftp.lo
  CC       libcurlu_la-thrdpool.lo
  CC       libcurlu_la-thrdqueue.lo
  CC       libcurlu_la-transfer.lo
  CC       libcurlu_la-u8_strset.lo
  CC       libcurlu_la-u32_ptrset.lo
  CC       libcurlu_la-uint-bset.lo
  CC       libcurlu_la-uint-spbset.lo
  CC       libcurlu_la-uint-table.lo
  CC       libcurlu_la-url.lo
  CC       libcurlu_la-urlapi.lo
  CC       libcurlu_la-version.lo
  CC       libcurlu_la-ws.lo
  CC       vauth/libcurlu_la-cleartext.lo
  CC       vauth/libcurlu_la-cram.lo
  CC       vauth/libcurlu_la-digest.lo
  CC       vauth/libcurlu_la-digest_sspi.lo
  CC       vauth/libcurlu_la-gsasl.lo
  CC       vauth/libcurlu_la-krb5_gssapi.lo
  CC       vauth/libcurlu_la-krb5_sspi.lo
  CC       vauth/libcurlu_la-ntlm.lo
  CC       vauth/libcurlu_la-ntlm_sspi.lo
  CC       vauth/libcurlu_la-oauth2.lo
  CC       vauth/libcurlu_la-spnego_gssapi.lo
  CC       vauth/libcurlu_la-spnego_sspi.lo
  CC       vauth/libcurlu_la-vauth.lo
  CC       vdns/libcurlu_la-asyn-ares.lo
  CC       vdns/libcurlu_la-asyn-base.lo
  CC       vdns/libcurlu_la-asyn-thrdd.lo
  CC       vdns/libcurlu_la-cf-dns.lo
  CC       vdns/libcurlu_la-dnscache.lo
  CC       vdns/libcurlu_la-doh.lo
  CC       vdns/libcurlu_la-hostip.lo
  CC       vdns/libcurlu_la-hostip4.lo
  CC       vdns/libcurlu_la-hostip6.lo
  CC       vdns/libcurlu_la-httpsrr.lo
  CC       vtls/libcurlu_la-apple.lo
  CC       vtls/libcurlu_la-cipher_suite.lo
  CC       vtls/libcurlu_la-hostcheck.lo
  CC       vtls/libcurlu_la-gtls.lo
  CC       vtls/libcurlu_la-keylog.lo
  CC       vtls/libcurlu_la-mbedtls.lo
  CC       vtls/libcurlu_la-openssl.lo
  CC       vtls/libcurlu_la-rustls.lo
  CC       vtls/libcurlu_la-schannel.lo
  CC       vtls/libcurlu_la-schannel_verify.lo
  CC       vtls/libcurlu_la-vtls.lo
  CC       vtls/libcurlu_la-vtls_config.lo
  CC       vtls/libcurlu_la-vtls_scache.lo
  CC       vtls/libcurlu_la-vtls_spack.lo
  CC       vtls/libcurlu_la-wolfssl.lo
  CC       vtls/libcurlu_la-x509asn1.lo
  CC       vquic/libcurlu_la-capsule.lo
  CC       vquic/libcurlu_la-cf-capsule.lo
  CC       vquic/libcurlu_la-cf-ngtcp2.lo
  CC       vquic/libcurlu_la-cf-ngtcp2-cmn.lo
  CC       vquic/libcurlu_la-cf-ngtcp2-proxy.lo
  CC       vquic/libcurlu_la-cf-quiche.lo
  CC       vquic/libcurlu_la-vquic.lo
  CC       vquic/libcurlu_la-vquic-tls.lo
  CC       vssh/libcurlu_la-libssh.lo
  CC       vssh/libcurlu_la-libssh2.lo
  CC       vssh/libcurlu_la-vssh.lo
  CC       curlx/libcurlu_la-base64.lo
  CC       curlx/libcurlu_la-basename.lo
  CC       curlx/libcurlu_la-dynbuf.lo
  CC       curlx/libcurlu_la-win32-fopen.lo
  CC       curlx/libcurlu_la-inet_ntop.lo
  CC       curlx/libcurlu_la-inet_pton.lo
  CC       curlx/libcurlu_la-multibyte.lo
  CC       curlx/libcurlu_la-nonblock.lo
  CC       curlx/libcurlu_la-snprintf.lo
  CC       curlx/libcurlu_la-strcopy.lo
  CC       curlx/libcurlu_la-strdup.lo
  CC       curlx/libcurlu_la-strerr.lo
  CC       curlx/libcurlu_la-strparse.lo
  CC       curlx/libcurlu_la-timediff.lo
  CC       curlx/libcurlu_la-timeval.lo
  CC       curlx/libcurlu_la-version_win32.lo
  CC       curlx/libcurlu_la-wait.lo
  CC       curlx/libcurlu_la-warnless.lo
  CC       curlx/libcurlu_la-winapi.lo
  CC       vauth/libcurl_la-cleartext.lo
  CC       vauth/libcurl_la-cram.lo
  CC       vauth/libcurl_la-digest.lo
  CC       vauth/libcurl_la-digest_sspi.lo
  CC       vauth/libcurl_la-gsasl.lo
  CC       vauth/libcurl_la-krb5_gssapi.lo
  CC       vauth/libcurl_la-krb5_sspi.lo
  CC       vauth/libcurl_la-ntlm.lo
  CC       vauth/libcurl_la-ntlm_sspi.lo
  CC       vauth/libcurl_la-oauth2.lo
  CC       vauth/libcurl_la-spnego_gssapi.lo
  CC       vauth/libcurl_la-spnego_sspi.lo
  CC       vauth/libcurl_la-vauth.lo
  CC       vdns/libcurl_la-asyn-ares.lo
  CC       vdns/libcurl_la-asyn-base.lo
  CC       vdns/libcurl_la-asyn-thrdd.lo
  CC       vdns/libcurl_la-cf-dns.lo
  CC       vdns/libcurl_la-dnscache.lo
  CC       vdns/libcurl_la-doh.lo
  CC       vdns/libcurl_la-hostip.lo
  CC       vdns/libcurl_la-hostip4.lo
  CC       vdns/libcurl_la-hostip6.lo
  CC       vdns/libcurl_la-httpsrr.lo
  CC       vtls/libcurl_la-apple.lo
  CC       vtls/libcurl_la-cipher_suite.lo
  CC       vtls/libcurl_la-gtls.lo
  CC       vtls/libcurl_la-hostcheck.lo
  CC       vtls/libcurl_la-keylog.lo
  CC       vtls/libcurl_la-mbedtls.lo
  CC       vtls/libcurl_la-openssl.lo
  CC       vtls/libcurl_la-rustls.lo
  CC       vtls/libcurl_la-schannel.lo
  CC       vtls/libcurl_la-schannel_verify.lo
  CC       vtls/libcurl_la-vtls.lo
  CC       vtls/libcurl_la-vtls_config.lo
  CC       vtls/libcurl_la-vtls_scache.lo
  CC       vtls/libcurl_la-vtls_spack.lo
  CC       vtls/libcurl_la-wolfssl.lo
  CC       vtls/libcurl_la-x509asn1.lo
  CC       vquic/libcurl_la-capsule.lo
  CC       vquic/libcurl_la-cf-capsule.lo
  CC       vquic/libcurl_la-cf-ngtcp2.lo
  CC       vquic/libcurl_la-cf-ngtcp2-cmn.lo
  CC       vquic/libcurl_la-cf-ngtcp2-proxy.lo
  CC       vquic/libcurl_la-cf-quiche.lo
  CC       vquic/libcurl_la-vquic.lo
  CC       vquic/libcurl_la-vquic-tls.lo
  CC       vssh/libcurl_la-libssh.lo
  CC       vssh/libcurl_la-libssh2.lo
  CC       vssh/libcurl_la-vssh.lo
  CC       curlx/libcurl_la-base64.lo
  CC       curlx/libcurl_la-basename.lo
  CC       curlx/libcurl_la-dynbuf.lo
  CC       curlx/libcurl_la-win32-fopen.lo
  CC       curlx/libcurl_la-inet_ntop.lo
  CC       curlx/libcurl_la-inet_pton.lo
  CC       curlx/libcurl_la-multibyte.lo
  CC       curlx/libcurl_la-nonblock.lo
  CC       curlx/libcurl_la-snprintf.lo
  CC       curlx/libcurl_la-strcopy.lo
  CC       curlx/libcurl_la-strdup.lo
  CC       curlx/libcurl_la-strerr.lo
  CC       curlx/libcurl_la-strparse.lo
  CC       curlx/libcurl_la-timediff.lo
  CC       curlx/libcurl_la-timeval.lo
  CC       curlx/libcurl_la-version_win32.lo
  CC       curlx/libcurl_la-wait.lo
  CC       curlx/libcurl_la-warnless.lo
  CC       curlx/libcurl_la-winapi.lo
  CCLD     libcurlu.la
  CCLD     libcurl.la
/usr/bin/nm: .libs/libcurl_la-amigaos.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_ntlm_core.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_sspi.o: no symbols
/usr/bin/nm: .libs/libcurl_la-fake_addrinfo.o: no symbols
/usr/bin/nm: .libs/libcurl_la-http_httpsig.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_ed25519.o: no symbols
/usr/bin/nm: .libs/libcurl_la-http_ntlm.o: no symbols
/usr/bin/nm: .libs/libcurl_la-ldap.o: no symbols
/usr/bin/nm: .libs/libcurl_la-macos.o: no symbols
/usr/bin/nm: .libs/libcurl_la-md4.o: no symbols
/usr/bin/nm: .libs/libcurl_la-memdebug.o: no symbols
/usr/bin/nm: .libs/libcurl_la-openldap.o: no symbols
/usr/bin/nm: .libs/libcurl_la-socks_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-digest_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-gsasl.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-krb5_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-ntlm.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-ntlm_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-spnego_sspi.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-asyn-ares.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-hostip4.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-hostip6.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-httpsrr.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-apple.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-cipher_suite.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-gtls.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-mbedtls.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-rustls.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-schannel.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-schannel_verify.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-vtls_spack.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-wolfssl.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-x509asn1.o: no symbols
/usr/bin/nm: vquic/.libs/libcurl_la-cf-ngtcp2-proxy.o: no symbols
/usr/bin/nm: vquic/.libs/libcurl_la-cf-quiche.o: no symbols
/usr/bin/nm: vssh/.libs/libcurl_la-libssh.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-basename.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-multibyte.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-snprintf.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-version_win32.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-winapi.o: no symbols
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c: In function 'inet_pton6':
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:180:19: warning: writing 32 bytes into a region of size 0 [-Wstringop-overflow=]
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:115:17: note: at offset [-9223372036854775760, -16] into destination object 'tmp' of size 16
make[1]: Leaving directory '/startdir/src/build-curl-compat/lib'
make: Leaving directory '/startdir/src/build-curl-compat/lib'
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable curl debug features (for developing curl)... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable HTTPSRR support... no
checking whether to enable ECH support... no
checking whether to enable SSL session export support... no
checking whether to enable HTTP/3 proxy support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking that grep -E works... yes
checking for ar... /usr/bin/ar
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C23 features... none needed
checking whether gcc understands -c and -o together... yes
checking how to run the C preprocessor... gcc -E
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for stdatomic.h... yes
checking if _Atomic is available... yes
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 0.01
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking xargs -n works... yes
checking whether UID '1002' is supported by ustar format... yes
checking whether GID '1002' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking dependency style of gcc... gcc3
checking curl version... 8.23.0
checking for perl... /usr/bin/perl
checking for httpd... no
checking for apache2... no
checking for apxs... no
configure: httpd/apache2 not in PATH, http tests disabled
configure: apxs not in PATH, http tests disabled
checking for danted... no
checking for danted... no
checking for sshd... no
checking for sshd... no
checking for sftp-server... no
checking for sftp-server... no
checking for nghttpx... no
checking for caddy... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for egrep -e... /usr/bin/grep -E
checking if OS is AIX (to define _ALL_SOURCE)... no
checking if _THREAD_SAFE is already defined... no
checking if _THREAD_SAFE is actually needed... no
checking if _THREAD_SAFE is onwards defined... no
checking if _REENTRANT is already defined... no
checking if _REENTRANT is actually needed... no
checking if _REENTRANT is onwards defined... no
checking for gcc option to support large files... none needed
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for file... file
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ranlib... ranlib
checking for archiver @FILE support... @
checking for strip... strip
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dlfcn.h... yes
checking which variant of shared library versioning to provide... (default) aix
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether to build shared libraries with -version-info... yes
checking whether to build shared libraries with -no-undefined... no
checking whether to build shared libraries with -mimpure-text... no
checking whether to build shared libraries with PIC... yes
checking whether to build static libraries with PIC... yes
checking whether to build shared libraries only... no
checking whether to build static libraries only... no
checking for windres... no
checking if cpp -P is needed... yes
checking if cpp -P works... yes
checking if compiler is DEC/Compaq/HP C... no
checking if compiler is HP-UX C... no
checking if compiler is IBM C... no
checking if compiler is Intel C... no
checking if compiler is clang... no
checking if compiler is GNU C... yes
checking compiler version... gcc '1600' (raw: '16')
checking if compiler is SunPro C... no
checking if compiler is Tiny C... no
checking for code coverage support... no
checking whether build target is a native Windows one... no
checking if compiler accepts some basic options... yes
configure: compiler options added: -Werror-implicit-function-declaration 
checking if compiler optimizer assumed setting might be used... no
checking if compiler accepts strict warning options... yes
configure: compiler options added: -Wno-system-headers 
checking if compiler halts on compilation errors... yes
checking if compiler halts on negative sized arrays... yes
checking if compiler halts on function prototype mismatch... yes
checking if compiler supports hiding library internal symbols... yes
checking whether build target supports Win32 crypto API... no
checking whether to build libcurl and curl in "unity" mode... no
checking whether to support http... yes
checking whether to support ftp... yes
checking whether to support file... yes
checking whether to support IPFS... yes
checking whether to support ldap... no
checking whether to support ldaps... no
checking whether to support rtsp... yes
checking whether to support proxies... yes
checking whether to support dict... yes
checking whether to support telnet... yes
checking whether to support tftp... yes
checking whether to support pop3... yes
checking whether to support imap... yes
checking whether to support smtp... yes
checking whether to support gopher... yes
checking whether to support mqtt... no
checking enable curl_global_init_mem debug build... no
checking whether to provide built-in manual... no
checking whether to build documentation... yes
checking whether to enable generation of C code... yes
checking whether to use libgcc... no
checking whether to use libbacktrace... no
checking if X/Open network library is required... no
checking for gethostbyname... yes
checking whether build target is a native Windows one... (cached) no
checking for proto/bsdsocket.h... no
checking for connect in libraries... yes
checking for sys/types.h... (cached) yes
checking for monotonic clock_gettime... yes
checking for clock_gettime in libraries... no additional lib required
checking if monotonic clock_gettime works... yes
checking for sys/types.h... (cached) yes
checking for raw monotonic clock_gettime... yes
checking for pkg-config... /usr/bin/pkg-config
checking for zlib options with pkg-config... found
checking for zlib.h... yes
configure: found both libz and libz.h header
checking for BrotliDecoderDecompress in -lbrotlidec... yes
checking for brotli/decode.h... yes
checking for ZSTD_createDStream in -lzstd... yes
checking for zstd.h... yes
checking whether to enable IPv6... yes
checking if struct sockaddr_in6 has sin6_scope_id member... yes
checking if argv can be written to... yes
checking if GSS-API support is requested... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for mit-krb5-gssapi options with pkg-config... found
checking for gss.h... no
checking for gssapi/gssapi.h... yes
checking for gssapi/gssapi_generic.h... yes
checking for gssapi/gssapi_krb5.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for mit-krb5-gssapi options with pkg-config... found
configure: GSS-API MIT Kerberos version detected: 1.22.2
checking if we can link against GSS-API library... yes
checking for gss_set_neg_mechs... yes
checking whether to enable Windows native SSL/TLS... no
checking whether to enable Amiga native SSL/TLS (AmiSSL 5)... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for gnutls options with pkg-config... found
checking for gnutls_x509_crt_get_dn2 in -lgnutls... yes
configure: detected GnuTLS version 3.8.13
checking for nettle_md5_init in -lgnutls... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for nettle options with pkg-config... found
checking for nettle_md5_init in -lnettle... yes
configure: detected nettle version 4.0
checking for nettle_ed25519_sha512_sign in -lgnutls... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for hogweed options with pkg-config... found
checking for nettle_ed25519_sha512_sign in -lhogweed... yes
configure: detected hogweed version 4.0
checking whether to enable Apple OS native certificate validation... no
configure: built with one SSL backend
checking whether to use native CA store... no
checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt
checking whether to use OpenSSL's built-in CA store... no
checking CA cert bundle path to embed in the curl tool... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libpsl options with pkg-config... found
checking for psl_builtin in -lpsl... yes
checking for libpsl.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libssh2 options with pkg-config... found
checking for libssh2_agent_get_identity_path in -lssh2... yes
checking for libssh2.h... yes
checking whether versioned symbols are wanted... no
checking whether to build with libidn2... (assumed) yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libidn2 options with pkg-config... found
configure: pkg-config: IDN_LIBS: "-lidn2"
configure: pkg-config: IDN_LDFLAGS: ""
configure: pkg-config: IDN_CPPFLAGS: ""
configure: pkg-config: IDN_DIR: ""
checking if idn2_lookup_ul can be linked... yes
checking for idn2.h... yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp2 options with pkg-config... found
configure: -l is -lnghttp2
configure: -I is 
configure: -L is 
checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes
checking for nghttp2/nghttp2.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2 options with pkg-config... found
configure: -l is -lngtcp2
configure: -I is 
configure: -L is 
checking for ngtcp2_conn_client_new_versioned in -lngtcp2... yes
checking for ngtcp2/ngtcp2.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2_crypto_gnutls options with pkg-config... found
configure: -l is -lngtcp2_crypto_gnutls
configure: -I is -I/usr/include/p11-kit-1
configure: -L is 
checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls... yes
checking for ngtcp2/ngtcp2_crypto.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp3 options with pkg-config... found
configure: -l is -lnghttp3
configure: -I is 
configure: -L is 
checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes
checking for nghttp3/nghttp3.h... yes
configure: Added  to CURL_LIBRARY_PATH
checking for sys/types.h... (cached) yes
checking for sys/select.h... yes
checking for sys/ioctl.h... yes
checking for unistd.h... (cached) yes
checking for arpa/inet.h... yes
checking for net/if.h... yes
checking for netinet/in.h... yes
checking for netinet/in6.h... no
checking for sys/un.h... yes
checking for linux/tcp.h... yes
checking for netinet/tcp.h... yes
checking for netinet/udp.h... yes
checking for netinet/ip.h... yes
checking for netdb.h... yes
checking for sys/sockio.h... no
checking for sys/param.h... yes
checking for termios.h... yes
checking for termio.h... no
checking for fcntl.h... yes
checking for io.h... no
checking for pwd.h... yes
checking for utime.h... yes
checking for sys/utime.h... no
checking for sys/poll.h... yes
checking for poll.h... yes
checking for sys/resource.h... yes
checking for libgen.h... yes
checking for locale.h... yes
checking for stdbool.h... yes
checking for sys/filio.h... no
checking for sys/eventfd.h... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for sys/types.h... (cached) yes
checking for struct timeval... yes
checking runtime libs availability... fine
checking size of size_t... 8
checking size of long... 8
checking size of int... 4
checking size of time_t... 8
checking size of off_t... 8
checking size of curl_off_t... 8
checking size of curl_socket_t... 4
checking for ssize_t... yes
checking for bool... yes
checking for sa_family_t... yes
checking for suseconds_t... yes
checking if time_t is unsigned... no
checking for struct sockaddr_storage... yes
checking for sys/types.h... (cached) yes
checking for recv... yes
checking for sys/types.h... (cached) yes
checking for send... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking if alarm can be linked... yes
checking if alarm is prototyped... yes
checking if alarm is compilable... yes
checking if alarm usage allowed... yes
checking if alarm might be used... yes
checking for sys/types.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for libgen.h... (cached) yes
checking if basename can be linked... yes
checking if basename is prototyped... yes
checking if basename is compilable... yes
checking if basename usage allowed... yes
checking if basename might be used... yes
checking if closesocket can be linked... no
checking if closesocket might be used... no
checking for sys/types.h... (cached) yes
checking if CloseSocket can be linked... no
checking if CloseSocket might be used... no
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for fcntl.h... (cached) yes
checking if fcntl can be linked... yes
checking if fcntl is prototyped... yes
checking if fcntl is compilable... yes
checking if fcntl usage allowed... yes
checking if fcntl might be used... yes
checking if fcntl O_NONBLOCK is compilable... yes
checking if fcntl O_NONBLOCK usage allowed... yes
checking if fcntl O_NONBLOCK might be used... yes
checking whether build target is a native Windows one... (cached) no
checking for sys/types.h... (cached) yes
checking for netdb.h... (cached) yes
checking if freeaddrinfo can be linked... yes
checking if freeaddrinfo is prototyped... yes
checking if freeaddrinfo is compilable... yes
checking if freeaddrinfo usage allowed... yes
checking if freeaddrinfo might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/xattr.h... yes
checking if fsetxattr can be linked... yes
checking if fsetxattr is prototyped... yes
checking if fsetxattr takes 5 args.... yes
checking if fsetxattr is compilable... yes
checking if fsetxattr usage allowed... yes
checking if fsetxattr might be used... yes
checking for sys/types.h... (cached) yes
checking if getaddrinfo can be linked... yes
checking if getaddrinfo is prototyped... yes
checking if getaddrinfo is compilable... yes
checking if getaddrinfo seems to work... yes
checking if getaddrinfo usage allowed... yes
checking if getaddrinfo might be used... yes
checking if getaddrinfo is thread-safe... yes
checking if gethostbyname_r can be linked... yes
checking if gethostbyname_r is prototyped... yes
checking if gethostbyname_r takes 3 args.... no
checking if gethostbyname_r takes 5 args.... no
checking if gethostbyname_r takes 6 args.... yes
checking if gethostbyname_r is compilable... yes
checking if gethostbyname_r usage allowed... yes
checking if gethostbyname_r might be used... yes
checking if gethostname can be linked... yes
checking if gethostname is prototyped... yes
checking if gethostname is compilable... yes
checking for gethostname arg 2 data type... size_t
checking if gethostname usage allowed... yes
checking if gethostname might be used... yes
checking for sys/types.h... (cached) yes
checking for netinet/in.h... (cached) yes
checking for ifaddrs.h... yes
checking if getifaddrs can be linked... yes
checking if getifaddrs is prototyped... yes
checking if getifaddrs is compilable... yes
checking if getifaddrs seems to work... yes
checking if getifaddrs usage allowed... yes
checking if getifaddrs might be used... yes
checking if getpeername can be linked... yes
checking if getpeername is prototyped... yes
checking if getpeername is compilable... yes
checking if getpeername usage allowed... yes
checking if getpeername might be used... yes
checking if getsockname can be linked... yes
checking if getsockname is prototyped... yes
checking if getsockname is compilable... yes
checking if getsockname usage allowed... yes
checking if getsockname might be used... yes
checking for sys/types.h... (cached) yes
checking if gmtime_r can be linked... yes
checking if gmtime_r is prototyped... yes
checking if gmtime_r is compilable... yes
checking if gmtime_r seems to work... yes
checking if gmtime_r usage allowed... yes
checking if gmtime_r might be used... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/ioctl.h... (cached) yes
checking for stropts.h... no
checking if ioctl can be linked... yes
checking if ioctl is prototyped... yes
checking if ioctl is compilable... yes
checking if ioctl usage allowed... yes
checking if ioctl might be used... yes
checking if ioctl FIONBIO is compilable... yes
checking if ioctl FIONBIO usage allowed... yes
checking if ioctl FIONBIO might be used... yes
checking if ioctl SIOCGIFADDR is compilable... yes
checking if ioctl SIOCGIFADDR usage allowed... yes
checking if ioctl SIOCGIFADDR might be used... yes
checking if ioctlsocket can be linked... no
checking if ioctlsocket might be used... no
checking if IoctlSocket can be linked... no
checking if IoctlSocket might be used... no
checking if localtime_r can be linked... yes
checking if localtime_r is prototyped... yes
checking if localtime_r is compilable... yes
checking if localtime_r seems to work... yes
checking if localtime_r usage allowed... yes
checking if localtime_r might be used... yes
checking if memrchr can be linked... yes
checking if memrchr is prototyped... yes
checking if memrchr is compilable... yes
checking if memrchr usage allowed... yes
checking if memrchr might be used... yes
checking for sys/types.h... (cached) yes
checking if sigaction can be linked... yes
checking if sigaction is prototyped... yes
checking if sigaction is compilable... yes
checking if sigaction usage allowed... yes
checking if sigaction might be used... yes
checking if siginterrupt can be linked... yes
checking if siginterrupt is prototyped... yes
checking if siginterrupt is compilable... yes
checking if siginterrupt usage allowed... yes
checking if siginterrupt might be used... yes
checking if signal can be linked... yes
checking if signal is prototyped... yes
checking if signal is compilable... yes
checking if signal usage allowed... yes
checking if signal might be used... yes
checking for sys/types.h... (cached) yes
checking if sigsetjmp can be linked... no
checking if sigsetjmp seems a macro... yes
checking if sigsetjmp is compilable... yes
checking if sigsetjmp usage allowed... yes
checking if sigsetjmp might be used... yes
checking if socket can be linked... yes
checking if socket is prototyped... yes
checking if socket is compilable... yes
checking if socket usage allowed... yes
checking if socket might be used... yes
checking if socketpair can be linked... yes
checking if socketpair is prototyped... yes
checking if socketpair is compilable... yes
checking if socketpair usage allowed... yes
checking if socketpair might be used... yes
checking if strerror_r can be linked... yes
checking if strerror_r is prototyped... yes
checking if strerror_r is compilable... yes
checking if strerror_r is glibc like... yes
checking if strerror_r seems to work... yes
checking if strerror_r usage allowed... yes
checking if strerror_r might be used... yes
checking for accept4... yes
checking for eventfd... yes
checking for fnmatch... yes
checking for geteuid... yes
checking for getpass_r... no
checking for getppid... yes
checking for getpwuid... yes
checking for getpwuid_r... yes
checking for getrlimit... yes
checking for mach_absolute_time... no
checking for pipe... yes
checking for poll... yes
checking for sendmmsg... yes
checking for sendmsg... yes
checking for setlocale... yes
checking for setrlimit... yes
checking for utime... yes
checking for utimes... yes
checking for pipe2... yes
checking for fchmod... yes
checking for gettimeofday... yes
checking for if_nametoindex... yes
checking for realpath... yes
checking for sched_yield... yes
checking if strcasecmp can be linked... yes
checking if strcasecmp is prototyped... yes
checking if strcasecmp is compilable... yes
checking if strcasecmp usage allowed... yes
checking if strcasecmp might be used... yes
checking if strcmpi can be linked... no
checking if strcmpi might be used... no
checking if stricmp can be linked... no
checking if stricmp might be used... no
checking if memset_s can be linked... no
checking if memset_s might be used... no
checking for memset_explicit... yes
checking for fseeko... yes
checking for gcc options to detect undeclared functions... none needed
checking for gcc options to ignore future-version functions... none needed
checking whether fseeko is declared... yes
checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK
checking whether to enable the threaded resolver... yes
checking for pthread.h... yes
checking for pthread_create... yes
checking for dirent.h... yes
checking for opendir... yes
checking convert -I options to -isystem... yes
checking whether to enable curl_easy_setopt()/curl_easy_getinfo() type checking... yes
checking whether to enable verbose strings... yes
checking whether to enable SSPI support (Windows native builds only)... no
checking whether to enable basic authentication method... yes
checking whether to enable bearer authentication method... yes
checking whether to enable digest authentication method... yes
checking whether to enable kerberos authentication method... yes
checking whether to enable negotiate authentication method... yes
checking whether to enable aws-sigv4 methods... yes
checking whether to enable HTTP Message Signatures (RFC 9421)... no
checking whether to support NTLM... no
checking whether to enable Unix domain sockets... auto
checking for struct sockaddr_un.sun_path... yes
checking whether to support cookies... yes
checking whether to support socketpair... yes
checking whether to support HTTP authentication... yes
checking whether to support DoH... yes
checking whether to support the MIME API... yes
checking whether to support binding connections locally... yes
checking whether to support the form API... yes
checking whether to support date parsing... yes
checking whether to support netrc parsing... yes
checking whether to support progress-meter... yes
checking whether to support the SHA-512/256 hash algorithm... yes
checking whether to support DNS shuffling... yes
checking whether to support curl_easy_option*... yes
checking whether to support alt-svc... yes
checking whether to support headers-api... yes
checking whether to support HSTS... yes
checking whether to enable HTTPS-RR support... no
checking whether to support WebSockets... yes
checking whether hiding of library internal symbols does actually happen... yes
checking if this build supports HTTPS-proxy... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating docs/examples/Makefile
config.status: creating docs/libcurl/Makefile
config.status: creating docs/libcurl/opts/Makefile
config.status: creating docs/cmdline-opts/Makefile
config.status: creating include/Makefile
config.status: creating include/curl/Makefile
config.status: creating src/Makefile
config.status: creating lib/Makefile
config.status: creating scripts/Makefile
config.status: creating lib/libcurl.vers
config.status: creating tests/Makefile
config.status: creating tests/config
config.status: creating tests/configurehelp.pm
config.status: creating tests/certs/Makefile
config.status: creating tests/data/Makefile
config.status: creating tests/http/config.ini
config.status: creating tests/http/Makefile
config.status: creating tests/libtest/Makefile
config.status: creating tests/perf/Makefile
config.status: creating tests/server/Makefile
config.status: creating tests/tunit/Makefile
config.status: creating tests/unit/Makefile
config.status: creating projects/Makefile
config.status: creating projects/vms/Makefile
config.status: creating curl-config
config.status: creating libcurl.pc
config.status: creating lib/curl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-pc-linux-gnu
  Install prefix:   /usr
  Compiler:         gcc
   CFLAGS:          -march=x86-64-v4 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/curl -flto=auto -falign-functions=32 -Werror-implicit-function-declaration -Wno-system-headers
   CFLAGS extras:   
   CPPFLAGS:        -D_GNU_SOURCE -isystem /usr/include/p11-kit-1 -isystem /usr/include/p11-kit-1
   LDFLAGS:         -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto -falign-functions=32
     curl-config:   
   LIBS:            -lnghttp3 -lngtcp2_crypto_gnutls -lngtcp2 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lhogweed -lnettle -lgnutls -lgssapi_krb5 -lzstd -lbrotlidec -lz

  curl version:     8.23.0
  SSL:              enabled (GnuTLS)
  SSH:              enabled (libssh2)
  zlib:             enabled
  brotli:           enabled (libbrotlidec)
  zstd:             enabled (libzstd)
  GSS-API:          enabled (MIT Kerberos)
  GSASL:            no       (--with-gsasl)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              enabled (libidn2)
  Build docs:       enabled  (--disable-docs)
  Build libcurl:    Shared=yes, Static=yes
  Built-in manual:  no       (--enable-manual)
  --libcurl option: enabled  (--disable-libcurl-option)
  Type checking:    enabled  (--disable-typecheck)
  Verbose errors:   enabled  (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no       (--enable-sspi)
  CA native:        no
  CA cert bundle:   /etc/ssl/certs/ca-certificates.crt
  CA cert path:     no
  CA cert embed:    no
  CA fallback:      no
  LDAP:             no       (--enable-ldap / --with-ldap-lib / --with-lber-lib)
  LDAPS:            no       (--enable-ldaps)
  IPFS/IPNS:        enabled
  RTSP:             enabled
  PSL:              enabled
  Alt-svc:          enabled  (--disable-alt-svc)
  Headers API:      enabled  (--disable-headers-api)
  HSTS:             enabled  (--disable-hsts)
  HTTP1:            enabled  (internal)
  HTTP2:            enabled (nghttp2)
  HTTP3:            enabled (ngtcp2 + nghttp3)
  proxy-HTTP3:      no      (--enable-proxy-http3)
  ECH:              no      (--enable-ech)
  HTTPS RR:         no      (--enable-httpsrr)
  SSLS-EXPORT:      no      (--enable-ssls-export)
  Protocols:        dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt mqtts pop3 pop3s rtsp scp sftp smtp smtps telnet tftp ws wss
  Features:         alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz PSL SPNEGO SSL threadsafe UnixSockets zstd

make: Entering directory '/startdir/src/build-curl-gnutls/lib'
make  all-am
make[1]: Entering directory '/startdir/src/build-curl-gnutls/lib'
  CC       libcurl_la-amigaos.lo
  CC       libcurl_la-altsvc.lo
  CC       libcurl_la-api.lo
  CC       libcurl_la-bufq.lo
  CC       libcurl_la-bufref.lo
  CC       libcurl_la-cf-h1-proxy.lo
  CC       libcurl_la-cf-h2-proxy.lo
  CC       libcurl_la-cf-haproxy.lo
  CC       libcurl_la-cf-https-connect.lo
  CC       libcurl_la-cf-ip-happy.lo
  CC       libcurl_la-cf-recvbuf.lo
  CC       libcurl_la-cf-setup.lo
  CC       libcurl_la-cf-socket.lo
  CC       libcurl_la-cfilters.lo
  CC       libcurl_la-conncache.lo
  CC       libcurl_la-connect.lo
  CC       libcurl_la-content_encoding.lo
  CC       libcurl_la-cookie.lo
  CC       libcurl_la-creds.lo
  CC       libcurl_la-cshutdn.lo
  CC       libcurl_la-curl_addrinfo.lo
  CC       libcurl_la-curl_endian.lo
  CC       libcurl_la-curl_fnmatch.lo
  CC       libcurl_la-curl_fopen.lo
  CC       libcurl_la-curl_get_line.lo
  CC       libcurl_la-curl_gethostname.lo
  CC       libcurl_la-curl_gssapi.lo
  CC       libcurl_la-curl_memrchr.lo
  CC       libcurl_la-curl_ntlm_core.lo
  CC       libcurl_la-curl_range.lo
  CC       libcurl_la-curl_sasl.lo
  CC       libcurl_la-curl_sha512_256.lo
  CC       libcurl_la-curl_share.lo
  CC       libcurl_la-curl_sspi.lo
  CC       libcurl_la-curl_threads.lo
  CC       libcurl_la-curl_trc.lo
  CC       libcurl_la-cw-out.lo
  CC       libcurl_la-cw-pause.lo
  CC       libcurl_la-dict.lo
  CC       libcurl_la-dynhds.lo
  CC       libcurl_la-easy.lo
  CC       libcurl_la-easygetopt.lo
  CC       libcurl_la-easyoptions.lo
  CC       libcurl_la-escape.lo
  CC       libcurl_la-fake_addrinfo.lo
  CC       libcurl_la-file.lo
  CC       libcurl_la-fileinfo.lo
  CC       libcurl_la-formdata.lo
  CC       libcurl_la-ftp.lo
  CC       libcurl_la-ftplistparser.lo
  CC       libcurl_la-getenv.lo
  CC       libcurl_la-getinfo.lo
  CC       libcurl_la-gopher.lo
  CC       libcurl_la-hash.lo
  CC       libcurl_la-headers.lo
  CC       libcurl_la-hmac.lo
  CC       libcurl_la-hsts.lo
  CC       libcurl_la-http.lo
  CC       libcurl_la-http1.lo
  CC       libcurl_la-http2.lo
  CC       libcurl_la-http_aws_sigv4.lo
  CC       libcurl_la-http_httpsig.lo
  CC       libcurl_la-curl_ed25519.lo
  CC       libcurl_la-http_chunks.lo
  CC       libcurl_la-http_digest.lo
  CC       libcurl_la-http_negotiate.lo
  CC       libcurl_la-http_ntlm.lo
  CC       libcurl_la-http_proxy.lo
  CC       libcurl_la-idn.lo
  CC       libcurl_la-if2ip.lo
  CC       libcurl_la-imap.lo
  CC       libcurl_la-ldap.lo
  CC       libcurl_la-llist.lo
  CC       libcurl_la-macos.lo
  CC       libcurl_la-md4.lo
  CC       libcurl_la-md5.lo
  CC       libcurl_la-memdebug.lo
  CC       libcurl_la-mime.lo
  CC       libcurl_la-mprintf.lo
  CC       libcurl_la-mqtt.lo
  CC       libcurl_la-multi.lo
  CC       libcurl_la-multi_ev.lo
  CC       libcurl_la-multi_ntfy.lo
  CC       libcurl_la-netrc.lo
  CC       libcurl_la-openldap.lo
  CC       libcurl_la-parsedate.lo
  CC       libcurl_la-peer.lo
  CC       libcurl_la-pingpong.lo
  CC       libcurl_la-pop3.lo
  CC       libcurl_la-progress.lo
  CC       libcurl_la-protocol.lo
  CC       libcurl_la-proxy.lo
  CC       libcurl_la-psl.lo
  CC       libcurl_la-ptrarray.lo
  CC       libcurl_la-rand.lo
  CC       libcurl_la-ratelimit.lo
  CC       libcurl_la-request.lo
  CC       libcurl_la-rtsp.lo
  CC       libcurl_la-select.lo
  CC       libcurl_la-sendf.lo
  CC       libcurl_la-setopt.lo
  CC       libcurl_la-sha256.lo
  CC       libcurl_la-slist.lo
  CC       libcurl_la-smtp.lo
  CC       libcurl_la-socketpair.lo
  CC       libcurl_la-socks.lo
  CC       libcurl_la-socks_gssapi.lo
  CC       libcurl_la-socks_sspi.lo
  CC       libcurl_la-splay.lo
  CC       libcurl_la-strcase.lo
  CC       libcurl_la-strequal.lo
  CC       libcurl_la-strerror.lo
  CC       libcurl_la-telnet.lo
  CC       libcurl_la-tftp.lo
  CC       libcurl_la-thrdpool.lo
  CC       libcurl_la-thrdqueue.lo
  CC       libcurl_la-transfer.lo
  CC       libcurl_la-u8_strset.lo
  CC       libcurl_la-u32_ptrset.lo
  CC       libcurl_la-uint-bset.lo
  CC       libcurl_la-uint-spbset.lo
  CC       libcurl_la-uint-table.lo
  CC       libcurl_la-url.lo
  CC       libcurl_la-urlapi.lo
  CC       libcurl_la-version.lo
  CC       libcurl_la-ws.lo
  CC       libcurlu_la-amigaos.lo
  CC       libcurlu_la-altsvc.lo
  CC       libcurlu_la-api.lo
  CC       libcurlu_la-bufq.lo
  CC       libcurlu_la-bufref.lo
  CC       libcurlu_la-cf-h1-proxy.lo
  CC       libcurlu_la-cf-h2-proxy.lo
  CC       libcurlu_la-cf-haproxy.lo
  CC       libcurlu_la-cf-https-connect.lo
  CC       libcurlu_la-cf-ip-happy.lo
  CC       libcurlu_la-cf-recvbuf.lo
  CC       libcurlu_la-cf-setup.lo
  CC       libcurlu_la-cf-socket.lo
  CC       libcurlu_la-cfilters.lo
  CC       libcurlu_la-conncache.lo
  CC       libcurlu_la-connect.lo
  CC       libcurlu_la-content_encoding.lo
  CC       libcurlu_la-cookie.lo
  CC       libcurlu_la-creds.lo
  CC       libcurlu_la-cshutdn.lo
  CC       libcurlu_la-curl_addrinfo.lo
  CC       libcurlu_la-curl_endian.lo
  CC       libcurlu_la-curl_fnmatch.lo
  CC       libcurlu_la-curl_fopen.lo
  CC       libcurlu_la-curl_get_line.lo
  CC       libcurlu_la-curl_gethostname.lo
  CC       libcurlu_la-curl_gssapi.lo
  CC       libcurlu_la-curl_memrchr.lo
  CC       libcurlu_la-curl_ntlm_core.lo
  CC       libcurlu_la-curl_range.lo
  CC       libcurlu_la-curl_sasl.lo
  CC       libcurlu_la-curl_sha512_256.lo
  CC       libcurlu_la-curl_share.lo
  CC       libcurlu_la-curl_sspi.lo
  CC       libcurlu_la-curl_threads.lo
  CC       libcurlu_la-curl_trc.lo
  CC       libcurlu_la-cw-out.lo
  CC       libcurlu_la-cw-pause.lo
  CC       libcurlu_la-dict.lo
  CC       libcurlu_la-dynhds.lo
  CC       libcurlu_la-easy.lo
  CC       libcurlu_la-easygetopt.lo
  CC       libcurlu_la-easyoptions.lo
  CC       libcurlu_la-escape.lo
  CC       libcurlu_la-fake_addrinfo.lo
  CC       libcurlu_la-file.lo
  CC       libcurlu_la-fileinfo.lo
  CC       libcurlu_la-formdata.lo
  CC       libcurlu_la-ftp.lo
  CC       libcurlu_la-ftplistparser.lo
  CC       libcurlu_la-getenv.lo
  CC       libcurlu_la-getinfo.lo
  CC       libcurlu_la-gopher.lo
  CC       libcurlu_la-hash.lo
  CC       libcurlu_la-headers.lo
  CC       libcurlu_la-hmac.lo
  CC       libcurlu_la-hsts.lo
  CC       libcurlu_la-http.lo
  CC       libcurlu_la-http1.lo
  CC       libcurlu_la-http2.lo
  CC       libcurlu_la-http_aws_sigv4.lo
  CC       libcurlu_la-http_httpsig.lo
  CC       libcurlu_la-curl_ed25519.lo
  CC       libcurlu_la-http_chunks.lo
  CC       libcurlu_la-http_digest.lo
  CC       libcurlu_la-http_negotiate.lo
  CC       libcurlu_la-http_ntlm.lo
  CC       libcurlu_la-http_proxy.lo
  CC       libcurlu_la-idn.lo
  CC       libcurlu_la-imap.lo
  CC       libcurlu_la-if2ip.lo
  CC       libcurlu_la-ldap.lo
  CC       libcurlu_la-llist.lo
  CC       libcurlu_la-macos.lo
  CC       libcurlu_la-md4.lo
  CC       libcurlu_la-md5.lo
  CC       libcurlu_la-memdebug.lo
  CC       libcurlu_la-mime.lo
  CC       libcurlu_la-mprintf.lo
  CC       libcurlu_la-mqtt.lo
  CC       libcurlu_la-multi.lo
  CC       libcurlu_la-multi_ev.lo
  CC       libcurlu_la-multi_ntfy.lo
  CC       libcurlu_la-netrc.lo
  CC       libcurlu_la-openldap.lo
  CC       libcurlu_la-parsedate.lo
  CC       libcurlu_la-peer.lo
  CC       libcurlu_la-pingpong.lo
  CC       libcurlu_la-pop3.lo
  CC       libcurlu_la-progress.lo
  CC       libcurlu_la-protocol.lo
  CC       libcurlu_la-proxy.lo
  CC       libcurlu_la-psl.lo
  CC       libcurlu_la-ptrarray.lo
  CC       libcurlu_la-rand.lo
  CC       libcurlu_la-ratelimit.lo
  CC       libcurlu_la-request.lo
  CC       libcurlu_la-rtsp.lo
  CC       libcurlu_la-select.lo
  CC       libcurlu_la-sendf.lo
  CC       libcurlu_la-setopt.lo
  CC       libcurlu_la-sha256.lo
  CC       libcurlu_la-slist.lo
  CC       libcurlu_la-smtp.lo
  CC       libcurlu_la-socketpair.lo
  CC       libcurlu_la-socks.lo
  CC       libcurlu_la-socks_gssapi.lo
  CC       libcurlu_la-socks_sspi.lo
  CC       libcurlu_la-splay.lo
  CC       libcurlu_la-strcase.lo
  CC       libcurlu_la-strequal.lo
  CC       libcurlu_la-strerror.lo
  CC       libcurlu_la-telnet.lo
  CC       libcurlu_la-tftp.lo
  CC       libcurlu_la-thrdpool.lo
  CC       libcurlu_la-thrdqueue.lo
  CC       libcurlu_la-transfer.lo
  CC       libcurlu_la-u8_strset.lo
  CC       libcurlu_la-u32_ptrset.lo
  CC       libcurlu_la-uint-bset.lo
  CC       libcurlu_la-uint-spbset.lo
  CC       libcurlu_la-url.lo
  CC       libcurlu_la-uint-table.lo
  CC       libcurlu_la-urlapi.lo
  CC       libcurlu_la-version.lo
  CC       libcurlu_la-ws.lo
  CC       vauth/libcurlu_la-cleartext.lo
  CC       vauth/libcurlu_la-cram.lo
  CC       vauth/libcurlu_la-digest_sspi.lo
  CC       vauth/libcurlu_la-digest.lo
  CC       vauth/libcurlu_la-gsasl.lo
  CC       vauth/libcurlu_la-krb5_gssapi.lo
  CC       vauth/libcurlu_la-krb5_sspi.lo
  CC       vauth/libcurlu_la-ntlm.lo
  CC       vauth/libcurlu_la-ntlm_sspi.lo
  CC       vauth/libcurlu_la-oauth2.lo
  CC       vauth/libcurlu_la-spnego_gssapi.lo
  CC       vauth/libcurlu_la-spnego_sspi.lo
  CC       vauth/libcurlu_la-vauth.lo
  CC       vdns/libcurlu_la-asyn-ares.lo
  CC       vdns/libcurlu_la-asyn-base.lo
  CC       vdns/libcurlu_la-asyn-thrdd.lo
  CC       vdns/libcurlu_la-cf-dns.lo
  CC       vdns/libcurlu_la-dnscache.lo
  CC       vdns/libcurlu_la-doh.lo
  CC       vdns/libcurlu_la-hostip.lo
  CC       vdns/libcurlu_la-hostip4.lo
  CC       vdns/libcurlu_la-hostip6.lo
  CC       vdns/libcurlu_la-httpsrr.lo
  CC       vtls/libcurlu_la-apple.lo
  CC       vtls/libcurlu_la-cipher_suite.lo
  CC       vtls/libcurlu_la-gtls.lo
  CC       vtls/libcurlu_la-hostcheck.lo
  CC       vtls/libcurlu_la-keylog.lo
  CC       vtls/libcurlu_la-mbedtls.lo
  CC       vtls/libcurlu_la-openssl.lo
  CC       vtls/libcurlu_la-rustls.lo
  CC       vtls/libcurlu_la-schannel.lo
  CC       vtls/libcurlu_la-schannel_verify.lo
  CC       vtls/libcurlu_la-vtls.lo
  CC       vtls/libcurlu_la-vtls_config.lo
  CC       vtls/libcurlu_la-vtls_scache.lo
  CC       vtls/libcurlu_la-vtls_spack.lo
  CC       vtls/libcurlu_la-wolfssl.lo
  CC       vtls/libcurlu_la-x509asn1.lo
  CC       vquic/libcurlu_la-capsule.lo
  CC       vquic/libcurlu_la-cf-capsule.lo
  CC       vquic/libcurlu_la-cf-ngtcp2.lo
  CC       vquic/libcurlu_la-cf-ngtcp2-cmn.lo
  CC       vquic/libcurlu_la-cf-ngtcp2-proxy.lo
  CC       vquic/libcurlu_la-cf-quiche.lo
  CC       vquic/libcurlu_la-vquic.lo
  CC       vquic/libcurlu_la-vquic-tls.lo
  CC       vssh/libcurlu_la-libssh.lo
  CC       vssh/libcurlu_la-libssh2.lo
  CC       vssh/libcurlu_la-vssh.lo
  CC       curlx/libcurlu_la-base64.lo
  CC       curlx/libcurlu_la-basename.lo
  CC       curlx/libcurlu_la-dynbuf.lo
  CC       curlx/libcurlu_la-win32-fopen.lo
  CC       curlx/libcurlu_la-inet_ntop.lo
  CC       curlx/libcurlu_la-inet_pton.lo
  CC       curlx/libcurlu_la-multibyte.lo
  CC       curlx/libcurlu_la-nonblock.lo
  CC       curlx/libcurlu_la-snprintf.lo
  CC       curlx/libcurlu_la-strcopy.lo
  CC       curlx/libcurlu_la-strdup.lo
  CC       curlx/libcurlu_la-strerr.lo
  CC       curlx/libcurlu_la-strparse.lo
  CC       curlx/libcurlu_la-timediff.lo
  CC       curlx/libcurlu_la-timeval.lo
  CC       curlx/libcurlu_la-wait.lo
  CC       curlx/libcurlu_la-version_win32.lo
  CC       curlx/libcurlu_la-warnless.lo
  CC       curlx/libcurlu_la-winapi.lo
  CC       vauth/libcurl_la-cleartext.lo
  CC       vauth/libcurl_la-cram.lo
  CC       vauth/libcurl_la-digest.lo
  CC       vauth/libcurl_la-digest_sspi.lo
  CC       vauth/libcurl_la-gsasl.lo
  CC       vauth/libcurl_la-krb5_gssapi.lo
  CC       vauth/libcurl_la-krb5_sspi.lo
  CC       vauth/libcurl_la-ntlm.lo
  CC       vauth/libcurl_la-ntlm_sspi.lo
  CC       vauth/libcurl_la-oauth2.lo
  CC       vauth/libcurl_la-spnego_gssapi.lo
  CC       vauth/libcurl_la-spnego_sspi.lo
  CC       vauth/libcurl_la-vauth.lo
  CC       vdns/libcurl_la-asyn-ares.lo
  CC       vdns/libcurl_la-asyn-base.lo
  CC       vdns/libcurl_la-asyn-thrdd.lo
  CC       vdns/libcurl_la-cf-dns.lo
  CC       vdns/libcurl_la-dnscache.lo
  CC       vdns/libcurl_la-doh.lo
  CC       vdns/libcurl_la-hostip.lo
  CC       vdns/libcurl_la-hostip4.lo
  CC       vdns/libcurl_la-hostip6.lo
  CC       vdns/libcurl_la-httpsrr.lo
  CC       vtls/libcurl_la-apple.lo
  CC       vtls/libcurl_la-cipher_suite.lo
  CC       vtls/libcurl_la-gtls.lo
  CC       vtls/libcurl_la-hostcheck.lo
  CC       vtls/libcurl_la-keylog.lo
  CC       vtls/libcurl_la-mbedtls.lo
  CC       vtls/libcurl_la-openssl.lo
  CC       vtls/libcurl_la-rustls.lo
  CC       vtls/libcurl_la-schannel.lo
  CC       vtls/libcurl_la-schannel_verify.lo
  CC       vtls/libcurl_la-vtls.lo
  CC       vtls/libcurl_la-vtls_config.lo
  CC       vtls/libcurl_la-vtls_scache.lo
  CC       vtls/libcurl_la-vtls_spack.lo
  CC       vtls/libcurl_la-wolfssl.lo
  CC       vtls/libcurl_la-x509asn1.lo
  CC       vquic/libcurl_la-capsule.lo
  CC       vquic/libcurl_la-cf-capsule.lo
  CC       vquic/libcurl_la-cf-ngtcp2.lo
  CC       vquic/libcurl_la-cf-ngtcp2-proxy.lo
  CC       vquic/libcurl_la-cf-ngtcp2-cmn.lo
  CC       vquic/libcurl_la-cf-quiche.lo
  CC       vquic/libcurl_la-vquic.lo
  CC       vquic/libcurl_la-vquic-tls.lo
  CC       vssh/libcurl_la-libssh.lo
  CC       vssh/libcurl_la-libssh2.lo
  CC       vssh/libcurl_la-vssh.lo
  CC       curlx/libcurl_la-base64.lo
  CC       curlx/libcurl_la-basename.lo
  CC       curlx/libcurl_la-dynbuf.lo
  CC       curlx/libcurl_la-win32-fopen.lo
  CC       curlx/libcurl_la-inet_ntop.lo
  CC       curlx/libcurl_la-inet_pton.lo
  CC       curlx/libcurl_la-multibyte.lo
  CC       curlx/libcurl_la-nonblock.lo
  CC       curlx/libcurl_la-snprintf.lo
  CC       curlx/libcurl_la-strcopy.lo
  CC       curlx/libcurl_la-strdup.lo
  CC       curlx/libcurl_la-strparse.lo
  CC       curlx/libcurl_la-strerr.lo
  CC       curlx/libcurl_la-timediff.lo
  CC       curlx/libcurl_la-timeval.lo
  CC       curlx/libcurl_la-version_win32.lo
  CC       curlx/libcurl_la-wait.lo
  CC       curlx/libcurl_la-warnless.lo
  CC       curlx/libcurl_la-winapi.lo
  CCLD     libcurlu.la
  CCLD     libcurl.la
/usr/bin/nm: .libs/libcurl_la-amigaos.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_ntlm_core.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_sspi.o: no symbols
/usr/bin/nm: .libs/libcurl_la-fake_addrinfo.o: no symbols
/usr/bin/nm: .libs/libcurl_la-http_httpsig.o: no symbols
/usr/bin/nm: .libs/libcurl_la-curl_ed25519.o: no symbols
/usr/bin/nm: .libs/libcurl_la-http_ntlm.o: no symbols
/usr/bin/nm: .libs/libcurl_la-ldap.o: no symbols
/usr/bin/nm: .libs/libcurl_la-macos.o: no symbols
/usr/bin/nm: .libs/libcurl_la-md4.o: no symbols
/usr/bin/nm: .libs/libcurl_la-memdebug.o: no symbols
/usr/bin/nm: .libs/libcurl_la-openldap.o: no symbols
/usr/bin/nm: .libs/libcurl_la-socks_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-digest_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-gsasl.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-krb5_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-ntlm.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-ntlm_sspi.o: no symbols
/usr/bin/nm: vauth/.libs/libcurl_la-spnego_sspi.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-asyn-ares.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-hostip4.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-hostip6.o: no symbols
/usr/bin/nm: vdns/.libs/libcurl_la-httpsrr.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-apple.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-cipher_suite.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-hostcheck.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-mbedtls.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-openssl.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-rustls.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-schannel.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-schannel_verify.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-vtls_spack.o: no symbols
/usr/bin/nm: vtls/.libs/libcurl_la-wolfssl.o: no symbols
/usr/bin/nm: vquic/.libs/libcurl_la-cf-ngtcp2-proxy.o: no symbols
/usr/bin/nm: vquic/.libs/libcurl_la-cf-quiche.o: no symbols
/usr/bin/nm: vssh/.libs/libcurl_la-libssh.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-basename.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-multibyte.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-snprintf.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-version_win32.o: no symbols
/usr/bin/nm: curlx/.libs/libcurl_la-winapi.o: no symbols
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c: In function 'inet_pton6':
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:180:19: warning: writing 32 bytes into a region of size 0 [-Wstringop-overflow=]
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:115:17: note: at offset [-9223372036854775760, -16] into destination object 'tmp' of size 16
make[1]: Leaving directory '/startdir/src/build-curl-gnutls/lib'
make: Leaving directory '/startdir/src/build-curl-gnutls/lib'
==> Starting check()...
make[1]: Entering directory '/startdir/src/build-curl/tests'
Making all in certs
make[2]: Entering directory '/startdir/src/build-curl/tests/certs'
/usr/bin/perl /startdir/src/curl/tests/certs/genserv.pl test test-client-cert.prm test-client-eku-only.prm test-localhost.prm test-localhost.nn.prm test-localhost0h.prm test-localhost-san-first.prm test-localhost-san-last.prm
/usr/bin/openssl
OpenSSL 3.6.5 29 Sep 2026 (Library: OpenSSL 3.6.5 29 Sep 2026)
Certificate request self-signature ok
subject=C=NN, O=Edel curl Arctic Illudium Research Cloud, CN=Northern Nowhere Trust Anchor
CA root generated: test 6000 days prime256v1
Certificate generated: CA=test 300days prime256v1 test-client-cert
Certificate generated: CA=test 300days prime256v1 test-client-eku-only
Certificate generated: CA=test 300days prime256v1 test-localhost
Certificate generated: CA=test 300days prime256v1 test-localhost.nn
Certificate generated: CA=test 300days prime256v1 test-localhost0h
Certificate generated: CA=test 300days prime256v1 test-localhost-san-first
Certificate generated: CA=test 300days prime256v1 test-localhost-san-last
make[2]: Leaving directory '/startdir/src/build-curl/tests/certs'
Making all in data
make[2]: Entering directory '/startdir/src/build-curl/tests/data'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/startdir/src/build-curl/tests/data'
Making all in perf
make[2]: Entering directory '/startdir/src/build-curl/tests/perf'
/usr/bin/perl /startdir/src/curl/scripts/mk-unity.pl --include  ../../lib/curlx/base64.c ../../lib/curlx/win32-fopen.c ../../lib/curlx/multibyte.c ../../lib/curlx/strparse.c ../../lib/curlx/timeval.c ../../lib/curlx/warnless.c  --test base64dec.c base64enc.c dateparser.c maprintf.c numparser.c simpleformat.c snprintf.c urldecode.c urlencode.c urlparser.c > perf.c
  RUN      checksrc
  CC       perf.o
  CCLD     perf
make[2]: Leaving directory '/startdir/src/build-curl/tests/perf'
Making all in server
make[2]: Entering directory '/startdir/src/build-curl/tests/server'
/usr/bin/perl /startdir/src/curl/scripts/mk-unity.pl --include getpart.c util.c ../../lib/curlx/base64.c ../../lib/curlx/win32-fopen.c ../../lib/curlx/inet_ntop.c ../../lib/curlx/inet_pton.c ../../lib/curlx/multibyte.c ../../lib/curlx/nonblock.c ../../lib/curlx/snprintf.c ../../lib/curlx/strcopy.c ../../lib/curlx/strerr.c ../../lib/curlx/strparse.c ../../lib/curlx/timediff.c ../../lib/curlx/timeval.c ../../lib/curlx/wait.c ../../lib/curlx/warnless.c ../../lib/curlx/winapi.c ../../src/toolx/tool_time.c --test dnsd.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c > servers.c
  RUN      checksrc
  CC       servers.o
  CCLD     servers
/usr/src/debug/curl/curl/tests/server/../../lib/curlx/inet_pton.c: In function 'inet_pton6':
/usr/src/debug/curl/curl/tests/server/../../lib/curlx/inet_pton.c:180:19: warning: writing 32 bytes into a region of size 0 [-Wstringop-overflow=]
/usr/src/debug/curl/curl/tests/server/../../lib/curlx/inet_pton.c:115:17: note: at offset [-9223372036854775760, -16] into destination object 'tmp' of size 16
make[2]: Leaving directory '/startdir/src/build-curl/tests/server'
Making all in libtest
make[2]: Entering directory '/startdir/src/build-curl/tests/libtest'
/usr/bin/perl /startdir/src/curl/tests/libtest/mk-lib1521.pl < /startdir/src/curl/include/curl/curl.h lib1521.c
/usr/bin/perl /startdir/src/curl/scripts/mk-unity.pl --include memptr.c testutil.c testtrace.c ../../lib/curl_threads.c ../../lib/curlx/win32-fopen.c ../../lib/curlx/inet_ntop.c ../../lib/curlx/inet_pton.c ../../lib/curlx/multibyte.c ../../lib/curlx/strcopy.c ../../lib/curlx/strerr.c ../../lib/curlx/strparse.c ../../lib/curlx/timediff.c ../../lib/curlx/timeval.c ../../lib/curlx/version_win32.c ../../lib/curlx/wait.c ../../lib/curlx/warnless.c ../../lib/curlx/winapi.c ../../src/toolx/tool_time.c --test cli_ev_download.c cli_ftp_upload.c cli_h2_pausing.c cli_h2_serverpush.c cli_h2_upgrade_extreme.c cli_hx_download.c cli_hx_upload.c cli_tls_session_reuse.c cli_upload_pausing.c cli_ws_data.c cli_ws_pause.c cli_ws_pingpong.c cli_ws_write_err.c lib464.c lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib757.c lib758.c lib766.c lib1156.c lib1301.c lib1308.c lib1396.c lib1398.c lib1451.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1549.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1582.c lib1587.c lib1588.c lib1589.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1605.c lib1616.c lib1647.c lib1648.c lib1649.c lib1662.c lib1678.c lib1686.c lib1742.c lib1744.c lib1745.c lib1791.c lib1900.c lib1901.c lib1902.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1920.c lib1921.c lib1922.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1965.c lib1967.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib1985.c lib1989.c lib2023.c lib2032.c lib2082.c lib2095.c lib2118.c lib2270.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2380.c lib2397.c lib2402.c lib2404.c lib2405.c lib2412.c lib2414.c lib2453.c lib2502.c lib2504.c lib2505.c lib2506.c lib2700.c lib2805.c lib2924.c lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3107.c lib3207.c lib3208.c lib3231.c lib3233.c lib3234.c lib3595.c lib3596.c lib5000.c lib5004.c lib1521.c > libtests.c
  RUN      checksrc
  CC       libtests.o
  CCLD     libtests
make[2]: Leaving directory '/startdir/src/build-curl/tests/libtest'
Making all in http
make[2]: Entering directory '/startdir/src/build-curl/tests/http'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/startdir/src/build-curl/tests/http'
Making all in unit
make[2]: Entering directory '/startdir/src/build-curl/tests/unit'
(cd ../../lib && make unitprotos.h)
  RUN      checksrc
make[3]: Entering directory '/startdir/src/build-curl/lib'
  UNITPR   unitprotos.h
make[3]: Leaving directory '/startdir/src/build-curl/lib'
/usr/bin/perl /startdir/src/curl/scripts/mk-unity.pl --test unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1397.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1606.c unit1607.c unit1608.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1620.c unit1625.c unit1626.c unit1627.c unit1636.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1666.c unit1667.c unit1668.c unit1669.c unit1674.c unit1675.c unit1676.c unit1693.c unit1961.c unit1979.c unit1980.c unit2413.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit2605.c unit2606.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c unit3216.c unit3219.c unit3227.c unit3230.c unit3271.c unit3300.c unit3301.c unit3302.c unit3303.c unit3304.c unit3306.c unit3400.c unit4781.c unit4782.c > units.c
  CC       units.o
  CCLD     units
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c: In function 'inet_pton6':
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:180:19: warning: writing 32 bytes into a region of size 0 [-Wstringop-overflow=]
/usr/src/debug/curl/curl/lib/curlx/inet_pton.c:115:17: note: at offset [-9223372036854775760, -16] into destination object 'tmp' of size 16
make[2]: Leaving directory '/startdir/src/build-curl/tests/unit'
Making all in tunit
make[2]: Entering directory '/startdir/src/build-curl/tests/tunit'
/usr/bin/perl /startdir/src/curl/scripts/mk-unity.pl --test tool1394.c tool1604.c tool1621.c tool1622.c tool1623.c tool1720.c > tunits.c
  RUN      checksrc
  CC       tunits.o
  CCLD     tunits
make[2]: Leaving directory '/startdir/src/build-curl/tests/tunit'
make[2]: Entering directory '/startdir/src/build-curl/tests'
(cd certs && make)
make[3]: Entering directory '/startdir/src/build-curl/tests/certs'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/startdir/src/build-curl/tests/certs'
make[2]: Leaving directory '/startdir/src/build-curl/tests'
srcdir=/startdir/src/curl/tests /usr/bin/perl -I/startdir/src/curl/tests /startdir/src/curl/tests/runtests.pl  -a -p ~flaky ~timing-dependent -v -a -p -j24 !433
Using curl: ../src/curl
CMD (256): valgrind >/dev/null 2>&1
CMD (0): ../src/curl --version 1>log/curlverout.log 2>log/curlvererr.log
********* System characteristics ******** 
* curl 8.23.0 (x86_64-pc-linux-gnu) 
* libcurl/8.23.0 OpenSSL/3.6.5 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.70.0 ngtcp2/1.25.0 nghttp3/1.18.0 mit-krb5/1.22.2
* Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt mqtts pop3 pop3s rtsp scp sftp smtp smtps telnet tftp ws wss
* Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz PSL SPNEGO SSL threadsafe UnixSockets zstd
* Disabled: httpsig, win32-ca-searchpath, win32-ca-search-safe, override-dns, ssl-sessions
* Host: 
* System: Linux makechrootpkg-curl.build.1493407 6.18.47-1-lts #1 SMP PREEMPT_DYNAMIC Thu, 27 Aug 2026 14:08:11 +0000 x86_64 GNU/Linux
* OS: linux
* Perl: v5.42.3 (/usr/bin/perl)
* Args: -a -p ~flaky ~timing-dependent -v -a -p -j24 !433
* Jobs: 24
* Env: Valgrind 
* Seed: 231226
* Servers: HTTP-IPv6 HTTP-unix FTP-IPv6 
***************************************** 
DISABLED: test 594
DISABLED: test 836
DISABLED: test 882
DISABLED: test 938
DISABLED: test 1182
DISABLED: test 1184
DISABLED: test 1209
DISABLED: test 1211
DISABLED: test 1307
DISABLED: test 1316
DISABLED: test 1512
DISABLED: test 1801
DISABLED: test 2043
DISABLED: test 4656
test 0067 SKIPPED: curl lacks NTLM support
test 0068 SKIPPED: curl lacks NTLM support
test 0069 SKIPPED: curl lacks NTLM support
test 0096 SKIPPED: curl lacks TrackMemory support
test 0355 SKIPPED: curl lacks Debug support
test 0356 SKIPPED: curl lacks Debug support
test 0358 SKIPPED: curl lacks Debug support
test 0375 SKIPPED: curl has proxy support
test 0445 SKIPPED: curl lacks ldap support
test 0506 SKIPPED: curl has threaded-resolver support
test 0558 SKIPPED: curl lacks TrackMemory support
Warning: test573 result is ignored due to flaky
Warning: test587 result is ignored due to flaky
Warning: test766 result is ignored due to timing-dependent
test 0777 SKIPPED: curl lacks ssl-sessions support
test 0959 SKIPPED: curl has IDN support
test 0960 SKIPPED: curl has IDN support
test 0961 SKIPPED: curl has IDN support
test 1026 SKIPPED: curl lacks manual support
Warning: test1086 result is ignored due to flaky
Warning: test1086 result is ignored due to timing-dependent
Warning: test1112 result is ignored due to timing-dependent
Warning: test1113 result is ignored due to flaky
Warning: test1162 result is ignored due to flaky
Warning: test1163 result is ignored due to flaky
test 1179 SKIPPED: curl lacks manual support
Warning: test1208 result is ignored due to flaky
Warning: test1208 result is ignored due to timing-dependent
test 1330 SKIPPED: curl lacks TrackMemory support
test 1451 SKIPPED: curl lacks win32 support
test 1454 SKIPPED: curl has IPv6 support
test 1461 SKIPPED: curl lacks manual support
Warning: test1510 result is ignored due to flaky
Warning: test1592 result is ignored due to flaky
Warning: test1592 result is ignored due to timing-dependent
Warning: test1631 result is ignored due to flaky
Warning: test1632 result is ignored due to flaky
test 1678 SKIPPED: curl lacks SSLS-EXPORT support
test 1703 SKIPPED: curl lacks Unicode support
test 2033 SKIPPED: curl lacks Schannel support
test 2070 SKIPPED: curl lacks Schannel support
test 2079 SKIPPED: curl lacks Schannel support
test 2102 SKIPPED: curl lacks override-dns support
test 2103 SKIPPED: curl lacks override-dns support
test 2104 SKIPPED: curl lacks override-dns support
test 2500 SKIPPED: curl lacks nghttpx-h3 support
test 2503 SKIPPED: curl lacks nghttpx-h3 support
test 4000 SKIPPED: curl lacks ECH support
test 4001 SKIPPED: curl lacks ECH support
Runner 78981 starting
Runner 78980 starting
Runner 78979 starting
Runner 78978 starting
Runner 78977 starting
Runner 78976 starting
Runner 78975 starting
Runner 78974 starting
Runner 78973 starting
Runner 78972 starting
Runner 78971 starting
Runner 78970 starting
Runner 78969 starting
Runner 78968 starting
Runner 78967 starting
Runner 78966 starting
Runner 78965 starting
Runner 78964 starting
Runner 78963 starting
Runner 78962 starting
Runner 78961 starting
Runner 78960 starting
Runner 78959 starting
Runner 78958 starting
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind16 ../src/curl -q --output log/9/curl16.out  --include --trace-ascii log/9/trace16 --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:43733 http://we.want.that.site.com/16 > log/9/stdout16 2> log/9/stderr16
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind18 ../src/curl -q --include --trace-ascii log/7/trace18 --trace-time "127.0.0.1:40859/{18,180002,180003}" > log/7/stdout18 2> log/7/stderr18
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/9/server/http_server.pid" --logfile "log/9/http_server.log" --logdir "log/9" --portfile log/9/server/http_server.port --config log/9/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79135 port 43733
* pid http => 79135 79135
test 0016 [HTTP with proxy authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind16 ../src/curl -q --output log/9/curl16.out  --include --trace-ascii log/9/trace16 --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:43733 http://we.want.that.site.com/16 > log/9/stdout16 2> log/9/stderr16

 16: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 16
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind16 ../src/curl -q --output log/9/curl16.out  --include --trace-ascii log/9/trace16 --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:43733 http://we.want.that.site.com/16 > log/9/stdout16 2> log/9/stderr16
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.399620 Running HTTP IPv4 version on port 43733
 19:25:58.399750 Wrote pid 79135 to log/9/server/http_server.pid
 19:25:58.399791 Wrote port 43733 to log/9/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 16
=== End of file server.cmd
=== Start of file valgrind16
 ==79842== 
 ==79842== Process terminating with default action of signal 4 (SIGILL)
 ==79842==  Illegal opcode at address 0x492B75F
 ==79842==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79842==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79842==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79842==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79842==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79842==    by 0x49908EB: curl_version_info (version.c:600)
 ==79842==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79842==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79842==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79842==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind16
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind13 ../src/curl -q --output log/12/curl13.out  --include --trace-ascii log/12/trace13 --trace-time http://127.0.0.1:40921/want/13 -X DELETE > log/12/stdout13 2> log/12/stderr13
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3 ../src/curl -q --output log/22/curl3.out  --include --trace-ascii log/22/trace3 --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:35989/3 > log/22/stdout3 2> log/22/stderr3
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/7/server/http_server.pid" --logfile "log/7/http_server.log" --logdir "log/7" --portfile log/7/server/http_server.port --config log/7/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79175 port 40859
* pid http => 79175 79175
test 0018 [multiple requests using {} in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind18 ../src/curl -q --include --trace-ascii log/7/trace18 --trace-time "127.0.0.1:40859/{18,180002,180003}" > log/7/stdout18 2> log/7/stderr18

 18: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:26:07.992664487 +0000
+++ log/7/check-generated	2026-10-15 19:26:07.992323911 +0000
@@ -1,15 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 4[CR][LF]
-[CR][LF]
-moo[LF]
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 4[CR][LF]
-[CR][LF]
-foo[LF]
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 4[CR][LF]
-[CR][LF]
-hoo[LF]
== Contents of files in the log/7/ directory after test 18
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 4[CR][LF]
 [CR][LF]
 moo[LF]
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 4[CR][LF]
 [CR][LF]
 foo[LF]
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 4[CR][LF]
 [CR][LF]
 hoo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind18 ../src/curl -q --include --trace-ascii log/7/trace18 --trace-time "127.0.0.1:40859/{18,180002,180003}" > log/7/stdout18 2> log/7/stderr18
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.489300 Running HTTP IPv4 version on port 40859
 19:25:58.489440 Wrote pid 79175 to log/7/server/http_server.pid
 19:25:58.489487 Wrote port 40859 to log/7/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 18
=== End of file server.cmd
=== Start of file valgrind18
 ==79919== 
 ==79919== Process terminating with default action of signal 4 (SIGILL)
 ==79919==  Illegal opcode at address 0x492B75F
 ==79919==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79919==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79919==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79919==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79919==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79919==    by 0x49908EB: curl_version_info (version.c:600)
 ==79919==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79919==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79919==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79919==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind18
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/12/server/http_server.pid" --logfile "log/12/http_server.log" --logdir "log/12" --portfile log/12/server/http_server.port --config log/12/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79038 port 40921
* pid http => 79038 79038
test 0013 [HTTP custom request 'DELETE']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind13 ../src/curl -q --output log/12/curl13.out  --include --trace-ascii log/12/trace13 --trace-time http://127.0.0.1:40921/want/13 -X DELETE > log/12/stdout13 2> log/12/stderr13

 13: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 13
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind13 ../src/curl -q --output log/12/curl13.out  --include --trace-ascii log/12/trace13 --trace-time http://127.0.0.1:40921/want/13 -X DELETE > log/12/stdout13 2> log/12/stderr13
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.169912 Running HTTP IPv4 version on port 40921
 19:25:58.170038 Wrote pid 79038 to log/12/server/http_server.pid
 19:25:58.170081 Wrote port 40921 to log/12/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 13
=== End of file server.cmd
=== Start of file valgrind13
 ==79656== 
 ==79656== Process terminating with default action of signal 4 (SIGILL)
 ==79656==  Illegal opcode at address 0x492B75F
 ==79656==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79656==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79656==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79656==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79656==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79656==    by 0x49908EB: curl_version_info (version.c:600)
 ==79656==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79656==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79656==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79656==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind13
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/22/server/http_server.pid" --logfile "log/22/http_server.log" --logdir "log/22" --portfile log/22/server/http_server.port --config log/22/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78984 port 35989
* pid http => 78984 78984
test 0003 [HTTP POST with auth and contents but with content-length set to 0]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3 ../src/curl -q --output log/22/curl3.out  --include --trace-ascii log/22/trace3 --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:35989/3 > log/22/stdout3 2> log/22/stderr3

 3: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 3
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3 ../src/curl -q --output log/22/curl3.out  --include --trace-ascii log/22/trace3 --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:35989/3 > log/22/stdout3 2> log/22/stderr3
=== End of file commands.log
=== Start of file http_server.log
 19:25:57.259357 Running HTTP IPv4 version on port 35989
 19:25:57.259483 Wrote pid 78984 to log/22/server/http_server.pid
 19:25:57.259528 Wrote port 35989 to log/22/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 3
=== End of file server.cmd
=== Start of file valgrind3
 ==79069== 
 ==79069== Process terminating with default action of signal 4 (SIGILL)
 ==79069==  Illegal opcode at address 0x492B75F
 ==79069==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79069==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79069==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79069==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79069==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79069==    by 0x49908EB: curl_version_info (version.c:600)
 ==79069==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79069==    by 0x4003269: UnknownInlinedFun (tool_cfCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind22 ../src/curl -q --output log/3/curl22.out  --include --trace-ascii log/3/trace22 --trace-time 127.0.0.1:36753/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/3/stdout22 2> log/3/stderr22
gable.c:339)
 ==79069==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79069==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/3/server/http_server.pid" --logfile "log/3/http_server.log" --logdir "log/3" --portfile log/3/server/http_server.port --config log/3/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79339 port 36753
* pid http => 79339 79339
test 0022 [get HTTP with URL > 10000 bytes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind22 ../src/curl -q --output log/3/curl22.out  --include --trace-ascii log/3/trace22 --trace-time 127.0.0.1:36753/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/3/stdout22 2> log/3/stderr22

 22: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 22
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind22 ../src/curl -q --output log/3/curl22.out  --include --trace-ascii log/3/trace22 --trace-time 127.0.0.1:36753/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/3/stdout22 2> log/3/stderr22
=== End of file commands.log
=== Start of file http_server.log
 19:25:59.710598 Running HTTP IPv4 version on port 36753
 19:25:59.710708 Wrote pid 79339 to log/3/server/http_server.pid
 19:25:59.710740 Wrote port 36753 to log/3/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 22
=== End of file server.cmd
=== Start of file valgrind22
 ==80073== 
 ==80073== Process terminating with default action of signal 4 (SIGILL)
 ==80073==  Illegal opcode at address 0x492B75F
 ==80073==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80073==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80073==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80073==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80073==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80073==    by 0x49908EB: curl_version_info (version.c:600)
 ==80073==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80073==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80073==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80073== CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind6 ../src/curl -q --output log/19/curl6.out  --include --trace-ascii log/19/trace6 --trace-time http://127.0.0.1:46497/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/19/stdout6 2> log/19/stderr6
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind17 ../src/curl -q --output log/8/curl17.out  --include --trace-ascii log/8/trace17 --trace-time -K - 127.0.0.1:44467/that.site.com/17 <log/8/stdin-for-17 > log/8/stdout17 2> log/8/stderr17
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind25 ../src/curl -q --output log/9/curl25.out  --include --trace-ascii log/9/trace25 --trace-time http://127.0.0.1:43733/want/25 -L --max-redirs 5 > log/9/stdout25 2> log/9/stderr25
   by 0x4003269: main (tool_main.c:195)
=== End of file valgrind22
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/19/server/http_server.pid" --logfile "log/19/http_server.log" --logdir "log/19" --portfile log/19/server/http_server.port --config log/19/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78987 port 46497
* pid http => 78987 78987
test 0006 [HTTP with simple cookie send]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind6 ../src/curl -q --output log/19/curl6.out  --include --trace-ascii log/19/trace6 --trace-time http://127.0.0.1:46497/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/19/stdout6 2> log/19/stderr6

 6: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 6
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind6 ../src/curl -q --output log/19/curl6.out  --include --trace-ascii log/19/trace6 --trace-time http://127.0.0.1:46497/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/19/stdout6 2> log/19/stderr6
=== End of file commands.log
=== Start of file http_server.log
 19:25:57.574364 Running HTTP IPv4 version on port 46497
 19:25:57.574490 Wrote pid 78987 to log/19/server/http_server.pid
 19:25:57.574532 Wrote port 46497 to log/19/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 6
=== End of file server.cmd
=== Start of file valgrind6
 ==79257== 
 ==79257== Process terminating with default action of signal 4 (SIGILL)
 ==79257==  Illegal opcode at address 0x492B75F
 ==79257==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79257==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79257==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79257==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79257==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79257==    by 0x49908EB: curl_version_info (version.c:600)
 ==79257==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79257==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79257==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79257==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind6
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/8/server/http_server.pid" --logfile "log/8/http_server.log" --logdir "log/8" --portfile log/8/server/http_server.port --config log/8/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79137 port 44467
* pid http => 79137 79137
test 0017 [HTTP with config file on stdin]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind17 ../src/curl -q --output log/8/curl17.out  --include --trace-ascii log/8/trace17 --trace-time -K - 127.0.0.1:44467/that.site.com/17 <log/8/stdin-for-17 > log/8/stdout17 2> log/8/stderr17

 17: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 17
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind17 ../src/curl -q --output log/8/curl17.out  --include --trace-ascii log/8/trace17 --trace-time -K - 127.0.0.1:44467/that.site.com/17 <log/8/stdin-for-17 > log/8/stdout17 2> log/8/stderr17
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.393140 Running HTTP IPv4 version on port 44467
 19:25:58.393263 Wrote pid 79137 to log/8/server/http_server.pid
 19:25:58.393300 Wrote port 44467 to log/8/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 17
=== End of file server.cmd
=== Start of file stdin-for-17
 # Use a silly request without '--':
 request MOOO
 # Set the user-agent using a short-option:
 -A "agent007 license to drill\t"
 # long option *with* '--':
 --max-time 180
=== End of file stdin-for-17
=== Start of file valgrind17
 ==79846== 
 ==79846== Process terminating with default action of signal 4 (SIGILL)
 ==79846==  Illegal opcode at address 0x492B75F
 ==79846==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79846==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79846==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79846==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79846==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79846==    by 0x49908EB: curl_version_info (version.c:600)
 ==79846==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79846==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79846==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79846==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind17
test 0025 [looping HTTP Location: following with --max-redirs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind25 ../src/curl -q --output log/9/curl25.out  --include --trace-ascii log/9/trace25 --trace-time http://127.0.0.1:43733/want/25 -L --max-redirs 5 > log/9/stdout25 2> log/9/stderr25

 25: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 25
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind25 ../src/curl -q --output log/9/curl25.out  --include --trace-ascii log/9/trace25 --trace-time http://127.0.0.1:43733/want/25 -L --max-redirs 5 > log/9/stdout25 2> log/9/stderr25
=== End of file commands.log
=== Start of file http_server.log
 19:26:07.625010 ====> Client connect
 19:26:07.625049 accept_connection 3 returned 4
 19:26:07.625202 Read 93 bytes
 19:26:07.625217 Process 93 bytes request
 19:26:07.625240 Got request: GET /verifiedserver HTTP/1.1
 19:26:07.625249 Are-we-friendly question received
 19:26:07.625316 Wrote request (93 bytes) input to log/9/server.input
 19:26:07.625338 Identifying ourselves as friends
 19:26:07.625501 Response sent (56 bytes) and written to log/9/server.response
 19:26:07.625514 special request received, no persistency
 19:26:07.625521 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 56856 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 25
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind25
 ==80390== 
 ==80390== Process terminating with default action of signal 4 (SIGILL)
 ==80390==  Illegal opcode at address 0x492B75F
 ==80390==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80390==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80390CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind26 ../src/curl -q --output log/7/curl26.out  --include --trace-ascii log/7/trace26 --trace-time http://127.0.0.1:40859/want/26 -o - -o - > log/7/stdout26 2> log/7/stderr26
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind21 ../src/curl -q --output log/4/curl21.out  --include --trace-ascii log/4/trace21 --trace-time -I -d FOOO -F moo=moo localhost > log/4/stdout21 2> log/4/stderr21
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind27 ../src/curl -q --output log/12/curl27.out  --include --trace-ascii log/12/trace27 --trace-time "http://127.0.0.1:40921/want/{27,27,27}" -b none > log/12/stdout27 2> log/12/stderr27
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind14 ../src/curl -q --output log/11/curl14.out  --include --trace-ascii log/11/trace14 --trace-time http://127.0.0.1:40989/want/14 -i --head > log/11/stdout14 2> log/11/stderr14
==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80390==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80390==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80390==    by 0x49908EB: curl_version_info (version.c:600)
 ==80390==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80390==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80390==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80390==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind25
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/4/server/http_server.pid" --logfile "log/4/http_server.log" --logdir "log/4" --portfile log/4/server/http_server.port --config log/4/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79264 port 35735
* pid http => 79264 79264
test 0021 [use curl with multiple request methods]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind21 ../src/curl -q --output log/4/curl21.out  --include --trace-ascii log/4/trace21 --trace-time -I -d FOOO -F moo=moo localhost > log/4/stdout21 2> log/4/stderr21

curl returned 132, when expecting 2
 21: exit FAILED
== Contents of files in the log/4/ directory after test 21
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind21 ../src/curl -q --output log/4/curl21.out  --include --trace-ascii log/4/trace21 --trace-time -I -d FOOO -F moo=moo localhost > log/4/stdout21 2> log/4/stderr21
=== End of file commands.log
=== Start of file http_server.log
 19:25:59.603632 Running HTTP IPv4 version on port 35735
 19:25:59.603866 Wrote pid 79264 to log/4/server/http_server.pid
 19:25:59.603905 Wrote port 35735 to log/4/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 21
=== End of file server.cmd
=== Start of file valgrind21
 ==79986== 
 ==79986== Process terminating with default action of signal 4 (SIGILL)
 ==79986==  Illegal opcode at address 0x492B75F
 ==79986==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79986==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79986==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79986==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79986==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79986==    by 0x49908EB: curl_version_info (version.c:600)
 ==79986==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79986==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79986==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79986==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind21
test 0026 [specify more -o than URLs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind26 ../src/curl -q --output log/7/curl26.out  --include --trace-ascii log/7/trace26 --trace-time http://127.0.0.1:40859/want/26 -o - -o - > log/7/stdout26 2> log/7/stderr26

 26: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 26
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind26 ../src/curl -q --output log/7/curl26.out  --include --trace-ascii log/7/trace26 --trace-time http://127.0.0.1:40859/want/26 -o - -o - > log/7/stdout26 2> log/7/stderr26
=== End of file commands.log
=== Start of file http_server.log
 19:26:07.692167 ====> Client connect
 19:26:07.692225 accept_connection 3 returned 4
 19:26:07.692260 Read 93 bytes
 19:26:07.692272 Process 93 bytes request
 19:26:07.692298 Got request: GET /verifiedserver HTTP/1.1
 19:26:07.692308 Are-we-friendly question received
 19:26:07.692340 Wrote request (93 bytes) input to log/7/server.input
 19:26:07.692362 Identifying ourselves as friends
 19:26:07.692501 Response sent (56 bytes) and written to log/7/server.response
 19:26:07.692515 special request received, no persistency
 19:26:07.692524 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 37256 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 26
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind26
 ==80411== 
 ==80411== Process terminating with default action of signal 4 (SIGILL)
 ==80411==  Illegal opcode at address 0x492B75F
 ==80411==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80411==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80411==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80411==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80411==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80411==    by 0x49908EB: curl_version_info (version.c:600)
 ==80411==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80411==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80411==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80411==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind26
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/11/server/http_server.pid" --logfile "log/11/http_server.log" --logdir "log/11" --portfile log/11/server/http_server.port --config log/11/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79065 port 40989
* pid http => 79065 79065
test 0014 [HTTP HEAD with Connection: close]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind14 ../src/curl -q --output log/11/curl14.out  --include --trace-ascii log/11/trace14 --trace-time http://127.0.0.1:40989/want/14 -i --head > log/11/stdout14 2> log/11/stderr14

 14: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 14
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind14 ../src/curl -q --output log/11/curl14.out  --include --trace-ascii log/11/trace14 --trace-time http://127.0.0.1:40989/want/14 -i --head > log/11/stdout14 2> log/11/stderr14
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.290494 Running HTTP IPv4 version on port 40989
 19:25:58.290612 Wrote pid 79065 to log/11/server/http_server.pid
 19:25:58.290653 Wrote port 40989 to log/11/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 14
=== End of file server.cmd
=== Start of file valgrind14
 ==79752== 
 ==79752== Process terminating with default action of signal 4 (SIGILL)
 ==79752==  Illegal opcode at address 0x492B75F
 ==79752==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79752==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79752==    by 0x492B67B: curl_msnprintf (mpCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind11 ../src/curl -q --output log/14/curl11.out  --include --trace-ascii log/14/trace11 --trace-time http://127.0.0.1:45467/want/11 -L > log/14/stdout11 2> log/14/stderr11
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind4 ../src/curl -q --output log/21/curl4.out  --include --trace-ascii log/21/trace4 --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3:  " -H "X-Test4;  " -H "X-Test5;ignored" http://127.0.0.1:39881/4 http://127.0.0.1:39881/4 > log/21/stdout4 2> log/21/stderr4
rintf.c:1277)
 ==79752==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79752==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79752==    by 0x49908EB: curl_version_info (version.c:600)
 ==79752==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79752==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79752==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79752==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind14
test 0027 [Get same cookie page several times]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind27 ../src/curl -q --output log/12/curl27.out  --include --trace-ascii log/12/trace27 --trace-time "http://127.0.0.1:40921/want/{27,27,27}" -b none > log/12/stdout27 2> log/12/stderr27

 27: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 27
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind27 ../src/curl -q --output log/12/curl27.out  --include --trace-ascii log/12/trace27 --trace-time "http://127.0.0.1:40921/want/{27,27,27}" -b none > log/12/stdout27 2> log/12/stderr27
=== End of file commands.log
=== Start of file http_server.log
 19:26:07.812007 ====> Client connect
 19:26:07.812046 accept_connection 3 returned 4
 19:26:07.812095 Read 93 bytes
 19:26:07.812180 Process 93 bytes request
 19:26:07.812205 Got request: GET /verifiedserver HTTP/1.1
 19:26:07.812213 Are-we-friendly question received
 19:26:07.812242 Wrote request (93 bytes) input to log/12/server.input
 19:26:07.812260 Identifying ourselves as friends
 19:26:07.812334 Response sent (56 bytes) and written to log/12/server.response
 19:26:07.812347 special request received, no persistency
 19:26:07.812355 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 44376 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 27
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind27
 ==80491== 
 ==80491== Process terminating with default action of signal 4 (SIGILL)
 ==80491==  Illegal opcode at address 0x492B75F
 ==80491==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80491==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80491==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80491==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80491==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80491==    by 0x49908EB: curl_version_info (version.c:600)
 ==80491==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80491==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind27
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/14/server/http_server.pid" --logfile "log/14/http_server.log" --logdir "log/14" --portfile log/14/server/http_server.port --config log/14/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78993 port 45467
* pid http => 78993 78993
test 0011 [simple HTTP Location: following]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind11 ../src/curl -q --output log/14/curl11.out  --include --trace-ascii log/14/trace11 --trace-time http://127.0.0.1:45467/want/11 -L > log/14/stdout11 2> log/14/stderr11

 11: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 11
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind11 ../src/curl -q --output log/14/curl11.out  --include --trace-ascii log/14/trace11 --trace-time http://127.0.0.1:45467/want/11 -L > log/14/stdout11 2> log/14/stderr11
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.066605 Running HTTP IPv4 version on port 45467
 19:25:58.066731 Wrote pid 78993 to log/14/server/http_server.pid
 19:25:58.066774 Wrote port 45467 to log/14/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 11
=== End of file server.cmd
=== Start of file valgrind11
 ==79584== 
 ==79584== Process terminating with default action of signal 4 (SIGILL)
 ==79584==  Illegal opcode at address 0x492B75F
 ==79584==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79584==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79584==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79584==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79584==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79584==    by 0x49908EB: curl_version_info (version.c:600)
 ==79584==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79584==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79584==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79584==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind11
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/21/server/http_server.pid" --logfile "log/21/http_server.log" --logdir "log/21" --portfile log/21/server/http_server.port --config log/21/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78985 port 39881
* pid http => 78985 78985
test 0004 [Replaced internal and added custom HTTP headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind4 ../src/curl -q --output log/21/curl4.out  --include --trace-ascii log/21/trace4 --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3:  " -H "X-Test4;  " -H "X-Test5;ignored" http://127.0.0.1:39881/4 http://127.0.0.1:39881/4 > log/21/stdout4 2> log/21/stderr4

 4: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 4
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind4 ../src/curl -q --output log/21/curl4.out  --include --trace-ascii log/21/trace4 --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3:  " -H "X-Test4;  " -H "X-Test5;ignored" http://127.0.0.1:39881/4 http://127.0.0.1:39881/4 > log/21/stdout4 2> log/21/stderr4
=== End of file commands.log
=== Start of file http_server.log
 19:25:57.371401 Running HTTP IPv4 version on port 39881
 19:25:57.371528 Wrote pid 78985 to log/21/server/http_server.pid
 19:25:57.371574 Wrote port 39881 to loCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind28 ../src/curl -q --output log/22/curl28.out  --include --trace-ascii log/22/trace28 --trace-time http://127.0.0.1:35989/want/28 -L > log/22/stdout28 2> log/22/stderr28
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind12 ../src/curl -q --output log/13/curl12.out  --include --trace-ascii log/13/trace12 --trace-time http://127.0.0.1:38821/want/12 -r 100-200 > log/13/stdout12 2> log/13/stderr12
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind29 ../src/curl -q --output log/3/curl29.out  --include --trace-ascii log/3/trace29 --trace-time http://127.0.0.1:36753/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29
RUN: Process with pid 79339 signalled to die
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind24 ../src/curl -q --output log/1/curl24.out  --include --trace-ascii log/1/trace24 --trace-time http://127.0.0.1:38815/24 --fail --silent --show-error > log/1/stdout24 2> log/1/stderr24
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind30 ../src/curl -q --output log/19/curl30.out  --include --trace-ascii log/19/trace30 --trace-time http://127.0.0.1:46497/want/30 > log/19/stdout30 2> log/19/stderr30
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind15 ../src/curl -q --include --trace-ascii log/10/trace15 --trace-time http://127.0.0.1:40913/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/10/stdout15 2> log/10/stderr15
RUN: Process with pid 79339 gracefully died
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind31 ../src/curl -q --output log/8/curl31.out  --include --trace-ascii log/8/trace31 --trace-time http://test31.curl:44467/we/want/31 -b none -c log/8/jar31.txt --resolve test31.curl:44467:127.0.0.1 > log/8/stdout31 2> log/8/stderr31
g/21/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 4
=== End of file server.cmd
=== Start of file valgrind4
 ==79138== 
 ==79138== Process terminating with default action of signal 4 (SIGILL)
 ==79138==  Illegal opcode at address 0x492B75F
 ==79138==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79138==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79138==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79138==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79138==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79138==    by 0x49908EB: curl_version_info (version.c:600)
 ==79138==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79138==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79138==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79138==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind4
test 0028 [HTTP Location: following with extra spaces in header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind28 ../src/curl -q --output log/22/curl28.out  --include --trace-ascii log/22/trace28 --trace-time http://127.0.0.1:35989/want/28 -L > log/22/stdout28 2> log/22/stderr28

 28: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 28
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind28 ../src/curl -q --output log/22/curl28.out  --include --trace-ascii log/22/trace28 --trace-time http://127.0.0.1:35989/want/28 -L > log/22/stdout28 2> log/22/stderr28
=== End of file commands.log
=== Start of file http_server.log
 19:26:07.970105 ====> Client connect
 19:26:07.995703 accept_connection 3 returned 4
 19:26:07.996104 Read 93 bytes
 19:26:07.996122 Process 93 bytes request
 19:26:07.996148 Got request: GET /verifiedserver HTTP/1.1
 19:26:07.996158 Are-we-friendly question received
 19:26:08.022284 Wrote request (93 bytes) input to log/22/server.input
 19:26:08.022329 Identifying ourselves as friends
 19:26:08.046827 Response sent (56 bytes) and written to log/22/server.response
 19:26:08.046849 special request received, no persistency
 19:26:08.046858 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 40860 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 28
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind28
 ==80591== 
 ==80591== Process terminating with default action of signal 4 (SIGILL)
 ==80591==  Illegal opcode at address 0x492B75F
 ==80591==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80591==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80591==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80591==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80591==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80591==    by 0x49908EB: curl_version_info (version.c:600)
 ==80591==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80591==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80591==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80591==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind28
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/13/server/http_server.pid" --logfile "log/13/http_server.log" --logdir "log/13" --portfile log/13/server/http_server.port --config log/13/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79032 port 38821
* pid http => 79032 79032
test 0012 [HTTP range support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind12 ../src/curl -q --output log/13/curl12.out  --include --trace-ascii log/13/trace12 --trace-time http://127.0.0.1:38821/want/12 -r 100-200 > log/13/stdout12 2> log/13/stderr12

 12: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 12
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind12 ../src/curl -q --output log/13/curl12.out  --include --trace-ascii log/13/trace12 --trace-time http://127.0.0.1:38821/want/12 -r 100-200 > log/13/stdout12 2> log/13/stderr12
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.173377 Running HTTP IPv4 version on port 38821
 19:25:58.173464 Wrote pid 79032 to log/13/server/http_server.pid
 19:25:58.173496 Wrote port 38821 to log/13/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 12
=== End of file server.cmd
=== Start of file valgrind12
 ==79655== 
 ==79655== Process terminating with default action of signal 4 (SIGILL)
 ==79655==  Illegal opcode at address 0x492B75F
 ==79655==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79655==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79655==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79655==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79655==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79655==    by 0x49908EB: curl_version_info (version.c:600)
 ==79655==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79655==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79655==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79655==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind12
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/1/server/http_server.pid" --logfile "log/1/http_server.log" --logdir "log/1" --portfile log/1/server/http_server.port --config log/1/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79446 port 38815
* pid http => 79446 79446
test 0024 [HTTP GET fail silently on HTTP error return]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind24 ../src/curl -q --output log/1/curl24.out  --include --trace-ascii log/1/trace24 --trace-time http://127.0.0.1:38815/24 --fail --silent --show-error > log/1/stdout24 2> log/1/stderr24

 24: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 24
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind24 ../src/curl -q --output log/1/curl24.out  --include --trace-ascii log/1/trace24 --trace-time http://127.0.0.1:38815/24 --fail --silent --show-error > log/1/stdout24 2> log/1/stderr24
=== End of file commands.log
=== Start of file http_server.log
 19:25:59.829195 Running HTTP IPv4 version on port 3881CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1 ../src/curl -q --output log/24/curl1.out  --include --trace-ascii log/24/trace1 --trace-time http://127.0.0.1:38895/1 > log/24/stdout1 2> log/24/stderr1
5
 19:25:59.829305 Wrote pid 79446 to log/1/server/http_server.pid
 19:25:59.829341 Wrote port 38815 to log/1/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 24
=== End of file server.cmd
=== Start of file valgrind24
 ==80106== 
 ==80106== Process terminating with default action of signal 4 (SIGILL)
 ==80106==  Illegal opcode at address 0x492B75F
 ==80106==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80106==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80106==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80106==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80106==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80106==    by 0x49908EB: curl_version_info (version.c:600)
 ==80106==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80106==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80106==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80106==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind24
test 0029 [HTTP with 2 secs timeout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind29 ../src/curl -q --output log/3/curl29.out  --include --trace-ascii log/3/trace29 --trace-time http://127.0.0.1:36753/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29

 29: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 29
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind29 ../src/curl -q --output log/3/curl29.out  --include --trace-ascii log/3/trace29 --trace-time http://127.0.0.1:36753/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29
=== End of file commands.log
=== Start of file http_server.log
 19:26:09.361845 ====> Client connect
 19:26:09.361887 accept_connection 3 returned 4
 19:26:09.361919 Read 93 bytes
 19:26:09.361935 Process 93 bytes request
 19:26:09.361957 Got request: GET /verifiedserver HTTP/1.1
 19:26:09.361967 Are-we-friendly question received
 19:26:09.362001 Wrote request (93 bytes) input to log/3/server.input
 19:26:09.362022 Identifying ourselves as friends
 19:26:09.362097 Response sent (56 bytes) and written to log/3/server.response
 19:26:09.362108 special request received, no persistency
 19:26:09.362117 ====> Client disconnect 0
 19:26:11.199486 signalled to die
 19:26:11.300213 ========> exit message: exit_signal_handler(): triggered
 19:26:11.300241 ========> IPv4 sws (port 36753 pid: 79339) exits with signal (15)
 19:26:11.300256 ========> sws quits
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36753...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36753) from 127.0.0.1 port 45722 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36753
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36753 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79339
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 29
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79339
=== End of file server.response
=== Start of file valgrind29
 ==80596== 
 ==80596== Process terminating with default action of signal 4 (SIGILL)
 ==80596==  Illegal opcode at address 0x492B75F
 ==80596==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80596==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80596==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80596==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80596==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80596==    by 0x49908EB: curl_version_info (version.c:600)
 ==80596==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80596==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind29
setenv TZ = GMT
test 0031 [HTTP with weirdly formatted cookies and cookiejar storage]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind31 ../src/curl -q --output log/8/curl31.out  --include --trace-ascii log/8/trace31 --trace-time http://test31.curl:44467/we/want/31 -b none -c log/8/jar31.txt --resolve test31.curl:44467:127.0.0.1 > log/8/stdout31 2> log/8/stderr31

 31: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 31
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind31 ../src/curl -q --output log/8/curl31.out  --include --trace-ascii log/8/trace31 --trace-time http://test31.curl:44467/we/want/31 -b none -c log/8/jar31.txt --resolve test31.curl:44467:127.0.0.1 > log/8/stdout31 2> log/8/stderr31
=== End of file commands.log
=== Start of file http_server.log
 19:26:08.699062 ====> Client connect
 19:26:08.725757 accept_connection 3 returned 4
 19:26:08.742412 Read 93 bytes
 19:26:08.742444 Process 93 bytes request
 19:26:08.742471 Got request: GET /verifiedserver HTTP/1.1
 19:26:08.742481 Are-we-friendly question received
 19:26:08.742535 Wrote request (93 bytes) input to log/8/server.input
 19:26:08.742558 Identifying ourselves as friends
 19:26:08.742646 Response sent (56 bytes) and written to log/8/server.response
 19:26:08.742661 special request received, no persistency
 19:26:08.742669 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 51836 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 31
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind31
 ==80764== 
 ==80764== Process terminating with default action of signal 4 (SIGILL)
 ==80764==  Illegal opcode at address 0x492B75F
 ==80764==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80764==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80764==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80764==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80764==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80764==    by 0x49908EB: curl_version_info (version.c:600)
 ==80764==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80764==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80764==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80764==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind31
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind23 ../src/curl -q --output log/2/curl23.out  --include --trace-ascii log/2/trace23 --trace-time htfp://127.0.0.1:34531/none.htfml > log/2/stdout23 2> log/2/stderr23
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2 ../src/curl -q --output log/23/curl2.out  --include --trace-ascii log/23/trace2 --trace-time -u fake:user http://127.0.0.1:44711/2 > log/23/stdout2 2> log/23/stderr2
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind5 ../src/curl -q --output log/20/curl5.out  --include --trace-ascii log/20/trace5 --trace-time http://127.0.0.1:33897/we/want/that/page/5#5 -x 127.0.0.1:33897 > log/20/stdout5 2> log/20/stderr5
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/10/server/http_server.pid" --logfile "log/10/http_server.log" --logdir "log/10" --portfile log/10/server/http_server.port --config log/10/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79067 port 40913
* pid http => 79067 79067
test 0015 [--write-out test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind15 ../src/curl -q --include --trace-ascii log/10/trace15 --trace-time http://127.0.0.1:40913/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/10/stdout15 2> log/10/stderr15

 15: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:26:10.970862632 +0000
+++ log/10/check-generated	2026-10-15 19:26:10.940673463 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Fake: yes[CR][LF]
-Fake: yes[CR][LF]
-Fake: yes[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-Repeated nonsense-headers[LF]
-http://127.0.0.1:40913/want/15 200 26[LF]
== Contents of files in the log/10/ directory after test 15
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Fake: yes[CR][LF]
 Fake: yes[CR][LF]
 Fake: yes[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 Repeated nonsense-headers[LF]
 http://127.0.0.1:40913/want/15 200 26[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind15 ../src/curl -q --include --trace-ascii log/10/trace15 --trace-time http://127.0.0.1:40913/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/10/stdout15 2> log/10/stderr15
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.273787 Running HTTP IPv4 version on port 40913
 19:25:58.273907 Wrote pid 79067 to log/10/server/http_server.pid
 19:25:58.273946 Wrote port 40913 to log/10/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 15
=== End of file server.cmd
=== Start of file valgrind15
 ==79742== 
 ==79742== Process terminating with default action of signal 4 (SIGILL)
 ==79742==  Illegal opcode at address 0x492B75F
 ==79742==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79742==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79742==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79742==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79742==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79742==    by 0x49908EB: curl_version_info (version.c:600)
 ==79742==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79742==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind15
test 0030 [HTTP with no data in server reply]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind30 ../src/curl -q --output log/19/curl30.out  --include --trace-ascii log/19/trace30 --trace-time http://127.0.0.1:46497/want/30 > log/19/stdout30 2> log/19/stderr30

 30: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 30
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind30 ../src/curl -q --output log/19/curl30.out  --include --trace-ascii log/19/trace30 --trace-time http://127.0.0.1:46497/want/30 > log/19/stdout30 2> log/19/stderr30
=== End of file commands.log
=== Start of file http_server.log
 19:26:08.641250 ====> Client connect
 19:26:08.641290 accept_connection 3 returned 4
 19:26:08.641313 Read 93 bytes
 19:26:08.641330 Process 93 bytes request
 19:26:08.641353 Got request: GET /verifiedserver HTTP/1.1
 19:26:08.641363 Are-we-friendly question received
 19:26:08.641397 Wrote request (93 bytes) input to log/19/server.input
 19:26:08.641419 Identifying ourselves as friends
 19:26:08.641511 Response sent (56 bytes) and written to log/19/server.response
 19:26:08.641524 special request received, no persistency
 19:26:08.641533 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 59310 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 30
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind30
 ==80727== 
 ==80727== Process terminating with default action of signal 4 (SIGILL)
 ==80727==  Illegal opcode at address 0x492B75F
 ==80727==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80727==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80727==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80727==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80727==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80727==    by 0x49908EB: curl_version_info (version.c:600)
 ==80727==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80727==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80727==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80727==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind30
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/2/server/http_server.pid" --logfile "log/2/http_server.log" --logdir "log/2" --portfile log/2/server/http_server.port --config log/2/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 79439 port 34531
* pid http => 79439 79439
test 0023 [unsupported protocol:// URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind23 ../src/curl -q --output log/2/curl23.out  --include --trace-ascii log/2/trace23 --trace-time htfp://127.0.0.1:34531/none.htfml > log/2/stdout23 2> log/2/stderr23

curl returned 132, when expecting 1
 23: exit FAILED
== Contents of files in the log/2/ directory after test 23
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind23 ../src/curl -q --output log/2/curl23.out  --include --trace-ascii log/2/trace23 --trace-time htfp://127.0.0.1:34531/none.htfml > log/2/stdout23 2> log/2/stderr23
=== End of file commands.log
=== Start of file http_server.log
 19:25:59.815045 Running HTTP IPv4 version on port 34531
 19:25:59.815145 Wrote pid 79439 to log/2/server/http_server.pid
 19:25:59.815179 Wrote port 34531 to log/2/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 23
=== End of file server.cmd
=== Start of file valgrind23
 ==80107== 
 ==80107== Process terminating with default action of signal 4 (SIGILL)
 ==80107==  Illegal opcode at address 0x492B75F
 ==80107==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80107==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80107==    by 0x492B67B: curl_msnprintf (mprintf.cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind19 ../src/curl -q --output log/6/curl19.out  --include --trace-ascii log/6/trace19 --trace-time --trace-config all 127.0.0.1:47 > log/6/stdout19 2> log/6/stderr19
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind32 ../src/curl -q --output log/9/curl32.out  --include --trace-ascii log/9/trace32 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:43733/32 -G > log/9/stdout32 2> log/9/stderr32
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind33 ../src/curl -q --output log/12/curl33.out  --include --trace-ascii log/12/trace33 --trace-time http://127.0.0.1:40921/33 -Tlog/12/test33.txt -C 50 --no-progress-meter > log/12/stdout33 2> log/12/stderr33
:1277)
 ==80107==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80107==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80107==    by 0x49908EB: curl_version_info (version.c:600)
 ==80107==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80107==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80107==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80107==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind23
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/20/server/http_server.pid" --logfile "log/20/http_server.log" --logdir "log/20" --portfile log/20/server/http_server.port --config log/20/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78986 port 33897
* pid http => 78986 78986
test 0005 [HTTP over proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind5 ../src/curl -q --output log/20/curl5.out  --include --trace-ascii log/20/trace5 --trace-time http://127.0.0.1:33897/we/want/that/page/5#5 -x 127.0.0.1:33897 > log/20/stdout5 2> log/20/stderr5

 5: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 5
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind5 ../src/curl -q --output log/20/curl5.out  --include --trace-ascii log/20/trace5 --trace-time http://127.0.0.1:33897/we/want/that/page/5#5 -x 127.0.0.1:33897 > log/20/stdout5 2> log/20/stderr5
=== End of file commands.log
=== Start of file http_server.log
 19:25:57.468977 Running HTTP IPv4 version on port 33897
 19:25:57.469117 Wrote pid 78986 to log/20/server/http_server.pid
 19:25:57.469159 Wrote port 33897 to log/20/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 5
=== End of file server.cmd
=== Start of file valgrind5
 ==79176== 
 ==79176== Process terminating with default action of signal 4 (SIGILL)
 ==79176==  Illegal opcode at address 0x492B75F
 ==79176==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79176==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79176==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79176==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79176==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79176==    by 0x49908EB: curl_version_info (version.c:600)
 ==79176==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79176==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79176==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79176==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind5
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/23/server/http_server.pid" --logfile "log/23/http_server.log" --logdir "log/23" --portfile log/23/server/http_server.port --config log/23/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78983 port 44711
* pid http => 78983 78983
test 0002 [HTTP GET with user and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2 ../src/curl -q --output log/23/curl2.out  --include --trace-ascii log/23/trace2 --trace-time -u fake:user http://127.0.0.1:44711/2 > log/23/stdout2 2> log/23/stderr2

 2: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 2
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2 ../src/curl -q --output log/23/curl2.out  --include --trace-ascii log/23/trace2 --trace-time -u fake:user http://127.0.0.1:44711/2 > log/23/stdout2 2> log/23/stderr2
=== End of file commands.log
=== Start of file http_server.log
 19:25:57.166294 Running HTTP IPv4 version on port 44711
 19:25:57.166417 Wrote pid 78983 to log/23/server/http_server.pid
 19:25:57.166452 Wrote port 44711 to log/23/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 2
=== End of file server.cmd
=== Start of file valgrind2
 ==79040== 
 ==79040== Process terminating with default action of signal 4 (SIGILL)
 ==79040==  Illegal opcode at address 0x492B75F
 ==79040==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79040==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79040==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79040==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79040==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79040==    by 0x49908EB: curl_version_info (version.c:600)
 ==79040==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79040==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79040==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79040==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2
Warning: 78981: cleardir(log/24/lock) failed
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/24/server/http_server.pid" --logfile "log/24/http_server.log" --logdir "log/24" --portfile log/24/server/http_server.port --config log/24/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78982 port 38895
* pid http => 78982 78982
test 0001 [HTTP GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1 ../src/curl -q --output log/24/curl1.out  --include --trace-ascii log/24/trace1 --trace-time http://127.0.0.1:38895/1 > log/24/stdout1 2> log/24/stderr1

 1: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1 ../src/curl -q --output log/24/curl1.out  --include --trace-ascii log/24/trace1 --trace-time http://127.0.0.1:38895/1 > log/24/stdout1 2> log/24/stderr1
=== End of file commands.log
=== Start of file http_server.log
 19:25:57.054776 Running HTTP IPv4 version on port 38895
 19:25:57.054907 Wrote pid 78982 to log/24/server/http_server.pid
 19:25:57.054949 Wrote port 38895 to log/24/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 1
=== End of file server.cmd
=== Start of file valgrind1
 ==78994== 
 ==78994== Process terminating with default action of signal 4 (SIGILL)
 ==78994==  Illegal opcode at address 0x492B75F
 ==78994==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==78994==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==78994==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==78994==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==78994==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==78994==    by 0x49908EB: curl_version_info (version.c:600)
 ==78994==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==78994==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==78994==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==78994==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1
test 0019 [attempt connect to non-listening socket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind19 ../src/curl -q --output log/6/curl19.out  --include --trace-ascii log/6/trace19 --trace-time --trace-config all 127.0.0.1:47 > log/6/stdout19 2> log/6/stderr19

curl returned 132, when expecting 7
 19: exit FAILED
== Contents of files in the log/6/ directory after test 19
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind19 ../src/curl -q --output log/6/curl19.out  --include --trace-ascii log/6/trace19 --trace-time --trace-config all 127.0.0.1:47 > log/6/stdout19 2> log/6/stderr19
=== End of file commands.log
=== Start of file server.cmd
 Testnum 19
=== End of file server.cmd
=== Start of file valgrind19
 ==79254== 
 ==79254== Process terminating with default action of signal 4 (SIGILL)
 ==79254==  Illegal opcode at address 0x492B75F
 ==79254==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79254==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79254==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79254==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79254==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79254==    by 0x49908EB: curl_version_info (version.c:600)
 ==79254==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79254==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79254==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79254==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind19
test 0032 [HTTP with -d and -G]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind32 ../src/curl -q --output log/9/curl32.out  --include --trace-ascii log/9/trace32 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:43733/32 -G > log/9/stdout32 2> log/9/stderr32

 32: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 32
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind32 ../src/curl -q --output log/9/curl32.out  --include --trace-ascii log/9/trace32 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:43733/32 -G > log/9/stdout32 2> log/9/stderr32
=== End of file commands.log
=== Start of file http_server.log
 19:26:09.509329 ====> Client connect
 19:26:09.529371 accept_connection 3 returned 4
 19:26:09.533801 Read 93 bytes
 19:26:09.533824 Process 93 bytes request
 19:26:09.533862 Got request: GET /verifiedserver HTTP/1.1
 19:26:09.533871 Are-we-friendly question received
 19:26:09.554450 Wrote request (93 bytes) input to log/9/server.input
 19:26:09.554486 Identifying ourselves as friends
 19:26:09.586225 Response sent (56 bytes) and written to log/9/server.response
 19:26:09.586251 special request received, no persistency
 19:26:09.586260 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 56868 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 32
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind32
 ==80902== 
 ==80902== Process terminating with default action of signal 4 (SIGILL)
 ==80902==  Illegal opcode at address 0x492B75F
 ==80902==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80902==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80902==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80902==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80902==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80902==    by 0x49908EB: curl_version_info (version.c:600)
 ==80902==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80902==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80902==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80902==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind32
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind37 ../src/curl -q --output log/22/curl37.out  --include --trace-ascii log/22/trace37 --trace-time http://127.0.0.1:35989/37 > log/22/stdout37 2> log/22/stderr37
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind35 ../src/curl -q --output log/21/curl35.out  --include --trace-ascii log/21/trace35 --trace-time http://127.0.0.1:39881/we/want/35 --data-binary @log/21/test35.txt > log/21/stdout35 2> log/21/stderr35
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind34 ../src/curl -q --output log/14/curl34.out  --include --trace-ascii log/14/trace34 --trace-time http://127.0.0.1:45467/34 > log/14/stdout34 2> log/14/stderr34
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind36 ../src/curl -q --output log/11/curl36.out  --include --trace-ascii log/11/trace36 --trace-time http://127.0.0.1:40989/36 > log/11/stdout36 2> log/11/stderr36
test 0033 [HTTP PUT rejects upload resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind33 ../src/curl -q --output log/12/curl33.out  --include --trace-ascii log/12/trace33 --trace-time http://127.0.0.1:40921/33 -Tlog/12/test33.txt -C 50 --no-progress-meter > log/12/stdout33 2> log/12/stderr33

 33: stderr FAILED:
--- log/12/check-expected	2026-10-15 19:26:11.913746864 +0000
+++ log/12/check-generated	2026-10-15 19:26:11.883754873 +0000
@@ -1 +0,0 @@
-curl: (43) HTTP upload cannot be resumed[CR][LF]
== Contents of files in the log/12/ directory after test 33
=== Start of file check-expected
 curl: (43) HTTP upload cannot be resumed[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind33 ../src/curl -q --output log/12/curl33.out  --include --trace-ascii log/12/trace33 --trace-time http://127.0.0.1:40921/33 -Tlog/12/test33.txt -C 50 --no-progress-meter > log/12/stdout33 2> log/12/stderr33
=== End of file commands.log
=== Start of file http_server.log
 19:26:09.696220 ====> Client connect
 19:26:09.714245 accept_connection 3 returned 4
 19:26:09.719345 Read 93 bytes
 19:26:09.719368 Process 93 bytes request
 19:26:09.719380 Got request: GET /verifiedserver HTTP/1.1
 19:26:09.719389 Are-we-friendly question received
 19:26:09.732823 Wrote request (93 bytes) input to log/12/server.input
 19:26:09.732858 Identifying ourselves as friends
 19:26:09.732991 Response sent (56 bytes) and written to log/12/server.response
 19:26:09.733003 special request received, no persistency
 19:26:09.733011 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 44392 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 33
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file test33.txt
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file test33.txt
=== Start of file valgrind33
 ==80943== 
 ==80943== Process terminating with default action of signal 4 (SIGILL)
 ==80943==  Illegal opcode at address 0x492B75F
 ==80943==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==80943==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==80943==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==80943==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==80943==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==80943==    by 0x49908EB: curl_version_info (version.c:600)
 ==80943==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==80943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==80943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==80943==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind33
test 0037 [HTTP GET with nothing returned from server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind37 ../src/curl -q --output log/22/curl37.out  --include --trace-ascii log/22/trace37 --trace-time http://127.0.0.1:35989/37 > log/22/stdout37 2> log/22/stderr37

 37: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 37
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind37 ../src/curl -q --output log/22/curl37.out  --include --trace-ascii log/22/trace37 --trace-time http://127.0.0.1:35989/37 > log/22/stdout37 2> log/22/stderr37
=== End of file commands.log
=== Start of file http_server.log
 19:26:10.063232 ====> Client connect
 19:26:10.063282 accept_connection 3 returned 4
 19:26:10.063308 Read 93 bytes
 19:26:10.063319 Process 93 bytes request
 19:26:10.063332 Got request: GET /verifiedserver HTTP/1.1
 19:26:10.063341 Are-we-friendly question received
 19:26:10.069746 Wrote request (93 bytes) input to log/22/server.input
 19:26:10.069792 Identifying ourselves as friends
 19:26:10.075066 Response sent (56 bytes) and written to log/22/server.response
 19:26:10.075086 special request received, no persistency
 19:26:10.075095 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 40862 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 37
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind37
 ==81058== 
 ==81058== Process terminating with default action of signal 4 (SIGILL)
 ==81058==  Illegal opcode at address 0x492B75F
 ==81058==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81058==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81058==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81058==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81058==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81058==    by 0x49908EB: curl_version_info (version.c:600)
 ==81058==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81058==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81058==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81058==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind37
test 0036 [HTTP GET with bad chunked Transfer-Encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind36 ../src/curl -q --output log/11/curl36.out  --include --trace-ascii log/11/trace36 --trace-time http://127.0.0.1:40989/36 > log/11/stdout36 2> log/11/stderr36

 36: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 36
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind36 ../src/curl -q --output log/11/curl36.out  --include --trace-ascii log/11/trace36 --trace-time http://127.0.0.1:40989/36 > log/11/stdout36 2> log/11/stderr36
=== End of file commands.log
=== Start of file http_server.log
 19:26:10.076545 ====> Client connect
 19:26:10.076583 accept_connection 3 returned 4
 19:26:10.076606 Read 93 bytes
 19:26:10.076615 Process 93 bytes request
 19:26:10.076637 Got request: GET /verifiedserver HTTP/1.1
 19:26:10.076645 Are-we-friendly question received
 19:26:10.076668 Wrote request (93 bytes) input to log/11/server.input
 19:26:10.076687 Identifying ourselves as friends
 19:26:10.076749 Response sent (56 bytes) and written to log/11/server.response
 19:26:10.076758 special request received, no persistency
 19:26:10.076765 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 56660 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 36
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind36
 ==81046== 
 ==81046== Process terminating with default action of signal 4 (SIGILL)
 ==81046==  Illegal opcode at address 0x492B75F
 ==81046==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81046==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81046==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81046==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81046==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81046==    by 0x49908EB: curl_version_info (version.c:600)
 ==81046==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81046==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81046==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81046==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind36
test 0034 [HTTP GET with chunked Transfer-Encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind34 ../src/curl -q --output log/14/curl34.out  --include --trace-ascii log/14/trace34 --trace-time http://127.0.0.1:45467/34 > log/14/stdout34 2> log/14/stderr34

 34: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 34
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind34 ../src/curl -q --output log/14/curl34.out  --include --trace-ascii log/14/trace34 --trace-time http://127.0.0.1:45467/34 > log/14/stdout34 2> log/14/stderr34
=== End of file commands.log
=== Start of file http_server.log
 19:26:09.899380 ====> Client connect
 19:26:09.919460 accept_connection 3 returned 4
 19:26:09.929519 Read 93 bytes
 19:26:09.929542 Process 93 bytes request
 19:26:09.929568 Got request: GET /verifiedserver HTTP/1.1
 19:26:09.929577 Are-we-friendly question received
 19:26:09.964547 Wrote request (93 bytes) input to log/14/server.input
 19:26:09.964590 Identifying ourselves as friends
 19:26:09.982812 Response sent (56 bytes) and written to log/14/server.response
 19:26:09.982832 special request received, no persistency
 19:26:09.982841 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 55974 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 34
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind34
 ==81043== 
 ==81043== Process terminating with default action of signal 4 (SIGILL)
 ==81043==  Illegal opcode at address 0x492B75F
 ==81043==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81043==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81043==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81043==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81043==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81043==    by 0x49908EB: curl_version_info (version.c:600)
 ==81043==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81043==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81043==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81043==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind34
test 0035 [HTTP POST binary data with embedded NUL byte]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind35 ../src/curl -q --output log/21/curl35.out  --include --trace-ascii log/21/trace35 --trace-time http://127.0.0.1:39881/we/want/35 --data-binary @log/21/test35.txt > log/21/stdout35 2> log/21/stderr35

 35: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 35
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind35 ../src/curl -q --output log/21/curl35.out  --include --trace-ascii log/21/trace35 --trace-time http://127.0.0.1:39881/we/want/35 --data-binary @log/21/test35.txt > log/21/stdout35 2> log/21/stderr35
=== End of file commands.log
=== Start of file http_server.log
 19:26:09.858477 ====> Client connect
 19:26:09.858517 accept_connection 3 returned 4
 19:26:09.858547 Read 93 bytes
 19:26:09.858558 Process 93 bytes request
 19:26:09.858581 Got request: GET /verifiedserver HTTP/1.1
 19:26:09.858590 Are-we-friendly question received
 19:26:09.858622 Wrote request (93 bytes) input to log/21/server.input
 19:26:09.858643 Identifying ourselves as friends
 19:26:09.858714 Response sent (56 bytes) and written to log/21/server.response
 19:26:09.858726 special request received, no persistency
 19:26:09.858735 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 53216 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 35
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file test35.txt
 This  is binary data with an embedded NUL byte
=== End of file test35.txt
=== Start of file valgrind35
 ==81051== 
 ==81051== Process terminating with default action of signal 4 (SIGILL)
 ==81051==  Illegal opcode at address 0x492B75F
 ==81051==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81051==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81051==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81051==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81051==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81051==    by 0x49908EB: curl_version_info (version.c:600)
 ==81051==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81051==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81051==    by 0x4003269: UnknownInlinedFun (tool_cfgablCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind9 ../src/curl -q --output log/16/curl9.out  --include --trace-ascii log/16/trace9 --trace-time http://127.0.0.1:35903/we/want/9 -F name=daniel -F tool=curl -F file=@log/16/test9.txt > log/16/stdout9 2> log/16/stderr9
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind20 ../src/curl -q --output log/5/curl20.out  --include --trace-ascii log/5/trace20 --trace-time --ipv4 non-existing-host.haxx.se. > log/5/stdout20 2> log/5/stderr20
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind38 ../src/curl -q --include --trace-ascii log/7/trace38 --trace-time http://127.0.0.1:40859/want/38 -C - --no-include -o log/7/fewl38.txt > log/7/stdout38 2> log/7/stderr38
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind10 ../src/curl -q --output log/15/curl10.out  --include --trace-ascii log/15/trace10 --trace-time http://127.0.0.1:40321/we/want/10 -T log/15/test10.txt > log/15/stdout10 2> log/15/stderr10
e.c:310)
 ==81051==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind35
test 0020 [attempt connect to non-existing hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind20 ../src/curl -q --output log/5/curl20.out  --include --trace-ascii log/5/trace20 --trace-time --ipv4 non-existing-host.haxx.se. > log/5/stdout20 2> log/5/stderr20

curl returned 132, when expecting 6
 20: exit FAILED
== Contents of files in the log/5/ directory after test 20
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind20 ../src/curl -q --output log/5/curl20.out  --include --trace-ascii log/5/trace20 --trace-time --ipv4 non-existing-host.haxx.se. > log/5/stdout20 2> log/5/stderr20
=== End of file commands.log
=== Start of file server.cmd
 Testnum 20
=== End of file server.cmd
=== Start of file valgrind20
 ==79262== 
 ==79262== Process terminating with default action of signal 4 (SIGILL)
 ==79262==  Illegal opcode at address 0x492B75F
 ==79262==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79262==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79262==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79262==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79262==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79262==    by 0x49908EB: curl_version_info (version.c:600)
 ==79262==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79262==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79262==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79262==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind20
test 0038 [HTTP resume request without server supporting it]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind38 ../src/curl -q --include --trace-ascii log/7/trace38 --trace-time http://127.0.0.1:40859/want/38 -C - --no-include -o log/7/fewl38.txt > log/7/stdout38 2> log/7/stderr38

 38: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 38
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind38 ../src/curl -q --include --trace-ascii log/7/trace38 --trace-time http://127.0.0.1:40859/want/38 -C - --no-include -o log/7/fewl38.txt > log/7/stdout38 2> log/7/stderr38
=== End of file commands.log
=== Start of file fewl38.txt
 This text is here to simulate a partly downloaded file to resume
 download on.
=== End of file fewl38.txt
=== Start of file http_server.log
 19:26:10.203924 ====> Client connect
 19:26:10.203970 accept_connection 3 returned 4
 19:26:10.204000 Read 93 bytes
 19:26:10.204011 Process 93 bytes request
 19:26:10.204028 Got request: GET /verifiedserver HTTP/1.1
 19:26:10.204037 Are-we-friendly question received
 19:26:10.204068 Wrote request (93 bytes) input to log/7/server.input
 19:26:10.204087 Identifying ourselves as friends
 19:26:10.204197 Response sent (56 bytes) and written to log/7/server.response
 19:26:10.204205 special request received, no persistency
 19:26:10.204212 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 37266 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 38
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind38
 ==81315== 
 ==81315== Process terminating with default action of signal 4 (SIGILL)
 ==81315==  Illegal opcode at address 0x492B75F
 ==81315==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81315==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81315==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81315==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81315==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81315==    by 0x49908EB: curl_version_info (version.c:600)
 ==81315==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81315==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81315==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81315==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind38
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/16/server/http_server.pid" --logfile "log/16/http_server.log" --logdir "log/16" --portfile log/16/server/http_server.port --config log/16/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78990 port 35903
* pid http => 78990 78990
test 0009 [HTTP RFC1867-type formposting]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind9 ../src/curl -q --output log/16/curl9.out  --include --trace-ascii log/16/trace9 --trace-time http://127.0.0.1:35903/we/want/9 -F name=daniel -F tool=curl -F file=@log/16/test9.txt > log/16/stdout9 2> log/16/stderr9

 9: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 9
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind9 ../src/curl -q --output log/16/curl9.out  --include --trace-ascii log/16/trace9 --trace-time http://127.0.0.1:35903/we/want/9 -F name=daniel -F tool=curl -F file=@log/16/test9.txt > log/16/stdout9 2> log/16/stderr9
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.885063 Running HTTP IPv4 version on port 35903
 19:25:58.885183 Wrote pid 78990 to log/16/server/http_server.pid
 19:25:58.885224 Wrote port 35903 to log/16/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 9
=== End of file server.cmd
=== Start of file test9.txt
 foo-
 This is a moo-
 bar
=== End of file test9.txt
=== Start of file valgrind9
 ==79474== 
 ==79474== Process terminating with default action of signal 4 (SIGILL)
 ==79474==  Illegal opcode at address 0x492B75F
 ==79474==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79474==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79474==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79474==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79474==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79474==    by 0x49908EB: curl_version_info (version.c:600)
 ==79474==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79474==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79474==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79474==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind9
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/15/server/http_server.pid" --logfile "log/15/http_server.log" --logdir "log/15" --portfile log/15/server/http_server.port --config log/15/server.cmd -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind8 ../src/curl -q --output log/17/curl8.out  --include --trace-ascii log/17/trace8 --trace-time http://127.0.0.1:35993/we/want/8 -b log/17/heads8.txt > log/17/stdout8 2> log/17/stderr8
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind39 ../src/curl -q --output log/4/curl39.out  --include --trace-ascii log/4/trace39 --trace-time http://127.0.0.1:35735/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/4/test39.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/4/test39.txt -F "file3=@\"log/4/test39.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/4/test39.txt"; filename="A\\AA\"\"\\\"ZZZ"' > log/4/stdout39 2> log/4/stderr39
-ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78991 port 40321
* pid http => 78991 78991
test 0010 [simple HTTP PUT from file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind10 ../src/curl -q --output log/15/curl10.out  --include --trace-ascii log/15/trace10 --trace-time http://127.0.0.1:40321/we/want/10 -T log/15/test10.txt > log/15/stdout10 2> log/15/stderr10

 10: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 10
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind10 ../src/curl -q --output log/15/curl10.out  --include --trace-ascii log/15/trace10 --trace-time http://127.0.0.1:40321/we/want/10 -T log/15/test10.txt > log/15/stdout10 2> log/15/stderr10
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.985318 Running HTTP IPv4 version on port 40321
 19:25:58.985449 Wrote pid 78991 to log/15/server/http_server.pid
 19:25:58.985520 Wrote port 40321 to log/15/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 10
=== End of file server.cmd
=== Start of file test10.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    PUT
       feature
=== End of file test10.txt
=== Start of file valgrind10
 ==79532== 
 ==79532== Process terminating with default action of signal 4 (SIGILL)
 ==79532==  Illegal opcode at address 0x492B75F
 ==79532==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79532==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79532==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79532==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79532==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79532==    by 0x49908EB: curl_version_info (version.c:600)
 ==79532==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79532==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79532==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79532==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind10
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/17/server/http_server.pid" --logfile "log/17/http_server.log" --logdir "log/17" --portfile log/17/server/http_server.port --config log/17/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78989 port 35993
* pid http => 78989 78989
prechecked /usr/bin/perl -e 'if("127.0.0.1" !~ /\.0\.0\.1$/) {print "Test only works for HOSTIPs ending with .0.0.1"; exit(1)}'
test 0008 [HTTP with cookie parsing from header file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind8 ../src/curl -q --output log/17/curl8.out  --include --trace-ascii log/17/trace8 --trace-time http://127.0.0.1:35993/we/want/8 -b log/17/heads8.txt > log/17/stdout8 2> log/17/stderr8

 8: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 8
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind8 ../src/curl -q --output log/17/curl8.out  --include --trace-ascii log/17/trace8 --trace-time http://127.0.0.1:35993/we/want/8 -b log/17/heads8.txt > log/17/stdout8 2> log/17/stderr8
=== End of file commands.log
=== Start of file heads8.txt
 HTTP/1.1 200 OK
 Date: Tue, 09 Nov 2010 14:49:00 GMT
 Server: test-server/fake
 Content-Type: text/html
 Funny-head: yesyes
 Set-Cookie: foobar=name; domain=127.0.0.1; path=/;
 Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
 Set-Cookie: partmatch=present; domain=.0.0.1; path=/w;
 Set-Cookie: duplicate=test; domain=.0.0.1; domain=.0.0.1; path=/donkey;
 Set-Cookie: cookie=yes; path=/we;
 Set-Cookie: cookie=perhaps; path=/we/want;
 Set-Cookie: name with space=is weird but; path=/we/want;
 Set-Cookie: trailingspace    = removed; path=/we/want;
 Set-Cookie: nocookie=yes; path=/WE;
 Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad;
 Set-Cookie: partialip=nono; domain=.0.0.1;
 Set-Cookie: cookie1=-junk
 Set-Cookie: cookie2=-junk
 Set-Cookie: cookie3=-junk
 Set-Cookie: cookie4=-junk
 Set-Cookie: cookie5=-junk
 Set-Cookie: cookie6=-junk
 Set-Cookie: cookie7=-junk
 Set-Cookie: cookie8=-junk
 Set-Cookie: cookie9=junk--	
 Set-Cookie: cookie11=-junk
 Set-Cookie: cookie12=
 -junk
 Set-Cookie: cookie14=-junk
 Set-Cookie: cookie15=-junk
 Set-Cookie: cookie16=-junk
 Set-Cookie: cookie17=-junk
 Set-Cookie: cookie18=-junk
 Set-Cookie: cookie19=-junk
 Set-Cookie: cookie20=-junk
 Set-Cookie: cookie21=-junk
 Set-Cookie: cookie22=-junk
 Set-Cookie: cookie23=-junk
 Set-Cookie: cookie24=-junk
 Set-Cookie: cookie25=-junk
 Set-Cookie: cookie26=
 -junk
 Set-Cookie: cookie27=-junk
 Set-Cookie: cookie28=-junk
 Set-Cookie: cookie29=-junk
 Set-Cookie: cookie30=-junk
 Set-Cookie: cookie31=-junk
 Set-Cookie: cookie31=-junk
=== End of file heads8.txt
=== Start of file http_server.log
 19:25:58.778081 Running HTTP IPv4 version on port 35993
 19:25:58.778198 Wrote pid 78989 to log/17/server/http_server.pid
 19:25:58.778235 Wrote port 35993 to log/17/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 8
=== End of file server.cmd
=== Start of file valgrind8
 ==79454== 
 ==79454== Process terminating with default action of signal 4 (SIGILL)
 ==79454==  Illegal opcode at address 0x492B75F
 ==79454==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79454==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79454==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79454==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79454==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79454==    by 0x49908EB: curl_version_info (version.c:600)
 ==79454==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79454==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==79454==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79454==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind8
test 0039 [HTTP RFC1867-type formposting with filename= and type=]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind39 ../src/curl -q --output log/4/curl39.out  --include --trace-ascii log/4/trace39 --trace-time http://127.0.0.1:35735/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/4/test39.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/4/test39.txt -F "file3=@\"log/4/test39.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/4/test39.txt"; filename="A\\AA\"\"\\\"ZZZ"' > log/4/stdout39 2> log/4/stderr39

 39: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 39
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind39 ../src/curl -q --output log/4/curl39.out  --include --trace-ascii log/4/trace39 --trace-time http://127.0.0.1:35735/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind40 ../src/curl -q --output log/13/curl40.out  --include --trace-ascii log/13/trace40 --trace-time http://127.0.0.1:38821/we/are/all/twits/40 -L > log/13/stdout40 2> log/13/stderr40
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind7 ../src/curl -q --output log/18/curl7.out  --include --trace-ascii log/18/trace7 --trace-time http://127.0.0.1:43739/we/want/7 -b none -D log/18/heads7.txt > log/18/stdout7 2> log/18/stderr7
4/test39.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/4/test39.txt -F "file3=@\"log/4/test39.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/4/test39.txt"; filename="A\\AA\"\"\\\"ZZZ"' > log/4/stdout39 2> log/4/stderr39
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.262508 ====> Client connect
 19:26:11.262552 accept_connection 3 returned 4
 19:26:11.262575 Read 93 bytes
 19:26:11.262585 Process 93 bytes request
 19:26:11.262609 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.262617 Are-we-friendly question received
 19:26:11.262650 Wrote request (93 bytes) input to log/4/server.input
 19:26:11.262669 Identifying ourselves as friends
 19:26:11.262739 Response sent (56 bytes) and written to log/4/server.response
 19:26:11.262750 special request received, no persistency
 19:26:11.262758 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 57016 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 39
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file test39.txt
 foo bar
 This is a bar foo
 bar
 foo
=== End of file test39.txt
=== Start of file valgrind39
 ==81274== 
 ==81274== Process terminating with default action of signal 4 (SIGILL)
 ==81274==  Illegal opcode at address 0x492B75F
 ==81274==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81274==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81274==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81274==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81274==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81274==    by 0x49908EB: curl_version_info (version.c:600)
 ==81274==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81274==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81274==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81274==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind39
test 0040 [HTTP redirect with whitespace after ? (and conversion)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind40 ../src/curl -q --output log/13/curl40.out  --include --trace-ascii log/13/trace40 --trace-time http://127.0.0.1:38821/we/are/all/twits/40 -L > log/13/stdout40 2> log/13/stderr40

 40: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 40
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind40 ../src/curl -q --output log/13/curl40.out  --include --trace-ascii log/13/trace40 --trace-time http://127.0.0.1:38821/we/are/all/twits/40 -L > log/13/stdout40 2> log/13/stderr40
=== End of file commands.log
=== Start of file http_server.log
 19:26:10.659843 ====> Client connect
 19:26:10.686289 accept_connection 3 returned 4
 19:26:10.689686 Read 93 bytes
 19:26:10.689707 Process 93 bytes request
 19:26:10.689738 Got request: GET /verifiedserver HTTP/1.1
 19:26:10.690020 Are-we-friendly question received
 19:26:10.710185 Wrote request (93 bytes) input to log/13/server.input
 19:26:10.710224 Identifying ourselves as friends
 19:26:10.730287 Response sent (56 bytes) and written to log/13/server.response
 19:26:10.730308 special request received, no persistency
 19:26:10.730318 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 36666 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 40
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind40
 ==81453== 
 ==81453== Process terminating with default action of signal 4 (SIGILL)
 ==81453==  Illegal opcode at address 0x492B75F
 ==81453==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81453==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81453==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81453==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81453==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81453==    by 0x49908EB: curl_version_info (version.c:600)
 ==81453==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81453==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81453==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81453==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind40
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/18/server/http_server.pid" --logfile "log/18/http_server.log" --logdir "log/18" --portfile log/18/server/http_server.port --config log/18/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 78988 port 43739
* pid http => 78988 78988
test 0007 [HTTP with cookie parser and header recording]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind7 ../src/curl -q --output log/18/curl7.out  --include --trace-ascii log/18/trace7 --trace-time http://127.0.0.1:43739/we/want/7 -b none -D log/18/heads7.txt > log/18/stdout7 2> log/18/stderr7

 7: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 7
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind7 ../src/curl -q --output log/18/curl7.out  --include --trace-ascii log/18/trace7 --trace-time http://127.0.0.1:43739/we/want/7 -b none -D log/18/heads7.txt > log/18/stdout7 2> log/18/stderr7
=== End of file commands.log
=== Start of file http_server.log
 19:25:58.678843 Running HTTP IPv4 version on port 43739
 19:25:58.679026 Wrote pid 78988 to log/18/server/http_server.pid
 19:25:58.679069 Wrote port 43739 to log/18/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 7
=== End of file server.cmd
=== Start of file valgrind7
 ==79342== 
 ==79342== Process terminating with default action of signal 4 (SIGILL)
 ==79342==  Illegal opcode at address 0x492B75F
 ==79342==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==79342==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==79342==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==79342==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==79342==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==79342==    by 0x49908EB: curl_version_info (version.c:600)
 ==79342==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==79342==    by 0x4003269: UnknoCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind42 ../src/curl -q --output log/24/curl42.out  --include --trace-ascii log/24/trace42 --trace-time http://127.0.0.1:38895/we/are/all/twits/42 -L > log/24/stdout42 2> log/24/stderr42
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind41 ../src/curl -q --output log/19/curl41.out  --include --trace-ascii log/19/trace41 --trace-time http://127.0.0.1:46497/want/41 -F moo=@boo > log/19/stdout41 2> log/19/stderr41
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind43 ../src/curl -q --output log/23/curl43.out  --include --trace-ascii log/23/trace43 --trace-time http://127.0.0.1:44711/want/43 -L -x 127.0.0.1:44711 > log/23/stdout43 2> log/23/stderr43
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind44 ../src/curl -q --output log/12/curl44.out  --include --trace-ascii log/12/trace44 --trace-time http://127.0.0.1:40921/we/want/44 -F name=daniel -F tool=curl -F file=@log/12/test44.txt -H "Expect:" > log/12/stdout44 2> log/12/stderr44
wnInlinedFun (tool_cfgable.c:339)
 ==79342==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==79342==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind7
test 0042 [HTTP redirect with whitespace in path (and conversion)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind42 ../src/curl -q --output log/24/curl42.out  --include --trace-ascii log/24/trace42 --trace-time http://127.0.0.1:38895/we/are/all/twits/42 -L > log/24/stdout42 2> log/24/stderr42

 42: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 42
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind42 ../src/curl -q --output log/24/curl42.out  --include --trace-ascii log/24/trace42 --trace-time http://127.0.0.1:38895/we/are/all/twits/42 -L > log/24/stdout42 2> log/24/stderr42
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.286845 ====> Client connect
 19:26:11.286880 accept_connection 3 returned 4
 19:26:11.286902 Read 93 bytes
 19:26:11.286911 Process 93 bytes request
 19:26:11.286934 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.286943 Are-we-friendly question received
 19:26:11.286969 Wrote request (93 bytes) input to log/24/server.input
 19:26:11.286988 Identifying ourselves as friends
 19:26:11.323205 Response sent (56 bytes) and written to log/24/server.response
 19:26:11.323235 special request received, no persistency
 19:26:11.323246 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 47198 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 42
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind42
 ==81544== 
 ==81544== Process terminating with default action of signal 4 (SIGILL)
 ==81544==  Illegal opcode at address 0x492B75F
 ==81544==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81544==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81544==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81544==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81544==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81544==    by 0x49908EB: curl_version_info (version.c:600)
 ==81544==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81544==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81544==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81544==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind42
test 0041 [HTTP formpost with missing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind41 ../src/curl -q --output log/19/curl41.out  --include --trace-ascii log/19/trace41 --trace-time http://127.0.0.1:46497/want/41 -F moo=@boo > log/19/stdout41 2> log/19/stderr41

curl returned 132, when expecting 26
 41: exit FAILED
== Contents of files in the log/19/ directory after test 41
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind41 ../src/curl -q --output log/19/curl41.out  --include --trace-ascii log/19/trace41 --trace-time http://127.0.0.1:46497/want/41 -F moo=@boo > log/19/stdout41 2> log/19/stderr41
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.273084 ====> Client connect
 19:26:11.273128 accept_connection 3 returned 4
 19:26:11.273155 Read 93 bytes
 19:26:11.273163 Process 93 bytes request
 19:26:11.273174 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.273183 Are-we-friendly question received
 19:26:11.273207 Wrote request (93 bytes) input to log/19/server.input
 19:26:11.273222 Identifying ourselves as friends
 19:26:11.273316 Response sent (56 bytes) and written to log/19/server.response
 19:26:11.273326 special request received, no persistency
 19:26:11.273335 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 59322 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 41
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind41
 ==81551== 
 ==81551== Process terminating with default action of signal 4 (SIGILL)
 ==81551==  Illegal opcode at address 0x492B75F
 ==81551==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81551==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81551==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81551==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81551==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81551==    by 0x49908EB: curl_version_info (version.c:600)
 ==81551==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81551==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81551==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81551==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind41
test 0044 [HTTP RFC1867-type formposting without Expect: header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind44 ../src/curl -q --output log/12/curl44.out  --include --trace-ascii log/12/trace44 --trace-time http://127.0.0.1:40921/we/want/44 -F name=daniel -F tool=curl -F file=@log/12/test44.txt -H "Expect:" > log/12/stdout44 2> log/12/stderr44

 44: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 44
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind44 ../src/curl -q --output log/12/curl44.out  --include --trace-ascii log/12/trace44 --trace-time http://127.0.0.1:40921/we/want/44 -F name=daniel -F tool=curl -F file=@log/12/test44.txt -H "Expect:" > log/12/stdout44 2> log/12/stderr44
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.616613 ====> Client connect
 19:26:11.644116 accept_connection 3 returned 4
 19:26:11.653607 Read 93 bytes
 19:26:11.653634 Process 93 bytes request
 19:26:11.653647 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.653656 Are-we-friendly question received
 19:26:11.676618 Wrote request (93 bytes) input to log/12/server.input
 19:26:11.676668 Identifying ourselves as friends
 19:26:11.678393 Response sent (56 bytes) and written to log/12/server.response
 19:26:11.678410CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind46 ../src/curl -q --output log/22/curl46.out  --include --trace-ascii log/22/trace46 --trace-time domain..tld:35989/want/46 --resolve domain..tld:35989:127.0.0.1 -c log/22/jar46 -b log/22 -b log/22/injar46 > log/22/stdout46 2> log/22/stderr46
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind48 ../src/curl -q --output log/16/curl48.out  --include --trace-ascii log/16/trace48 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:35903/48 -G -I http://127.0.0.1:35903/48 > log/16/stdout48 2> log/16/stderr48
 special request received, no persistency
 19:26:11.678419 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 51874 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 44
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file test44.txt
 foo-
 This is a moo-
 bar
=== End of file test44.txt
=== Start of file valgrind44
 ==81671== 
 ==81671== Process terminating with default action of signal 4 (SIGILL)
 ==81671==  Illegal opcode at address 0x492B75F
 ==81671==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81671==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81671==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81671==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81671==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81671==    by 0x49908EB: curl_version_info (version.c:600)
 ==81671==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81671==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81671==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81671==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind44
test 0043 [HTTP Location: following over HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind43 ../src/curl -q --output log/23/curl43.out  --include --trace-ascii log/23/trace43 --trace-time http://127.0.0.1:44711/want/43 -L -x 127.0.0.1:44711 > log/23/stdout43 2> log/23/stderr43

 43: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 43
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind43 ../src/curl -q --output log/23/curl43.out  --include --trace-ascii log/23/trace43 --trace-time http://127.0.0.1:44711/want/43 -L -x 127.0.0.1:44711 > log/23/stdout43 2> log/23/stderr43
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.506523 ====> Client connect
 19:26:11.526654 accept_connection 3 returned 4
 19:26:11.530516 Read 93 bytes
 19:26:11.530536 Process 93 bytes request
 19:26:11.530561 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.530570 Are-we-friendly question received
 19:26:11.553791 Wrote request (93 bytes) input to log/23/server.input
 19:26:11.553825 Identifying ourselves as friends
 19:26:11.590624 Response sent (56 bytes) and written to log/23/server.response
 19:26:11.590653 special request received, no persistency
 19:26:11.590664 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 49666 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 43
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind43
 ==81594== 
 ==81594== Process terminating with default action of signal 4 (SIGILL)
 ==81594==  Illegal opcode at address 0x492B75F
 ==81594==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81594==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81594==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81594==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81594==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81594==    by 0x49908EB: curl_version_info (version.c:600)
 ==81594==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81594==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81594==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81594==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind43
test 0048 [HTTP with -d and -G and -I]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind48 ../src/curl -q --output log/16/curl48.out  --include --trace-ascii log/16/trace48 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:35903/48 -G -I http://127.0.0.1:35903/48 > log/16/stdout48 2> log/16/stderr48

 48: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 48
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind48 ../src/curl -q --output log/16/curl48.out  --include --trace-ascii log/16/trace48 --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:35903/48 -G -I http://127.0.0.1:35903/48 > log/16/stdout48 2> log/16/stderr48
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.220050 ====> Client connect
 19:26:13.220104 accept_connection 3 returned 4
 19:26:13.220130 Read 93 bytes
 19:26:13.220140 Process 93 bytes request
 19:26:13.220166 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.220175 Are-we-friendly question received
 19:26:13.220202 Wrote request (93 bytes) input to log/16/server.input
 19:26:13.220224 Identifying ourselves as friends
 19:26:13.220348 Response sent (56 bytes) and written to log/16/server.response
 19:26:13.220359 special request received, no persistency
 19:26:13.220368 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 36616 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 48
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind48
 ==81868== 
 ==81868== Process terminating with default action of signal 4 (SIGILL)
 ==81868==  Illegal opcode at address 0x492B75F
 ==81868==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81868==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81868==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81868==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81868==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81868==    by 0x49908EB: curl_version_info (version.c:600)
 ==81868==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81868==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81868==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81868==    by 0x4003269: mainCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind45 ../src/curl -q --output log/9/curl45.out  --include --trace-ascii log/9/trace45 --trace-time 127.0.0.1:43733/want/45 -L > log/9/stdout45 2> log/9/stderr45
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind47 ../src/curl -q --output log/21/curl47.out  --include --trace-ascii log/21/trace47 --trace-time http://127.0.0.1:39881/47 -0 > log/21/stdout47 2> log/21/stderr47
 (tool_main.c:195)
=== End of file valgrind48
setenv TZ = GMT
test 0046 [HTTP with bad domain name, get cookies and store in cookie jar]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind46 ../src/curl -q --output log/22/curl46.out  --include --trace-ascii log/22/trace46 --trace-time domain..tld:35989/want/46 --resolve domain..tld:35989:127.0.0.1 -c log/22/jar46 -b log/22 -b log/22/injar46 > log/22/stdout46 2> log/22/stderr46

 46: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 46
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind46 ../src/curl -q --output log/22/curl46.out  --include --trace-ascii log/22/trace46 --trace-time domain..tld:35989/want/46 --resolve domain..tld:35989:127.0.0.1 -c log/22/jar46 -b log/22 -b log/22/injar46 > log/22/stdout46 2> log/22/stderr46
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.850225 ====> Client connect
 19:26:11.850263 accept_connection 3 returned 4
 19:26:11.850287 Read 93 bytes
 19:26:11.850298 Process 93 bytes request
 19:26:11.850315 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.850324 Are-we-friendly question received
 19:26:11.850356 Wrote request (93 bytes) input to log/22/server.input
 19:26:11.850375 Identifying ourselves as friends
 19:26:11.850445 Response sent (56 bytes) and written to log/22/server.response
 19:26:11.850458 special request received, no persistency
 19:26:11.850467 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 54690 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file injar46
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This is generated by libcurl!  Do not edit.
 www.fake.come	FALSE	/	FALSE	22147483647	cookiecliente	si
 www.loser.com	FALSE	/	FALSE	22139150993	UID	99
 domain..tld	FALSE	/	FALSE	22139150993	mooo	indeed
 #HttpOnly_domain..tld	FALSE	/want	FALSE	22139150993	mooo2	indeed2
 domain..tld	FALSE	/want	FALSE	0	empty	
=== End of file injar46
=== Start of file server.cmd
 Testnum 46
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind46
 ==81800== 
 ==81800== Process terminating with default action of signal 4 (SIGILL)
 ==81800==  Illegal opcode at address 0x492B75F
 ==81800==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81800==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81800==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81800==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81800==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81800==    by 0x49908EB: curl_version_info (version.c:600)
 ==81800==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81800==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81800==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81800==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind46
test 0045 [simple HTTP Location: without protocol in initial URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind45 ../src/curl -q --output log/9/curl45.out  --include --trace-ascii log/9/trace45 --trace-time 127.0.0.1:43733/want/45 -L > log/9/stdout45 2> log/9/stderr45

 45: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 45
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind45 ../src/curl -q --output log/9/curl45.out  --include --trace-ascii log/9/trace45 --trace-time 127.0.0.1:43733/want/45 -L > log/9/stdout45 2> log/9/stderr45
=== End of file commands.log
=== Start of file http_server.log
 19:26:11.740943 ====> Client connect
 19:26:11.743982 accept_connection 3 returned 4
 19:26:11.746650 Read 93 bytes
 19:26:11.746669 Process 93 bytes request
 19:26:11.746683 Got request: GET /verifiedserver HTTP/1.1
 19:26:11.746692 Are-we-friendly question received
 19:26:11.759918 Wrote request (93 bytes) input to log/9/server.input
 19:26:11.760002 Identifying ourselves as friends
 19:26:11.770076 Response sent (56 bytes) and written to log/9/server.response
 19:26:11.770095 special request received, no persistency
 19:26:11.770103 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 39294 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 45
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind45
 ==81785== 
 ==81785== Process terminating with default action of signal 4 (SIGILL)
 ==81785==  Illegal opcode at address 0x492B75F
 ==81785==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81785==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81785==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81785==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81785==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81785==    by 0x49908EB: curl_version_info (version.c:600)
 ==81785==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81785==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81785==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81785==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind45
test 0047 [simple HTTP 1.0 GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind47 ../src/curl -q --output log/21/curl47.out  --include --trace-ascii log/21/trace47 --trace-time http://127.0.0.1:39881/47 -0 > log/21/stdout47 2> log/21/stderr47

 47: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 47
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind47 ../src/curl -q --output log/21/curl47.out  --include --trace-ascii log/21/trace47 --trace-time http://127.0.0.1:39881/47 -0 > log/21/stdout47 2> log/21/stderr47
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.235789 ====> Client connect
 19:26:12.235830 accept_connection 3 returned 4
 19:26:12.235854 Read 93 bytes
 19:26:12.235865 Process 93 bytes request
 1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind50 ../src/curl -q --output log/7/curl50.out  --include --trace-ascii log/7/trace50 --trace-time http://127.0.0.1:40859/we/are/all/twits/50 -L > log/7/stdout50 2> log/7/stderr50
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind49 ../src/curl -q --output log/15/curl49.out  --include --trace-ascii log/15/trace49 --trace-time http://127.0.0.1:40321/we/are/all/twits/49 -L > log/15/stdout49 2> log/15/stderr49
9:26:12.235879 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.235889 Are-we-friendly question received
 19:26:12.235923 Wrote request (93 bytes) input to log/21/server.input
 19:26:12.235943 Identifying ourselves as friends
 19:26:12.236015 Response sent (56 bytes) and written to log/21/server.response
 19:26:12.236027 special request received, no persistency
 19:26:12.236036 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 56260 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 47
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind47
 ==81877== 
 ==81877== Process terminating with default action of signal 4 (SIGILL)
 ==81877==  Illegal opcode at address 0x492B75F
 ==81877==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81877==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81877==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81877==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81877==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81877==    by 0x49908EB: curl_version_info (version.c:600)
 ==81877==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81877==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81877==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81877==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind47
test 0050 [HTTP follow redirect with ../../]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind50 ../src/curl -q --output log/7/curl50.out  --include --trace-ascii log/7/trace50 --trace-time http://127.0.0.1:40859/we/are/all/twits/50 -L > log/7/stdout50 2> log/7/stderr50

 50: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 50
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind50 ../src/curl -q --output log/7/curl50.out  --include --trace-ascii log/7/trace50 --trace-time http://127.0.0.1:40859/we/are/all/twits/50 -L > log/7/stdout50 2> log/7/stderr50
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.306490 ====> Client connect
 19:26:12.306527 accept_connection 3 returned 4
 19:26:12.306551 Read 93 bytes
 19:26:12.306561 Process 93 bytes request
 19:26:12.306575 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.306584 Are-we-friendly question received
 19:26:12.306617 Wrote request (93 bytes) input to log/7/server.input
 19:26:12.306635 Identifying ourselves as friends
 19:26:12.306750 Response sent (56 bytes) and written to log/7/server.response
 19:26:12.306762 special request received, no persistency
 19:26:12.306772 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 44820 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 50
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind50
 ==81973== 
 ==81973== Process terminating with default action of signal 4 (SIGILL)
 ==81973==  Illegal opcode at address 0x492B75F
 ==81973==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81973==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81973==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81973==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81973==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81973==    by 0x49908EB: curl_version_info (version.c:600)
 ==81973==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81973==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==81973==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81973==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind50
test 0049 [HTTP follow redirect with ../]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind49 ../src/curl -q --output log/15/curl49.out  --include --trace-ascii log/15/trace49 --trace-time http://127.0.0.1:40321/we/are/all/twits/49 -L > log/15/stdout49 2> log/15/stderr49

 49: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 49
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind49 ../src/curl -q --output log/15/curl49.out  --include --trace-ascii log/15/trace49 --trace-time http://127.0.0.1:40321/we/are/all/twits/49 -L > log/15/stdout49 2> log/15/stderr49
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.253719 ====> Client connect
 19:26:13.253764 accept_connection 3 returned 4
 19:26:13.253799 Read 93 bytes
 19:26:13.253811 Process 93 bytes request
 19:26:13.253836 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.253846 Are-we-friendly question received
 19:26:13.253884 Wrote request (93 bytes) input to log/15/server.input
 19:26:13.253909 Identifying ourselves as friends
 19:26:13.253995 Response sent (56 bytes) and written to log/15/server.response
 19:26:13.254009 special request received, no persistency
 19:26:13.254017 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 34738 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 49
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind49
 ==81922== 
 ==81922== Process terminating with default action of signal 4 (SIGILL)
 ==81922==  Illegal opcode at address 0x492B75F
 ==81922==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==81922==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==81922==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==81922==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==81922==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==81922==    by 0x49908EB: curl_version_info (version.c:600)
 ==81922==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==81922==    by 0x4003269: UnknownInlinedFCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind52 ../src/curl -q --output log/14/curl52.out  --include --trace-ascii log/14/trace52 --trace-time http://127.0.0.1:45467/we/are/all/twits/52 -L > log/14/stdout52 2> log/14/stderr52
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind53 ../src/curl -q --output log/17/curl53.out  --include --trace-ascii log/17/trace53 --trace-time 127.0.0.1:35993/want/53 -b log/17/injar53 -j > log/17/stdout53 2> log/17/stderr53
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind55 ../src/curl -q --output log/4/curl55.out  --include --trace-ascii log/4/trace55 --trace-time http://127.0.0.1:35735/55 -L > log/4/stdout55 2> log/4/stderr55
un (tool_cfgable.c:339)
 ==81922==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==81922==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind49
test 0052 [HTTP follow redirect with ./-prefix]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind52 ../src/curl -q --output log/14/curl52.out  --include --trace-ascii log/14/trace52 --trace-time http://127.0.0.1:45467/we/are/all/twits/52 -L > log/14/stdout52 2> log/14/stderr52

 52: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 52
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind52 ../src/curl -q --output log/14/curl52.out  --include --trace-ascii log/14/trace52 --trace-time http://127.0.0.1:45467/we/are/all/twits/52 -L > log/14/stdout52 2> log/14/stderr52
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.370093 ====> Client connect
 19:26:12.370139 accept_connection 3 returned 4
 19:26:12.370170 Read 93 bytes
 19:26:12.370181 Process 93 bytes request
 19:26:12.370195 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.370204 Are-we-friendly question received
 19:26:12.370237 Wrote request (93 bytes) input to log/14/server.input
 19:26:12.370255 Identifying ourselves as friends
 19:26:12.370360 Response sent (56 bytes) and written to log/14/server.response
 19:26:12.370374 special request received, no persistency
 19:26:12.370383 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 51470 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 52
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind52
 ==82173== 
 ==82173== Process terminating with default action of signal 4 (SIGILL)
 ==82173==  Illegal opcode at address 0x492B75F
 ==82173==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82173==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82173==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82173==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82173==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82173==    by 0x49908EB: curl_version_info (version.c:600)
 ==82173==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82173==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82173==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82173==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind52
test 0053 [HTTP, junk session cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind53 ../src/curl -q --output log/17/curl53.out  --include --trace-ascii log/17/trace53 --trace-time 127.0.0.1:35993/want/53 -b log/17/injar53 -j > log/17/stdout53 2> log/17/stderr53

 53: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 53
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind53 ../src/curl -q --output log/17/curl53.out  --include --trace-ascii log/17/trace53 --trace-time 127.0.0.1:35993/want/53 -b log/17/injar53 -j > log/17/stdout53 2> log/17/stderr53
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.386754 ====> Client connect
 19:26:13.390121 accept_connection 3 returned 4
 19:26:13.390161 Read 93 bytes
 19:26:13.390176 Process 93 bytes request
 19:26:13.390197 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.390206 Are-we-friendly question received
 19:26:13.390262 Wrote request (93 bytes) input to log/17/server.input
 19:26:13.390286 Identifying ourselves as friends
 19:26:13.391618 Response sent (56 bytes) and written to log/17/server.response
 19:26:13.391634 special request received, no persistency
 19:26:13.391643 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 33852 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file injar53
 127.0.0.1	FALSE	/	FALSE	22139150993	mooo	indeed
 127.0.0.1	FALSE	/	FALSE	0		moo1	indeed
 127.0.0.1	FALSE	/	FALSE	1		moo2	indeed
=== End of file injar53
=== Start of file server.cmd
 Testnum 53
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind53
 ==82206== 
 ==82206== Process terminating with default action of signal 4 (SIGILL)
 ==82206==  Illegal opcode at address 0x492B75F
 ==82206==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82206==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82206==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82206==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82206==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82206==    by 0x49908EB: curl_version_info (version.c:600)
 ==82206==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82206==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82206==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82206==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind53
test 0055 [HTTP follow redirect with single slash in path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind55 ../src/curl -q --output log/4/curl55.out  --include --trace-ascii log/4/trace55 --trace-time http://127.0.0.1:35735/55 -L > log/4/stdout55 2> log/4/stderr55

 55: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 55
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind55 ../src/curl -q --output log/4/curl55.out  --include --trace-ascii log/4/trace55 --trace-time http://127.0.0.1:35735/55 -L > log/4/stdout55 2> log/4/stderr55
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.446733 ====> Client connect
 19:26:13.465999 accept_connection 3 returned 4
 19:26:13.466059 Read 93 bytes
 19:26:13.466070 Process 93 bytes request
 19:26:13.466086 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.466095 Are-we-friendly question received
 19:26:13.466129 Wrote request (93 bytes) input to log/4/server.input
 19:26:13.466146 Identifying ourselves as friends
 19:26:13.466295 Response sent CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind54 ../src/curl -q --output log/11/curl54.out  --include --trace-ascii log/11/trace54 --trace-time http://127.0.0.1:40989/want/54 -L > log/11/stdout54 2> log/11/stderr54
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind60 ../src/curl -q --output log/8/curl60.out  --include --trace-ascii log/8/trace60 --trace-time http://127.0.0.1:44467/bzz/60 -T - -H "Content-Length: 1" <log/8/stdin-for-60 > log/8/stdout60 2> log/8/stderr60
(56 bytes) and written to log/4/server.response
 19:26:13.466311 special request received, no persistency
 19:26:13.466320 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 46420 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 55
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind55
 ==82281== 
 ==82281== Process terminating with default action of signal 4 (SIGILL)
 ==82281==  Illegal opcode at address 0x492B75F
 ==82281==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82281==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82281==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82281==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82281==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82281==    by 0x49908EB: curl_version_info (version.c:600)
 ==82281==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82281==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82281==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82281==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind55
test 0054 [HTTP with blank Location:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind54 ../src/curl -q --output log/11/curl54.out  --include --trace-ascii log/11/trace54 --trace-time http://127.0.0.1:40989/want/54 -L > log/11/stdout54 2> log/11/stderr54

 54: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 54
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind54 ../src/curl -q --output log/11/curl54.out  --include --trace-ascii log/11/trace54 --trace-time http://127.0.0.1:40989/want/54 -L > log/11/stdout54 2> log/11/stderr54
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.383165 ====> Client connect
 19:26:12.383204 accept_connection 3 returned 4
 19:26:12.383227 Read 93 bytes
 19:26:12.383236 Process 93 bytes request
 19:26:12.383248 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.383256 Are-we-friendly question received
 19:26:12.383280 Wrote request (93 bytes) input to log/11/server.input
 19:26:12.383295 Identifying ourselves as friends
 19:26:12.383407 Response sent (56 bytes) and written to log/11/server.response
 19:26:12.383417 special request received, no persistency
 19:26:12.383426 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 33028 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 54
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind54
 ==82235== 
 ==82235== Process terminating with default action of signal 4 (SIGILL)
 ==82235==  Illegal opcode at address 0x492B75F
 ==82235==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82235==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82235==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82235==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82235==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82235==    by 0x49908EB: curl_version_info (version.c:600)
 ==82235==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82235==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82235==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82235==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind54
test 0060 [HTTP PUT from stdin with wrong content-length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind60 ../src/curl -q --output log/8/curl60.out  --include --trace-ascii log/8/trace60 --trace-time http://127.0.0.1:44467/bzz/60 -T - -H "Content-Length: 1" <log/8/stdin-for-60 > log/8/stdout60 2> log/8/stderr60

 60: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 60
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind60 ../src/curl -q --output log/8/curl60.out  --include --trace-ascii log/8/trace60 --trace-time http://127.0.0.1:44467/bzz/60 -T - -H "Content-Length: 1" <log/8/stdin-for-60 > log/8/stdout60 2> log/8/stderr60
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.781438 ====> Client connect
 19:26:12.804939 accept_connection 3 returned 4
 19:26:12.804983 Read 93 bytes
 19:26:12.804995 Process 93 bytes request
 19:26:12.805009 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.805018 Are-we-friendly question received
 19:26:12.805052 Wrote request (93 bytes) input to log/8/server.input
 19:26:12.805070 Identifying ourselves as friends
 19:26:12.805167 Response sent (56 bytes) and written to log/8/server.response
 19:26:12.805178 special request received, no persistency
 19:26:12.805187 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 42276 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 60
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file stdin-for-60
 more than one byte
=== End of file stdin-for-60
=== Start of file valgrind60
 ==82552== 
 ==82552== Process terminating with default action of signal 4 (SIGILL)
 ==82552==  Illegal opcode at address 0x492B75F
 ==82552==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82552==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82552==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82552==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82552==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82552==    by 0x49908EB: curl_version_info (version.c:600)
 ==82552==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82552==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82552==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82552==    by 0x4003269: main (tool_maCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind57 ../src/curl -q --include --trace-ascii log/20/trace57 --trace-time -w "%{content_type}\n" http://127.0.0.1:33897/57 -o log/20/out57 > log/20/stdout57 2> log/20/stderr57
in.c:195)
=== End of file valgrind60
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind59 ../src/curl -q --output log/10/curl59.out  --include --trace-ascii log/10/trace59 --trace-time "http://127.0.0.1:40913?mooo/59" > log/10/stdout59 2> log/10/stderr59
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind65 ../src/curl -q --output log/24/curl65.out  --include --trace-ascii log/24/trace65 --trace-time http://127.0.0.1:38895/65 -u testuser:test2pass --digest > log/24/stdout65 2> log/24/stderr65
test 0057 [HTTP content-type with spaces in]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind57 ../src/curl -q --include --trace-ascii log/20/trace57 --trace-time -w "%{content_type}\n" http://127.0.0.1:33897/57 -o log/20/out57 > log/20/stdout57 2> log/20/stderr57

 57: stdout FAILED:
--- log/20/check-expected	2026-10-15 19:26:15.536035028 +0000
+++ log/20/check-generated	2026-10-15 19:26:15.532793493 +0000
@@ -1 +0,0 @@
-text/html; charset=ISO-8859-4[CR][LF]
== Contents of files in the log/20/ directory after test 57
=== Start of file check-expected
 text/html; charset=ISO-8859-4[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind57 ../src/curl -q --include --trace-ascii log/20/trace57 --trace-time -w "%{content_type}\n" http://127.0.0.1:33897/57 -o log/20/out57 > log/20/stdout57 2> log/20/stderr57
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.625730 ====> Client connect
 19:26:12.625773 accept_connection 3 returned 4
 19:26:12.625799 Read 93 bytes
 19:26:12.625811 Process 93 bytes request
 19:26:12.625837 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.625848 Are-we-friendly question received
 19:26:12.625883 Wrote request (93 bytes) input to log/20/server.input
 19:26:12.625909 Identifying ourselves as friends
 19:26:12.625994 Response sent (56 bytes) and written to log/20/server.response
 19:26:12.626008 special request received, no persistency
 19:26:12.626017 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54026 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 57
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind57
 ==82333== 
 ==82333== Process terminating with default action of signal 4 (SIGILL)
 ==82333==  Illegal opcode at address 0x492B75F
 ==82333==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82333==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82333==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82333==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82333==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82333==    by 0x49908EB: curl_version_info (version.c:600)
 ==82333==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82333==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82333==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82333==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind57
test 0059 [HTTP URL with slash but with "parameter"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind59 ../src/curl -q --output log/10/curl59.out  --include --trace-ascii log/10/trace59 --trace-time "http://127.0.0.1:40913?mooo/59" > log/10/stdout59 2> log/10/stderr59

 59: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 59
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind59 ../src/curl -q --output log/10/curl59.out  --include --trace-ascii log/10/trace59 --trace-time "http://127.0.0.1:40913?mooo/59" > log/10/stdout59 2> log/10/stderr59
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.712649 ====> Client connect
 19:26:12.712684 accept_connection 3 returned 4
 19:26:12.713286 Read 93 bytes
 19:26:12.713300 Process 93 bytes request
 19:26:12.713324 Got request: GET /verifiedserver HTTP/1.1
 19:26:12.713332 Are-we-friendly question received
 19:26:12.713363 Wrote request (93 bytes) input to log/10/server.input
 19:26:12.713383 Identifying ourselves as friends
 19:26:12.713463 Response sent (56 bytes) and written to log/10/server.response
 19:26:12.713473 special request received, no persistency
 19:26:12.713481 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 46836 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 59
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind59
 ==82481== 
 ==82481== Process terminating with default action of signal 4 (SIGILL)
 ==82481==  Illegal opcode at address 0x492B75F
 ==82481==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82481==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82481==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82481==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82481==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82481==    by 0x49908EB: curl_version_info (version.c:600)
 ==82481==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82481==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind59
test 0065 [HTTP with Digest authorization with bad password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind65 ../src/curl -q --output log/24/curl65.out  --include --trace-ascii log/24/trace65 --trace-time http://127.0.0.1:38895/65 -u testuser:test2pass --digest > log/24/stdout65 2> log/24/stderr65

 65: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 65
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind65 ../src/curl -q --output log/24/curl65.out  --include --trace-ascii log/24/trace65 --trace-time http://127.0.0.1:38895/65 -u testuser:test2pass --digest > log/24/stdout65 2> log/24/stderr65
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.423332 ====> Client connect
 19:26:13.450443 accept_connection 3 returned 4
 19:26:13.456707 Read 93 bytes
 19:26:13.456728 Process 93 bytes request
 19:26:13.456744 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.456752 Are-we-friendly question received
 19:26:13.480668 Wrote request (93 bytes) input to log/24/server.input
 19:26:13.480718 Identifying ourselves as friends
 19:26:13.480834 Response sent (56 bytes) and written to log/24/server.response
 19:26:13.480848 special request received, no persistency
 19:26:13.480857 ====> Client discCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind62 ../src/curl -q --output log/13/curl62.out  --include --trace-ascii log/13/trace62 --trace-time http://127.0.0.1:38821/we/want/62 http://127.0.0.1:38821/we/want/62?hoge=fuga -b log/13/jar62.txt -H "Host: www.host.foo.com" > log/13/stdout62 2> log/13/stderr62
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind63 ../src/curl -q --output log/1/curl63.out  --include --trace-ascii log/1/trace63 --trace-time http://we.want.that.site.com/63 > log/1/stdout63 2> log/1/stderr63
onnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 59770 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 65
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind65
 ==82962== 
 ==82962== Process terminating with default action of signal 4 (SIGILL)
 ==82962==  Illegal opcode at address 0x492B75F
 ==82962==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82962==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82962==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82962==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82962==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82962==    by 0x49908EB: curl_version_info (version.c:600)
 ==82962==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82962==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82962==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82962==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind65
test 0062 [HTTP, send cookies when using custom Host:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind62 ../src/curl -q --output log/13/curl62.out  --include --trace-ascii log/13/trace62 --trace-time http://127.0.0.1:38821/we/want/62 http://127.0.0.1:38821/we/want/62?hoge=fuga -b log/13/jar62.txt -H "Host: www.host.foo.com" > log/13/stdout62 2> log/13/stderr62

 62: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 62
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind62 ../src/curl -q --output log/13/curl62.out  --include --trace-ascii log/13/trace62 --trace-time http://127.0.0.1:38821/we/want/62 http://127.0.0.1:38821/we/want/62?hoge=fuga -b log/13/jar62.txt -H "Host: www.host.foo.com" > log/13/stdout62 2> log/13/stderr62
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.077438 ====> Client connect
 19:26:13.100012 accept_connection 3 returned 4
 19:26:13.100541 Read 93 bytes
 19:26:13.100559 Process 93 bytes request
 19:26:13.100577 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.100587 Are-we-friendly question received
 19:26:13.125967 Wrote request (93 bytes) input to log/13/server.input
 19:26:13.126008 Identifying ourselves as friends
 19:26:13.140427 Response sent (56 bytes) and written to log/13/server.response
 19:26:13.140450 special request received, no persistency
 19:26:13.140460 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 35798 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file jar62.txt
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 #HttpOnly_.foo.com	TRUE	/we/want/	FALSE	22147483647	test	yes
 .host.foo.com	TRUE	/we/want/	FALSE	22147483647	test2	yes
 .fake.host.foo.com	TRUE	/we/want/	FALSE	22147483647	test4	yes
 .foo.com	TRUE	/moo	TRUE	0	test3	maybe
=== End of file jar62.txt
=== Start of file server.cmd
 Testnum 62
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind62
 ==82769== 
 ==82769== Process terminating with default action of signal 4 (SIGILL)
 ==82769==  Illegal opcode at address 0x492B75F
 ==82769==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82769==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82769==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82769==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82769==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82769==    by 0x49908EB: curl_version_info (version.c:600)
 ==82769==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82769==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82769==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82769==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind62
setenv http_proxy = http://fake:user@127.0.0.1:38815/
test 0063 [HTTP with proxy authorization set in environment]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind63 ../src/curl -q --output log/1/curl63.out  --include --trace-ascii log/1/trace63 --trace-time http://we.want.that.site.com/63 > log/1/stdout63 2> log/1/stderr63

 63: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 63
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind63 ../src/curl -q --output log/1/curl63.out  --include --trace-ascii log/1/trace63 --trace-time http://we.want.that.site.com/63 > log/1/stdout63 2> log/1/stderr63
=== End of file commands.log
=== Start of file http_server.log
 19:26:14.243679 ====> Client connect
 19:26:14.267076 accept_connection 3 returned 4
 19:26:14.276964 Read 93 bytes
 19:26:14.276986 Process 93 bytes request
 19:26:14.277012 Got request: GET /verifiedserver HTTP/1.1
 19:26:14.277021 Are-we-friendly question received
 19:26:14.283643 Wrote request (93 bytes) input to log/1/server.input
 19:26:14.283702 Identifying ourselves as friends
 19:26:14.283827 Response sent (56 bytes) and written to log/1/server.response
 19:26:14.283842 special request received, no persistency
 19:26:14.283851 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 55698 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 63
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind63
 ==82762== 
 ==82762== Process terminating with default action of signal 4 (SIGILL)
 ==82762==  Illegal opcode at address 0x492B75F
 ==82762==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82762==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82762==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82762==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82762CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind58 ../src/curl -q --output log/2/curl58.out  --include --trace-ascii log/2/trace58 --trace-time http://127.0.0.1:34531/we/want/ -T log/2/58te[]st.txt -g > log/2/stdout58 2> log/2/stderr58
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind56 ../src/curl -q --output log/6/curl56.out  --include --trace-ascii log/6/trace56 --trace-time -K - 127.0.0.1:33935/that.site.com/56 <log/6/stdin-for-56 > log/6/stdout56 2> log/6/stderr56
==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82762==    by 0x49908EB: curl_version_info (version.c:600)
 ==82762==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82762==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82762==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82762==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind63
test 0058 [HTTP PUT from file with weird letters]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind58 ../src/curl -q --output log/2/curl58.out  --include --trace-ascii log/2/trace58 --trace-time http://127.0.0.1:34531/we/want/ -T log/2/58te[]st.txt -g > log/2/stdout58 2> log/2/stderr58

 58: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 58
=== Start of file 58te[]st.txt
 a few bytes
=== End of file 58te[]st.txt
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind58 ../src/curl -q --output log/2/curl58.out  --include --trace-ascii log/2/trace58 --trace-time http://127.0.0.1:34531/we/want/ -T log/2/58te[]st.txt -g > log/2/stdout58 2> log/2/stderr58
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.773503 ====> Client connect
 19:26:13.786872 accept_connection 3 returned 4
 19:26:13.786931 Read 93 bytes
 19:26:13.786941 Process 93 bytes request
 19:26:13.786971 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.786985 Are-we-friendly question received
 19:26:13.787028 Wrote request (93 bytes) input to log/2/server.input
 19:26:13.787049 Identifying ourselves as friends
 19:26:13.787155 Response sent (56 bytes) and written to log/2/server.response
 19:26:13.787168 special request received, no persistency
 19:26:13.787176 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 37652 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 58
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind58
 ==82564== 
 ==82564== Process terminating with default action of signal 4 (SIGILL)
 ==82564==  Illegal opcode at address 0x492B75F
 ==82564==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82564==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82564==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82564==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82564==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82564==    by 0x49908EB: curl_version_info (version.c:600)
 ==82564==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82564==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82564==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82564==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind58
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/6/server/http_server.pid" --logfile "log/6/http_server.log" --logdir "log/6" --portfile log/6/server/http_server.port --config log/6/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 82167 port 33935
* pid http => 82167 82167
test 0056 [HTTP POST with *HUGE* request and chunked transfer-encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind56 ../src/curl -q --output log/6/curl56.out  --include --trace-ascii log/6/trace56 --trace-time -K - 127.0.0.1:33935/that.site.com/56 <log/6/stdin-for-56 > log/6/stdout56 2> log/6/stderr56

 56: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 56
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind56 ../src/curl -q --output log/6/curl56.out  --include --trace-ascii log/6/trace56 --trace-time -K - 127.0.0.1:33935/that.site.com/56 <log/6/stdin-for-56 > log/6/stdout56 2> log/6/stderr56
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.491091 Running HTTP IPv4 version on port 33935
 19:26:12.540274 Wrote pid 82167 to log/6/server/http_server.pid
 19:26:12.566789 Wrote port 33935 to log/6/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 56
=== End of file server.cmd
=== Start of file stdin-for-56
 data "we post this"
 # enforce chunky post
 header "Transfer-Encoding: chunked"
 # Set the user-agent using a short-option:
 -A "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind72 ../src/curl -q --output log/12/curl72.out  --include --trace-ascii log/12/trace72 --trace-time http://127.0.0.1:40921/72 -u testuser:testpass --anyauth > log/12/stdout72 2> log/12/stderr72
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
=== End of file stdin-for-56
=== Start of file valgrind56
 ==82958== 
 ==82958== Process terminating with default action of signal 4 (SIGILL)
 ==82958==  Illegal opcode at address 0x492B75F
 ==82958==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82958==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82958==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82958==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82958==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82958==    by 0x49908EB: curl_version_info (version.c:600)
 ==82958==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82958==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82958==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82958==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind56
test 0072 [HTTP with Digest *OR* BasiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind51 ../src/curl -q --output log/5/curl51.out  --include --trace-ascii log/5/trace51 --trace-time http://127.0.0.1:37089/we/are/all/twits/51 -L > log/5/stdout51 2> log/5/stderr51
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind64 ../src/curl -q --output log/18/curl64.out  --include --trace-ascii log/18/trace64 --trace-time 'http://127.0.0.1:43739/64"' -u testuser:testpass --digest > log/18/stdout64 2> log/18/stderr64
c authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind72 ../src/curl -q --output log/12/curl72.out  --include --trace-ascii log/12/trace72 --trace-time http://127.0.0.1:40921/72 -u testuser:testpass --anyauth > log/12/stdout72 2> log/12/stderr72

 72: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 72
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind72 ../src/curl -q --output log/12/curl72.out  --include --trace-ascii log/12/trace72 --trace-time http://127.0.0.1:40921/72 -u testuser:testpass --anyauth > log/12/stdout72 2> log/12/stderr72
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.823792 ====> Client connect
 19:26:13.823836 accept_connection 3 returned 4
 19:26:13.823863 Read 93 bytes
 19:26:13.823876 Process 93 bytes request
 19:26:13.823897 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.823906 Are-we-friendly question received
 19:26:13.823939 Wrote request (93 bytes) input to log/12/server.input
 19:26:13.823959 Identifying ourselves as friends
 19:26:13.824043 Response sent (56 bytes) and written to log/12/server.response
 19:26:13.824055 special request received, no persistency
 19:26:13.824064 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 51882 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 72
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind72
 ==83151== 
 ==83151== Process terminating with default action of signal 4 (SIGILL)
 ==83151==  Illegal opcode at address 0x492B75F
 ==83151==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83151==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83151==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83151==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83151==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83151==    by 0x49908EB: curl_version_info (version.c:600)
 ==83151==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83151==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83151==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83151==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind72
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/5/server/http_server.pid" --logfile "log/5/http_server.log" --logdir "log/5" --portfile log/5/server/http_server.port --config log/5/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 81869 port 37089
* pid http => 81869 81869
test 0051 [HTTP follow redirect with excessive ../]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind51 ../src/curl -q --output log/5/curl51.out  --include --trace-ascii log/5/trace51 --trace-time http://127.0.0.1:37089/we/are/all/twits/51 -L > log/5/stdout51 2> log/5/stderr51

 51: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 51
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind51 ../src/curl -q --output log/5/curl51.out  --include --trace-ascii log/5/trace51 --trace-time http://127.0.0.1:37089/we/are/all/twits/51 -L > log/5/stdout51 2> log/5/stderr51
=== End of file commands.log
=== Start of file http_server.log
 19:26:12.293118 Running HTTP IPv4 version on port 37089
 19:26:12.293243 Wrote pid 81869 to log/5/server/http_server.pid
 19:26:12.293285 Wrote port 37089 to log/5/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 51
=== End of file server.cmd
=== Start of file valgrind51
 ==82736== 
 ==82736== Process terminating with default action of signal 4 (SIGILL)
 ==82736==  Illegal opcode at address 0x492B75F
 ==82736==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82736==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82736==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82736==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82736==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82736==    by 0x49908EB: curl_version_info (version.c:600)
 ==82736==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82736==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82736==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82736==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind51
test 0064 [HTTP with Digest authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind64 ../src/curl -q --output log/18/curl64.out  --include --trace-ascii log/18/trace64 --trace-time 'http://127.0.0.1:43739/64"' -u testuser:testpass --digest > log/18/stdout64 2> log/18/stderr64

 64: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 64
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind64 ../src/curl -q --output log/18/curl64.out  --include --trace-ascii log/18/trace64 --trace-time 'http://127.0.0.1:43739/64"' -u testuser:testpass --digest > log/18/stdout64 2> log/18/stderr64
=== End of file commands.log
=== Start of file http_server.log
 19:26:14.206960 ====> Client connect
 19:26:14.207168 accept_connection 3 returned 4
 19:26:14.213753 Read 93 bytes
 19:26:14.213775 Process 93 bytes request
 19:26:14.213805 Got request: GET /verifiedserver HTTP/1.1
 19:26:14.213815 Are-we-friendly question received
 19:26:14.213859 Wrote request (93 bytes) input to log/18/server.input
 19:26:14.213883 Identifying ourselves as friends
 19:26:14.213989 Response sent (56 bytes) and written to log/18/server.response
 19:26:14.214000 special request received, no persistency
 19:26:14.214008 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 53534 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 64
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind64
 ==82757=CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind66 ../src/curl -q --output log/19/curl66.out  --include --trace-ascii log/19/trace66 --trace-time http://127.0.0.1:46497/66 --http0.9 > log/19/stdout66 2> log/19/stderr66
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind75 ../src/curl -q --include --trace-ascii log/21/trace75 --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/21/weee#1.dump" --stderr - > log/21/stdout75 2> log/21/stderr75
= 
 ==82757== Process terminating with default action of signal 4 (SIGILL)
 ==82757==  Illegal opcode at address 0x492B75F
 ==82757==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==82757==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==82757==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==82757==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==82757==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==82757==    by 0x49908EB: curl_version_info (version.c:600)
 ==82757==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==82757==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==82757==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==82757==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind64
test 0066 [HTTP GET without headers in the response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind66 ../src/curl -q --output log/19/curl66.out  --include --trace-ascii log/19/trace66 --trace-time http://127.0.0.1:46497/66 --http0.9 > log/19/stdout66 2> log/19/stderr66

 66: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 66
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind66 ../src/curl -q --output log/19/curl66.out  --include --trace-ascii log/19/trace66 --trace-time http://127.0.0.1:46497/66 --http0.9 > log/19/stdout66 2> log/19/stderr66
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.739936 ====> Client connect
 19:26:13.739974 accept_connection 3 returned 4
 19:26:13.739996 Read 93 bytes
 19:26:13.740007 Process 93 bytes request
 19:26:13.740019 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.740027 Are-we-friendly question received
 19:26:13.740062 Wrote request (93 bytes) input to log/19/server.input
 19:26:13.740080 Identifying ourselves as friends
 19:26:13.740150 Response sent (56 bytes) and written to log/19/server.response
 19:26:13.740160 special request received, no persistency
 19:26:13.740169 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 38028 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 66
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind66
 ==83058== 
 ==83058== Process terminating with default action of signal 4 (SIGILL)
 ==83058==  Illegal opcode at address 0x492B75F
 ==83058==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83058==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83058==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83058==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83058==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83058==    by 0x49908EB: curl_version_info (version.c:600)
 ==83058==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83058==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83058==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83058==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind66
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind74 ../src/curl -q --include --trace-ascii log/9/trace74 --trace-time "http://127.0.0.1:43733/{74,740001}" -o "log/9/dumpit#1.dump" > log/9/stdout74 2> log/9/stderr74
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind77 ../src/curl -q --output log/16/curl77.out  --include --trace-ascii log/16/trace77 --trace-time http://127.0.0.1:35903/77 -z "dec 12 12:00:00 1999 GMT" > log/16/stdout77 2> log/16/stderr77
test 0075 [HTTP, urlglob retrieval with bad range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind75 ../src/curl -q --include --trace-ascii log/21/trace75 --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/21/weee#1.dump" --stderr - > log/21/stdout75 2> log/21/stderr75

 75: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:26:16.829330027 +0000
+++ log/21/check-generated	2026-10-15 19:26:16.825791019 +0000
@@ -1,3 +0,0 @@
-curl: (3) bad range in position 47:[CR][LF]
-http://a-site-never-accessed.example.org/[2-1][CR][LF]
-                                              ^[CR][LF]
== Contents of files in the log/21/ directory after test 75
=== Start of file check-expected
 curl: (3) bad range in position 47:[CR][LF]
 http://a-site-never-accessed.example.org/[2-1][CR][LF]
                                               ^[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind75 ../src/curl -q --include --trace-ascii log/21/trace75 --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/21/weee#1.dump" --stderr - > log/21/stdout75 2> log/21/stderr75
=== End of file commands.log
=== Start of file server.cmd
 Testnum 75
=== End of file server.cmd
=== Start of file valgrind75
 ==83341== 
 ==83341== Process terminating with default action of signal 4 (SIGILL)
 ==83341==  Illegal opcode at address 0x492B75F
 ==83341==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83341==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83341==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83341==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83341==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83341==    by 0x49908EB: curl_version_info (version.c:600)
 ==83341==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83341==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83341==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83341==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind75
test 0074 [HTTP, urlglob {}-retrieval and -o #[num] usage]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind74 ../src/curl -q --include --trace-ascii log/9/trace74 --trace-time "http://127.0.0.1:43733/{74,740001}" -o "log/9/dumpit#1.dump" > log/9/stdout74 2> log/9/stderr74

 74: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 74
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind74 ../src/curl -q --include --trace-ascii log/9/trace74 --trace-time "http://127.0.0.1:43733/{74,740001}" -o "log/9/dumpit#1.dump" > log/9/stdout74 2> log/9/stderr74
=== End of file commands.log
=== Start of file http_server.log
 19:26:14.205190 ====> Client connect
 19:26:14.205229 accept_connection 3 returned 4
 19:26:14.205408 Read 93 bytes
 19:26:14.205425 Process 93 bytes request
 19:26:14.205439 Got request: GET /verifiedserver HTTP/1.1
 19:26:14.205449 Are-we-friendly question received
 19:26:14.205485 Wrote request (93 bytes) input to log/9/server.input
 19:26:14.205504 Identifying ourselves as friends
 19:26:14.205574 Response sent (56 bytes) and written to log/9/server.response
 19:26:14.205586 special request received, no persistency
 19:26:14.205595 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 39296 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 74
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind74
 ==83386== 
 ==83386== Process terminating with default action of signal 4 (SIGILL)
 ==83386==  Illegal opcode at address 0x492B75F
 ==83386==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83386==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83386==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83386==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83386==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83386==    by 0x49908EB: curl_version_info (version.c:600)
 ==83386==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83386==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83386==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83386==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind74
test 0077 [HTTP with -z "older date"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind77 ../src/curl -q --output log/16/curl77.out  --include --trace-ascii log/16/trace77 --trace-time http://127.0.0.1:35903/77 -z "dec 12 12:00:00 1999 GMT" > log/16/stdout77 2> log/16/stderr77

 77: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 77
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind77 ../src/curl -q --output log/16/curl77.out  --include --trace-ascii log/16/trace77 --trace-time http://127.0.0.1:35903/77 -z "dec 12 12:00:00 1999 GMT" > log/16/stdout77 2> log/16/stderr77
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.263179 ====> Client connect
 19:26:15.263213 accept_connection 3 returned 4
 19:26:15.269858 Read 93 bytes
 19:26:15.269882 Process 93 bytes request
 19:26:15.269894 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.269903 Are-we-friendly question received
 19:26:15.269946 Wrote request (93 bytes) input to log/16/server.input
 19:26:15.269975 Identifying ourselves as friends
 19:26:15.270037 Response sent (56 bytes) and written to log/16/server.response
 19:26:15.270047 special request received, no persistency
 19:26:15.270056 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 36626 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 77
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind77
 ==83447== 
 ==83447== Process terminating with default action of signal 4 (SIGILL)
 ==83447==  Illegal opcode at address 0x492B75F
 ==83447==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83447==    by 0x492C53A: curl_mvsnprintf (mpCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind61 ../src/curl -q --output log/3/curl61.out  --include --trace-ascii log/3/trace61 --trace-time http://127.0.0.1:36161/we/want/61 -c log/3/jar61.txt -H "Host: www.host.foo.com" > log/3/stdout61 2> log/3/stderr61
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind71 ../src/curl -q --output log/23/curl71.out  --include --trace-ascii log/23/trace71 --trace-time http://127.0.0.1:44711/we/want/71 -K - <log/23/stdin-for-71 > log/23/stdout71 2> log/23/stderr71
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind73 ../src/curl -q --output log/22/curl73.out  --include --trace-ascii log/22/trace73 --trace-time http://127.0.0.1:35989/we/want/73 -c log/22/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/22/stdout73 2> log/22/stderr73
rintf.c:1257)
 ==83447==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83447==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83447==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83447==    by 0x49908EB: curl_version_info (version.c:600)
 ==83447==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83447==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83447==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83447==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind77
test 0071 [HTTP and -F upload in config file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind71 ../src/curl -q --output log/23/curl71.out  --include --trace-ascii log/23/trace71 --trace-time http://127.0.0.1:44711/we/want/71 -K - <log/23/stdin-for-71 > log/23/stdout71 2> log/23/stderr71

 71: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 71
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind71 ../src/curl -q --output log/23/curl71.out  --include --trace-ascii log/23/trace71 --trace-time http://127.0.0.1:44711/we/want/71 -K - <log/23/stdin-for-71 > log/23/stdout71 2> log/23/stderr71
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.723779 ====> Client connect
 19:26:13.723820 accept_connection 3 returned 4
 19:26:13.723844 Read 93 bytes
 19:26:13.723854 Process 93 bytes request
 19:26:13.723867 Got request: GET /verifiedserver HTTP/1.1
 19:26:13.723875 Are-we-friendly question received
 19:26:13.723901 Wrote request (93 bytes) input to log/23/server.input
 19:26:13.723917 Identifying ourselves as friends
 19:26:13.724005 Response sent (56 bytes) and written to log/23/server.response
 19:26:13.724016 special request received, no persistency
 19:26:13.724024 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 49680 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 71
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file stdin-for-71
 -F name=daniel
 -F tool=curl
 -F file=@log/23/test71.txt
 user-agent = ""
=== End of file stdin-for-71
=== Start of file test71.txt
 foo-
 This is a moo-
 bar
=== End of file test71.txt
=== Start of file valgrind71
 ==83060== 
 ==83060== Process terminating with default action of signal 4 (SIGILL)
 ==83060==  Illegal opcode at address 0x492B75F
 ==83060==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83060==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83060==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83060==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83060==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83060==    by 0x49908EB: curl_version_info (version.c:600)
 ==83060==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83060==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind71
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/3/server/http_server.pid" --logfile "log/3/http_server.log" --logdir "log/3" --portfile log/3/server/http_server.port --config log/3/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 82533 port 36161
* pid http => 82533 82533
setenv TZ = GMT
test 0061 [HTTP with various cookies and custom Host:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind61 ../src/curl -q --output log/3/curl61.out  --include --trace-ascii log/3/trace61 --trace-time http://127.0.0.1:36161/we/want/61 -c log/3/jar61.txt -H "Host: www.host.foo.com" > log/3/stdout61 2> log/3/stderr61

 61: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 61
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind61 ../src/curl -q --output log/3/curl61.out  --include --trace-ascii log/3/trace61 --trace-time http://127.0.0.1:36161/we/want/61 -c log/3/jar61.txt -H "Host: www.host.foo.com" > log/3/stdout61 2> log/3/stderr61
=== End of file commands.log
=== Start of file http_server.log
 19:26:13.982399 Running HTTP IPv4 version on port 36161
 19:26:14.010272 Wrote pid 82533 to log/3/server/http_server.pid
 19:26:14.010577 Wrote port 36161 to log/3/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 61
=== End of file server.cmd
=== Start of file valgrind61
 ==83236== 
 ==83236== Process terminating with default action of signal 4 (SIGILL)
 ==83236==  Illegal opcode at address 0x492B75F
 ==83236==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83236==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83236==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83236==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83236==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83236==    by 0x49908EB: curl_version_info (version.c:600)
 ==83236==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83236==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83236==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83236==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind61
test 0073 [HTTP cookies when using custom Host:, domain using only two dots]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind73 ../src/curl -q --output log/22/curl73.out  --include --trace-ascii log/22/trace73 --trace-time http://127.0.0.1:35989/we/want/73 -c log/22/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/22/stdout73 2> log/22/stderr73

 73: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 73
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind73 ../src/curl -q --output log/22/curl73.out  --include --trace-ascii log/22/trace73 --trace-time http://127.0.0.1:35989/we/want/73 -c log/22/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/22/stdout73 2> log/22/stderr73
=== End of file commands.log
=== Start of file http_server.log
 19:26:14.169700 ====> Client connect
 19:26:14.169733 accept_connection 3 returned 4
 19:26:14.169755 Read 93 bytes
 19:26:14.169766 Process 93 bytes request
 19:26:14.169779 Got request: GET /verifiedserver HTTP/1.1
 19:26:14.169788 Are-we-friendly question received
 19:26:14.169814 Wrote request (93 bytes) input to log/22/server.input
 19:26:14.169831 Identifying ourselves as friends
 19:26:1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind78 ../src/curl -q --output log/7/curl78.out  --include --trace-ascii log/7/trace78 --trace-time http://127.0.0.1:40859/78 -z "dec 12 11:00:00 1999 GMT" > log/7/stdout78 2> log/7/stderr78
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind79 ../src/curl -q --output log/15/curl79.out  --include --trace-ascii log/15/trace79 --trace-time ftp://127.0.0.1:40321/we/want/that/page/79 -x 127.0.0.1:40321 > log/15/stdout79 2> log/15/stderr79
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind82 ../src/curl -q --output log/17/curl82.out  --include --trace-ascii log/17/trace82 --trace-time http://127.0.0.1:35993/82 --proxy-user testuser:testpass -x http://127.0.0.1:35993 > log/17/stdout82 2> log/17/stderr82
4.169894 Response sent (56 bytes) and written to log/22/server.response
 19:26:14.169903 special request received, no persistency
 19:26:14.169912 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 54706 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 73
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind73
 ==83356== 
 ==83356== Process terminating with default action of signal 4 (SIGILL)
 ==83356==  Illegal opcode at address 0x492B75F
 ==83356==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83356==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83356==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83356==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83356==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83356==    by 0x49908EB: curl_version_info (version.c:600)
 ==83356==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83356==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83356==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83356==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind73
test 0078 [HTTP with -z "newer date"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind78 ../src/curl -q --output log/7/curl78.out  --include --trace-ascii log/7/trace78 --trace-time http://127.0.0.1:40859/78 -z "dec 12 11:00:00 1999 GMT" > log/7/stdout78 2> log/7/stderr78

 78: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 78
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind78 ../src/curl -q --output log/7/curl78.out  --include --trace-ascii log/7/trace78 --trace-time http://127.0.0.1:40859/78 -z "dec 12 11:00:00 1999 GMT" > log/7/stdout78 2> log/7/stderr78
=== End of file commands.log
=== Start of file http_server.log
 19:26:14.458061 ====> Client connect
 19:26:14.458096 accept_connection 3 returned 4
 19:26:14.458117 Read 93 bytes
 19:26:14.458127 Process 93 bytes request
 19:26:14.458140 Got request: GET /verifiedserver HTTP/1.1
 19:26:14.458149 Are-we-friendly question received
 19:26:14.458175 Wrote request (93 bytes) input to log/7/server.input
 19:26:14.458191 Identifying ourselves as friends
 19:26:14.458252 Response sent (56 bytes) and written to log/7/server.response
 19:26:14.458261 special request received, no persistency
 19:26:14.458269 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 44836 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 78
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind78
 ==83568== 
 ==83568== Process terminating with default action of signal 4 (SIGILL)
 ==83568==  Illegal opcode at address 0x492B75F
 ==83568==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83568==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83568==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83568==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83568==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83568==    by 0x49908EB: curl_version_info (version.c:600)
 ==83568==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83568==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind78
test 0079 [FTP over HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind79 ../src/curl -q --output log/15/curl79.out  --include --trace-ascii log/15/trace79 --trace-time ftp://127.0.0.1:40321/we/want/that/page/79 -x 127.0.0.1:40321 > log/15/stdout79 2> log/15/stderr79

 79: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 79
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind79 ../src/curl -q --output log/15/curl79.out  --include --trace-ascii log/15/trace79 --trace-time ftp://127.0.0.1:40321/we/want/that/page/79 -x 127.0.0.1:40321 > log/15/stdout79 2> log/15/stderr79
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.517406 ====> Client connect
 19:26:15.517448 accept_connection 3 returned 4
 19:26:15.517473 Read 93 bytes
 19:26:15.517482 Process 93 bytes request
 19:26:15.517495 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.517504 Are-we-friendly question received
 19:26:15.517529 Wrote request (93 bytes) input to log/15/server.input
 19:26:15.517544 Identifying ourselves as friends
 19:26:15.517627 Response sent (56 bytes) and written to log/15/server.response
 19:26:15.517637 special request received, no persistency
 19:26:15.517645 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 34750 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 79
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind79
 ==83624== 
 ==83624== Process terminating with default action of signal 4 (SIGILL)
 ==83624==  Illegal opcode at address 0x492B75F
 ==83624==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83624==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83624==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83624==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83624==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83624==    by 0x49908EB: curl_version_info (version.c:600)
 ==83624==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83624==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83624==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83624==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind79
test 0082 [HTTP with proxy requirCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind84 ../src/curl -q --output log/11/curl84.out  --include --trace-ascii log/11/trace84 --trace-time http://127.0.0.1:40989/we/want/that/page/84 -x 127.0.0.1:40989 --user iam:myself > log/11/stdout84 2> log/11/stderr84
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind85 ../src/curl -q --output log/8/curl85.out  --include --trace-ascii log/8/trace85 --trace-time http://127.0.0.1:44467/we/want/that/page/85 -x 127.0.0.1:44467 --user iam:myself --proxy-user testing:this > log/8/stdout85 2> log/8/stderr85
ing NTLM, but we send Basic]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind82 ../src/curl -q --output log/17/curl82.out  --include --trace-ascii log/17/trace82 --trace-time http://127.0.0.1:35993/82 --proxy-user testuser:testpass -x http://127.0.0.1:35993 > log/17/stdout82 2> log/17/stderr82

 82: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 82
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind82 ../src/curl -q --output log/17/curl82.out  --include --trace-ascii log/17/trace82 --trace-time http://127.0.0.1:35993/82 --proxy-user testuser:testpass -x http://127.0.0.1:35993 > log/17/stdout82 2> log/17/stderr82
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.977795 ====> Client connect
 19:26:15.977832 accept_connection 3 returned 4
 19:26:15.977855 Read 93 bytes
 19:26:15.977865 Process 93 bytes request
 19:26:15.977879 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.977888 Are-we-friendly question received
 19:26:15.977917 Wrote request (93 bytes) input to log/17/server.input
 19:26:15.977935 Identifying ourselves as friends
 19:26:15.978005 Response sent (56 bytes) and written to log/17/server.response
 19:26:15.978016 special request received, no persistency
 19:26:15.978025 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 33868 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 82
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind82
 ==83755== 
 ==83755== Process terminating with default action of signal 4 (SIGILL)
 ==83755==  Illegal opcode at address 0x492B75F
 ==83755==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83755==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83755==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83755==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83755==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83755==    by 0x49908EB: curl_version_info (version.c:600)
 ==83755==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83755==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83755==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83755==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind82
test 0084 [HTTP over proxy with site authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind84 ../src/curl -q --output log/11/curl84.out  --include --trace-ascii log/11/trace84 --trace-time http://127.0.0.1:40989/we/want/that/page/84 -x 127.0.0.1:40989 --user iam:myself > log/11/stdout84 2> log/11/stderr84

 84: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 84
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind84 ../src/curl -q --output log/11/curl84.out  --include --trace-ascii log/11/trace84 --trace-time http://127.0.0.1:40989/we/want/that/page/84 -x 127.0.0.1:40989 --user iam:myself > log/11/stdout84 2> log/11/stderr84
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.190061 ====> Client connect
 19:26:15.190096 accept_connection 3 returned 4
 19:26:15.190120 Read 93 bytes
 19:26:15.190130 Process 93 bytes request
 19:26:15.190142 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.190151 Are-we-friendly question received
 19:26:15.190178 Wrote request (93 bytes) input to log/11/server.input
 19:26:15.190194 Identifying ourselves as friends
 19:26:15.190258 Response sent (56 bytes) and written to log/11/server.response
 19:26:15.190268 special request received, no persistency
 19:26:15.190277 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 33034 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 84
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind84
 ==83866== 
 ==83866== Process terminating with default action of signal 4 (SIGILL)
 ==83866==  Illegal opcode at address 0x492B75F
 ==83866==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83866==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83866==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83866==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83866==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83866==    by 0x49908EB: curl_version_info (version.c:600)
 ==83866==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83866==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83866==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83866==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind84
test 0085 [HTTP over proxy with site and proxy authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind85 ../src/curl -q --output log/8/curl85.out  --include --trace-ascii log/8/trace85 --trace-time http://127.0.0.1:44467/we/want/that/page/85 -x 127.0.0.1:44467 --user iam:myself --proxy-user testing:this > log/8/stdout85 2> log/8/stderr85

 85: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 85
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind85 ../src/curl -q --output log/8/curl85.out  --include --trace-ascii log/8/trace85 --trace-time http://127.0.0.1:44467/we/want/that/page/85 -x 127.0.0.1:44467 --user iam:myself --proxy-user testing:this > log/8/stdout85 2> log/8/stderr85
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.194686 ====> Client connect
 19:26:15.194722 accept_connection 3 returned 4
 19:26:15.194742 Read 93 bytes
 19:26:15.194751 Process 93 bytes request
 19:26:15.194762 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.194771 Are-we-friendly question received
 19:26:15.194795 Wrote request (93 bytes) input to log/8/server.input
 19:26:15.194811 Identifying ourselves as friends
 19:26:15.194869 Response sent (56 bytes) and written to log/8/server.responseCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind86 ../src/curl -q --include --trace-ascii log/20/trace86 --trace-time "http://127.0.0.1:33897/[860001-860003]" -o "log/20/dumpit#1.dump" > log/20/stdout86 2> log/20/stderr86
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind93 ../src/curl -q --output log/1/curl93.out  --include --trace-ascii log/1/trace93 --trace-time http://127.0.0.1:38815/93 -x 127.0.0.1:38815 > log/1/stdout93 2> log/1/stderr93
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind92 ../src/curl -q --output log/13/curl92.out  --include --trace-ascii log/13/trace92 --trace-time http://127.0.0.1:38821/want/92 -C 87 > log/13/stdout92 2> log/13/stderr92

 19:26:15.194878 special request received, no persistency
 19:26:15.194886 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 42284 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 85
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind85
 ==83870== 
 ==83870== Process terminating with default action of signal 4 (SIGILL)
 ==83870==  Illegal opcode at address 0x492B75F
 ==83870==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83870==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83870==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83870==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83870==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83870==    by 0x49908EB: curl_version_info (version.c:600)
 ==83870==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83870==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83870==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83870==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind85
test 0086 [HTTP, urlglob []-retrieval and -o #[num] usage]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind86 ../src/curl -q --include --trace-ascii log/20/trace86 --trace-time "http://127.0.0.1:33897/[860001-860003]" -o "log/20/dumpit#1.dump" > log/20/stdout86 2> log/20/stderr86

 86: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 86
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind86 ../src/curl -q --include --trace-ascii log/20/trace86 --trace-time "http://127.0.0.1:33897/[860001-860003]" -o "log/20/dumpit#1.dump" > log/20/stdout86 2> log/20/stderr86
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.184146 ====> Client connect
 19:26:15.184188 accept_connection 3 returned 4
 19:26:15.184214 Read 93 bytes
 19:26:15.184226 Process 93 bytes request
 19:26:15.184239 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.184247 Are-we-friendly question received
 19:26:15.184278 Wrote request (93 bytes) input to log/20/server.input
 19:26:15.184297 Identifying ourselves as friends
 19:26:15.184373 Response sent (56 bytes) and written to log/20/server.response
 19:26:15.184386 special request received, no persistency
 19:26:15.184394 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54038 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 86
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind86
 ==83863== 
 ==83863== Process terminating with default action of signal 4 (SIGILL)
 ==83863==  Illegal opcode at address 0x492B75F
 ==83863==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==83863==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==83863==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==83863==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==83863==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==83863==    by 0x49908EB: curl_version_info (version.c:600)
 ==83863==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==83863==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==83863==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==83863==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind86
test 0093 [HTTP GET with failed proxy auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind93 ../src/curl -q --output log/1/curl93.out  --include --trace-ascii log/1/trace93 --trace-time http://127.0.0.1:38815/93 -x 127.0.0.1:38815 > log/1/stdout93 2> log/1/stderr93

 93: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 93
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind93 ../src/curl -q --output log/1/curl93.out  --include --trace-ascii log/1/trace93 --trace-time http://127.0.0.1:38815/93 -x 127.0.0.1:38815 > log/1/stdout93 2> log/1/stderr93
=== End of file commands.log
=== Start of file http_server.log
 19:26:16.647913 ====> Client connect
 19:26:16.647958 accept_connection 3 returned 4
 19:26:16.647986 Read 93 bytes
 19:26:16.647998 Process 93 bytes request
 19:26:16.648012 Got request: GET /verifiedserver HTTP/1.1
 19:26:16.648022 Are-we-friendly question received
 19:26:16.648054 Wrote request (93 bytes) input to log/1/server.input
 19:26:16.648074 Identifying ourselves as friends
 19:26:16.648147 Response sent (56 bytes) and written to log/1/server.response
 19:26:16.648160 special request received, no persistency
 19:26:16.648169 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 55702 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 93
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind93
 ==84201== 
 ==84201== Process terminating with default action of signal 4 (SIGILL)
 ==84201==  Illegal opcode at address 0x492B75F
 ==84201==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84201==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84201==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84201==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84201==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84201==    by 0x49908EB: curl_version_info (version.c:600)
 ==84201==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84201==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84201==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84201==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind93
test 0092 [HTTP resume transfer with the whole file already downloaded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quietCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind80 ../src/curl -q --output log/14/curl80.out  --include --trace-ascii log/14/trace80 --trace-time http://test.80:45467/we/want/that/page/80 -p --proxy1.0 127.0.0.1:37729 --user iam:myself --proxy-user youare:yourself -A "" > log/14/stdout80 2> log/14/stderr80
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind88 ../src/curl -q --output log/24/curl88.out  --include --trace-ascii log/24/trace88 --trace-time http://127.0.0.1:38895/88 -T log/24/put88 -u testuser:testpass --digest > log/24/stdout88 2> log/24/stderr88
 --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind92 ../src/curl -q --output log/13/curl92.out  --include --trace-ascii log/13/trace92 --trace-time http://127.0.0.1:38821/want/92 -C 87 > log/13/stdout92 2> log/13/stderr92

 92: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 92
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind92 ../src/curl -q --output log/13/curl92.out  --include --trace-ascii log/13/trace92 --trace-time http://127.0.0.1:38821/want/92 -C 87 > log/13/stdout92 2> log/13/stderr92
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.584393 ====> Client connect
 19:26:15.584434 accept_connection 3 returned 4
 19:26:15.584458 Read 93 bytes
 19:26:15.584468 Process 93 bytes request
 19:26:15.584481 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.584490 Are-we-friendly question received
 19:26:15.584521 Wrote request (93 bytes) input to log/13/server.input
 19:26:15.584538 Identifying ourselves as friends
 19:26:15.584612 Response sent (56 bytes) and written to log/13/server.response
 19:26:15.584623 special request received, no persistency
 19:26:15.584631 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 35800 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 92
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind92
 ==84159== 
 ==84159== Process terminating with default action of signal 4 (SIGILL)
 ==84159==  Illegal opcode at address 0x492B75F
 ==84159==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84159==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84159==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84159==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84159==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84159==    by 0x49908EB: curl_version_info (version.c:600)
 ==84159==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84159==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84159==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84159==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind92
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/14/server/http2_server.pid" --logfile "log/14/http2_server.log" --logdir "log/14" --portfile log/14/server/http2_server.port --config log/14/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 83621 port 37729
* pid http-proxy => 83621 83621
test 0080 [HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind80 ../src/curl -q --output log/14/curl80.out  --include --trace-ascii log/14/trace80 --trace-time http://test.80:45467/we/want/that/page/80 -p --proxy1.0 127.0.0.1:37729 --user iam:myself --proxy-user youare:yourself -A "" > log/14/stdout80 2> log/14/stderr80

 80: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 80
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind80 ../src/curl -q --output log/14/curl80.out  --include --trace-ascii log/14/trace80 --trace-time http://test.80:45467/we/want/that/page/80 -p --proxy1.0 127.0.0.1:37729 --user iam:myself --proxy-user youare:yourself -A "" > log/14/stdout80 2> log/14/stderr80
=== End of file commands.log
=== Start of file http2_server.log
 19:26:14.573659 Run as proxy, CONNECT to host 127.0.0.1
 19:26:14.573788 Running HTTP IPv4 version on port 37729
 19:26:14.573831 Wrote pid 83621 to log/14/server/http2_server.pid
 19:26:14.573860 Wrote port 37729 to log/14/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:26:14.530128 ====> Client connect
 19:26:14.530167 accept_connection 3 returned 4
 19:26:14.530191 Read 93 bytes
 19:26:14.530202 Process 93 bytes request
 19:26:14.530216 Got request: GET /verifiedserver HTTP/1.1
 19:26:14.530226 Are-we-friendly question received
 19:26:14.530258 Wrote request (93 bytes) input to log/14/server.input
 19:26:14.530277 Identifying ourselves as friends
 19:26:14.530351 Response sent (56 bytes) and written to log/14/server.response
 19:26:14.530364 special request received, no persistency
 19:26:14.530373 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 51478 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 80
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind80
 ==84089== 
 ==84089== Process terminating with default action of signal 4 (SIGILL)
 ==84089==  Illegal opcode at address 0x492B75F
 ==84089==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84089==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84089==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84089==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84089==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84089==    by 0x49908EB: curl_version_info (version.c:600)
 ==84089==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84089==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84089==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84089==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind80
test 0088 [HTTP PUT with Digest authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind88 ../src/curl -q --output log/24/curl88.out  --include --trace-ascii log/24/trace88 --trace-time http://127.0.0.1:38895/88 -T log/24/put88 -u testuser:testpass --digest > log/24/stdout88 2> log/24/stderr88

 88: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 88
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind88 ../src/curl -q --output log/24/curl88.out  --include --trace-ascii log/24/trace88 --trace-time http://127.0.0.1:38895/88 -T log/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind87 ../src/curl -q --include --trace-ascii log/10/trace87 --trace-time "http://127.0.0.1:40913/[870001-870002]" -o "log/10/dumpit87-#2.dump" > log/10/stdout87 2> log/10/stderr87
24/put88 -u testuser:testpass --digest > log/24/stdout88 2> log/24/stderr88
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.634243 ====> Client connect
 19:26:15.634292 accept_connection 3 returned 4
 19:26:15.634324 Read 93 bytes
 19:26:15.634335 Process 93 bytes request
 19:26:15.634349 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.634358 Are-we-friendly question received
 19:26:15.634386 Wrote request (93 bytes) input to log/24/server.input
 19:26:15.634404 Identifying ourselves as friends
 19:26:15.634494 Response sent (56 bytes) and written to log/24/server.response
 19:26:15.634505 special request received, no persistency
 19:26:15.634514 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 59786 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file put88
 This is data we upload with PUT
 a second line
 line three
 four is the number of lines
=== End of file put88
=== Start of file server.cmd
 auth_required
 Testnum 88
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind88
 ==84214== 
 ==84214== Process terminating with default action of signal 4 (SIGILL)
 ==84214==  Illegal opcode at address 0x492B75F
 ==84214==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84214==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84214==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84214==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84214==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84214==    by 0x49908EB: curl_version_info (version.c:600)
 ==84214==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84214==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84214==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84214==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind88
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind94 ../src/curl -q --output log/2/curl94.out  --include --trace-ascii log/2/trace94 --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:34531 > log/2/stdout94 2> log/2/stderr94
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind97 ../src/curl -q --output log/12/curl97.out  --include --trace-ascii log/12/trace97 --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:40921/97 > log/12/stdout97 2> log/12/stderr97
test 0087 [urlglob with out of range -o #[num] usage]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind87 ../src/curl -q --include --trace-ascii log/10/trace87 --trace-time "http://127.0.0.1:40913/[870001-870002]" -o "log/10/dumpit87-#2.dump" > log/10/stdout87 2> log/10/stderr87

 87: output (log/10/dumpit87-#2.dump) FAILED:
--- log/10/check-expected	2026-10-15 19:26:18.249672663 +0000
+++ log/10/check-generated	2026-10-15 19:26:18.245425326 +0000
@@ -1,5 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 16[CR][LF]
-[CR][LF]
-two is nice too[LF]
== Contents of files in the log/10/ directory after test 87
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 16[CR][LF]
 [CR][LF]
 two is nice too[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind87 ../src/curl -q --include --trace-ascii log/10/trace87 --trace-time "http://127.0.0.1:40913/[870001-870002]" -o "log/10/dumpit87-#2.dump" > log/10/stdout87 2> log/10/stderr87
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.500900 ====> Client connect
 19:26:15.500945 accept_connection 3 returned 4
 19:26:15.500972 Read 93 bytes
 19:26:15.500984 Process 93 bytes request
 19:26:15.500999 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.501008 Are-we-friendly question received
 19:26:15.501043 Wrote request (93 bytes) input to log/10/server.input
 19:26:15.501066 Identifying ourselves as friends
 19:26:15.501152 Response sent (56 bytes) and written to log/10/server.response
 19:26:15.501165 special request received, no persistency
 19:26:15.501173 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 46848 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 87
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind87
 ==84045== 
 ==84045== Process terminating with default action of signal 4 (SIGILL)
 ==84045==  Illegal opcode at address 0x492B75F
 ==84045==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84045==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84045==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84045==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84045==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84045==    by 0x49908EB: curl_version_info (version.c:600)
 ==84045==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84045==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84045==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84045==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind87
test 0094 [HTTPS GET with failed proxy auth (CONNECT 1.0)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind94 ../src/curl -q --output log/2/curl94.out  --include --trace-ascii log/2/trace94 --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:34531 > log/2/stdout94 2> log/2/stderr94

 94: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 94
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind94 ../src/curl -q --output log/2/curl94.out  --include --trace-ascii log/2/trace94 --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:34531 > log/2/stdout94 2> log/2/stderr94
=== End of file commands.log
=== Start of file http_server.log
 19:26:16.740925 ====> Client connect
 19:26:16.740967 accept_connection 3 returned 4
 19:26:16.741000 Read 93 bytes
 19:26:16.741010 Process 93 bytes request
 19:26:16.741024 Got request: GET /verifiedserver HTTP/1.1
 19:26:16.741034 Are-we-friendly question received
 19:26:16.741063 Wrote request (93 bytes) input to log/2/server.input
 19:26:16.741082 Identifying ourselves as friends
 19:26:16.741177 Response sent (56 bytes) and written to log/2/server.response
 19:26:16.741190 special request received, no persistency
 19:26:16.741199 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 37654 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 94
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind94
 ==84230== 
 ==84230== Process terminating with default action of signal 4 (SIGILL)
 ==84230==  Illegal opcode at address 0x492B75F
 ==84230==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84230==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84230==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84230==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84230==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84230==    by 0x49908EB: curl_version_info (version.c:600)
 ==84230==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84230==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84230==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84230==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind94
test 0097 [HTTP POST with custom content-type]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind97 ../src/curl -q --output log/12/curl97.out  --include --trace-ascii log/12/trace97 --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:40921/97 > log/12/stdout97 2> log/12/stderr97

 97: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 97
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind97 ../src/curl -q --output log/12/curl97.out  --include --trace-ascii log/12/trace97 --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:40921/97 > log/12/stdout97 2> log/12/stderr97
=== End of file commands.log
=== Start of file http_server.log
 19:26:15.864445 ====> Client connect
 19:26:15.864493 accept_connection 3 returned 4
 19:26:15.864519 Read 93 bytes
 19:26:15.864530 Process 93 bytes request
 19:26:15.864544 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.864553 Are-we-friendly question received
 19:26:15.864581 Wrote rCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind98 ../src/curl -q --output log/5/curl98.out  --include --trace-ascii log/5/trace98 --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:37089/98 <log/5/stdin-for-98 > log/5/stdout98 2> log/5/stderr98
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind83 ../src/curl -q --output log/4/curl83.out  --include --trace-ascii log/4/trace83 --trace-time http://test.83:35735/we/want/that/page/83 -p -x 127.0.0.1:45375 --user 'iam:my:;self' > log/4/stdout83 2> log/4/stderr83
equest (93 bytes) input to log/12/server.input
 19:26:15.864597 Identifying ourselves as friends
 19:26:15.864674 Response sent (56 bytes) and written to log/12/server.response
 19:26:15.864685 special request received, no persistency
 19:26:15.864693 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 51886 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 97
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind97
 ==84384== 
 ==84384== Process terminating with default action of signal 4 (SIGILL)
 ==84384==  Illegal opcode at address 0x492B75F
 ==84384==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84384==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84384==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84384==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84384==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84384==    by 0x49908EB: curl_version_info (version.c:600)
 ==84384==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84384==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84384==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84384==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind97
test 0098 [HTTP PUT from stdin with set size, disabling chunked transfer-encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind98 ../src/curl -q --output log/5/curl98.out  --include --trace-ascii log/5/trace98 --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:37089/98 <log/5/stdin-for-98 > log/5/stdout98 2> log/5/stderr98

 98: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 98
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind98 ../src/curl -q --output log/5/curl98.out  --include --trace-ascii log/5/trace98 --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:37089/98 <log/5/stdin-for-98 > log/5/stdout98 2> log/5/stderr98
=== End of file commands.log
=== Start of file http_server.log
 19:26:16.006457 ====> Client connect
 19:26:16.006499 accept_connection 3 returned 4
 19:26:16.006597 Read 93 bytes
 19:26:16.006608 Process 93 bytes request
 19:26:16.006628 Got request: GET /verifiedserver HTTP/1.1
 19:26:16.006636 Are-we-friendly question received
 19:26:16.006663 Wrote request (93 bytes) input to log/5/server.input
 19:26:16.006680 Identifying ourselves as friends
 19:26:16.006737 Response sent (56 bytes) and written to log/5/server.response
 19:26:16.006745 special request received, no persistency
 19:26:16.006753 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 43084 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 98
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file stdin-for-98
 data on stdin
=== End of file stdin-for-98
=== Start of file valgrind98
 ==84501== 
 ==84501== Process terminating with default action of signal 4 (SIGILL)
 ==84501==  Illegal opcode at address 0x492B75F
 ==84501==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84501==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84501==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84501==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84501==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84501==    by 0x49908EB: curl_version_info (version.c:600)
 ==84501==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84501==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84501==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84501==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind98
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/4/server/http2_server.pid" --logfile "log/4/http2_server.log" --logdir "log/4" --portfile log/4/server/http2_server.port --config log/4/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 83777 port 45375
* pid http-proxy => 83777 83777
test 0083 [HTTP over proxy-tunnel with site authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind83 ../src/curl -q --output log/4/curl83.out  --include --trace-ascii log/4/trace83 --trace-time http://test.83:35735/we/want/that/page/83 -p -x 127.0.0.1:45375 --user 'iam:my:;self' > log/4/stdout83 2> log/4/stderr83

 83: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 83
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind83 ../src/curl -q --output log/4/curl83.out  --include --trace-ascii log/4/trace83 --trace-time http://test.83:35735/we/want/that/page/83 -p -x 127.0.0.1:45375 --user 'iam:my:;self' > log/4/stdout83 2> log/4/stderr83
=== End of file commands.log
=== Start of file http2_server.log
 19:26:15.099539 Run as proxy, CONNECT to host 127.0.0.1
 19:26:15.099678 Running HTTP IPv4 version on port 45375
 19:26:15.099720 Wrote pid 83777 to log/4/server/http2_server.pid
 19:26:15.099750 Wrote port 45375 to log/4/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:26:16.064880 ====> Client connect
 19:26:16.064919 accept_connection 3 returned 4
 19:26:16.064943 Read 93 bytes
 19:26:16.064953 Process 93 bytes request
 19:26:16.064966 Got request: GET /verifiedserver HTTP/1.1
 19:26:16.064975 Are-we-friendly question received
 19:26:16.065006 Wrote request (93 bytes) input to log/4/server.input
 19:26:16.065025 Identifying ourselves as friends
 19:26:16.065095 Response sent (56 bytes) and written to log/4/server.response
 19:26:16.065106 special request received, no persistency
 19:26:16.065115 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 46422 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.lCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind99 ../src/curl -q --output log/18/curl99.out  --include --trace-ascii log/18/trace99 --trace-time http://127.0.0.1:43739/99 -C 9999999999 > log/18/stdout99 2> log/18/stderr99
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind95 ../src/curl -q --output log/6/curl95.out  --include --trace-ascii log/6/trace95 --trace-time http://test.95:33935/we/want/that/page/95 -p -x 127.0.0.1:40259 -d "datatopost=ohthatsfunyesyes" > log/6/stdout95 2> log/6/stderr95
og
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 83
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind83
 ==84563== 
 ==84563== Process terminating with default action of signal 4 (SIGILL)
 ==84563==  Illegal opcode at address 0x492B75F
 ==84563==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84563==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84563==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84563==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84563==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84563==    by 0x49908EB: curl_version_info (version.c:600)
 ==84563==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84563==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84563==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84563==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind83
test 0099 [HTTP GET with large-file resume point and failed resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind99 ../src/curl -q --output log/18/curl99.out  --include --trace-ascii log/18/trace99 --trace-time http://127.0.0.1:43739/99 -C 9999999999 > log/18/stdout99 2> log/18/stderr99

 99: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 99
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind99 ../src/curl -q --output log/18/curl99.out  --include --trace-ascii log/18/trace99 --trace-time http://127.0.0.1:43739/99 -C 9999999999 > log/18/stdout99 2> log/18/stderr99
=== End of file commands.log
=== Start of file http_server.log
 19:26:17.053066 ====> Client connect
 19:26:17.053101 accept_connection 3 returned 4
 19:26:17.053120 Read 93 bytes
 19:26:17.053130 Process 93 bytes request
 19:26:17.053142 Got request: GET /verifiedserver HTTP/1.1
 19:26:17.053151 Are-we-friendly question received
 19:26:17.053185 Wrote request (93 bytes) input to log/18/server.input
 19:26:17.053204 Identifying ourselves as friends
 19:26:17.053270 Response sent (56 bytes) and written to log/18/server.response
 19:26:17.053280 special request received, no persistency
 19:26:17.053288 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 53544 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 99
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind99
 ==84540== 
 ==84540== Process terminating with default action of signal 4 (SIGILL)
 ==84540==  Illegal opcode at address 0x492B75F
 ==84540==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84540==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84540==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84540==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84540==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84540==    by 0x49908EB: curl_version_info (version.c:600)
 ==84540==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84540==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84540==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84540==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind99
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/6/server/http2_server.pid" --logfile "log/6/http2_server.log" --logdir "log/6" --portfile log/6/server/http2_server.port --config log/6/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 84342 port 40259
* pid http-proxy => 84342 84342
test 0095 [HTTP over proxytunnel using POST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind95 ../src/curl -q --output log/6/curl95.out  --include --trace-ascii log/6/trace95 --trace-time http://test.95:33935/we/want/that/page/95 -p -x 127.0.0.1:40259 -d "datatopost=ohthatsfunyesyes" > log/6/stdout95 2> log/6/stderr95

 95: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 95
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind95 ../src/curl -q --output log/6/curl95.out  --include --trace-ascii log/6/trace95 --trace-time http://test.95:33935/we/want/that/page/95 -p -x 127.0.0.1:40259 -d "datatopost=ohthatsfunyesyes" > log/6/stdout95 2> log/6/stderr95
=== End of file commands.log
=== Start of file http2_server.log
 19:26:16.894910 Run as proxy, CONNECT to host 127.0.0.1
 19:26:16.895056 Running HTTP IPv4 version on port 40259
 19:26:16.895108 Wrote pid 84342 to log/6/server/http2_server.pid
 19:26:16.895145 Wrote port 40259 to log/6/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:26:15.849966 ====> Client connect
 19:26:15.850004 accept_connection 3 returned 4
 19:26:15.850100 Read 93 bytes
 19:26:15.850115 Process 93 bytes request
 19:26:15.850138 Got request: GET /verifiedserver HTTP/1.1
 19:26:15.850147 Are-we-friendly question received
 19:26:15.850178 Wrote request (93 bytes) input to log/6/server.input
 19:26:15.850198 Identifying ourselves as friends
 19:26:15.850269 Response sent (56 bytes) and written to log/6/server.response
 19:26:15.850281 special request received, no persistency
 19:26:15.850289 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 50712 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 95
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind95
 ==84728== 
 ==84728== Process terminating with default action of signal 4 (SIGILL)
 ==84728==  Illegal opcode at address 0x492B75F
 ==84728==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84728==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84728==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84728==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84728==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84728==    by 0x49908EB: curl_version_info (version.c:600)
 ==84728==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84728==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84728==CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind100 ../src/curl -q --output log/19/curl100.out  --include --trace-ascii log/19/trace100 --trace-time ftp://127.0.0.1:38555/test-100/ > log/19/stdout100 2> log/19/stderr100
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind101 ../src/curl -q --output log/21/curl101.out  --include --trace-ascii log/21/trace101 --trace-time ftp://127.0.0.1:35787/ -P 127.0.0.1 > log/21/stdout101 2> log/21/stderr101
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind102 ../src/curl -q --output log/9/curl102.out  --include --trace-ascii log/9/trace102 --trace-time ftp://127.0.0.1:36605/102 > log/9/stdout102 2> log/9/stderr102
    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84728==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind95
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/19/server/ftp_server.pid" --logfile "log/19/ftp_server.log" --logdir "log/19" --portfile "log/19/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 38555 (log/19/server/ftp_server.port)
RUN: FTP server is PID 84587 port 38555
* pid ftp => 84587 84587
test 0100 [FTP dir list PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind100 ../src/curl -q --output log/19/curl100.out  --include --trace-ascii log/19/trace100 --trace-time ftp://127.0.0.1:38555/test-100/ > log/19/stdout100 2> log/19/stderr100

 100: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 100
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind100 ../src/curl -q --output log/19/curl100.out  --include --trace-ascii log/19/trace100 --trace-time ftp://127.0.0.1:38555/test-100/ > log/19/stdout100 2> log/19/stderr100
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:16.652320 FTP server listens on port IPv4/38555
 19:26:16.652454 logged pid 84587 in log/19/server/ftp_server.pid
 19:26:16.652486 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:16.245630 Running IPv4 version
 19:26:16.245754 Listening on port 38555
 19:26:16.245793 Wrote pid 84652 to log/19/server/ftp_sockctrl.pid
 19:26:16.245822 Wrote port 38555 to log/19/server/ftp_server.port
 19:26:16.251214 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 100
=== End of file server.cmd
=== Start of file valgrind100
 ==84795== 
 ==84795== Process terminating with default action of signal 4 (SIGILL)
 ==84795==  Illegal opcode at address 0x492B75F
 ==84795==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84795==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84795==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84795==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84795==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84795==    by 0x49908EB: curl_version_info (version.c:600)
 ==84795==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84795==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84795==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84795==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind100
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/21/server/ftp_server.pid" --logfile "log/21/ftp_server.log" --logdir "log/21" --portfile "log/21/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 35787 (log/21/server/ftp_server.port)
RUN: FTP server is PID 84694 port 35787
* pid ftp => 84694 84694
test 0101 [FTP dir list, PORT with specified IP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind101 ../src/curl -q --output log/21/curl101.out  --include --trace-ascii log/21/trace101 --trace-time ftp://127.0.0.1:35787/ -P 127.0.0.1 > log/21/stdout101 2> log/21/stderr101

 101: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 101
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind101 ../src/curl -q --output log/21/curl101.out  --include --trace-ascii log/21/trace101 --trace-time ftp://127.0.0.1:35787/ -P 127.0.0.1 > log/21/stdout101 2> log/21/stderr101
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:16.915461 FTP server listens on port IPv4/35787
 19:26:16.915604 logged pid 84694 in log/21/server/ftp_server.pid
 19:26:16.915640 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:16.506012 Running IPv4 version
 19:26:16.506099 Listening on port 35787
 19:26:16.506143 Wrote pid 84700 to log/21/server/ftp_sockctrl.pid
 19:26:16.506176 Wrote port 35787 to log/21/server/ftp_server.port
 19:26:16.506196 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 101
=== End of file server.cmd
=== Start of file valgrind101
 ==84864== 
 ==84864== Process terminating with default action of signal 4 (SIGILL)
 ==84864==  Illegal opcode at address 0x492B75F
 ==84864==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84864==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84864==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84864==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84864==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84864==    by 0x49908EB: curl_version_info (version.c:600)
 ==84864==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84864==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84864==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84864==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind101
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/9/server/ftp_server.pid" --logfile "log/9/ftp_server.log" --logdir "log/9" --portfile "log/9/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36605 (log/9/server/ftp_server.port)
RUN: FTP server is PID 84695 port 36605
* pid ftp => 84695 84695
test 0102 [FTP RETR PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind102 ../src/curl -q --output log/9/curl102.out  --include --trace-ascii log/9/trace102 --trace-time ftp://127.0.0.1:36605/102 > log/9/stdout102 2> log/9/stderr102

 102: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 102
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind102 ../src/curl -q --output log/9/curl102.out  --include --trace-ascii log/9/trace102 --trace-time ftp://127.0.0.1:36605/102 > log/9/stdout102 2> log/9/stderr102
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:16.907513 FTP server listens on port IPv4/36605
 19:26:16.907624 logged pid 84695 in log/9/server/ftp_server.pid
 19:26:16.907657 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:16.506323 Running IPv4 version
 19:26:16.506399 Listening on port 36605
 19:26:16.506436 Wrote pid 84699 to log/9/server/ftp_sockctrl.pid
 19:26:16.506472 Wrote port 36605 to log/9/server/ftp_server.port
 19:26:16.506491 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 102
=== End of file server.cmd
=== Start of file valgrind102
 ==84863== 
 ==84863== Process terminating with default action of signal 4 (SIGILL)
 ==84863==  Illegal opcode at address 0x492B75F
 ==84863==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84863==    by 0x492C53A: curl_mvsnprintf (mprintf.c:12CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind104 ../src/curl -q --output log/23/curl104.out  --include --trace-ascii log/23/trace104 --trace-time ftp://127.0.0.1:35523/a/path/104 --head > log/23/stdout104 2> log/23/stderr104
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind103 ../src/curl -q --output log/16/curl103.out  --include --trace-ascii log/16/trace103 --trace-time ftp://127.0.0.1:40031/a/path/103 -P - > log/16/stdout103 2> log/16/stderr103
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind105 ../src/curl -q --output log/3/curl105.out  --include --trace-ascii log/3/trace105 --trace-time ftp://userdude:passfellow@127.0.0.1:42249/105 --use-ascii > log/3/stdout105 2> log/3/stderr105
57)
 ==84863==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84863==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84863==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84863==    by 0x49908EB: curl_version_info (version.c:600)
 ==84863==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84863==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84863==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84863==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind102
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/23/server/ftp_server.pid" --logfile "log/23/ftp_server.log" --logdir "log/23" --portfile "log/23/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 35523 (log/23/server/ftp_server.port)
RUN: FTP server is PID 84709 port 35523
* pid ftp => 84709 84709
test 0104 [FTP --head to get file size only]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind104 ../src/curl -q --output log/23/curl104.out  --include --trace-ascii log/23/trace104 --trace-time ftp://127.0.0.1:35523/a/path/104 --head > log/23/stdout104 2> log/23/stderr104

 104: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 104
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind104 ../src/curl -q --output log/23/curl104.out  --include --trace-ascii log/23/trace104 --trace-time ftp://127.0.0.1:35523/a/path/104 --head > log/23/stdout104 2> log/23/stderr104
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.092058 FTP server listens on port IPv4/35523
 19:26:17.092180 logged pid 84709 in log/23/server/ftp_server.pid
 19:26:17.092218 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.690695 Running IPv4 version
 19:26:17.690803 Listening on port 35523
 19:26:17.690851 Wrote pid 84711 to log/23/server/ftp_sockctrl.pid
 19:26:17.691042 Wrote port 35523 to log/23/server/ftp_server.port
 19:26:17.691071 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 104
=== End of file server.cmd
=== Start of file valgrind104
 ==84986== 
 ==84986== Process terminating with default action of signal 4 (SIGILL)
 ==84986==  Illegal opcode at address 0x492B75F
 ==84986==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84986==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84986==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84986==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84986==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84986==    by 0x49908EB: curl_version_info (version.c:600)
 ==84986==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84986==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84986==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84986==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind104
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/16/server/ftp_server.pid" --logfile "log/16/ftp_server.log" --logdir "log/16" --portfile "log/16/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 40031 (log/16/server/ftp_server.port)
RUN: FTP server is PID 84702 port 40031
* pid ftp => 84702 84702
test 0103 [FTP RETR PORT with CWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind103 ../src/curl -q --output log/16/curl103.out  --include --trace-ascii log/16/trace103 --trace-time ftp://127.0.0.1:40031/a/path/103 -P - > log/16/stdout103 2> log/16/stderr103

 103: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 103
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind103 ../src/curl -q --output log/16/curl103.out  --include --trace-ascii log/16/trace103 --trace-time ftp://127.0.0.1:40031/a/path/103 -P - > log/16/stdout103 2> log/16/stderr103
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:16.993342 FTP server listens on port IPv4/40031
 19:26:16.993882 logged pid 84702 in log/16/server/ftp_server.pid
 19:26:16.993917 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:16.591984 Running IPv4 version
 19:26:16.592087 Listening on port 40031
 19:26:16.592131 Wrote pid 84707 to log/16/server/ftp_sockctrl.pid
 19:26:16.592163 Wrote port 40031 to log/16/server/ftp_server.port
 19:26:16.592353 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 103
=== End of file server.cmd
=== Start of file valgrind103
 ==84914== 
 ==84914== Process terminating with default action of signal 4 (SIGILL)
 ==84914==  Illegal opcode at address 0x492B75F
 ==84914==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==84914==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==84914==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==84914==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==84914==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==84914==    by 0x49908EB: curl_version_info (version.c:600)
 ==84914==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==84914==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==84914==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==84914==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind103
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/3/server/ftp_server.pid" --logfile "log/3/ftp_server.log" --logdir "log/3" --portfile "log/3/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 42249 (log/3/server/ftp_server.port)
RUN: FTP server is PID 84710 port 42249
* pid ftp => 84710 84710
test 0105 [FTP user+password in URL and ASCII transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind105 ../src/curl -q --output log/3/curl105.out  --include --trace-ascii log/3/trace105 --trace-time ftp://userdude:passfellow@127.0.0.1:42249/105 --use-ascii > log/3/stdout105 2> log/3/stderr105

 105: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 105
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind105 ../src/curl -q --output log/3/curl105.out  --include --trace-ascii log/3/trace105 --trace-time ftp://userdude:passfellow@127.0.0.1:42249/105 --use-ascii > log/3/stdout105 2> log/3/stderr105
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.118882 FTP server listens on port IPv4/42249
 19:26:17.119022 logged pid 84710 in log/3/server/ftp_server.pid
 19:26:17.119063 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.715836 Running IPv4 version
 19:26:17.715950 Listening on port 42249
 19:26:17.716002 Wrote pid 84715 to log/3/server/ftp_sockctrl.pid
 19:26:17.717863 WCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind106 ../src/curl -q --output log/22/curl106.out  --include --trace-ascii log/22/trace106 --trace-time "ftp://127.0.0.1:33255//path%20with%20%20spaces//and%20things2/106;type=A" > log/22/stdout106 2> log/22/stderr106
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind107 ../src/curl -q --output log/7/curl107.out  --include --trace-ascii log/7/trace107 --trace-time ftp://127.0.0.1:44283/107 -T log/7/test107.txt > log/7/stdout107 2> log/7/stderr107
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind109 ../src/curl -q --output log/17/curl109.out  --include --trace-ascii log/17/trace109 --trace-time ftp://127.0.0.1:46137/109 -T log/17/upload109 --append > log/17/stdout109 2> log/17/stderr109
rote port 42249 to log/3/server/ftp_server.port
 19:26:17.717894 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 105
=== End of file server.cmd
=== Start of file valgrind105
 ==85005== 
 ==85005== Process terminating with default action of signal 4 (SIGILL)
 ==85005==  Illegal opcode at address 0x492B75F
 ==85005==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85005==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85005==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85005==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85005==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85005==    by 0x49908EB: curl_version_info (version.c:600)
 ==85005==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85005==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85005==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85005==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind105
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/22/server/ftp_server.pid" --logfile "log/22/ftp_server.log" --logdir "log/22" --portfile "log/22/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33255 (log/22/server/ftp_server.port)
RUN: FTP server is PID 84714 port 33255
* pid ftp => 84714 84714
test 0106 [FTP GET with type=A style ASCII URL using %20 codes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind106 ../src/curl -q --output log/22/curl106.out  --include --trace-ascii log/22/trace106 --trace-time "ftp://127.0.0.1:33255//path%20with%20%20spaces//and%20things2/106;type=A" > log/22/stdout106 2> log/22/stderr106

 106: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 106
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind106 ../src/curl -q --output log/22/curl106.out  --include --trace-ascii log/22/trace106 --trace-time "ftp://127.0.0.1:33255//path%20with%20%20spaces//and%20things2/106;type=A" > log/22/stdout106 2> log/22/stderr106
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.155464 FTP server listens on port IPv4/33255
 19:26:17.155643 logged pid 84714 in log/22/server/ftp_server.pid
 19:26:17.155689 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.745882 Running IPv4 version
 19:26:17.745981 Listening on port 33255
 19:26:17.746025 Wrote pid 84719 to log/22/server/ftp_sockctrl.pid
 19:26:17.746057 Wrote port 33255 to log/22/server/ftp_server.port
 19:26:17.751165 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 106
=== End of file server.cmd
=== Start of file valgrind106
 ==85036== 
 ==85036== Process terminating with default action of signal 4 (SIGILL)
 ==85036==  Illegal opcode at address 0x492B75F
 ==85036==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85036==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85036==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85036==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85036==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85036==    by 0x49908EB: curl_version_info (version.c:600)
 ==85036==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85036==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85036==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85036==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind106
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/7/server/ftp_server.pid" --logfile "log/7/ftp_server.log" --logdir "log/7" --portfile "log/7/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44283 (log/7/server/ftp_server.port)
RUN: FTP server is PID 84721 port 44283
* pid ftp => 84721 84721
test 0107 [FTP PASV upload file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind107 ../src/curl -q --output log/7/curl107.out  --include --trace-ascii log/7/trace107 --trace-time ftp://127.0.0.1:44283/107 -T log/7/test107.txt > log/7/stdout107 2> log/7/stderr107

 107: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 107
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind107 ../src/curl -q --output log/7/curl107.out  --include --trace-ascii log/7/trace107 --trace-time ftp://127.0.0.1:44283/107 -T log/7/test107.txt > log/7/stdout107 2> log/7/stderr107
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.288715 FTP server listens on port IPv4/44283
 19:26:17.288897 logged pid 84721 in log/7/server/ftp_server.pid
 19:26:17.288933 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.879041 Running IPv4 version
 19:26:17.879126 Listening on port 44283
 19:26:17.879177 Wrote pid 84725 to log/7/server/ftp_sockctrl.pid
 19:26:17.879208 Wrote port 44283 to log/7/server/ftp_server.port
 19:26:17.887745 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 107
=== End of file server.cmd
=== Start of file test107.txt
 data
     to
       see
 that FTP
 works
   so does it?
=== End of file test107.txt
=== Start of file valgrind107
 ==85115== 
 ==85115== Process terminating with default action of signal 4 (SIGILL)
 ==85115==  Illegal opcode at address 0x492B75F
 ==85115==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85115==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85115==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85115==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85115==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85115==    by 0x49908EB: curl_version_info (version.c:600)
 ==85115==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85115==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85115==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85115==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind107
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/17/server/ftp_server.pid" --logfile "log/17/ftp_server.log" --logdir "log/17" --portfile "log/17/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 46137 (log/17/server/ftp_server.port)
RUN: FTP server is PID 84749 port 46137
* pid ftp => 84749 84749
test 0109 [FTP PASV upload append]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind109 ../src/curl -q --output log/17/curl109.out  --include --trace-ascii log/17/trace109 --trace-time ftp://127.0.0.1:46137/109 -T log/17/upload109 --append > log/17/stdout109 2> log/17/stderr109

 109: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 109
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tesCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind110 ../src/curl -q --output log/11/curl110.out  --include --trace-ascii log/11/trace110 --trace-time ftp://127.0.0.1:37735/110 -C 20 > log/11/stdout110 2> log/11/stderr110
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind108 ../src/curl -q --output log/15/curl108.out  --include --trace-ascii log/15/trace108 --trace-time ftp://127.0.0.1:44883/CWD/STOR/RETR/108 -T log/15/upload108 -P - > log/15/stdout108 2> log/15/stderr108
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind112 ../src/curl -q --output log/20/curl112.out  --include --trace-ascii log/20/trace112 --trace-time ftp://127.0.0.1:41549/112 -T log/20/upload112 -C 41 > log/20/stdout112 2> log/20/stderr112
ts/valgrind.supp --num-callers=16 --log-file=log/17/valgrind109 ../src/curl -q --output log/17/curl109.out  --include --trace-ascii log/17/trace109 --trace-time ftp://127.0.0.1:46137/109 -T log/17/upload109 --append > log/17/stdout109 2> log/17/stderr109
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.401305 FTP server listens on port IPv4/46137
 19:26:17.401434 logged pid 84749 in log/17/server/ftp_server.pid
 19:26:17.401469 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.000068 Running IPv4 version
 19:26:17.000180 Listening on port 46137
 19:26:17.000226 Wrote pid 84757 to log/17/server/ftp_sockctrl.pid
 19:26:17.000263 Wrote port 46137 to log/17/server/ftp_server.port
 19:26:17.000418 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 109
=== End of file server.cmd
=== Start of file upload109
 Moooooooooooo
  upload this
=== End of file upload109
=== Start of file valgrind109
 ==85215== 
 ==85215== Process terminating with default action of signal 4 (SIGILL)
 ==85215==  Illegal opcode at address 0x492B75F
 ==85215==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85215==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85215==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85215==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85215==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85215==    by 0x49908EB: curl_version_info (version.c:600)
 ==85215==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85215==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85215==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85215==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind109
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/11/server/ftp_server.pid" --logfile "log/11/ftp_server.log" --logdir "log/11" --portfile "log/11/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 37735 (log/11/server/ftp_server.port)
RUN: FTP server is PID 84823 port 37735
* pid ftp => 84823 84823
test 0110 [FTP download resume with set limit]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind110 ../src/curl -q --output log/11/curl110.out  --include --trace-ascii log/11/trace110 --trace-time ftp://127.0.0.1:37735/110 -C 20 > log/11/stdout110 2> log/11/stderr110

 110: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 110
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind110 ../src/curl -q --output log/11/curl110.out  --include --trace-ascii log/11/trace110 --trace-time ftp://127.0.0.1:37735/110 -C 20 > log/11/stdout110 2> log/11/stderr110
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.728779 FTP server listens on port IPv4/37735
 19:26:17.728947 logged pid 84823 in log/11/server/ftp_server.pid
 19:26:17.728988 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.318826 Running IPv4 version
 19:26:17.319021 Listening on port 37735
 19:26:17.319067 Wrote pid 84852 to log/11/server/ftp_sockctrl.pid
 19:26:17.319099 Wrote port 37735 to log/11/server/ftp_server.port
 19:26:17.324651 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 110
=== End of file server.cmd
=== Start of file valgrind110
 ==85342== 
 ==85342== Process terminating with default action of signal 4 (SIGILL)
 ==85342==  Illegal opcode at address 0x492B75F
 ==85342==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85342==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85342==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85342==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85342==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85342==    by 0x49908EB: curl_version_info (version.c:600)
 ==85342==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85342==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85342==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85342==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind110
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/15/server/ftp_server.pid" --logfile "log/15/ftp_server.log" --logdir "log/15" --portfile "log/15/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44883 (log/15/server/ftp_server.port)
RUN: FTP server is PID 84744 port 44883
* pid ftp => 84744 84744
test 0108 [FTP PORT upload with CWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind108 ../src/curl -q --output log/15/curl108.out  --include --trace-ascii log/15/trace108 --trace-time ftp://127.0.0.1:44883/CWD/STOR/RETR/108 -T log/15/upload108 -P - > log/15/stdout108 2> log/15/stderr108

 108: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 108
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind108 ../src/curl -q --output log/15/curl108.out  --include --trace-ascii log/15/trace108 --trace-time ftp://127.0.0.1:44883/CWD/STOR/RETR/108 -T log/15/upload108 -P - > log/15/stdout108 2> log/15/stderr108
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.410653 FTP server listens on port IPv4/44883
 19:26:17.410783 logged pid 84744 in log/15/server/ftp_server.pid
 19:26:17.410821 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.009130 Running IPv4 version
 19:26:17.009240 Listening on port 44883
 19:26:17.009291 Wrote pid 84761 to log/15/server/ftp_sockctrl.pid
 19:26:17.009328 Wrote port 44883 to log/15/server/ftp_server.port
 19:26:17.009761 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 108
=== End of file server.cmd
=== Start of file upload108
 Moooooooooooo
  upload this
=== End of file upload108
=== Start of file valgrind108
 ==85214== 
 ==85214== Process terminating with default action of signal 4 (SIGILL)
 ==85214==  Illegal opcode at address 0x492B75F
 ==85214==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85214==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85214==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85214==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85214==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85214==    by 0x49908EB: curl_version_info (version.c:600)
 ==85214==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85214==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85214==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85214==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind108
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/20/server/ftp_server.pid" --logfile "log/20/ftp_server.log" --logdir "log/20" --portfile "log/20/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41549 (log/20/server/ftp_server.port)
RUN: FTP server is PID 84833 port 41549
* pid ftp => 84833 84833
test 0112 [FTP PASV upload resume]
../libtool --mode=eCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind111 ../src/curl -q --output log/8/curl111.out  --include --trace-ascii log/8/trace111 --trace-time ftp://127.0.0.1:41879/111 -C 2000 > log/8/stdout111 2> log/8/stderr111
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind115 ../src/curl -q --output log/14/curl115.out  --include --trace-ascii log/14/trace115 --trace-time ftp://127.0.0.1:37411/115 > log/14/stdout115 2> log/14/stderr115
xecute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind112 ../src/curl -q --output log/20/curl112.out  --include --trace-ascii log/20/trace112 --trace-time ftp://127.0.0.1:41549/112 -T log/20/upload112 -C 41 > log/20/stdout112 2> log/20/stderr112

 112: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 112
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind112 ../src/curl -q --output log/20/curl112.out  --include --trace-ascii log/20/trace112 --trace-time ftp://127.0.0.1:41549/112 -T log/20/upload112 -C 41 > log/20/stdout112 2> log/20/stderr112
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.762318 FTP server listens on port IPv4/41549
 19:26:17.762452 logged pid 84833 in log/20/server/ftp_server.pid
 19:26:17.762485 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.355988 Running IPv4 version
 19:26:17.356106 Listening on port 41549
 19:26:17.356146 Wrote pid 84855 to log/20/server/ftp_sockctrl.pid
 19:26:17.356181 Wrote port 41549 to log/20/server/ftp_server.port
 19:26:17.361498 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 112
=== End of file server.cmd
=== Start of file upload112
 this is the *****crap******** that we are gonna upload
 worx?
=== End of file upload112
=== Start of file valgrind112
 ==85356== 
 ==85356== Process terminating with default action of signal 4 (SIGILL)
 ==85356==  Illegal opcode at address 0x492B75F
 ==85356==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85356==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85356==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85356==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85356==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85356==    by 0x49908EB: curl_version_info (version.c:600)
 ==85356==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85356==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85356==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85356==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind112
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/8/server/ftp_server.pid" --logfile "log/8/ftp_server.log" --logdir "log/8" --portfile "log/8/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41879 (log/8/server/ftp_server.port)
RUN: FTP server is PID 84824 port 41879
* pid ftp => 84824 84824
test 0111 [FTP download resume beyond file size]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind111 ../src/curl -q --output log/8/curl111.out  --include --trace-ascii log/8/trace111 --trace-time ftp://127.0.0.1:41879/111 -C 2000 > log/8/stdout111 2> log/8/stderr111

 111: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 111
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind111 ../src/curl -q --output log/8/curl111.out  --include --trace-ascii log/8/trace111 --trace-time ftp://127.0.0.1:41879/111 -C 2000 > log/8/stdout111 2> log/8/stderr111
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:17.718872 FTP server listens on port IPv4/41879
 19:26:17.719021 logged pid 84824 in log/8/server/ftp_server.pid
 19:26:17.719060 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:17.314398 Running IPv4 version
 19:26:17.314543 Listening on port 41879
 19:26:17.314593 Wrote pid 84850 to log/8/server/ftp_sockctrl.pid
 19:26:17.318011 Wrote port 41879 to log/8/server/ftp_server.port
 19:26:17.318041 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 111
=== End of file server.cmd
=== Start of file valgrind111
 ==85341== 
 ==85341== Process terminating with default action of signal 4 (SIGILL)
 ==85341==  Illegal opcode at address 0x492B75F
 ==85341==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85341==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85341==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85341==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85341==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85341==    by 0x49908EB: curl_version_info (version.c:600)
 ==85341==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85341==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85341==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85341==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind111
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/14/server/ftp_server.pid" --logfile "log/14/ftp_server.log" --logdir "log/14" --portfile "log/14/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 37411 (log/14/server/ftp_server.port)
RUN: FTP server is PID 85053 port 37411
* pid ftp => 85053 85053
test 0115 [FTP download, failed PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind115 ../src/curl -q --output log/14/curl115.out  --include --trace-ascii log/14/trace115 --trace-time ftp://127.0.0.1:37411/115 > log/14/stdout115 2> log/14/stderr115

 115: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 115
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind115 ../src/curl -q --output log/14/curl115.out  --include --trace-ascii log/14/trace115 --trace-time ftp://127.0.0.1:37411/115 > log/14/stdout115 2> log/14/stderr115
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.222172 FTP server listens on port IPv4/37411
 19:26:18.222325 logged pid 85053 in log/14/server/ftp_server.pid
 19:26:18.222366 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.813527 Running IPv4 version
 19:26:18.813630 Listening on port 37411
 19:26:18.813678 Wrote pid 85111 to log/14/server/ftp_sockctrl.pid
 19:26:18.813714 Wrote port 37411 to log/14/server/ftp_server.port
 19:26:18.821444 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY PASV 314 bluah you f00l
 REPLY EPSV 314 bluah you f00l
 Testnum 115
=== End of file server.cmd
=== Start of file valgrind115
 ==85578== 
 ==85578== Process terminating with default action of signal 4 (SIGILL)
 ==85578==  Illegal opcode at address 0x492B75F
 ==85578==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85578==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85578==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85578==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85578==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85578==    by 0x49908EB: curl_version_info (version.c:600)
 ==85578==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85578==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85578==    by 0x4003269: UnknownInlinedFuCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind114 ../src/curl -q --output log/13/curl114.out  --include --trace-ascii log/13/trace114 --trace-time ftp://127.0.0.1:36047/114 > log/13/stdout114 2> log/13/stderr114
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind113 ../src/curl -q --output log/1/curl113.out  --include --trace-ascii log/1/trace113 --trace-time ftp://127.0.0.1:40221/113 > log/1/stdout113 2> log/1/stderr113
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind116 ../src/curl -q --output log/24/curl116.out  --include --trace-ascii log/24/trace116 --trace-time ftp://127.0.0.1:37215/116 -P 1.2.3.4 > log/24/stdout116 2> log/24/stderr116
n (tool_cfgable.c:310)
 ==85578==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind115
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/13/server/ftp_server.pid" --logfile "log/13/ftp_server.log" --logdir "log/13" --portfile "log/13/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36047 (log/13/server/ftp_server.port)
RUN: FTP server is PID 84987 port 36047
* pid ftp => 84987 84987
test 0114 [FTP download, failed login: PASS not valid]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind114 ../src/curl -q --output log/13/curl114.out  --include --trace-ascii log/13/trace114 --trace-time ftp://127.0.0.1:36047/114 > log/13/stdout114 2> log/13/stderr114

 114: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 114
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind114 ../src/curl -q --output log/13/curl114.out  --include --trace-ascii log/13/trace114 --trace-time ftp://127.0.0.1:36047/114 > log/13/stdout114 2> log/13/stderr114
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.129906 FTP server listens on port IPv4/36047
 19:26:18.130024 logged pid 84987 in log/13/server/ftp_server.pid
 19:26:18.130056 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.728877 Running IPv4 version
 19:26:18.728962 Listening on port 36047
 19:26:18.729003 Wrote pid 85038 to log/13/server/ftp_sockctrl.pid
 19:26:18.729035 Wrote port 36047 to log/13/server/ftp_server.port
 19:26:18.729205 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY PASS 314 bluah you f00l
 Testnum 114
=== End of file server.cmd
=== Start of file valgrind114
 ==85556== 
 ==85556== Process terminating with default action of signal 4 (SIGILL)
 ==85556==  Illegal opcode at address 0x492B75F
 ==85556==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85556==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85556==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85556==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85556==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85556==    by 0x49908EB: curl_version_info (version.c:600)
 ==85556==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85556==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85556==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85556==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind114
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/1/server/ftp_server.pid" --logfile "log/1/ftp_server.log" --logdir "log/1" --portfile "log/1/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 40221 (log/1/server/ftp_server.port)
RUN: FTP server is PID 84935 port 40221
* pid ftp => 84935 84935
test 0113 [FTP download, failed login: USER not valid]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind113 ../src/curl -q --output log/1/curl113.out  --include --trace-ascii log/1/trace113 --trace-time ftp://127.0.0.1:40221/113 > log/1/stdout113 2> log/1/stderr113

 113: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 113
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind113 ../src/curl -q --output log/1/curl113.out  --include --trace-ascii log/1/trace113 --trace-time ftp://127.0.0.1:40221/113 > log/1/stdout113 2> log/1/stderr113
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.055590 FTP server listens on port IPv4/40221
 19:26:18.055731 logged pid 84935 in log/1/server/ftp_server.pid
 19:26:18.055766 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.649308 Running IPv4 version
 19:26:18.649416 Listening on port 40221
 19:26:18.649478 Wrote pid 84974 to log/1/server/ftp_sockctrl.pid
 19:26:18.649516 Wrote port 40221 to log/1/server/ftp_server.port
 19:26:18.649539 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY USER 314 bluah you fewl
 Testnum 113
=== End of file server.cmd
=== Start of file valgrind113
 ==85504== 
 ==85504== Process terminating with default action of signal 4 (SIGILL)
 ==85504==  Illegal opcode at address 0x492B75F
 ==85504==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85504==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85504==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85504==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85504==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85504==    by 0x49908EB: curl_version_info (version.c:600)
 ==85504==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85504==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85504==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85504==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind113
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/24/server/ftp_server.pid" --logfile "log/24/ftp_server.log" --logdir "log/24" --portfile "log/24/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 37215 (log/24/server/ftp_server.port)
RUN: FTP server is PID 85113 port 37215
* pid ftp => 85113 85113
test 0116 [FTP download, failed PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind116 ../src/curl -q --output log/24/curl116.out  --include --trace-ascii log/24/trace116 --trace-time ftp://127.0.0.1:37215/116 -P 1.2.3.4 > log/24/stdout116 2> log/24/stderr116

 116: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 116
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind116 ../src/curl -q --output log/24/curl116.out  --include --trace-ascii log/24/trace116 --trace-time ftp://127.0.0.1:37215/116 -P 1.2.3.4 > log/24/stdout116 2> log/24/stderr116
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.315473 FTP server listens on port IPv4/37215
 19:26:18.315645 logged pid 85113 in log/24/server/ftp_server.pid
 19:26:18.315691 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.906082 Running IPv4 version
 19:26:18.907347 Listening on port 37215
 19:26:18.907392 Wrote pid 85181 to log/24/server/ftp_sockctrl.pid
 19:26:18.907430 Wrote port 37215 to log/24/server/ftp_server.port
 19:26:18.907451 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPRT 500 we don't like EPRT now
 REPLY PORT 314 bluah you f00l
 Testnum 116
=== End of file server.cmd
=== Start of file valgrind116
 ==85609== 
 ==85609== Process terminating with default action of signal 4 (SIGILL)
 ==85609==  Illegal opcode at address 0x492B75F
 ==85609==    at 0x492CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind120 ../src/curl -q --output log/5/curl120.out  --include --trace-ascii log/5/trace120 --trace-time ftp://127.0.0.1:39641/120 -Q "-DELE file" > log/5/stdout120 2> log/5/stderr120
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind119 ../src/curl -q --output log/2/curl119.out  --include --trace-ascii log/2/trace119 --trace-time ftp://127.0.0.1:38033/119 -P - > log/2/stdout119 2> log/2/stderr119
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind121 ../src/curl -q --output log/4/curl121.out  --include --trace-ascii log/4/trace121 --trace-time ftp://127.0.0.1:39739/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/4/stdout121 2> log/4/stderr121
B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85609==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85609==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85609==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85609==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85609==    by 0x49908EB: curl_version_info (version.c:600)
 ==85609==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85609==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85609==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85609==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind116
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/5/server/ftp_server.pid" --logfile "log/5/ftp_server.log" --logdir "log/5" --portfile "log/5/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 39641 (log/5/server/ftp_server.port)
RUN: FTP server is PID 85245 port 39641
* pid ftp => 85245 85245
test 0120 [ftp download with post-quote delete operation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind120 ../src/curl -q --output log/5/curl120.out  --include --trace-ascii log/5/trace120 --trace-time ftp://127.0.0.1:39641/120 -Q "-DELE file" > log/5/stdout120 2> log/5/stderr120

 120: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 120
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind120 ../src/curl -q --output log/5/curl120.out  --include --trace-ascii log/5/trace120 --trace-time ftp://127.0.0.1:39641/120 -Q "-DELE file" > log/5/stdout120 2> log/5/stderr120
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.460970 FTP server listens on port IPv4/39641
 19:26:18.461087 logged pid 85245 in log/5/server/ftp_server.pid
 19:26:18.461121 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.060013 Running IPv4 version
 19:26:18.060128 Listening on port 39641
 19:26:18.060175 Wrote pid 85263 to log/5/server/ftp_sockctrl.pid
 19:26:18.060209 Wrote port 39641 to log/5/server/ftp_server.port
 19:26:18.060364 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPSV 314 bluah you f00l
 Testnum 120
=== End of file server.cmd
=== Start of file valgrind120
 ==85821== 
 ==85821== Process terminating with default action of signal 4 (SIGILL)
 ==85821==  Illegal opcode at address 0x492B75F
 ==85821==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85821==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85821==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85821==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85821==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85821==    by 0x49908EB: curl_version_info (version.c:600)
 ==85821==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85821==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85821==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85821==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind120
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/2/server/ftp_server.pid" --logfile "log/2/ftp_server.log" --logdir "log/2" --portfile "log/2/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 38033 (log/2/server/ftp_server.port)
RUN: FTP server is PID 85208 port 38033
* pid ftp => 85208 85208
test 0119 [FTP download, failed RETR with PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind119 ../src/curl -q --output log/2/curl119.out  --include --trace-ascii log/2/trace119 --trace-time ftp://127.0.0.1:38033/119 -P - > log/2/stdout119 2> log/2/stderr119

 119: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 119
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind119 ../src/curl -q --output log/2/curl119.out  --include --trace-ascii log/2/trace119 --trace-time ftp://127.0.0.1:38033/119 -P - > log/2/stdout119 2> log/2/stderr119
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.503742 FTP server listens on port IPv4/38033
 19:26:18.503853 logged pid 85208 in log/2/server/ftp_server.pid
 19:26:18.503885 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.102815 Running IPv4 version
 19:26:18.102898 Listening on port 38033
 19:26:18.102940 Wrote pid 85278 to log/2/server/ftp_sockctrl.pid
 19:26:18.102972 Wrote port 38033 to log/2/server/ftp_server.port
 19:26:18.103145 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY RETR 314 bluah you f00l
 REPLY SIZE 500 command not understood
 Testnum 119
=== End of file server.cmd
=== Start of file valgrind119
 ==85765== 
 ==85765== Process terminating with default action of signal 4 (SIGILL)
 ==85765==  Illegal opcode at address 0x492B75F
 ==85765==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85765==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85765==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85765==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85765==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85765==    by 0x49908EB: curl_version_info (version.c:600)
 ==85765==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85765==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85765==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85765==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind119
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/4/server/ftp_server.pid" --logfile "log/4/ftp_server.log" --logdir "log/4" --portfile "log/4/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 39739 (log/4/server/ftp_server.port)
RUN: FTP server is PID 85249 port 39739
* pid ftp => 85249 85249
test 0121 [ftp download with post- and pre-transfer delete operations]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind121 ../src/curl -q --output log/4/curl121.out  --include --trace-ascii log/4/trace121 --trace-time ftp://127.0.0.1:39739/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/4/stdout121 2> log/4/stderr121

 121: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 121
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind121 ../src/curl -q --output log/4/curl121.out  --include --trace-ascii log/4/trace121 --trace-time ftp://127.0.0.1:39739/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/4/stdout121 2> log/4/stderr121
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.490262 FTP server listens on port IPv4/39739
 19:26:18.490434 logged pid 85249 in log/4/server/ftp_server.pid
 19:26:18.490477 Awaiting inpCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind124 ../src/curl -q --output log/19/curl124.out  --include --trace-ascii log/19/trace124 --trace-time ftp://127.0.0.1:38555/124 > log/19/stdout124 2> log/19/stderr124
ut
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.089425 Running IPv4 version
 19:26:18.089530 Listening on port 39739
 19:26:18.089584 Wrote pid 85274 to log/4/server/ftp_sockctrl.pid
 19:26:18.089619 Wrote port 39739 to log/4/server/ftp_server.port
 19:26:18.089640 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 121
=== End of file server.cmd
=== Start of file valgrind121
 ==85832== 
 ==85832== Process terminating with default action of signal 4 (SIGILL)
 ==85832==  Illegal opcode at address 0x492B75F
 ==85832==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85832==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85832==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85832==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85832==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85832==    by 0x49908EB: curl_version_info (version.c:600)
 ==85832==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85832==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind121
test 0124 [FTP download, failed PWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind124 ../src/curl -q --output log/19/curl124.out  --include --trace-ascii log/19/trace124 --trace-time ftp://127.0.0.1:38555/124 > log/19/stdout124 2> log/19/stderr124

 124: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 124
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind124 ../src/curl -q --output log/19/curl124.out  --include --trace-ascii log/19/trace124 --trace-time ftp://127.0.0.1:38555/124 > log/19/stdout124 2> log/19/stderr124
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:19.438834 ====> Client connect
 19:26:19.439063 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:19.443001 < "USER anonymous"
 19:26:19.443051 > "331 We are happy you popped in![CR][LF]"
 19:26:19.448886 < "PASS ftp@example.com"
 19:26:19.448935 > "230 Welcome you silly person[CR][LF]"
 19:26:19.449267 < "PWD"
 19:26:19.449326 > "257 "/" is current directory[CR][LF]"
 19:26:19.450126 < "EPSV"
 19:26:19.450157 ====> Passive DATA channel requested by client
 19:26:19.450174 DATA sockfilt for passive data channel starting...
 19:26:19.458708 DATA sockfilt for passive data channel started (pid 85827)
 19:26:19.458865 DATA sockfilt for passive data channel listens on port 38801
 19:26:19.458913 > "229 Entering Passive Mode (|||38801|)[CR][LF]"
 19:26:19.458929 Client has been notified that upcoming DATA connection is awaited on port 38801
 19:26:19.459238 Client connects to port 38801
 19:26:19.459270 ====> Client established passive DATA connection on port 38801
 19:26:19.459355 < "TYPE I"
 19:26:19.459386 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:19.459542 < "SIZE verifiedserver"
 19:26:19.459580 > "213 17[CR][LF]"
 19:26:19.459727 < "RETR verifiedserver"
 19:26:19.459760 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:19.459844 =====> Closing passive DATA connection...
 19:26:19.459860 Server disconnects passive DATA connection
 19:26:19.460082 Server disconnected passive DATA connection
 19:26:19.460107 DATA sockfilt for passive data channel quits (pid 85827)
 19:26:19.460354 DATA sockfilt for passive data channel quit (pid 85827)
 19:26:19.460381 =====> Closed passive DATA connection
 19:26:19.460408 > "226 File transfer complete[CR][LF]"
 19:26:19.508889 < "QUIT"
 19:26:19.508952 > "221 bye bye baby[CR][LF]"
 19:26:19.510179 MAIN sockfilt said DISC
 19:26:19.510215 ====> Client disconnected
 19:26:19.510299 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:19.038435 ====> Client connect
 19:26:19.038825 Received DATA (on stdin)
 19:26:19.038842 > 146 bytes data, server => client
 19:26:19.038853 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:19.038863 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:19.038872 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:19.042532 < 16 bytes data, client => server
 19:26:19.042555 'USER anonymous\r\n'
 19:26:19.042805 Received DATA (on stdin)
 19:26:19.042818 > 33 bytes data, server => client
 19:26:19.042828 '331 We are happy you popped in!\r\n'
 19:26:19.048453 < 22 bytes data, client => server
 19:26:19.048484 'PASS ftp@example.com\r\n'
 19:26:19.048692 Received DATA (on stdin)
 19:26:19.048705 > 30 bytes data, server => client
 19:26:19.048715 '230 Welcome you silly person\r\n'
 19:26:19.048833 < 5 bytes data, client => server
 19:26:19.048863 'PWD\r\n'
 19:26:19.049077 Received DATA (on stdin)
 19:26:19.049087 > 30 bytes data, server => client
 19:26:19.049097 '257 "/" is current directory\r\n'
 19:26:19.049160 < 6 bytes data, client => server
 19:26:19.049171 'EPSV\r\n'
 19:26:19.058687 Received DATA (on stdin)
 19:26:19.058703 > 39 bytes data, server => client
 19:26:19.058713 '229 Entering Passive Mode (|||38801|)\r\n'
 19:26:19.058912 < 8 bytes data, client => server
 19:26:19.058926 'TYPE I\r\n'
 19:26:19.059139 Received DATA (on stdin)
 19:26:19.059150 > 33 bytes data, server => client
 19:26:19.059159 '200 I modify TYPE as you wanted\r\n'
 19:26:19.059212 < 21 bytes data, client => server
 19:26:19.059222 'SIZE verifiedserver\r\n'
 19:26:19.059332 Received DATA (on stdin)
 19:26:19.059342 > 8 bytes data, server => client
 19:26:19.059350 '213 17\r\n'
 19:26:19.059398 < 21 bytes data, client => server
 19:26:19.059408 'RETR verifiedserver\r\n'
 19:26:19.059612 Received DATA (on stdin)
 19:26:19.059623 > 29 bytes data, server => client
 19:26:19.059632 '150 Binary junk (17 bytes).\r\n'
 19:26:19.060161 Received DATA (on stdin)
 19:26:19.060172 > 28 bytes data, server => client
 19:26:19.060182 '226 File transfer complete\r\n'
 19:26:19.108442 < 6 bytes data, client => server
 19:26:19.108480 'QUIT\r\n'
 19:26:19.108721 Received DATA (on stdin)
 19:26:19.108732 > 18 bytes data, server => client
 19:26:19.108742 '221 bye bye baby\r\n'
 19:26:19.109881 ====> Client disconnect
 19:26:19.110067 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:19.051316 Running IPv4 version
 19:26:19.051517 Listening on port 38801
 19:26:19.051567 Wrote pid 85827 to log/19/server/ftp_sockdata.pid
 19:26:19.057353 Received PING (on stdin)
 19:26:19.058514 Received PORT (on stdin)
 19:26:19.058945 ====> Client connect
 19:26:19.059685 Received DATA (on stdin)
 19:26:19.059697 > 17 bytes data, server => client
 19:26:19.059706 'WE ROOLZ: 84587\r\n'
 19:26:19.059731 Received DISC (on stdin)
 19:26:19.059741 ====> Client forcibly disconnected
 19:26:19.059864 Received QUIT (on stdin)
 19:26:19.059874 quits
 19:26:19.059942 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 314 bluah you f00l
 REPLY EPSV 314 bluah you f00l
 Testnum 124
=== End of file server.cmd
=== Start of file valgrind124
 ==85899== 
 ==85899== Process terminating with default action of signal 4 (SIGILL)
 ==85899==  Illegal opcode at address 0x492B75F
 ==85899==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85899==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85899==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85899==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85899==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85899==    by 0x49908EB: curl_version_info (version.c:600)
 ==85899==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85899==    by 0x4003269: CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind128 ../src/curl -q --output log/16/curl128.out  --include --trace-ascii log/16/trace128 --trace-time ftp://127.0.0.1:40031/128 -T log/16/upload128 --crlf > log/16/stdout128 2> log/16/stderr128
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind118 ../src/curl -q --output log/12/curl118.out  --include --trace-ascii log/12/trace118 --trace-time ftp://127.0.0.1:40417/118 > log/12/stdout118 2> log/12/stderr118
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind125 ../src/curl -q --output log/21/curl125.out  --include --trace-ascii log/21/trace125 --trace-time ftp://127.0.0.1:35787/path/to/file/125 > log/21/stdout125 2> log/21/stderr125
UnknownInlinedFun (tool_cfgable.c:339)
 ==85899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85899==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind124
test 0128 [FTP upload with --crlf]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind128 ../src/curl -q --output log/16/curl128.out  --include --trace-ascii log/16/trace128 --trace-time ftp://127.0.0.1:40031/128 -T log/16/upload128 --crlf > log/16/stdout128 2> log/16/stderr128

 128: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 128
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind128 ../src/curl -q --output log/16/curl128.out  --include --trace-ascii log/16/trace128 --trace-time ftp://127.0.0.1:40031/128 -T log/16/upload128 --crlf > log/16/stdout128 2> log/16/stderr128
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.105235 ====> Client connect
 19:26:20.105521 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.106167 < "USER anonymous"
 19:26:20.106219 > "331 We are happy you popped in![CR][LF]"
 19:26:20.106446 < "PASS ftp@example.com"
 19:26:20.106486 > "230 Welcome you silly person[CR][LF]"
 19:26:20.106690 < "PWD"
 19:26:20.106731 > "257 "/" is current directory[CR][LF]"
 19:26:20.106943 < "EPSV"
 19:26:20.106982 ====> Passive DATA channel requested by client
 19:26:20.107004 DATA sockfilt for passive data channel starting...
 19:26:20.110709 DATA sockfilt for passive data channel started (pid 86213)
 19:26:20.110830 DATA sockfilt for passive data channel listens on port 38747
 19:26:20.110878 > "229 Entering Passive Mode (|||38747|)[CR][LF]"
 19:26:20.110893 Client has been notified that upcoming DATA connection is awaited on port 38747
 19:26:20.111177 Client connects to port 38747
 19:26:20.111208 ====> Client established passive DATA connection on port 38747
 19:26:20.111298 < "TYPE I"
 19:26:20.111331 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.111492 < "SIZE verifiedserver"
 19:26:20.111534 > "213 17[CR][LF]"
 19:26:20.111680 < "RETR verifiedserver"
 19:26:20.111711 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.111799 =====> Closing passive DATA connection...
 19:26:20.111814 Server disconnects passive DATA connection
 19:26:20.112151 Server disconnected passive DATA connection
 19:26:20.112180 DATA sockfilt for passive data channel quits (pid 86213)
 19:26:20.112444 DATA sockfilt for passive data channel quit (pid 86213)
 19:26:20.112472 =====> Closed passive DATA connection
 19:26:20.112504 > "226 File transfer complete[CR][LF]"
 19:26:20.158834 < "QUIT"
 19:26:20.158897 > "221 bye bye baby[CR][LF]"
 19:26:20.163286 MAIN sockfilt said DISC
 19:26:20.163337 ====> Client disconnected
 19:26:20.163418 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:19.704511 ====> Client connect
 19:26:19.705470 Received DATA (on stdin)
 19:26:19.705490 > 146 bytes data, server => client
 19:26:19.705503 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:19.705512 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:19.705522 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:19.705878 < 16 bytes data, client => server
 19:26:19.705898 'USER anonymous\r\n'
 19:26:19.706147 Received DATA (on stdin)
 19:26:19.706162 > 33 bytes data, server => client
 19:26:19.706174 '331 We are happy you popped in!\r\n'
 19:26:19.706243 < 22 bytes data, client => server
 19:26:19.706259 'PASS ftp@example.com\r\n'
 19:26:19.706411 Received DATA (on stdin)
 19:26:19.706425 > 30 bytes data, server => client
 19:26:19.706436 '230 Welcome you silly person\r\n'
 19:26:19.706499 < 5 bytes data, client => server
 19:26:19.706514 'PWD\r\n'
 19:26:19.706657 Received DATA (on stdin)
 19:26:19.706670 > 30 bytes data, server => client
 19:26:19.706681 '257 "/" is current directory\r\n'
 19:26:19.706754 < 6 bytes data, client => server
 19:26:19.706771 'EPSV\r\n'
 19:26:19.710817 Received DATA (on stdin)
 19:26:19.710834 > 39 bytes data, server => client
 19:26:19.710845 '229 Entering Passive Mode (|||38747|)\r\n'
 19:26:19.711011 < 8 bytes data, client => server
 19:26:19.711026 'TYPE I\r\n'
 19:26:19.711249 Received DATA (on stdin)
 19:26:19.711260 > 33 bytes data, server => client
 19:26:19.711269 '200 I modify TYPE as you wanted\r\n'
 19:26:19.711325 < 21 bytes data, client => server
 19:26:19.711335 'SIZE verifiedserver\r\n'
 19:26:19.711451 Received DATA (on stdin)
 19:26:19.711460 > 8 bytes data, server => client
 19:26:19.711469 '213 17\r\n'
 19:26:19.711517 < 21 bytes data, client => server
 19:26:19.711527 'RETR verifiedserver\r\n'
 19:26:19.711733 Received DATA (on stdin)
 19:26:19.711743 > 29 bytes data, server => client
 19:26:19.711753 '150 Binary junk (17 bytes).\r\n'
 19:26:19.712426 Received DATA (on stdin)
 19:26:19.712438 > 28 bytes data, server => client
 19:26:19.712448 '226 File transfer complete\r\n'
 19:26:19.755613 < 6 bytes data, client => server
 19:26:19.755655 'QUIT\r\n'
 19:26:19.758838 Received DATA (on stdin)
 19:26:19.758856 > 18 bytes data, server => client
 19:26:19.758866 '221 bye bye baby\r\n'
 19:26:19.763129 ====> Client disconnect
 19:26:19.775267 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.708811 Running IPv4 version
 19:26:20.708904 Listening on port 38747
 19:26:20.708951 Wrote pid 86213 to log/16/server/ftp_sockdata.pid
 19:26:20.710561 Received PING (on stdin)
 19:26:20.710659 Received PORT (on stdin)
 19:26:20.711047 ====> Client connect
 19:26:20.711778 Received DATA (on stdin)
 19:26:20.711790 > 17 bytes data, server => client
 19:26:20.711799 'WE ROOLZ: 84702\r\n'
 19:26:20.711822 Received DISC (on stdin)
 19:26:20.711832 ====> Client forcibly disconnected
 19:26:20.712105 Received QUIT (on stdin)
 19:26:20.712116 quits
 19:26:20.712181 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 128
=== End of file server.cmd
=== Start of file upload128
 file
 with Unix newlines
 meant to be
 converted
 with
 the
 --crlf option
=== End of file upload128
=== Start of file valgrind128
 ==86296== 
 ==86296== Process terminating with default action of signal 4 (SIGILL)
 ==86296==  Illegal opcode at address 0x492B75F
 ==86296==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86296==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86296==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86296==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86296==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86296==    by 0x49908EB: curl_version_info (version.c:600)
 ==86296==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86296==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86296==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86296==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind128
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/12/server/ftp_server.pid" --logfile "log/12/ftp_server.log" --logdir "log/12" --portfile "log/12/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 40417 (log/12/server/ftp_server.port)
RUN: FTP server is PID 85158 port 40417
* pid ftp => 85158 85158
test 0118 [FTP download, failed RETR]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind118 ../src/curl -q --output log/12/curl118.out  --include --trace-ascii log/12/trace118 --trace-time ftp://127.0.0.1:40417/118 > log/12/stdout118 2> log/12/stderr118

 118: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 118
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind118 ../src/curl -q --output log/12/curl118.out  --include --trace-ascii log/12/trace118 --trace-time ftp://127.0.0.1:40417/118 > log/12/stdout118 2> log/12/stderr118
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.330176 FTP server listens on port IPv4/40417
 19:26:18.330312 logged pid 85158 in log/12/server/ftp_server.pid
 19:26:18.330352 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.928698 Running IPv4 version
 19:26:18.928790 Listening on port 40417
 19:26:18.928842 Wrote pid 85189 to log/12/server/ftp_sockctrl.pid
 19:26:18.928873 Wrote port 40417 to log/12/server/ftp_server.port
 19:26:18.928895 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY RETR 314 bluah you f00l
 REPLY EPSV 314 bluah you f00l
 REPLY SIZE 500 command not understood
 Testnum 118
=== End of file server.cmd
=== Start of file valgrind118
 ==85656== 
 ==85656== Process terminating with default action of signal 4 (SIGILL)
 ==85656==  Illegal opcode at address 0x492B75F
 ==85656==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85656==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85656==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85656==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85656==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85656==    by 0x49908EB: curl_version_info (version.c:600)
 ==85656==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85656==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85656==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85656==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind118
test 0125 [FTP download, failed CWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind125 ../src/curl -q --output log/21/curl125.out  --include --trace-ascii log/21/trace125 --trace-time ftp://127.0.0.1:35787/path/to/file/125 > log/21/stdout125 2> log/21/stderr125

 125: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 125
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind125 ../src/curl -q --output log/21/curl125.out  --include --trace-ascii log/21/trace125 --trace-time ftp://127.0.0.1:35787/path/to/file/125 > log/21/stdout125 2> log/21/stderr125
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:19.912163 ====> Client connect
 19:26:19.912414 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:19.912783 < "USER anonymous"
 19:26:19.912829 > "331 We are happy you popped in![CR][LF]"
 19:26:19.913027 < "PASS ftp@example.com"
 19:26:19.913058 > "230 Welcome you silly person[CR][LF]"
 19:26:19.913244 < "PWD"
 19:26:19.913283 > "257 "/" is current directory[CR][LF]"
 19:26:19.913482 < "EPSV"
 19:26:19.913518 ====> Passive DATA channel requested by client
 19:26:19.913534 DATA sockfilt for passive data channel starting...
 19:26:19.918922 DATA sockfilt for passive data channel started (pid 86111)
 19:26:19.919052 DATA sockfilt for passive data channel listens on port 46373
 19:26:19.919103 > "229 Entering Passive Mode (|||46373|)[CR][LF]"
 19:26:19.919120 Client has been notified that upcoming DATA connection is awaited on port 46373
 19:26:19.919419 Client connects to port 46373
 19:26:19.919450 ====> Client established passive DATA connection on port 46373
 19:26:19.919542 < "TYPE I"
 19:26:19.919571 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:19.919725 < "SIZE verifiedserver"
 19:26:19.919764 > "213 17[CR][LF]"
 19:26:19.919909 < "RETR verifiedserver"
 19:26:19.919940 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:19.920030 =====> Closing passive DATA connection...
 19:26:19.920046 Server disconnects passive DATA connection
 19:26:19.920235 Server disconnected passive DATA connection
 19:26:19.920258 DATA sockfilt for passive data channel quits (pid 86111)
 19:26:19.920569 DATA sockfilt for passive data channel quit (pid 86111)
 19:26:19.920595 =====> Closed passive DATA connection
 19:26:19.920622 > "226 File transfer complete[CR][LF]"
 19:26:19.964632 < "QUIT"
 19:26:19.964686 > "221 bye bye baby[CR][LF]"
 19:26:19.968759 MAIN sockfilt said DISC
 19:26:19.968813 ====> Client disconnected
 19:26:19.968899 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:19.511895 ====> Client connect
 19:26:19.512299 Received DATA (on stdin)
 19:26:19.512315 > 146 bytes data, server => client
 19:26:19.512326 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:19.512342 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:19.512352 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:19.512464 < 16 bytes data, client => server
 19:26:19.512480 'USER anonymous\r\n'
 19:26:19.512705 Received DATA (on stdin)
 19:26:19.512718 > 33 bytes data, server => client
 19:26:19.512729 '331 We are happy you popped in!\r\n'
 19:26:19.512789 < 22 bytes data, client => server
 19:26:19.512802 'PASS ftp@example.com\r\n'
 19:26:19.512929 Received DATA (on stdin)
 19:26:19.512942 > 30 bytes data, server => client
 19:26:19.512952 '230 Welcome you silly person\r\n'
 19:26:19.513013 < 5 bytes data, client => server
 19:26:19.513028 'PWD\r\n'
 19:26:19.513155 Received DATA (on stdin)
 19:26:19.513166 > 30 bytes data, server => client
 19:26:19.513177 '257 "/" is current directory\r\n'
 19:26:19.513250 < 6 bytes data, client => server
 19:26:19.513265 'EPSV\r\n'
 19:26:19.518997 Received DATA (on stdin)
 19:26:19.519012 > 39 bytes data, server => client
 19:26:19.519023 '229 Entering Passive Mode (|||46373|)\r\n'
 19:26:19.519210 < 8 bytes data, client => server
 19:26:19.519223 'TYPE I\r\n'
 19:26:19.519440 Received DATA (on stdin)
 19:26:19.519451 > 33 bytes data, server => client
 19:26:19.519461 '200 I modify TYPE as you wanted\r\n'
 19:26:19.519513 < 21 bytes data, client => server
 19:26:19.519524 'SIZE verifiedserver\r\n'
 19:26:19.519631 Received DATA (on stdin)
 19:26:19.519641 > 8 bytes data, server => client
 19:26:19.519651 '213 17\r\n'
 19:26:19.519701 < 21 bytes data, client => server
 19:26:19.519711 'RETR verifiedserver\r\n'
 19:26:19.519915 Received DATA (on stdin)
 19:26:19.519926 > 29 bytes data, server => client
 19:26:19.519935 '150 Binary junk (17 bytes).\r\n'
 19:26:19.520492 Received DATA (on stdin)
 19:26:19.520504 > 28 bytes data, server => client
 19:26:19.520514 '226 File transfer complete\r\n'
 19:26:19.564325 < 6 bytes data, client => server
 19:26:19.564355 'QUIT\r\n'
 19:26:19.564569 Received DATA (on stdin)
 19:26:19.564578 > 18 bytes data, server => client
 19:26:19.564588 '221 bye bye baby\r\n'
 19:26:19.568553 ====> Client disconnect
 19:26:19.568786 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:19.515330 Running IPv4 version
 19:26:19.515412 Listening on port 46373
 19:26:19.515461 Wrote pid 86111 to log/21/server/ftp_sockdata.pid
 19:26:19.518713 Received PING (on stdin)
 19:26:19.518826 Received PORT (on stdin)
 19:26:19.519243 ====> Client connect
 19:26:19.519992 Received DATA (on stdin)
 19:26:19.520004 > 17 bytes data, server => client
 19:26:19.520014 'WE ROOLZ: 84694\CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind131 ../src/curl -q --output log/7/curl131.out  --include --trace-ascii log/7/trace131 --trace-time --netrc-optional --netrc-file log/7/netrc131 ftp://user2@127.0.0.1:44283/ > log/7/stdout131 2> log/7/stderr131
r\n'
 19:26:19.520042 Received DISC (on stdin)
 19:26:19.520053 ====> Client forcibly disconnected
 19:26:19.520183 Received QUIT (on stdin)
 19:26:19.520195 quits
 19:26:19.520258 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 314 bluah you f00l
 Testnum 125
=== End of file server.cmd
=== Start of file valgrind125
 ==86124== 
 ==86124== Process terminating with default action of signal 4 (SIGILL)
 ==86124==  Illegal opcode at address 0x492B75F
 ==86124==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86124==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86124==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86124==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86124==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86124==    by 0x49908EB: curl_version_info (version.c:600)
 ==86124==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86124==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86124==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86124==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind125
test 0131 [FTP (optional .netrc; user/no pass) dir list PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind131 ../src/curl -q --output log/7/curl131.out  --include --trace-ascii log/7/trace131 --trace-time --netrc-optional --netrc-file log/7/netrc131 ftp://user2@127.0.0.1:44283/ > log/7/stdout131 2> log/7/stderr131

 131: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 131
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind131 ../src/curl -q --output log/7/curl131.out  --include --trace-ascii log/7/trace131 --trace-time --netrc-optional --netrc-file log/7/netrc131 ftp://user2@127.0.0.1:44283/ > log/7/stdout131 2> log/7/stderr131
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.427655 ====> Client connect
 19:26:20.427909 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.429031 < "USER anonymous"
 19:26:20.429091 > "331 We are happy you popped in![CR][LF]"
 19:26:20.429492 < "PASS ftp@example.com"
 19:26:20.429533 > "230 Welcome you silly person[CR][LF]"
 19:26:20.429712 < "PWD"
 19:26:20.429753 > "257 "/" is current directory[CR][LF]"
 19:26:20.429937 < "EPSV"
 19:26:20.429972 ====> Passive DATA channel requested by client
 19:26:20.429987 DATA sockfilt for passive data channel starting...
 19:26:20.432514 DATA sockfilt for passive data channel started (pid 86513)
 19:26:20.439442 DATA sockfilt for passive data channel listens on port 39117
 19:26:20.439542 > "229 Entering Passive Mode (|||39117|)[CR][LF]"
 19:26:20.439569 Client has been notified that upcoming DATA connection is awaited on port 39117
 19:26:20.439959 Client connects to port 39117
 19:26:20.439999 ====> Client established passive DATA connection on port 39117
 19:26:20.440116 < "TYPE I"
 19:26:20.440206 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.440398 < "SIZE verifiedserver"
 19:26:20.440454 > "213 17[CR][LF]"
 19:26:20.440645 < "RETR verifiedserver"
 19:26:20.440685 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.441126 =====> Closing passive DATA connection...
 19:26:20.441153 Server disconnects passive DATA connection
 19:26:20.441178 Fancy that; client wants to DISC, too
 19:26:20.441266 Server disconnected passive DATA connection
 19:26:20.441292 DATA sockfilt for passive data channel quits (pid 86513)
 19:26:20.441571 DATA sockfilt for passive data channel quit (pid 86513)
 19:26:20.441601 =====> Closed passive DATA connection
 19:26:20.441633 > "226 File transfer complete[CR][LF]"
 19:26:20.485659 < "QUIT"
 19:26:20.485724 > "221 bye bye baby[CR][LF]"
 19:26:20.486835 MAIN sockfilt said DISC
 19:26:20.486880 ====> Client disconnected
 19:26:20.486963 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.027508 ====> Client connect
 19:26:21.027923 Received DATA (on stdin)
 19:26:21.027937 > 146 bytes data, server => client
 19:26:21.027948 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.027958 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.027967 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.028775 < 16 bytes data, client => server
 19:26:21.028802 'USER anonymous\r\n'
 19:26:21.029264 Received DATA (on stdin)
 19:26:21.029285 > 33 bytes data, server => client
 19:26:21.029297 '331 We are happy you popped in!\r\n'
 19:26:21.029365 < 22 bytes data, client => server
 19:26:21.029378 'PASS ftp@example.com\r\n'
 19:26:21.029536 Received DATA (on stdin)
 19:26:21.029548 > 30 bytes data, server => client
 19:26:21.029559 '230 Welcome you silly person\r\n'
 19:26:21.029615 < 5 bytes data, client => server
 19:26:21.029627 'PWD\r\n'
 19:26:21.029756 Received DATA (on stdin)
 19:26:21.029768 > 30 bytes data, server => client
 19:26:21.029778 '257 "/" is current directory\r\n'
 19:26:21.029843 < 6 bytes data, client => server
 19:26:21.029856 'EPSV\r\n'
 19:26:21.039587 Received DATA (on stdin)
 19:26:21.039608 > 39 bytes data, server => client
 19:26:21.039619 '229 Entering Passive Mode (|||39117|)\r\n'
 19:26:21.039857 < 8 bytes data, client => server
 19:26:21.039876 'TYPE I\r\n'
 19:26:21.040141 Received DATA (on stdin)
 19:26:21.040156 > 33 bytes data, server => client
 19:26:21.040217 '200 I modify TYPE as you wanted\r\n'
 19:26:21.040287 < 21 bytes data, client => server
 19:26:21.040302 'SIZE verifiedserver\r\n'
 19:26:21.040464 Received DATA (on stdin)
 19:26:21.040477 > 8 bytes data, server => client
 19:26:21.040486 '213 17\r\n'
 19:26:21.040548 < 21 bytes data, client => server
 19:26:21.040562 'RETR verifiedserver\r\n'
 19:26:21.040853 Received DATA (on stdin)
 19:26:21.040869 > 29 bytes data, server => client
 19:26:21.040879 '150 Binary junk (17 bytes).\r\n'
 19:26:21.041638 Received DATA (on stdin)
 19:26:21.041651 > 28 bytes data, server => client
 19:26:21.041661 '226 File transfer complete\r\n'
 19:26:21.085457 < 6 bytes data, client => server
 19:26:21.085500 'QUIT\r\n'
 19:26:21.085746 Received DATA (on stdin)
 19:26:21.085760 > 18 bytes data, server => client
 19:26:21.085771 '221 bye bye baby\r\n'
 19:26:21.086775 ====> Client disconnect
 19:26:21.086986 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.032295 Running IPv4 version
 19:26:20.032376 Listening on port 39117
 19:26:20.032434 Wrote pid 86513 to log/7/server/ftp_sockdata.pid
 19:26:20.032456 Received PING (on stdin)
 19:26:20.038678 Received PORT (on stdin)
 19:26:20.039904 ====> Client connect
 19:26:20.040945 Received DATA (on stdin)
 19:26:20.040961 > 17 bytes data, server => client
 19:26:20.040972 'WE ROOLZ: 84721\r\n'
 19:26:20.041047 ====> Client disconnect
 19:26:20.041179 Received DISC (on stdin)
 19:26:20.041189 Crikey! Client also wants to disconnect
 19:26:20.041199 Received ACKD (on stdin)
 19:26:20.041304 Received QUIT (on stdin)
 19:26:20.041315 quits
 19:26:20.041390 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc131
 # the following two lines were created while testing curl
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
=== End of file netrc131
=== Start of file server.cmd
 Testnum 131
=== End of file server.cmd
=== Start of file valgrind131
 ==86546== 
 ==86546== Process terminating with default action of signal 4 (SIGILL)
 ==86546==  Illegal opcode at address 0x492B75F
 ==86546==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86546==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86546==    by 0x492B67B: CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind117 ../src/curl -q --output log/10/curl117.out  --include --trace-ascii log/10/trace117 --trace-time ftp://127.0.0.1:44817/117 > log/10/stdout117 2> log/10/stderr117
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind123 ../src/curl -q --output log/6/curl123.out  --include --trace-ascii log/6/trace123 --trace-time ftp://127.0.0.1:33989/123 -T log/6/upload123 -C 51 > log/6/stdout123 2> log/6/stderr123
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind127 ../src/curl -q --output log/23/curl127.out  --include --trace-ascii log/23/trace127 --trace-time ftp://127.0.0.1:35523/path/to/file/127 --disable-epsv > log/23/stdout127 2> log/23/stderr127
curl_msnprintf (mprintf.c:1277)
 ==86546==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86546==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86546==    by 0x49908EB: curl_version_info (version.c:600)
 ==86546==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86546==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86546==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86546==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind131
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/10/server/ftp_server.pid" --logfile "log/10/ftp_server.log" --logdir "log/10" --portfile "log/10/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44817 (log/10/server/ftp_server.port)
RUN: FTP server is PID 85153 port 44817
* pid ftp => 85153 85153
test 0117 [FTP download, failed TYPE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind117 ../src/curl -q --output log/10/curl117.out  --include --trace-ascii log/10/trace117 --trace-time ftp://127.0.0.1:44817/117 > log/10/stdout117 2> log/10/stderr117

 117: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 117
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind117 ../src/curl -q --output log/10/curl117.out  --include --trace-ascii log/10/trace117 --trace-time ftp://127.0.0.1:44817/117 > log/10/stdout117 2> log/10/stderr117
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.353501 FTP server listens on port IPv4/44817
 19:26:18.353597 logged pid 85153 in log/10/server/ftp_server.pid
 19:26:18.353621 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.952593 Running IPv4 version
 19:26:18.952677 Listening on port 44817
 19:26:18.952710 Wrote pid 85201 to log/10/server/ftp_sockctrl.pid
 19:26:18.952736 Wrote port 44817 to log/10/server/ftp_server.port
 19:26:18.952879 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPSV 314 bluah you f00l
 REPLY TYPE 314 bluah you f00l
 Testnum 117
=== End of file server.cmd
=== Start of file valgrind117
 ==85655== 
 ==85655== Process terminating with default action of signal 4 (SIGILL)
 ==85655==  Illegal opcode at address 0x492B75F
 ==85655==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==85655==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==85655==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==85655==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==85655==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==85655==    by 0x49908EB: curl_version_info (version.c:600)
 ==85655==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==85655==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==85655==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==85655==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind117
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/6/server/ftp_server.pid" --logfile "log/6/ftp_server.log" --logdir "log/6" --portfile "log/6/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33989 (log/6/server/ftp_server.port)
RUN: FTP server is PID 85558 port 33989
* pid ftp => 85558 85558
test 0123 [FTP upload resume with whole file already downloaded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind123 ../src/curl -q --output log/6/curl123.out  --include --trace-ascii log/6/trace123 --trace-time ftp://127.0.0.1:33989/123 -T log/6/upload123 -C 51 > log/6/stdout123 2> log/6/stderr123

 123: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 123
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind123 ../src/curl -q --output log/6/curl123.out  --include --trace-ascii log/6/trace123 --trace-time ftp://127.0.0.1:33989/123 -T log/6/upload123 -C 51 > log/6/stdout123 2> log/6/stderr123
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:19.149034 FTP server listens on port IPv4/33989
 19:26:19.149142 logged pid 85558 in log/6/server/ftp_server.pid
 19:26:19.149172 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:19.748235 Running IPv4 version
 19:26:19.748379 Listening on port 33989
 19:26:19.748427 Wrote pid 85573 to log/6/server/ftp_sockctrl.pid
 19:26:19.748459 Wrote port 33989 to log/6/server/ftp_server.port
 19:26:19.748606 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 123
=== End of file server.cmd
=== Start of file upload123
 --------------------------------------------------
=== End of file upload123
=== Start of file valgrind123
 ==86226== 
 ==86226== Process terminating with default action of signal 4 (SIGILL)
 ==86226==  Illegal opcode at address 0x492B75F
 ==86226==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86226==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86226==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86226==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86226==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86226==    by 0x49908EB: curl_version_info (version.c:600)
 ==86226==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86226==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86226==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86226==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind123
test 0127 [FTP --disable-epsv]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind127 ../src/curl -q --output log/23/curl127.out  --include --trace-ascii log/23/trace127 --trace-time ftp://127.0.0.1:35523/path/to/file/127 --disable-epsv > log/23/stdout127 2> log/23/stderr127

 127: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 127
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind127 ../src/curl -q --output log/23/curl127.out  --include --trace-ascii log/23/trace127 --trace-time ftp://127.0.0.1:35523/path/to/file/127 --disable-epsv > log/23/stdout127 2> log/23/stderr127
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.039034 ====> Client connect
 19:26:20.039265 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.042839 < "USER anonymous"
 19:26:20.042893 > "331 We are happy you popped in![CR][LF]"
 19:26:20.043086 < "PASS ftp@example.com"
 19:26:20.043117 > "230 Welcome you silly person[CR][LF]"
 19:26:20.043285 < "PWD"
 19:26:20.043322 > "257 "/" is current directory[CR][LF]"
 19:26:20.043515 < "EPSV"
 19:26:20.043547 ====> Passive DATA channel requested by client
 19:26:20.043563 DATA sockfilt for passive data channel starting...
 19:26:20.045556 DATA sCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind132 ../src/curl -q --output log/17/curl132.out  --include --trace-ascii log/17/trace132 --trace-time --netrc-optional --netrc-file log/17/netrc132 ftp://mary:mark@127.0.0.1:46137/ > log/17/stdout132 2> log/17/stderr132
ockfilt for passive data channel started (pid 86165)
 19:26:20.045672 DATA sockfilt for passive data channel listens on port 41833
 19:26:20.045757 > "229 Entering Passive Mode (|||41833|)[CR][LF]"
 19:26:20.045780 Client has been notified that upcoming DATA connection is awaited on port 41833
 19:26:20.045970 Client connects to port 41833
 19:26:20.046003 ====> Client established passive DATA connection on port 41833
 19:26:20.046184 < "TYPE I"
 19:26:20.046220 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.046418 < "SIZE verifiedserver"
 19:26:20.046501 > "213 17[CR][LF]"
 19:26:20.046677 < "RETR verifiedserver"
 19:26:20.046719 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.047033 =====> Closing passive DATA connection...
 19:26:20.047061 Server disconnects passive DATA connection
 19:26:20.047154 Server disconnected passive DATA connection
 19:26:20.047185 DATA sockfilt for passive data channel quits (pid 86165)
 19:26:20.047466 DATA sockfilt for passive data channel quit (pid 86165)
 19:26:20.047495 =====> Closed passive DATA connection
 19:26:20.047557 > "226 File transfer complete[CR][LF]"
 19:26:20.092382 < "QUIT"
 19:26:20.092448 > "221 bye bye baby[CR][LF]"
 19:26:20.093772 MAIN sockfilt said DISC
 19:26:20.093809 ====> Client disconnected
 19:26:20.093929 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.638644 ====> Client connect
 19:26:20.639186 Received DATA (on stdin)
 19:26:20.639204 > 146 bytes data, server => client
 19:26:20.639215 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.639225 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.639233 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.642510 < 16 bytes data, client => server
 19:26:20.642532 'USER anonymous\r\n'
 19:26:20.642803 Received DATA (on stdin)
 19:26:20.642816 > 33 bytes data, server => client
 19:26:20.642827 '331 We are happy you popped in!\r\n'
 19:26:20.642885 < 22 bytes data, client => server
 19:26:20.642898 'PASS ftp@example.com\r\n'
 19:26:20.643018 Received DATA (on stdin)
 19:26:20.643030 > 30 bytes data, server => client
 19:26:20.643040 '230 Welcome you silly person\r\n'
 19:26:20.643095 < 5 bytes data, client => server
 19:26:20.643108 'PWD\r\n'
 19:26:20.643225 Received DATA (on stdin)
 19:26:20.643236 > 30 bytes data, server => client
 19:26:20.643246 '257 "/" is current directory\r\n'
 19:26:20.643315 < 6 bytes data, client => server
 19:26:20.643330 'EPSV\r\n'
 19:26:20.645594 Received DATA (on stdin)
 19:26:20.645608 > 39 bytes data, server => client
 19:26:20.645688 '229 Entering Passive Mode (|||41833|)\r\n'
 19:26:20.645974 < 8 bytes data, client => server
 19:26:20.645991 'TYPE I\r\n'
 19:26:20.646127 Received DATA (on stdin)
 19:26:20.646141 > 33 bytes data, server => client
 19:26:20.646152 '200 I modify TYPE as you wanted\r\n'
 19:26:20.646209 < 21 bytes data, client => server
 19:26:20.646224 'SIZE verifiedserver\r\n'
 19:26:20.646343 Received DATA (on stdin)
 19:26:20.646357 > 8 bytes data, server => client
 19:26:20.646412 '213 17\r\n'
 19:26:20.646475 < 21 bytes data, client => server
 19:26:20.646490 'RETR verifiedserver\r\n'
 19:26:20.646637 Received DATA (on stdin)
 19:26:20.646651 > 29 bytes data, server => client
 19:26:20.646662 '150 Binary junk (17 bytes).\r\n'
 19:26:20.647404 Received DATA (on stdin)
 19:26:20.647417 > 28 bytes data, server => client
 19:26:20.647463 '226 File transfer complete\r\n'
 19:26:20.692077 < 6 bytes data, client => server
 19:26:20.692112 'QUIT\r\n'
 19:26:20.692374 Received DATA (on stdin)
 19:26:20.692388 > 18 bytes data, server => client
 19:26:20.692399 '221 bye bye baby\r\n'
 19:26:20.693625 ====> Client disconnect
 19:26:20.693858 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.645080 Running IPv4 version
 19:26:20.645154 Listening on port 41833
 19:26:20.645376 Wrote pid 86165 to log/23/server/ftp_sockdata.pid
 19:26:20.645400 Received PING (on stdin)
 19:26:20.645483 Received PORT (on stdin)
 19:26:20.645817 ====> Client connect
 19:26:20.646693 Received DATA (on stdin)
 19:26:20.646708 > 17 bytes data, server => client
 19:26:20.646761 'WE ROOLZ: 84709\r\n'
 19:26:20.646972 Received DISC (on stdin)
 19:26:20.646986 ====> Client forcibly disconnected
 19:26:20.647092 Received QUIT (on stdin)
 19:26:20.647104 quits
 19:26:20.647189 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 127
=== End of file server.cmd
=== Start of file valgrind127
 ==86231== 
 ==86231== Process terminating with default action of signal 4 (SIGILL)
 ==86231==  Illegal opcode at address 0x492B75F
 ==86231==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86231==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86231==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86231==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86231==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86231==    by 0x49908EB: curl_version_info (version.c:600)
 ==86231==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86231==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86231==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86231==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind127
test 0132 [FTP (optional .netrc; user/passwd supplied) dir list PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind132 ../src/curl -q --output log/17/curl132.out  --include --trace-ascii log/17/trace132 --trace-time --netrc-optional --netrc-file log/17/netrc132 ftp://mary:mark@127.0.0.1:46137/ > log/17/stdout132 2> log/17/stderr132

 132: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 132
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind132 ../src/curl -q --output log/17/curl132.out  --include --trace-ascii log/17/trace132 --trace-time --netrc-optional --netrc-file log/17/netrc132 ftp://mary:mark@127.0.0.1:46137/ > log/17/stdout132 2> log/17/stderr132
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.571693 ====> Client connect
 19:26:20.571943 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.572313 < "USER anonymous"
 19:26:20.572357 > "331 We are happy you popped in![CR][LF]"
 19:26:20.574402 < "PASS ftp@example.com"
 19:26:20.574443 > "230 Welcome you silly person[CR][LF]"
 19:26:20.575537 < "PWD"
 19:26:20.575589 > "257 "/" is current directory[CR][LF]"
 19:26:20.578970 < "EPSV"
 19:26:20.579014 ====> Passive DATA channel requested by client
 19:26:20.579031 DATA sockfilt for passive data channel starting...
 19:26:20.584625 DATA sockfilt for passive data channel started (pid 86586)
 19:26:20.584742 DATA sockfilt for passive data channel listens on port 40485
 19:26:20.584790 > "229 Entering Passive Mode (|||40485|)[CR][LF]"
 19:26:20.584806 Client has been notified that upcoming DATA connection is awaited on port 40485
 19:26:20.585106 Client connects to port 40485
 19:26:20.585137 ====> Client established passive DATA connection on port 40485
 19:26:20.585231 < "TYPE I"
 19:26:20.585274 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.585650 < "SIZE verifiedserver"
 19:26:20.585703 > "213 17[CR][LF]"
 19:26:20.585885 < "RETR verifiedserver"
 19:26:20.585925 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.586019 =====> Closing passive DATA connection...
 19:26:20.586038 Server disconnects passive DATA connection
 19:26:20.586274 Server disconnected passive DATA connection
 19:26:20.586306 DATA sockfilt for passive data channel quits (pid 86586)
 19:26:20.586540 DATA sockfilt foCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind122 ../src/curl -q --output log/18/curl122.out  --include --trace-ascii log/18/trace122 --trace-time ftp://127.0.0.1:36115/122 -C 5 > log/18/stdout122 2> log/18/stderr122
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind130 ../src/curl -q --output log/22/curl130.out  --include --trace-ascii log/22/trace130 --trace-time --netrc-optional --netrc-file log/22/netrc130 ftp://127.0.0.1:33255/ > log/22/stdout130 2> log/22/stderr130
r passive data channel quit (pid 86586)
 19:26:20.586568 =====> Closed passive DATA connection
 19:26:20.586597 > "226 File transfer complete[CR][LF]"
 19:26:20.632400 < "QUIT"
 19:26:20.632459 > "221 bye bye baby[CR][LF]"
 19:26:20.638762 MAIN sockfilt said DISC
 19:26:20.638813 ====> Client disconnected
 19:26:20.638898 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.171600 ====> Client connect
 19:26:20.172015 Received DATA (on stdin)
 19:26:20.172050 > 146 bytes data, server => client
 19:26:20.172062 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.172072 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.172081 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.172394 < 16 bytes data, client => server
 19:26:20.174171 'USER anonymous\r\n'
 19:26:20.174193 Received DATA (on stdin)
 19:26:20.174203 > 33 bytes data, server => client
 19:26:20.174213 '331 We are happy you popped in!\r\n'
 19:26:20.174276 < 22 bytes data, client => server
 19:26:20.174288 'PASS ftp@example.com\r\n'
 19:26:20.174535 Received DATA (on stdin)
 19:26:20.174547 > 30 bytes data, server => client
 19:26:20.174557 '230 Welcome you silly person\r\n'
 19:26:20.175446 < 5 bytes data, client => server
 19:26:20.175464 'PWD\r\n'
 19:26:20.178700 Received DATA (on stdin)
 19:26:20.178719 > 30 bytes data, server => client
 19:26:20.178731 '257 "/" is current directory\r\n'
 19:26:20.178878 < 6 bytes data, client => server
 19:26:20.178890 'EPSV\r\n'
 19:26:20.184850 Received DATA (on stdin)
 19:26:20.184865 > 39 bytes data, server => client
 19:26:20.184875 '229 Entering Passive Mode (|||40485|)\r\n'
 19:26:20.185057 < 8 bytes data, client => server
 19:26:20.185074 'TYPE I\r\n'
 19:26:20.185316 Received DATA (on stdin)
 19:26:20.185328 > 33 bytes data, server => client
 19:26:20.185338 '200 I modify TYPE as you wanted\r\n'
 19:26:20.185413 < 21 bytes data, client => server
 19:26:20.185427 'SIZE verifiedserver\r\n'
 19:26:20.185745 Received DATA (on stdin)
 19:26:20.185756 > 8 bytes data, server => client
 19:26:20.185766 '213 17\r\n'
 19:26:20.185826 < 21 bytes data, client => server
 19:26:20.185839 'RETR verifiedserver\r\n'
 19:26:20.186078 Received DATA (on stdin)
 19:26:20.186090 > 29 bytes data, server => client
 19:26:20.186100 '150 Binary junk (17 bytes).\r\n'
 19:26:20.186637 Received DATA (on stdin)
 19:26:20.186649 > 28 bytes data, server => client
 19:26:20.186659 '226 File transfer complete\r\n'
 19:26:20.232172 < 6 bytes data, client => server
 19:26:20.232204 'QUIT\r\n'
 19:26:20.232523 Received DATA (on stdin)
 19:26:20.232539 > 18 bytes data, server => client
 19:26:20.232550 '221 bye bye baby\r\n'
 19:26:20.238732 ====> Client disconnect
 19:26:20.238966 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.184127 Running IPv4 version
 19:26:20.184219 Listening on port 40485
 19:26:20.184267 Wrote pid 86586 to log/17/server/ftp_sockdata.pid
 19:26:20.184598 Received PING (on stdin)
 19:26:20.184693 Received PORT (on stdin)
 19:26:20.185095 ====> Client connect
 19:26:20.186131 Received DATA (on stdin)
 19:26:20.186144 > 17 bytes data, server => client
 19:26:20.186153 'WE ROOLZ: 84749\r\n'
 19:26:20.186179 Received DISC (on stdin)
 19:26:20.186190 ====> Client forcibly disconnected
 19:26:20.186353 Received QUIT (on stdin)
 19:26:20.186365 quits
 19:26:20.186430 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc132
 # the following two lines were created while testing curl
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
=== End of file netrc132
=== Start of file server.cmd
 Testnum 132
=== End of file server.cmd
=== Start of file valgrind132
 ==86642== 
 ==86642== Process terminating with default action of signal 4 (SIGILL)
 ==86642==  Illegal opcode at address 0x492B75F
 ==86642==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86642==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86642==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86642==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86642==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86642==    by 0x49908EB: curl_version_info (version.c:600)
 ==86642==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86642==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86642==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86642==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind132
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/18/server/ftp_server.pid" --logfile "log/18/ftp_server.log" --logdir "log/18" --portfile "log/18/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36115 (log/18/server/ftp_server.port)
RUN: FTP server is PID 85350 port 36115
* pid ftp => 85350 85350
test 0122 [FTP download resume with whole file already downloaded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind122 ../src/curl -q --output log/18/curl122.out  --include --trace-ascii log/18/trace122 --trace-time ftp://127.0.0.1:36115/122 -C 5 > log/18/stdout122 2> log/18/stderr122

 122: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 122
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind122 ../src/curl -q --output log/18/curl122.out  --include --trace-ascii log/18/trace122 --trace-time ftp://127.0.0.1:36115/122 -C 5 > log/18/stdout122 2> log/18/stderr122
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:18.736749 FTP server listens on port IPv4/36115
 19:26:18.736885 logged pid 85350 in log/18/server/ftp_server.pid
 19:26:18.736924 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:18.334551 Running IPv4 version
 19:26:18.334663 Listening on port 36115
 19:26:18.334706 Wrote pid 85378 to log/18/server/ftp_sockctrl.pid
 19:26:18.334737 Wrote port 36115 to log/18/server/ftp_server.port
 19:26:18.336171 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 122
=== End of file server.cmd
=== Start of file valgrind122
 ==86022== 
 ==86022== Process terminating with default action of signal 4 (SIGILL)
 ==86022==  Illegal opcode at address 0x492B75F
 ==86022==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86022==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86022==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86022==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86022==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86022==    by 0x49908EB: curl_version_info (version.c:600)
 ==86022==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86022==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86022==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86022==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind122
test 0130 [FTP (optional .netrc; no user/pass) dir list PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind130 ../src/curl -q --output log/22/curl130.out  --include --trace-ascii log/22/trace130 --trace-time --netrc-optional --netrc-file log/22/netrc130 ftp://127.0.0.1:33255/ > log/22/stdout130 2> log/22/stderr130

 130: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 130
=== Start of file commands.lCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind129 ../src/curl -q --output log/3/curl129.out  --include --trace-ascii log/3/trace129 --trace-time http://127.0.0.1:36161/129 > log/3/stdout129 2> log/3/stderr129
og
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind130 ../src/curl -q --output log/22/curl130.out  --include --trace-ascii log/22/trace130 --trace-time --netrc-optional --netrc-file log/22/netrc130 ftp://127.0.0.1:33255/ > log/22/stdout130 2> log/22/stderr130
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.228702 ====> Client connect
 19:26:20.228947 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.238916 < "USER anonymous"
 19:26:20.238990 > "331 We are happy you popped in![CR][LF]"
 19:26:20.239280 < "PASS ftp@example.com"
 19:26:20.239322 > "230 Welcome you silly person[CR][LF]"
 19:26:20.239512 < "PWD"
 19:26:20.239554 > "257 "/" is current directory[CR][LF]"
 19:26:20.239750 < "EPSV"
 19:26:20.239785 ====> Passive DATA channel requested by client
 19:26:20.239802 DATA sockfilt for passive data channel starting...
 19:26:20.247409 DATA sockfilt for passive data channel started (pid 86342)
 19:26:20.247591 DATA sockfilt for passive data channel listens on port 44423
 19:26:20.247657 > "229 Entering Passive Mode (|||44423|)[CR][LF]"
 19:26:20.247677 Client has been notified that upcoming DATA connection is awaited on port 44423
 19:26:20.248035 Client connects to port 44423
 19:26:20.248073 ====> Client established passive DATA connection on port 44423
 19:26:20.248182 < "TYPE I"
 19:26:20.248224 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.248432 < "SIZE verifiedserver"
 19:26:20.248477 > "213 17[CR][LF]"
 19:26:20.248667 < "RETR verifiedserver"
 19:26:20.248737 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.248837 =====> Closing passive DATA connection...
 19:26:20.248856 Server disconnects passive DATA connection
 19:26:20.249105 Server disconnected passive DATA connection
 19:26:20.249134 DATA sockfilt for passive data channel quits (pid 86342)
 19:26:20.249426 DATA sockfilt for passive data channel quit (pid 86342)
 19:26:20.249457 =====> Closed passive DATA connection
 19:26:20.249489 > "226 File transfer complete[CR][LF]"
 19:26:20.293609 < "QUIT"
 19:26:20.293669 > "221 bye bye baby[CR][LF]"
 19:26:20.295114 MAIN sockfilt said DISC
 19:26:20.295162 ====> Client disconnected
 19:26:20.295252 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.825296 ====> Client connect
 19:26:20.829249 Received DATA (on stdin)
 19:26:20.829284 > 146 bytes data, server => client
 19:26:20.829296 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.829305 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.829313 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.838542 < 16 bytes data, client => server
 19:26:20.838577 'USER anonymous\r\n'
 19:26:20.838960 Received DATA (on stdin)
 19:26:20.838982 > 33 bytes data, server => client
 19:26:20.838993 '331 We are happy you popped in!\r\n'
 19:26:20.839105 < 22 bytes data, client => server
 19:26:20.839120 'PASS ftp@example.com\r\n'
 19:26:20.839277 Received DATA (on stdin)
 19:26:20.839290 > 30 bytes data, server => client
 19:26:20.839300 '230 Welcome you silly person\r\n'
 19:26:20.839363 < 5 bytes data, client => server
 19:26:20.839375 'PWD\r\n'
 19:26:20.839506 Received DATA (on stdin)
 19:26:20.839517 > 30 bytes data, server => client
 19:26:20.839527 '257 "/" is current directory\r\n'
 19:26:20.839600 < 6 bytes data, client => server
 19:26:20.839615 'EPSV\r\n'
 19:26:20.847642 Received DATA (on stdin)
 19:26:20.847660 > 39 bytes data, server => client
 19:26:20.847671 '229 Entering Passive Mode (|||44423|)\r\n'
 19:26:20.847893 < 8 bytes data, client => server
 19:26:20.847913 'TYPE I\r\n'
 19:26:20.848183 Received DATA (on stdin)
 19:26:20.848197 > 33 bytes data, server => client
 19:26:20.848207 '200 I modify TYPE as you wanted\r\n'
 19:26:20.848276 < 21 bytes data, client => server
 19:26:20.848291 'SIZE verifiedserver\r\n'
 19:26:20.848435 Received DATA (on stdin)
 19:26:20.848447 > 8 bytes data, server => client
 19:26:20.848457 '213 17\r\n'
 19:26:20.848517 < 21 bytes data, client => server
 19:26:20.848529 'RETR verifiedserver\r\n'
 19:26:20.848810 Received DATA (on stdin)
 19:26:20.848821 > 29 bytes data, server => client
 19:26:20.848831 '150 Binary junk (17 bytes).\r\n'
 19:26:20.849447 Received DATA (on stdin)
 19:26:20.849460 > 28 bytes data, server => client
 19:26:20.849470 '226 File transfer complete\r\n'
 19:26:20.893365 < 6 bytes data, client => server
 19:26:20.893397 'QUIT\r\n'
 19:26:20.893641 Received DATA (on stdin)
 19:26:20.893654 > 18 bytes data, server => client
 19:26:20.893664 '221 bye bye baby\r\n'
 19:26:20.894834 ====> Client disconnect
 19:26:20.895225 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.847133 Running IPv4 version
 19:26:20.847234 Listening on port 44423
 19:26:20.847275 Wrote pid 86342 to log/22/server/ftp_sockdata.pid
 19:26:20.847294 Received PING (on stdin)
 19:26:20.847424 Received PORT (on stdin)
 19:26:20.847937 ====> Client connect
 19:26:20.848894 Received DATA (on stdin)
 19:26:20.848907 > 17 bytes data, server => client
 19:26:20.848917 'WE ROOLZ: 84714\r\n'
 19:26:20.848944 Received DISC (on stdin)
 19:26:20.848955 ====> Client forcibly disconnected
 19:26:20.849097 Received QUIT (on stdin)
 19:26:20.849108 quits
 19:26:20.849181 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc130
 # the following two lines were created while testing curl
 # machine 127.0.0.1 login user1 password commented
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
 default login userdef password passwddef
=== End of file netrc130
=== Start of file server.cmd
 Testnum 130
=== End of file server.cmd
=== Start of file valgrind130
 ==86433== 
 ==86433== Process terminating with default action of signal 4 (SIGILL)
 ==86433==  Illegal opcode at address 0x492B75F
 ==86433==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86433==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86433==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86433==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86433==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86433==    by 0x49908EB: curl_version_info (version.c:600)
 ==86433==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86433==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86433==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86433==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind130
test 0129 [HTTP/1.2 is rejected]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind129 ../src/curl -q --output log/3/curl129.out  --include --trace-ascii log/3/trace129 --trace-time http://127.0.0.1:36161/129 > log/3/stdout129 2> log/3/stderr129

 129: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 129
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind129 ../src/curl -q --output log/3/curl129.out  --include --trace-ascii log/3/trace129 --trace-time http://127.0.0.1:36161/129 > log/3/stdout129 2> log/3/stderr129
=== End of file commands.log
=== Start of file http_server.log
 19:26:20.788680 ====> Client connect
 19:26:20.788722 accept_connection 3 returned 4
 19:26:20.788746 Read 93 bytes
 19:26:20.788759 Process 93 bytes request
 19:26:20.788785 Got request: GET /verifiedserver HTTP/1.1
 19:26:20.788794 Are-we-friendly question received
 19:26:20.788824 Wrote request (93 bytes) input to log/3/server.input
 19:26:20.788843 IdentifyingCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind126 ../src/curl -q --output log/9/curl126.out  --include --trace-ascii log/9/trace126 --trace-time ftp://127.0.0.1:36605/blalbla/lululul/126 > log/9/stdout126 2> log/9/stderr126
 ourselves as friends
 19:26:20.788924 Response sent (56 bytes) and written to log/3/server.response
 19:26:20.788934 special request received, no persistency
 19:26:20.788942 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 33442 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 129
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind129
 ==86335== 
 ==86335== Process terminating with default action of signal 4 (SIGILL)
 ==86335==  Illegal opcode at address 0x492B75F
 ==86335==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86335==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86335==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86335==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86335==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86335==    by 0x49908EB: curl_version_info (version.c:600)
 ==86335==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86335==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86335==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86335==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind129
test 0126 [FTP download with multiple replies at once in RETR]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind126 ../src/curl -q --output log/9/curl126.out  --include --trace-ascii log/9/trace126 --trace-time ftp://127.0.0.1:36605/blalbla/lululul/126 > log/9/stdout126 2> log/9/stderr126

 126: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 126
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind126 ../src/curl -q --output log/9/curl126.out  --include --trace-ascii log/9/trace126 --trace-time ftp://127.0.0.1:36605/blalbla/lululul/126 > log/9/stdout126 2> log/9/stderr126
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:19.883034 ====> Client connect
 19:26:19.883288 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:19.883649 < "USER anonymous"
 19:26:19.883703 > "331 We are happy you popped in![CR][LF]"
 19:26:19.883918 < "PASS ftp@example.com"
 19:26:19.883956 > "230 Welcome you silly person[CR][LF]"
 19:26:19.884146 < "PWD"
 19:26:19.884192 > "257 "/" is current directory[CR][LF]"
 19:26:19.884370 < "EPSV"
 19:26:19.884403 ====> Passive DATA channel requested by client
 19:26:19.884418 DATA sockfilt for passive data channel starting...
 19:26:19.892387 DATA sockfilt for passive data channel started (pid 86102)
 19:26:19.892569 DATA sockfilt for passive data channel listens on port 37445
 19:26:19.892629 > "229 Entering Passive Mode (|||37445|)[CR][LF]"
 19:26:19.892644 Client has been notified that upcoming DATA connection is awaited on port 37445
 19:26:19.893034 Client connects to port 37445
 19:26:19.893074 ====> Client established passive DATA connection on port 37445
 19:26:19.893187 < "TYPE I"
 19:26:19.893228 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:19.893446 < "SIZE verifiedserver"
 19:26:19.893504 > "213 17[CR][LF]"
 19:26:19.893699 < "RETR verifiedserver"
 19:26:19.893746 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:19.893851 =====> Closing passive DATA connection...
 19:26:19.893870 Server disconnects passive DATA connection
 19:26:19.894121 Server disconnected passive DATA connection
 19:26:19.894151 DATA sockfilt for passive data channel quits (pid 86102)
 19:26:19.894457 DATA sockfilt for passive data channel quit (pid 86102)
 19:26:19.894484 =====> Closed passive DATA connection
 19:26:19.894515 > "226 File transfer complete[CR][LF]"
 19:26:19.938884 < "QUIT"
 19:26:19.938934 > "221 bye bye baby[CR][LF]"
 19:26:19.943273 MAIN sockfilt said DISC
 19:26:19.943326 ====> Client disconnected
 19:26:19.943408 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:19.482750 ====> Client connect
 19:26:19.483172 Received DATA (on stdin)
 19:26:19.483190 > 146 bytes data, server => client
 19:26:19.483200 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:19.483210 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:19.483219 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:19.483314 < 16 bytes data, client => server
 19:26:19.483329 'USER anonymous\r\n'
 19:26:19.483571 Received DATA (on stdin)
 19:26:19.483585 > 33 bytes data, server => client
 19:26:19.483595 '331 We are happy you popped in!\r\n'
 19:26:19.483657 < 22 bytes data, client => server
 19:26:19.483670 'PASS ftp@example.com\r\n'
 19:26:19.483822 Received DATA (on stdin)
 19:26:19.483834 > 30 bytes data, server => client
 19:26:19.483845 '230 Welcome you silly person\r\n'
 19:26:19.483902 < 5 bytes data, client => server
 19:26:19.483915 'PWD\r\n'
 19:26:19.484053 Received DATA (on stdin)
 19:26:19.484064 > 30 bytes data, server => client
 19:26:19.484073 '257 "/" is current directory\r\n'
 19:26:19.484136 < 6 bytes data, client => server
 19:26:19.484147 'EPSV\r\n'
 19:26:19.492521 Received DATA (on stdin)
 19:26:19.492540 > 39 bytes data, server => client
 19:26:19.492550 '229 Entering Passive Mode (|||37445|)\r\n'
 19:26:19.492837 < 8 bytes data, client => server
 19:26:19.492850 'TYPE I\r\n'
 19:26:19.493097 Received DATA (on stdin)
 19:26:19.493112 > 33 bytes data, server => client
 19:26:19.493121 '200 I modify TYPE as you wanted\r\n'
 19:26:19.493193 < 21 bytes data, client => server
 19:26:19.493205 'SIZE verifiedserver\r\n'
 19:26:19.493372 Received DATA (on stdin)
 19:26:19.493384 > 8 bytes data, server => client
 19:26:19.493393 '213 17\r\n'
 19:26:19.493459 < 21 bytes data, client => server
 19:26:19.493469 'RETR verifiedserver\r\n'
 19:26:19.493737 Received DATA (on stdin)
 19:26:19.493748 > 29 bytes data, server => client
 19:26:19.493758 '150 Binary junk (17 bytes).\r\n'
 19:26:19.494379 Received DATA (on stdin)
 19:26:19.494392 > 28 bytes data, server => client
 19:26:19.494402 '226 File transfer complete\r\n'
 19:26:19.538558 < 6 bytes data, client => server
 19:26:19.538587 'QUIT\r\n'
 19:26:19.538810 Received DATA (on stdin)
 19:26:19.538821 > 18 bytes data, server => client
 19:26:19.538831 '221 bye bye baby\r\n'
 19:26:19.543060 ====> Client disconnect
 19:26:19.543293 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:19.489380 Running IPv4 version
 19:26:19.489475 Listening on port 37445
 19:26:19.489515 Wrote pid 86102 to log/9/server/ftp_sockdata.pid
 19:26:19.492152 Received PING (on stdin)
 19:26:19.492308 Received PORT (on stdin)
 19:26:19.492798 ====> Client connect
 19:26:19.493789 Received DATA (on stdin)
 19:26:19.493805 > 17 bytes data, server => client
 19:26:19.493815 'WE ROOLZ: 84695\r\n'
 19:26:19.493842 Received DISC (on stdin)
 19:26:19.493852 ====> Client forcibly disconnected
 19:26:19.494027 Received QUIT (on stdin)
 19:26:19.494038 quits
 19:26:19.494118 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 RETRWEIRDO
 Testnum 126
=== End of file server.cmd
=== Start of file valgrind126
 ==86120== 
 ==86120== Process terminating with default action oCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind134 ../src/curl -q --output log/15/curl134.out  --include --trace-ascii log/15/trace134 --trace-time --netrc-optional --netrc-file log/15/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:44883/ > log/15/stdout134 2> log/15/stderr134
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind135 ../src/curl -q --output log/20/curl135.out  --include --trace-ascii log/20/trace135 --trace-time -r 4-16 ftp://127.0.0.1:41549/135 > log/20/stdout135 2> log/20/stderr135
f signal 4 (SIGILL)
 ==86120==  Illegal opcode at address 0x492B75F
 ==86120==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86120==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86120==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86120==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86120==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86120==    by 0x49908EB: curl_version_info (version.c:600)
 ==86120==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86120==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86120==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86120==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind126
test 0134 [FTP (optional .netrc; programmatic user/passwd) dir list PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind134 ../src/curl -q --output log/15/curl134.out  --include --trace-ascii log/15/trace134 --trace-time --netrc-optional --netrc-file log/15/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:44883/ > log/15/stdout134 2> log/15/stderr134

 134: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 134
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind134 ../src/curl -q --output log/15/curl134.out  --include --trace-ascii log/15/trace134 --trace-time --netrc-optional --netrc-file log/15/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:44883/ > log/15/stdout134 2> log/15/stderr134
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.775384 ====> Client connect
 19:26:20.775635 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.775952 < "USER anonymous"
 19:26:20.775985 > "331 We are happy you popped in![CR][LF]"
 19:26:20.776137 < "PASS ftp@example.com"
 19:26:20.776161 > "230 Welcome you silly person[CR][LF]"
 19:26:20.776292 < "PWD"
 19:26:20.776323 > "257 "/" is current directory[CR][LF]"
 19:26:20.776471 < "EPSV"
 19:26:20.776498 ====> Passive DATA channel requested by client
 19:26:20.776512 DATA sockfilt for passive data channel starting...
 19:26:20.788783 DATA sockfilt for passive data channel started (pid 86703)
 19:26:20.788989 DATA sockfilt for passive data channel listens on port 44975
 19:26:20.789059 > "229 Entering Passive Mode (|||44975|)[CR][LF]"
 19:26:20.789079 Client has been notified that upcoming DATA connection is awaited on port 44975
 19:26:20.789437 Client connects to port 44975
 19:26:20.789477 ====> Client established passive DATA connection on port 44975
 19:26:20.789584 < "TYPE I"
 19:26:20.789626 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.789822 < "SIZE verifiedserver"
 19:26:20.789868 > "213 17[CR][LF]"
 19:26:20.791335 < "RETR verifiedserver"
 19:26:20.791379 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.791475 =====> Closing passive DATA connection...
 19:26:20.791492 Server disconnects passive DATA connection
 19:26:20.791942 Server disconnected passive DATA connection
 19:26:20.791974 DATA sockfilt for passive data channel quits (pid 86703)
 19:26:20.792252 DATA sockfilt for passive data channel quit (pid 86703)
 19:26:20.792280 =====> Closed passive DATA connection
 19:26:20.792310 > "226 File transfer complete[CR][LF]"
 19:26:20.839063 < "QUIT"
 19:26:20.839123 > "221 bye bye baby[CR][LF]"
 19:26:20.845960 MAIN sockfilt said DISC
 19:26:20.846018 ====> Client disconnected
 19:26:20.846097 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.375287 ====> Client connect
 19:26:20.375736 Received DATA (on stdin)
 19:26:20.375753 > 146 bytes data, server => client
 19:26:20.375764 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.375774 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.375783 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.375871 < 16 bytes data, client => server
 19:26:20.375882 'USER anonymous\r\n'
 19:26:20.376071 Received DATA (on stdin)
 19:26:20.376081 > 33 bytes data, server => client
 19:26:20.376091 '331 We are happy you popped in!\r\n'
 19:26:20.376139 < 22 bytes data, client => server
 19:26:20.376149 'PASS ftp@example.com\r\n'
 19:26:20.376244 Received DATA (on stdin)
 19:26:20.376253 > 30 bytes data, server => client
 19:26:20.376263 '230 Welcome you silly person\r\n'
 19:26:20.376305 < 5 bytes data, client => server
 19:26:20.376314 'PWD\r\n'
 19:26:20.376407 Received DATA (on stdin)
 19:26:20.376416 > 30 bytes data, server => client
 19:26:20.376425 '257 "/" is current directory\r\n'
 19:26:20.376478 < 6 bytes data, client => server
 19:26:20.376491 'EPSV\r\n'
 19:26:20.389190 Received DATA (on stdin)
 19:26:20.389211 > 39 bytes data, server => client
 19:26:20.389221 '229 Entering Passive Mode (|||44975|)\r\n'
 19:26:20.389437 < 8 bytes data, client => server
 19:26:20.389454 'TYPE I\r\n'
 19:26:20.389721 Received DATA (on stdin)
 19:26:20.389733 > 33 bytes data, server => client
 19:26:20.389743 '200 I modify TYPE as you wanted\r\n'
 19:26:20.389806 < 21 bytes data, client => server
 19:26:20.389818 'SIZE verifiedserver\r\n'
 19:26:20.389961 Received DATA (on stdin)
 19:26:20.389972 > 8 bytes data, server => client
 19:26:20.389982 '213 17\r\n'
 19:26:20.391315 < 21 bytes data, client => server
 19:26:20.391332 'RETR verifiedserver\r\n'
 19:26:20.391583 Received DATA (on stdin)
 19:26:20.391595 > 29 bytes data, server => client
 19:26:20.391605 '150 Binary junk (17 bytes).\r\n'
 19:26:20.392400 Received DATA (on stdin)
 19:26:20.392411 > 28 bytes data, server => client
 19:26:20.392421 '226 File transfer complete\r\n'
 19:26:20.438966 < 6 bytes data, client => server
 19:26:20.439001 'QUIT\r\n'
 19:26:20.439233 Received DATA (on stdin)
 19:26:20.439247 > 18 bytes data, server => client
 19:26:20.439257 '221 bye bye baby\r\n'
 19:26:20.445451 ====> Client disconnect
 19:26:20.446204 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.382453 Running IPv4 version
 19:26:20.382544 Listening on port 44975
 19:26:20.382587 Wrote pid 86703 to log/15/server/ftp_sockdata.pid
 19:26:20.388782 Received PING (on stdin)
 19:26:20.388939 Received PORT (on stdin)
 19:26:20.389476 ====> Client connect
 19:26:20.391857 Received DATA (on stdin)
 19:26:20.391873 > 17 bytes data, server => client
 19:26:20.391883 'WE ROOLZ: 84744\r\n'
 19:26:20.391915 Received DISC (on stdin)
 19:26:20.391927 ====> Client forcibly disconnected
 19:26:20.392089 Received QUIT (on stdin)
 19:26:20.392101 quits
 19:26:20.392182 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc134
 # the following two lines were created while testing curl
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
=== End of file netrc134
=== Start of file server.cmd
 Testnum 134
=== End of file server.cmd
=== Start of file valgrind134
 ==86813== 
 ==86813== Process terminating with default action of signal 4 (SIGILL)
 ==86813==  Illegal opcode at address 0x492B75F
 ==86813==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86813==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86813==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86813==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86813==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86813==    by 0x49908EB: curl_version_info (version.c:600)
 ==86813==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86813==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86813==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86813==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind134
test 013CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind133 ../src/curl -q --output log/11/curl133.out  --include --trace-ascii log/11/trace133 --trace-time -n --netrc-file log/11/netrc133 ftp://mary:mark@127.0.0.1:37735/ > log/11/stdout133 2> log/11/stderr133
5 [FTP retrieve a byte-range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind135 ../src/curl -q --output log/20/curl135.out  --include --trace-ascii log/20/trace135 --trace-time -r 4-16 ftp://127.0.0.1:41549/135 > log/20/stdout135 2> log/20/stderr135

 135: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 135
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind135 ../src/curl -q --output log/20/curl135.out  --include --trace-ascii log/20/trace135 --trace-time -r 4-16 ftp://127.0.0.1:41549/135 > log/20/stdout135 2> log/20/stderr135
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.926931 ====> Client connect
 19:26:20.927209 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.927531 < "USER anonymous"
 19:26:20.927566 > "331 We are happy you popped in![CR][LF]"
 19:26:20.927745 < "PASS ftp@example.com"
 19:26:20.927774 > "230 Welcome you silly person[CR][LF]"
 19:26:20.927939 < "PWD"
 19:26:20.927970 > "257 "/" is current directory[CR][LF]"
 19:26:20.928144 < "EPSV"
 19:26:20.928173 ====> Passive DATA channel requested by client
 19:26:20.928188 DATA sockfilt for passive data channel starting...
 19:26:20.942052 DATA sockfilt for passive data channel started (pid 86807)
 19:26:20.942279 DATA sockfilt for passive data channel listens on port 45665
 19:26:20.942332 > "229 Entering Passive Mode (|||45665|)[CR][LF]"
 19:26:20.942348 Client has been notified that upcoming DATA connection is awaited on port 45665
 19:26:20.952097 Client connects to port 45665
 19:26:20.952172 ====> Client established passive DATA connection on port 45665
 19:26:20.952304 < "TYPE I"
 19:26:20.952348 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.952541 < "SIZE verifiedserver"
 19:26:20.952581 > "213 17[CR][LF]"
 19:26:20.952750 < "RETR verifiedserver"
 19:26:20.952787 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.952899 =====> Closing passive DATA connection...
 19:26:20.952920 Server disconnects passive DATA connection
 19:26:20.953086 Server disconnected passive DATA connection
 19:26:20.953111 DATA sockfilt for passive data channel quits (pid 86807)
 19:26:20.953429 DATA sockfilt for passive data channel quit (pid 86807)
 19:26:20.953456 =====> Closed passive DATA connection
 19:26:20.953485 > "226 File transfer complete[CR][LF]"
 19:26:20.996046 < "QUIT"
 19:26:20.996099 > "221 bye bye baby[CR][LF]"
 19:26:20.996584 MAIN sockfilt said DISC
 19:26:20.996615 ====> Client disconnected
 19:26:20.996700 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.526920 ====> Client connect
 19:26:20.527351 Received DATA (on stdin)
 19:26:20.527366 > 146 bytes data, server => client
 19:26:20.527378 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.527389 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.527398 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.527480 < 16 bytes data, client => server
 19:26:20.527493 'USER anonymous\r\n'
 19:26:20.527695 Received DATA (on stdin)
 19:26:20.527707 > 33 bytes data, server => client
 19:26:20.527717 '331 We are happy you popped in!\r\n'
 19:26:20.527771 < 22 bytes data, client => server
 19:26:20.527782 'PASS ftp@example.com\r\n'
 19:26:20.527900 Received DATA (on stdin)
 19:26:20.527911 > 30 bytes data, server => client
 19:26:20.527921 '230 Welcome you silly person\r\n'
 19:26:20.527975 < 5 bytes data, client => server
 19:26:20.527987 'PWD\r\n'
 19:26:20.528096 Received DATA (on stdin)
 19:26:20.528107 > 30 bytes data, server => client
 19:26:20.528117 '257 "/" is current directory\r\n'
 19:26:20.528181 < 6 bytes data, client => server
 19:26:20.528193 'EPSV\r\n'
 19:26:20.548814 Received DATA (on stdin)
 19:26:20.548865 > 39 bytes data, server => client
 19:26:20.548878 '229 Entering Passive Mode (|||45665|)\r\n'
 19:26:20.549158 < 8 bytes data, client => server
 19:26:20.549175 'TYPE I\r\n'
 19:26:20.552482 Received DATA (on stdin)
 19:26:20.552494 > 33 bytes data, server => client
 19:26:20.552505 '200 I modify TYPE as you wanted\r\n'
 19:26:20.552575 < 21 bytes data, client => server
 19:26:20.552589 'SIZE verifiedserver\r\n'
 19:26:20.552713 Received DATA (on stdin)
 19:26:20.552725 > 8 bytes data, server => client
 19:26:20.552735 '213 17\r\n'
 19:26:20.552791 < 21 bytes data, client => server
 19:26:20.552803 'RETR verifiedserver\r\n'
 19:26:20.553055 Received DATA (on stdin)
 19:26:20.553067 > 29 bytes data, server => client
 19:26:20.553077 '150 Binary junk (17 bytes).\r\n'
 19:26:20.553617 Received DATA (on stdin)
 19:26:20.553628 > 28 bytes data, server => client
 19:26:20.553638 '226 File transfer complete\r\n'
 19:26:20.596007 < 6 bytes data, client => server
 19:26:20.596030 'QUIT\r\n'
 19:26:20.596244 Received DATA (on stdin)
 19:26:20.596255 > 18 bytes data, server => client
 19:26:20.596265 '221 bye bye baby\r\n'
 19:26:20.596668 ====> Client disconnect
 19:26:20.596844 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.533074 Running IPv4 version
 19:26:20.533162 Listening on port 45665
 19:26:20.533200 Wrote pid 86807 to log/20/server/ftp_sockdata.pid
 19:26:20.533227 Received PING (on stdin)
 19:26:20.542283 Received PORT (on stdin)
 19:26:20.552149 ====> Client connect
 19:26:20.553105 Received DATA (on stdin)
 19:26:20.553117 > 17 bytes data, server => client
 19:26:20.553127 'WE ROOLZ: 84833\r\n'
 19:26:20.553152 Received DISC (on stdin)
 19:26:20.553165 ====> Client forcibly disconnected
 19:26:20.553249 Received QUIT (on stdin)
 19:26:20.553259 quits
 19:26:20.553350 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 135
=== End of file server.cmd
=== Start of file valgrind135
 ==86830== 
 ==86830== Process terminating with default action of signal 4 (SIGILL)
 ==86830==  Illegal opcode at address 0x492B75F
 ==86830==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86830==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86830==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86830==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86830==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86830==    by 0x49908EB: curl_version_info (version.c:600)
 ==86830==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86830==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind135
test 0133 [FTP compulsory .netrc; ignore passwd in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind133 ../src/curl -q --output log/11/curl133.out  --include --trace-ascii log/11/trace133 --trace-time -n --netrc-file log/11/netrc133 ftp://mary:mark@127.0.0.1:37735/ > log/11/stdout133 2> log/11/stderr133

 133: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 133
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind133 ../src/curl -q --output log/11/curl133.out  --include --trace-ascii log/11/trace133 --trace-time -n --netrc-file log/11/netrc133 ftp://mary:mark@127.0.0.1:37735/ > log/11/stdout133 2> log/11/stderr133
=== End of file commands.log
=== Start of fiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind138 ../src/curl -q --output log/13/curl138.out  --include --trace-ascii log/13/trace138 --trace-time ftp://127.0.0.1:36047/blalbla/lululul/138 > log/13/stdout138 2> log/13/stderr138
le ftp_server.log
 19:26:20.632385 ====> Client connect
 19:26:20.632603 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.632931 < "USER anonymous"
 19:26:20.632976 > "331 We are happy you popped in![CR][LF]"
 19:26:20.633174 < "PASS ftp@example.com"
 19:26:20.633207 > "230 Welcome you silly person[CR][LF]"
 19:26:20.633387 < "PWD"
 19:26:20.633428 > "257 "/" is current directory[CR][LF]"
 19:26:20.633607 < "EPSV"
 19:26:20.633642 ====> Passive DATA channel requested by client
 19:26:20.633656 DATA sockfilt for passive data channel starting...
 19:26:20.636910 DATA sockfilt for passive data channel started (pid 86620)
 19:26:20.638390 DATA sockfilt for passive data channel listens on port 37813
 19:26:20.638455 > "229 Entering Passive Mode (|||37813|)[CR][LF]"
 19:26:20.638475 Client has been notified that upcoming DATA connection is awaited on port 37813
 19:26:20.638929 Client connects to port 37813
 19:26:20.638966 ====> Client established passive DATA connection on port 37813
 19:26:20.639067 < "TYPE I"
 19:26:20.639107 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:20.641110 < "SIZE verifiedserver"
 19:26:20.641154 > "213 17[CR][LF]"
 19:26:20.641305 < "RETR verifiedserver"
 19:26:20.641339 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:20.641432 =====> Closing passive DATA connection...
 19:26:20.641453 Server disconnects passive DATA connection
 19:26:20.643393 Server disconnected passive DATA connection
 19:26:20.643425 DATA sockfilt for passive data channel quits (pid 86620)
 19:26:20.655389 DATA sockfilt for passive data channel quit (pid 86620)
 19:26:20.655461 =====> Closed passive DATA connection
 19:26:20.655504 > "226 File transfer complete[CR][LF]"
 19:26:20.692297 < "QUIT"
 19:26:20.692354 > "221 bye bye baby[CR][LF]"
 19:26:20.693532 MAIN sockfilt said DISC
 19:26:20.693574 ====> Client disconnected
 19:26:20.693652 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.232291 ====> Client connect
 19:26:20.232673 Received DATA (on stdin)
 19:26:20.232691 > 146 bytes data, server => client
 19:26:20.232702 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.232712 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.232720 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.232802 < 16 bytes data, client => server
 19:26:20.232818 'USER anonymous\r\n'
 19:26:20.233034 Received DATA (on stdin)
 19:26:20.233046 > 33 bytes data, server => client
 19:26:20.233056 '331 We are happy you popped in!\r\n'
 19:26:20.233113 < 22 bytes data, client => server
 19:26:20.233126 'PASS ftp@example.com\r\n'
 19:26:20.233261 Received DATA (on stdin)
 19:26:20.233274 > 30 bytes data, server => client
 19:26:20.233284 '230 Welcome you silly person\r\n'
 19:26:20.233342 < 5 bytes data, client => server
 19:26:20.233354 'PWD\r\n'
 19:26:20.233484 Received DATA (on stdin)
 19:26:20.233495 > 30 bytes data, server => client
 19:26:20.233505 '257 "/" is current directory\r\n'
 19:26:20.233571 < 6 bytes data, client => server
 19:26:20.233582 'EPSV\r\n'
 19:26:20.238732 Received DATA (on stdin)
 19:26:20.238756 > 39 bytes data, server => client
 19:26:20.238768 '229 Entering Passive Mode (|||37813|)\r\n'
 19:26:20.238962 < 8 bytes data, client => server
 19:26:20.238980 'TYPE I\r\n'
 19:26:20.240971 Received DATA (on stdin)
 19:26:20.240989 > 33 bytes data, server => client
 19:26:20.240999 '200 I modify TYPE as you wanted\r\n'
 19:26:20.241062 < 21 bytes data, client => server
 19:26:20.241072 'SIZE verifiedserver\r\n'
 19:26:20.241206 Received DATA (on stdin)
 19:26:20.241216 > 8 bytes data, server => client
 19:26:20.241224 '213 17\r\n'
 19:26:20.241275 < 21 bytes data, client => server
 19:26:20.241285 'RETR verifiedserver\r\n'
 19:26:20.241510 Received DATA (on stdin)
 19:26:20.241523 > 29 bytes data, server => client
 19:26:20.241533 '150 Binary junk (17 bytes).\r\n'
 19:26:20.255571 Received DATA (on stdin)
 19:26:20.255590 > 28 bytes data, server => client
 19:26:20.255599 '226 File transfer complete\r\n'
 19:26:20.292180 < 6 bytes data, client => server
 19:26:20.292209 'QUIT\r\n'
 19:26:20.292426 Received DATA (on stdin)
 19:26:20.292436 > 18 bytes data, server => client
 19:26:20.292446 '221 bye bye baby\r\n'
 19:26:20.293528 ====> Client disconnect
 19:26:20.293719 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.236756 Running IPv4 version
 19:26:20.236844 Listening on port 37813
 19:26:20.236885 Wrote pid 86620 to log/11/server/ftp_sockdata.pid
 19:26:20.236906 Received PING (on stdin)
 19:26:20.237915 Received PORT (on stdin)
 19:26:20.238924 ====> Client connect
 19:26:20.241402 Received DATA (on stdin)
 19:26:20.241422 > 17 bytes data, server => client
 19:26:20.241434 'WE ROOLZ: 84823\r\n'
 19:26:20.242039 Received DISC (on stdin)
 19:26:20.242060 ====> Client forcibly disconnected
 19:26:20.243483 Received QUIT (on stdin)
 19:26:20.243501 quits
 19:26:20.243574 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc133
 # the following two lines were created while testing curl
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login mary password drfrank
=== End of file netrc133
=== Start of file server.cmd
 Testnum 133
=== End of file server.cmd
=== Start of file valgrind133
 ==86666== 
 ==86666== Process terminating with default action of signal 4 (SIGILL)
 ==86666==  Illegal opcode at address 0x492B75F
 ==86666==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86666==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86666==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86666==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86666==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86666==    by 0x49908EB: curl_version_info (version.c:600)
 ==86666==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86666==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86666==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86666==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind133
test 0138 [FTP download without size in RETR string and no SIZE command]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind138 ../src/curl -q --output log/13/curl138.out  --include --trace-ascii log/13/trace138 --trace-time ftp://127.0.0.1:36047/blalbla/lululul/138 > log/13/stdout138 2> log/13/stderr138

 138: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 138
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind138 ../src/curl -q --output log/13/curl138.out  --include --trace-ascii log/13/trace138 --trace-time ftp://127.0.0.1:36047/blalbla/lululul/138 > log/13/stdout138 2> log/13/stderr138
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.335508 ====> Client connect
 19:26:21.335750 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.348974 < "USER anonymous"
 19:26:21.349036 > "331 We are happy you popped in![CR][LF]"
 19:26:21.349282 < "PASS ftp@example.com"
 19:26:21.349317 > "230 Welcome you silly person[CR][LF]"
 19:26:21.349491 < "PWD"
 19:26:21.349526 > "257 "/" is current directory[CR][LF]"
 19:26:21.349712 < "EPSV"
 19:26:21.349743 ====> Passive DATA channel requested by client
 19:26:21.349760 DATA sockfilt for passive data channel starting...
 19:26:21.358904 DATA sockfilt for passive data channel started (pid 87035)
 19:26:21.359052 DATA sockfilt for passive data channel listens on porCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind137 ../src/curl -q --output log/14/curl137.out  --include --trace-ascii log/14/trace137 --trace-time ftp://127.0.0.1:37411/blalbla/lululul/137 > log/14/stdout137 2> log/14/stderr137
t 38401
 19:26:21.359109 > "229 Entering Passive Mode (|||38401|)[CR][LF]"
 19:26:21.359129 Client has been notified that upcoming DATA connection is awaited on port 38401
 19:26:21.359454 Client connects to port 38401
 19:26:21.359484 ====> Client established passive DATA connection on port 38401
 19:26:21.359575 < "TYPE I"
 19:26:21.359608 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.359777 < "SIZE verifiedserver"
 19:26:21.359818 > "213 17[CR][LF]"
 19:26:21.359991 < "RETR verifiedserver"
 19:26:21.360033 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.360126 =====> Closing passive DATA connection...
 19:26:21.360143 Server disconnects passive DATA connection
 19:26:21.360377 Server disconnected passive DATA connection
 19:26:21.360407 DATA sockfilt for passive data channel quits (pid 87035)
 19:26:21.360670 DATA sockfilt for passive data channel quit (pid 87035)
 19:26:21.360699 =====> Closed passive DATA connection
 19:26:21.360728 > "226 File transfer complete[CR][LF]"
 19:26:21.409001 < "QUIT"
 19:26:21.409056 > "221 bye bye baby[CR][LF]"
 19:26:21.410174 MAIN sockfilt said DISC
 19:26:21.410216 ====> Client disconnected
 19:26:21.410293 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.935592 ====> Client connect
 19:26:21.935992 Received DATA (on stdin)
 19:26:21.936007 > 146 bytes data, server => client
 19:26:21.936018 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.936028 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.936038 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.948914 < 16 bytes data, client => server
 19:26:21.948954 'USER anonymous\r\n'
 19:26:21.949276 Received DATA (on stdin)
 19:26:21.949289 > 33 bytes data, server => client
 19:26:21.949300 '331 We are happy you popped in!\r\n'
 19:26:21.949406 < 22 bytes data, client => server
 19:26:21.949423 'PASS ftp@example.com\r\n'
 19:26:21.949550 Received DATA (on stdin)
 19:26:21.949562 > 30 bytes data, server => client
 19:26:21.949572 '230 Welcome you silly person\r\n'
 19:26:21.949628 < 5 bytes data, client => server
 19:26:21.949642 'PWD\r\n'
 19:26:21.949759 Received DATA (on stdin)
 19:26:21.949771 > 30 bytes data, server => client
 19:26:21.949782 '257 "/" is current directory\r\n'
 19:26:21.949851 < 6 bytes data, client => server
 19:26:21.949865 'EPSV\r\n'
 19:26:21.959373 Received DATA (on stdin)
 19:26:21.959390 > 39 bytes data, server => client
 19:26:21.959401 '229 Entering Passive Mode (|||38401|)\r\n'
 19:26:21.959633 < 8 bytes data, client => server
 19:26:21.959645 'TYPE I\r\n'
 19:26:21.959843 Received DATA (on stdin)
 19:26:21.959854 > 33 bytes data, server => client
 19:26:21.959865 '200 I modify TYPE as you wanted\r\n'
 19:26:21.959921 < 21 bytes data, client => server
 19:26:21.959933 'SIZE verifiedserver\r\n'
 19:26:21.960056 Received DATA (on stdin)
 19:26:21.960068 > 8 bytes data, server => client
 19:26:21.960078 '213 17\r\n'
 19:26:21.960132 < 21 bytes data, client => server
 19:26:21.960145 'RETR verifiedserver\r\n'
 19:26:21.960464 Received DATA (on stdin)
 19:26:21.960477 > 29 bytes data, server => client
 19:26:21.960487 '150 Binary junk (17 bytes).\r\n'
 19:26:21.960963 Received DATA (on stdin)
 19:26:21.960975 > 28 bytes data, server => client
 19:26:21.960985 '226 File transfer complete\r\n'
 19:26:22.009060 < 6 bytes data, client => server
 19:26:22.009091 'QUIT\r\n'
 19:26:22.009305 Received DATA (on stdin)
 19:26:22.009316 > 18 bytes data, server => client
 19:26:22.009325 '221 bye bye baby\r\n'
 19:26:22.010352 ====> Client disconnect
 19:26:22.010537 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.956961 Running IPv4 version
 19:26:21.957066 Listening on port 38401
 19:26:21.957108 Wrote pid 87035 to log/13/server/ftp_sockdata.pid
 19:26:21.959064 Received PING (on stdin)
 19:26:21.959181 Received PORT (on stdin)
 19:26:21.959604 ====> Client connect
 19:26:21.960378 Received DATA (on stdin)
 19:26:21.960390 > 17 bytes data, server => client
 19:26:21.960399 'WE ROOLZ: 84987\r\n'
 19:26:21.960427 Received DISC (on stdin)
 19:26:21.960439 ====> Client forcibly disconnected
 19:26:21.960649 Received QUIT (on stdin)
 19:26:21.960660 quits
 19:26:21.960720 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 RETRNOSIZE
 REPLY SIZE 500 command not understood
 Testnum 138
=== End of file server.cmd
=== Start of file valgrind138
 ==87061== 
 ==87061== Process terminating with default action of signal 4 (SIGILL)
 ==87061==  Illegal opcode at address 0x492B75F
 ==87061==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87061==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87061==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87061==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87061==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87061==    by 0x49908EB: curl_version_info (version.c:600)
 ==87061==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87061==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87061==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87061==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind138
test 0137 [FTP download without size in RETR string]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind137 ../src/curl -q --output log/14/curl137.out  --include --trace-ascii log/14/trace137 --trace-time ftp://127.0.0.1:37411/blalbla/lululul/137 > log/14/stdout137 2> log/14/stderr137

 137: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 137
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind137 ../src/curl -q --output log/14/curl137.out  --include --trace-ascii log/14/trace137 --trace-time ftp://127.0.0.1:37411/blalbla/lululul/137 > log/14/stdout137 2> log/14/stderr137
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.128715 ====> Client connect
 19:26:21.128970 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.133577 < "USER anonymous"
 19:26:21.133625 > "331 We are happy you popped in![CR][LF]"
 19:26:21.133830 < "PASS ftp@example.com"
 19:26:21.133864 > "230 Welcome you silly person[CR][LF]"
 19:26:21.134040 < "PWD"
 19:26:21.134075 > "257 "/" is current directory[CR][LF]"
 19:26:21.134252 < "EPSV"
 19:26:21.134281 ====> Passive DATA channel requested by client
 19:26:21.134296 DATA sockfilt for passive data channel starting...
 19:26:21.145382 DATA sockfilt for passive data channel started (pid 86900)
 19:26:21.152094 DATA sockfilt for passive data channel listens on port 34009
 19:26:21.152162 > "229 Entering Passive Mode (|||34009|)[CR][LF]"
 19:26:21.152178 Client has been notified that upcoming DATA connection is awaited on port 34009
 19:26:21.155367 Client connects to port 34009
 19:26:21.155422 ====> Client established passive DATA connection on port 34009
 19:26:21.155548 < "TYPE I"
 19:26:21.155596 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.155834 < "SIZE verifiedserver"
 19:26:21.155882 > "213 17[CR][LF]"
 19:26:21.156086 < "RETR verifiedserver"
 19:26:21.156128 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.156239 =====> Closing passive DATA connection...
 19:26:21.156259 Server disconnects passive DATA connection
 19:26:21.156512 Server disconnected passive DATA connection
 19:26:21.156542 DATA sockfilt for passive data channel quits (pid 86900)
 19:26:21.156837 DATA sockfilt for passive data channel quit (pid 86900)
 19:26:21.156863 =====> Closed passive DATA connection
 19:26:21.156895 > "226 File transfer complete[CR][LF]"
 19:26:21.20CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind139 ../src/curl -q --output log/1/curl139.out  --include --trace-ascii log/1/trace139 --trace-time ftp://127.0.0.1:40221/blalbla/139 -z "1 jan 1989" > log/1/stdout139 2> log/1/stderr139
5696 < "QUIT"
 19:26:21.205767 > "221 bye bye baby[CR][LF]"
 19:26:21.207232 MAIN sockfilt said DISC
 19:26:21.207274 ====> Client disconnected
 19:26:21.207370 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.725521 ====> Client connect
 19:26:21.732180 Received DATA (on stdin)
 19:26:21.732212 > 146 bytes data, server => client
 19:26:21.732225 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.732235 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.732245 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.733540 < 16 bytes data, client => server
 19:26:21.733562 'USER anonymous\r\n'
 19:26:21.733808 Received DATA (on stdin)
 19:26:21.733822 > 33 bytes data, server => client
 19:26:21.733832 '331 We are happy you popped in!\r\n'
 19:26:21.733897 < 22 bytes data, client => server
 19:26:21.733910 'PASS ftp@example.com\r\n'
 19:26:21.734043 Received DATA (on stdin)
 19:26:21.734055 > 30 bytes data, server => client
 19:26:21.734065 '230 Welcome you silly person\r\n'
 19:26:21.734122 < 5 bytes data, client => server
 19:26:21.734134 'PWD\r\n'
 19:26:21.734252 Received DATA (on stdin)
 19:26:21.734263 > 30 bytes data, server => client
 19:26:21.734273 '257 "/" is current directory\r\n'
 19:26:21.734340 < 6 bytes data, client => server
 19:26:21.734352 'EPSV\r\n'
 19:26:21.752366 Received DATA (on stdin)
 19:26:21.752383 > 39 bytes data, server => client
 19:26:21.752392 '229 Entering Passive Mode (|||34009|)\r\n'
 19:26:21.752571 < 8 bytes data, client => server
 19:26:21.752584 'TYPE I\r\n'
 19:26:21.755789 Received DATA (on stdin)
 19:26:21.755806 > 33 bytes data, server => client
 19:26:21.755818 '200 I modify TYPE as you wanted\r\n'
 19:26:21.755901 < 21 bytes data, client => server
 19:26:21.755917 'SIZE verifiedserver\r\n'
 19:26:21.756072 Received DATA (on stdin)
 19:26:21.756086 > 8 bytes data, server => client
 19:26:21.756095 '213 17\r\n'
 19:26:21.756163 < 21 bytes data, client => server
 19:26:21.756178 'RETR verifiedserver\r\n'
 19:26:21.756546 Received DATA (on stdin)
 19:26:21.756558 > 29 bytes data, server => client
 19:26:21.756568 '150 Binary junk (17 bytes).\r\n'
 19:26:21.757079 Received DATA (on stdin)
 19:26:21.757092 > 28 bytes data, server => client
 19:26:21.757102 '226 File transfer complete\r\n'
 19:26:21.805667 < 6 bytes data, client => server
 19:26:21.805707 'QUIT\r\n'
 19:26:21.805979 Received DATA (on stdin)
 19:26:21.805995 > 18 bytes data, server => client
 19:26:21.806006 '221 bye bye baby\r\n'
 19:26:21.807360 ====> Client disconnect
 19:26:21.807579 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.740723 Running IPv4 version
 19:26:21.740814 Listening on port 34009
 19:26:21.740853 Wrote pid 86900 to log/14/server/ftp_sockdata.pid
 19:26:21.743404 Received PING (on stdin)
 19:26:21.749549 Received PORT (on stdin)
 19:26:21.753248 ====> Client connect
 19:26:21.756448 Received DATA (on stdin)
 19:26:21.756466 > 17 bytes data, server => client
 19:26:21.756475 'WE ROOLZ: 85053\r\n'
 19:26:21.756506 Received DISC (on stdin)
 19:26:21.756517 ====> Client forcibly disconnected
 19:26:21.756736 Received QUIT (on stdin)
 19:26:21.756749 quits
 19:26:21.756816 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 RETRNOSIZE
 Testnum 137
=== End of file server.cmd
=== Start of file valgrind137
 ==86961== 
 ==86961== Process terminating with default action of signal 4 (SIGILL)
 ==86961==  Illegal opcode at address 0x492B75F
 ==86961==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86961==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86961==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86961==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86961==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86961==    by 0x49908EB: curl_version_info (version.c:600)
 ==86961==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86961==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86961==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86961==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind137
test 0139 [FTP download a newer file with -z]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind139 ../src/curl -q --output log/1/curl139.out  --include --trace-ascii log/1/trace139 --trace-time ftp://127.0.0.1:40221/blalbla/139 -z "1 jan 1989" > log/1/stdout139 2> log/1/stderr139

 139: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 139
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind139 ../src/curl -q --output log/1/curl139.out  --include --trace-ascii log/1/trace139 --trace-time ftp://127.0.0.1:40221/blalbla/139 -z "1 jan 1989" > log/1/stdout139 2> log/1/stderr139
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.501950 ====> Client connect
 19:26:21.502836 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.503251 < "USER anonymous"
 19:26:21.503298 > "331 We are happy you popped in![CR][LF]"
 19:26:21.503515 < "PASS ftp@example.com"
 19:26:21.503555 > "230 Welcome you silly person[CR][LF]"
 19:26:21.508928 < "PWD"
 19:26:21.508980 > "257 "/" is current directory[CR][LF]"
 19:26:21.509162 < "EPSV"
 19:26:21.509192 ====> Passive DATA channel requested by client
 19:26:21.509211 DATA sockfilt for passive data channel starting...
 19:26:21.513722 DATA sockfilt for passive data channel started (pid 87098)
 19:26:21.515457 DATA sockfilt for passive data channel listens on port 38885
 19:26:21.515516 > "229 Entering Passive Mode (|||38885|)[CR][LF]"
 19:26:21.515533 Client has been notified that upcoming DATA connection is awaited on port 38885
 19:26:21.522091 Client connects to port 38885
 19:26:21.522153 ====> Client established passive DATA connection on port 38885
 19:26:21.522275 < "TYPE I"
 19:26:21.522317 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.525618 < "SIZE verifiedserver"
 19:26:21.525680 > "213 17[CR][LF]"
 19:26:21.525863 < "RETR verifiedserver"
 19:26:21.525902 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.526005 =====> Closing passive DATA connection...
 19:26:21.526023 Server disconnects passive DATA connection
 19:26:21.526150 Server disconnected passive DATA connection
 19:26:21.526175 DATA sockfilt for passive data channel quits (pid 87098)
 19:26:21.526456 DATA sockfilt for passive data channel quit (pid 87098)
 19:26:21.526482 =====> Closed passive DATA connection
 19:26:21.526511 > "226 File transfer complete[CR][LF]"
 19:26:21.572278 < "QUIT"
 19:26:21.572331 > "221 bye bye baby[CR][LF]"
 19:26:21.573539 MAIN sockfilt said DISC
 19:26:21.573592 ====> Client disconnected
 19:26:21.573683 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:22.102014 ====> Client connect
 19:26:22.103138 Received DATA (on stdin)
 19:26:22.103158 > 146 bytes data, server => client
 19:26:22.103175 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:22.103189 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:22.103198 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:22.103299 < 16 bytes data, client => server
 19:26:22.103315 'USER anonymous\r\n'
 19:26:22.103577 Received DATA (on stdin)
 19:26:22.103591 > 33 bytes data, server => client
 19:26:22.103602 '331 We are happy you popped in!\r\n'
 19:26:22.103665 < 22 bytes data, client => server
 19:26:22.103679 'PASS ftp@example.com\r\n'
 19:26:22.108939 Received DATA (on stdin)
 19:26:22.108965 > 30 bytes data, server => client
 19:26:22.108976 '230 Welcome you silly CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind136 ../src/curl -q --output log/8/curl136.out  --include --trace-ascii log/8/trace136 --trace-time -u user: ftp://127.0.0.1:41879/136 > log/8/stdout136 2> log/8/stderr136
person\r\n'
 19:26:22.109059 < 5 bytes data, client => server
 19:26:22.109069 'PWD\r\n'
 19:26:22.109253 Received DATA (on stdin)
 19:26:22.109265 > 30 bytes data, server => client
 19:26:22.109275 '257 "/" is current directory\r\n'
 19:26:22.109344 < 6 bytes data, client => server
 19:26:22.109355 'EPSV\r\n'
 19:26:22.118948 Received DATA (on stdin)
 19:26:22.118980 > 39 bytes data, server => client
 19:26:22.118991 '229 Entering Passive Mode (|||38885|)\r\n'
 19:26:22.119185 < 8 bytes data, client => server
 19:26:22.119199 'TYPE I\r\n'
 19:26:22.125609 Received DATA (on stdin)
 19:26:22.125637 > 33 bytes data, server => client
 19:26:22.125648 '200 I modify TYPE as you wanted\r\n'
 19:26:22.125733 < 21 bytes data, client => server
 19:26:22.125745 'SIZE verifiedserver\r\n'
 19:26:22.125964 Received DATA (on stdin)
 19:26:22.125974 > 8 bytes data, server => client
 19:26:22.125984 '213 17\r\n'
 19:26:22.126040 < 21 bytes data, client => server
 19:26:22.126052 'RETR verifiedserver\r\n'
 19:26:22.126792 Received DATA (on stdin)
 19:26:22.126805 > 29 bytes data, server => client
 19:26:22.126815 '150 Binary junk (17 bytes).\r\n'
 19:26:22.126838 Received DATA (on stdin)
 19:26:22.126847 > 28 bytes data, server => client
 19:26:22.126858 '226 File transfer complete\r\n'
 19:26:22.172404 < 6 bytes data, client => server
 19:26:22.172428 'QUIT\r\n'
 19:26:22.172623 Received DATA (on stdin)
 19:26:22.172637 > 18 bytes data, server => client
 19:26:22.172648 '221 bye bye baby\r\n'
 19:26:22.173755 ====> Client disconnect
 19:26:22.173986 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.113641 Running IPv4 version
 19:26:21.113741 Listening on port 38885
 19:26:21.113783 Wrote pid 87098 to log/1/server/ftp_sockdata.pid
 19:26:21.113938 Received PING (on stdin)
 19:26:21.115615 Received PORT (on stdin)
 19:26:21.122285 ====> Client connect
 19:26:21.126304 Received DATA (on stdin)
 19:26:21.126321 > 17 bytes data, server => client
 19:26:21.126331 'WE ROOLZ: 84935\r\n'
 19:26:21.126361 Received DISC (on stdin)
 19:26:21.126371 ====> Client forcibly disconnected
 19:26:21.126457 Received QUIT (on stdin)
 19:26:21.126466 quits
 19:26:21.126548 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 139
=== End of file server.cmd
=== Start of file valgrind139
 ==87138== 
 ==87138== Process terminating with default action of signal 4 (SIGILL)
 ==87138==  Illegal opcode at address 0x492B75F
 ==87138==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87138==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87138==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87138==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87138==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87138==    by 0x49908EB: curl_version_info (version.c:600)
 ==87138==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87138==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87138==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87138==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind139
test 0136 [FTP with user and no password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind136 ../src/curl -q --output log/8/curl136.out  --include --trace-ascii log/8/trace136 --trace-time -u user: ftp://127.0.0.1:41879/136 > log/8/stdout136 2> log/8/stderr136

 136: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 136
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind136 ../src/curl -q --output log/8/curl136.out  --include --trace-ascii log/8/trace136 --trace-time -u user: ftp://127.0.0.1:41879/136 > log/8/stdout136 2> log/8/stderr136
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:20.972188 ====> Client connect
 19:26:20.972478 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:20.972855 < "USER anonymous"
 19:26:20.972906 > "331 We are happy you popped in![CR][LF]"
 19:26:20.973121 < "PASS ftp@example.com"
 19:26:20.973158 > "230 Welcome you silly person[CR][LF]"
 19:26:20.973335 < "PWD"
 19:26:20.973375 > "257 "/" is current directory[CR][LF]"
 19:26:20.973568 < "EPSV"
 19:26:20.973604 ====> Passive DATA channel requested by client
 19:26:20.973624 DATA sockfilt for passive data channel starting...
 19:26:20.992060 DATA sockfilt for passive data channel started (pid 86818)
 19:26:20.998800 DATA sockfilt for passive data channel listens on port 35235
 19:26:20.998903 > "229 Entering Passive Mode (|||35235|)[CR][LF]"
 19:26:20.998929 Client has been notified that upcoming DATA connection is awaited on port 35235
 19:26:21.005391 Client connects to port 35235
 19:26:21.005459 ====> Client established passive DATA connection on port 35235
 19:26:21.005598 < "TYPE I"
 19:26:21.005649 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.005908 < "SIZE verifiedserver"
 19:26:21.005958 > "213 17[CR][LF]"
 19:26:21.006164 < "RETR verifiedserver"
 19:26:21.006210 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.006327 =====> Closing passive DATA connection...
 19:26:21.006353 Server disconnects passive DATA connection
 19:26:21.008851 Server disconnected passive DATA connection
 19:26:21.008884 DATA sockfilt for passive data channel quits (pid 86818)
 19:26:21.009204 DATA sockfilt for passive data channel quit (pid 86818)
 19:26:21.009235 =====> Closed passive DATA connection
 19:26:21.009274 > "226 File transfer complete[CR][LF]"
 19:26:21.052348 < "QUIT"
 19:26:21.052403 > "221 bye bye baby[CR][LF]"
 19:26:21.054069 MAIN sockfilt said DISC
 19:26:21.054114 ====> Client disconnected
 19:26:21.054184 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:20.572164 ====> Client connect
 19:26:20.572644 Received DATA (on stdin)
 19:26:20.572663 > 146 bytes data, server => client
 19:26:20.572674 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:20.572684 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:20.572693 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:20.572796 < 16 bytes data, client => server
 19:26:20.572812 'USER anonymous\r\n'
 19:26:20.573051 Received DATA (on stdin)
 19:26:20.573064 > 33 bytes data, server => client
 19:26:20.573074 '331 We are happy you popped in!\r\n'
 19:26:20.573138 < 22 bytes data, client => server
 19:26:20.573153 'PASS ftp@example.com\r\n'
 19:26:20.573298 Received DATA (on stdin)
 19:26:20.573309 > 30 bytes data, server => client
 19:26:20.573319 '230 Welcome you silly person\r\n'
 19:26:20.573376 < 5 bytes data, client => server
 19:26:20.573387 'PWD\r\n'
 19:26:20.573515 Received DATA (on stdin)
 19:26:20.573526 > 30 bytes data, server => client
 19:26:20.573536 '257 "/" is current directory\r\n'
 19:26:20.573604 < 6 bytes data, client => server
 19:26:20.573619 'EPSV\r\n'
 19:26:20.599096 Received DATA (on stdin)
 19:26:20.599116 > 39 bytes data, server => client
 19:26:20.599129 '229 Entering Passive Mode (|||35235|)\r\n'
 19:26:20.599347 < 8 bytes data, client => server
 19:26:20.599367 'TYPE I\r\n'
 19:26:20.605807 Received DATA (on stdin)
 19:26:20.605825 > 33 bytes data, server => client
 19:26:20.605837 '200 I modify TYPE as you wanted\r\n'
 19:26:20.605939 < 21 bytes data, client => server
 19:26:20.605955 'SIZE verifiedserver\r\n'
 19:26:20.606110 Received DATA (on stdin)
 19:26:20.606124 > 8 bytes data, server => client
 19:26:20.606134 '213 17\r\n'
 19:26:20.606201 < 21 bytes data, client => server
 19:26:20.606217 'RETR verifiedserver\r\n'
 19:26:20.606503 Received DATA (on stdin)
 19:26:20.606516 > 29 bytes data, server => client
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind140 ../src/curl -q --output log/24/curl140.out  --include --trace-ascii log/24/trace140 --trace-time ftp://127.0.0.1:37215/blalbla/140 -z "1 jan 2004" > log/24/stdout140 2> log/24/stderr140
6:20.606528 '150 Binary junk (17 bytes).\r\n'
 19:26:20.612254 Received DATA (on stdin)
 19:26:20.612279 > 28 bytes data, server => client
 19:26:20.612291 '226 File transfer complete\r\n'
 19:26:20.652308 < 6 bytes data, client => server
 19:26:20.652339 'QUIT\r\n'
 19:26:20.652563 Received DATA (on stdin)
 19:26:20.652575 > 18 bytes data, server => client
 19:26:20.652585 '221 bye bye baby\r\n'
 19:26:20.653715 ====> Client disconnect
 19:26:20.654345 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:20.583024 Running IPv4 version
 19:26:20.583133 Listening on port 35235
 19:26:20.583177 Wrote pid 86818 to log/8/server/ftp_sockdata.pid
 19:26:20.588824 Received PING (on stdin)
 19:26:20.595477 Received PORT (on stdin)
 19:26:20.602568 ====> Client connect
 19:26:20.608835 Received DATA (on stdin)
 19:26:20.608861 > 17 bytes data, server => client
 19:26:20.608873 'WE ROOLZ: 84824\r\n'
 19:26:20.608914 Received DISC (on stdin)
 19:26:20.608936 ====> Client forcibly disconnected
 19:26:20.609045 Received QUIT (on stdin)
 19:26:20.609059 quits
 19:26:20.609141 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 136
=== End of file server.cmd
=== Start of file valgrind136
 ==86885== 
 ==86885== Process terminating with default action of signal 4 (SIGILL)
 ==86885==  Illegal opcode at address 0x492B75F
 ==86885==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==86885==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==86885==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==86885==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==86885==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==86885==    by 0x49908EB: curl_version_info (version.c:600)
 ==86885==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==86885==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==86885==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==86885==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind136
test 0140 [FTP download file with -z, expected to not transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind140 ../src/curl -q --output log/24/curl140.out  --include --trace-ascii log/24/trace140 --trace-time ftp://127.0.0.1:37215/blalbla/140 -z "1 jan 2004" > log/24/stdout140 2> log/24/stderr140

 140: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 140
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind140 ../src/curl -q --output log/24/curl140.out  --include --trace-ascii log/24/trace140 --trace-time ftp://127.0.0.1:37215/blalbla/140 -z "1 jan 2004" > log/24/stdout140 2> log/24/stderr140
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.652148 ====> Client connect
 19:26:21.652361 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.652730 < "USER anonymous"
 19:26:21.652775 > "331 We are happy you popped in![CR][LF]"
 19:26:21.652976 < "PASS ftp@example.com"
 19:26:21.653007 > "230 Welcome you silly person[CR][LF]"
 19:26:21.653183 < "PWD"
 19:26:21.653218 > "257 "/" is current directory[CR][LF]"
 19:26:21.653397 < "EPSV"
 19:26:21.653430 ====> Passive DATA channel requested by client
 19:26:21.653447 DATA sockfilt for passive data channel starting...
 19:26:21.659541 DATA sockfilt for passive data channel started (pid 87172)
 19:26:21.659695 DATA sockfilt for passive data channel listens on port 45847
 19:26:21.659756 > "229 Entering Passive Mode (|||45847|)[CR][LF]"
 19:26:21.659781 Client has been notified that upcoming DATA connection is awaited on port 45847
 19:26:21.660120 Client connects to port 45847
 19:26:21.660155 ====> Client established passive DATA connection on port 45847
 19:26:21.660252 < "TYPE I"
 19:26:21.660293 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.660491 < "SIZE verifiedserver"
 19:26:21.660542 > "213 17[CR][LF]"
 19:26:21.660734 < "RETR verifiedserver"
 19:26:21.660775 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.660867 =====> Closing passive DATA connection...
 19:26:21.660887 Server disconnects passive DATA connection
 19:26:21.661161 Server disconnected passive DATA connection
 19:26:21.661192 DATA sockfilt for passive data channel quits (pid 87172)
 19:26:21.661447 DATA sockfilt for passive data channel quit (pid 87172)
 19:26:21.661478 =====> Closed passive DATA connection
 19:26:21.661511 > "226 File transfer complete[CR][LF]"
 19:26:21.708895 < "QUIT"
 19:26:21.708956 > "221 bye bye baby[CR][LF]"
 19:26:21.718708 MAIN sockfilt said DISC
 19:26:21.718785 ====> Client disconnected
 19:26:21.718879 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:22.252327 ====> Client connect
 19:26:22.252687 Received DATA (on stdin)
 19:26:22.252704 > 146 bytes data, server => client
 19:26:22.252716 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:22.252726 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:22.252736 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:22.252856 < 16 bytes data, client => server
 19:26:22.252870 'USER anonymous\r\n'
 19:26:22.253089 Received DATA (on stdin)
 19:26:22.253102 > 33 bytes data, server => client
 19:26:22.253112 '331 We are happy you popped in!\r\n'
 19:26:22.253177 < 22 bytes data, client => server
 19:26:22.253189 'PASS ftp@example.com\r\n'
 19:26:22.253318 Received DATA (on stdin)
 19:26:22.253329 > 30 bytes data, server => client
 19:26:22.253339 '230 Welcome you silly person\r\n'
 19:26:22.253397 < 5 bytes data, client => server
 19:26:22.253409 'PWD\r\n'
 19:26:22.253528 Received DATA (on stdin)
 19:26:22.253539 > 30 bytes data, server => client
 19:26:22.253549 '257 "/" is current directory\r\n'
 19:26:22.253615 < 6 bytes data, client => server
 19:26:22.253628 'EPSV\r\n'
 19:26:22.260104 Received DATA (on stdin)
 19:26:22.260121 > 39 bytes data, server => client
 19:26:22.260132 '229 Entering Passive Mode (|||45847|)\r\n'
 19:26:22.260338 < 8 bytes data, client => server
 19:26:22.260356 'TYPE I\r\n'
 19:26:22.260610 Received DATA (on stdin)
 19:26:22.260624 > 33 bytes data, server => client
 19:26:22.260635 '200 I modify TYPE as you wanted\r\n'
 19:26:22.260699 < 21 bytes data, client => server
 19:26:22.260715 'SIZE verifiedserver\r\n'
 19:26:22.260862 Received DATA (on stdin)
 19:26:22.260875 > 8 bytes data, server => client
 19:26:22.260886 '213 17\r\n'
 19:26:22.260944 < 21 bytes data, client => server
 19:26:22.260958 'RETR verifiedserver\r\n'
 19:26:22.261200 Received DATA (on stdin)
 19:26:22.261212 > 29 bytes data, server => client
 19:26:22.261223 '150 Binary junk (17 bytes).\r\n'
 19:26:22.261825 Received DATA (on stdin)
 19:26:22.261838 > 28 bytes data, server => client
 19:26:22.261848 '226 File transfer complete\r\n'
 19:26:22.309008 < 6 bytes data, client => server
 19:26:22.309045 'QUIT\r\n'
 19:26:22.309287 Received DATA (on stdin)
 19:26:22.309305 > 18 bytes data, server => client
 19:26:22.309315 '221 bye bye baby\r\n'
 19:26:22.315685 ====> Client disconnect
 19:26:22.322328 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.259620 Running IPv4 version
 19:26:21.259713 Listening on port 45847
 19:26:21.259760 Wrote pid 87172 to log/24/server/ftp_sockdata.pid
 19:26:21.259785 Received PING (on stdin)
 19:26:21.259898 Received PORT (on stdin)
 19:26:21.260380 ====> Client connect
 19:26:21.261288 Received DATA (on stdin)
 19:26:21.261304 > 17 bytes data, server => client
 19:26:21.261315 'WE ROOLZ: 85113\r\n'
 19:26:21.261345 Received DISC (on stdin)
 19:26:21.261359 ====> Client forcibly disconCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind142 ../src/curl -q --output log/2/curl142.out  --include --trace-ascii log/2/trace142 --trace-time ftp://127.0.0.1:38033/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/2/stdout142 2> log/2/stderr142
nected
 19:26:21.261512 Received QUIT (on stdin)
 19:26:21.261525 quits
 19:26:21.261595 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 140
=== End of file server.cmd
=== Start of file valgrind140
 ==87204== 
 ==87204== Process terminating with default action of signal 4 (SIGILL)
 ==87204==  Illegal opcode at address 0x492B75F
 ==87204==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87204==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87204==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87204==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87204==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87204==    by 0x49908EB: curl_version_info (version.c:600)
 ==87204==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87204==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87204==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87204==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind140
test 0142 [FTP URL with 150 dir levels]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind142 ../src/curl -q --output log/2/curl142.out  --include --trace-ascii log/2/trace142 --trace-time ftp://127.0.0.1:38033/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/2/stdout142 2> log/2/stderr142

 142: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 142
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind142 ../src/curl -q --output log/2/curl142.out  --include --trace-ascii log/2/trace142 --trace-time ftp://127.0.0.1:38033/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/2/stdout142 2> log/2/stderr142
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.958837 ====> Client connect
 19:26:21.959060 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.965495 < "USER anonymous"
 19:26:21.965543 > "331 We are happy you popped in![CR][LF]"
 19:26:21.965746 < "PASS ftp@example.com"
 19:26:21.965777 > "230 Welcome you silly person[CR][LF]"
 19:26:21.965939 < "PWD"
 19:26:21.965973 > "257 "/" is current directory[CR][LF]"
 19:26:21.966144 < "EPSV"
 19:26:21.966174 ====> Passive DATA channel requested by client
 19:26:21.966191 DATA sockfilt for passive data channel starting...
 19:26:21.977005 DATA sockfilt for passive data channel started (pid 87338)
 19:26:21.977143 DATA sockfilt for passive data channel listens on port 44167
 19:26:21.977191 > "229 Entering Passive Mode (|||44167|)[CR][LF]"
 19:26:21.977207 Client has been notified that upcoming DATA connection is awaited on port 44167
 19:26:21.977504 Client connects to port 44167
 19:26:21.977531 ====> Client established passive DATA connection on port 44167
 19:26:21.977620 < "TYPE I"
 19:26:21.977651 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.977800 < "SIZE verifiedserver"
 19:26:21.977833 > "213 17[CR][LF]"
 19:26:21.977970 < "RETR verifiedserver"
 19:26:21.978005 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.978089 =====> Closing passive DATA connection...
 19:26:21.978104 Server disconnects passive DATA connection
 19:26:21.978252 Server disconnected passive DATA connection
 19:26:21.978276 DATA sockfilt for passive data channel quits (pid 87338)
 19:26:21.978511 DATA sockfilt for passive data channel quit (pid 87338)
 19:26:21.978536 =====> Closed passive DATA connection
 19:26:21.978562 > "226 File transfer complete[CR][LF]"
 19:26:22.030745 < "QUIT"
 19:26:22.030808 > "221 bye bye baby[CR][LF]"
 19:26:22.032052 MAIN sockfilt said DISC
 19:26:22.032084 ====> Client disconnected
 19:26:22.032160 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.559065 ====> Client connect
 19:26:21.559459 Received DATA (on stdin)
 19:26:21.559474 > 146 bytes data, server => client
 19:26:21.559485 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.559495 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.559504 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.562462 < 16 bytes data, client => server
 19:26:21.562480 'USER anonymous\r\n'
 19:26:21.565935 Received DATA (on stdin)
 19:26:21.565948 > 33 bytes data, server => client
 19:26:21.565958 '331 We are happy you popped in!\r\n'
 19:26:21.566034 < 22 bytes data, client => server
 19:26:21.566047 'PASS ftp@example.com\r\n'
 19:26:21.566163 Received DATA (on stdin)
 19:26:21.566174 > 30 bytes data, server => client
 19:26:21.566184 '230 Welcome you silly person\r\n'
 19:26:21.566238 < 5 bytes data, client => server
 19:26:21.566249 'PWD\r\n'
 19:26:21.566359 Received DATA (on stdin)
 19:26:21.566370 > 30 bytes data, server => client
 19:26:21.566380 '257 "/" is current directory\r\n'
 19:26:21.566444 < 6 bytes data, client => server
 19:26:21.566455 'EPSV\r\n'
 19:26:21.577604 Received DATA (on stdin)
 19:26:21.577620 > 39 bytes data, server => client
 19:26:21.577631 '229 Entering Passive Mode (|||44167|)\r\n'
 19:26:21.577815 < 8 bytes data, client => server
 19:26:21.577828 'TYPE I\r\n'
 19:26:21.578040 Received DATA (on stdin)
 19:26:21.578051 > 33 bytes data, server => client
 19:26:21.578061 '200 I modify TYPE as you wanted\r\n'
 19:26:21.578110 < 21 bytes data, client => server
 19:26:21.578120 'SIZE verifiedserver\r\n'
 19:26:21.578219 Received DATA (on stdin)
 19:26:21.578229 > 8 bytes data, server => client
 19:26:21.578238 '213 17\r\n'
 19:26:21.578282 < 21 bytes data, client => server
 19:26:21.578291 'RETR verifiedserver\r\n'
 19:26:21.578573 Received DATA (on stdin)
 19:26:21.578584 > 29 bytes datCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind144 ../src/curl -q --output log/19/curl144.out  --include --trace-ascii log/19/trace144 --trace-time ftp://127.0.0.1:38555/ -P - -l > log/19/stdout144 2> log/19/stderr144
a, server => client
 19:26:21.578594 '150 Binary junk (17 bytes).\r\n'
 19:26:21.578951 Received DATA (on stdin)
 19:26:21.578962 > 28 bytes data, server => client
 19:26:21.578972 '226 File transfer complete\r\n'
 19:26:21.630953 < 6 bytes data, client => server
 19:26:21.630982 'QUIT\r\n'
 19:26:21.631224 Received DATA (on stdin)
 19:26:21.631239 > 18 bytes data, server => client
 19:26:21.631249 '221 bye bye baby\r\n'
 19:26:21.632388 ====> Client disconnect
 19:26:21.632560 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.576743 Running IPv4 version
 19:26:21.576821 Listening on port 44167
 19:26:21.576860 Wrote pid 87338 to log/2/server/ftp_sockdata.pid
 19:26:21.577330 Received PING (on stdin)
 19:26:21.577432 Received PORT (on stdin)
 19:26:21.577847 ====> Client connect
 19:26:21.578493 Received DATA (on stdin)
 19:26:21.578504 > 17 bytes data, server => client
 19:26:21.578513 'WE ROOLZ: 85208\r\n'
 19:26:21.578539 Received DISC (on stdin)
 19:26:21.578550 ====> Client forcibly disconnected
 19:26:21.578672 Received QUIT (on stdin)
 19:26:21.578683 quits
 19:26:21.578745 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 142
=== End of file server.cmd
=== Start of file valgrind142
 ==87431== 
 ==87431== Process terminating with default action of signal 4 (SIGILL)
 ==87431==  Illegal opcode at address 0x492B75F
 ==87431==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87431==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87431==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87431==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87431==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87431==    by 0x49908EB: curl_version_info (version.c:600)
 ==87431==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87431==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87431==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87431==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind142
test 0144 [FTP NLST dir list without contents, using PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind144 ../src/curl -q --output log/19/curl144.out  --include --trace-ascii log/19/trace144 --trace-time ftp://127.0.0.1:38555/ -P - -l > log/19/stdout144 2> log/19/stderr144

 144: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 144
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind144 ../src/curl -q --output log/19/curl144.out  --include --trace-ascii log/19/trace144 --trace-time ftp://127.0.0.1:38555/ -P - -l > log/19/stdout144 2> log/19/stderr144
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:22.033824 ====> Client connect
 19:26:22.034032 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:22.034341 < "USER anonymous"
 19:26:22.034382 > "331 We are happy you popped in![CR][LF]"
 19:26:22.034579 < "PASS ftp@example.com"
 19:26:22.034611 > "230 Welcome you silly person[CR][LF]"
 19:26:22.034799 < "PWD"
 19:26:22.034840 > "257 "/" is current directory[CR][LF]"
 19:26:22.035039 < "EPSV"
 19:26:22.035067 ====> Passive DATA channel requested by client
 19:26:22.035084 DATA sockfilt for passive data channel starting...
 19:26:22.037198 DATA sockfilt for passive data channel started (pid 87374)
 19:26:22.037330 DATA sockfilt for passive data channel listens on port 39443
 19:26:22.037378 > "229 Entering Passive Mode (|||39443|)[CR][LF]"
 19:26:22.037403 Client has been notified that upcoming DATA connection is awaited on port 39443
 19:26:22.037661 Client connects to port 39443
 19:26:22.037694 ====> Client established passive DATA connection on port 39443
 19:26:22.037775 < "TYPE I"
 19:26:22.037810 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:22.038002 < "SIZE verifiedserver"
 19:26:22.038046 > "213 17[CR][LF]"
 19:26:22.038237 < "RETR verifiedserver"
 19:26:22.038278 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:22.038375 =====> Closing passive DATA connection...
 19:26:22.038399 Server disconnects passive DATA connection
 19:26:22.038572 Server disconnected passive DATA connection
 19:26:22.038599 DATA sockfilt for passive data channel quits (pid 87374)
 19:26:22.039015 DATA sockfilt for passive data channel quit (pid 87374)
 19:26:22.039044 =====> Closed passive DATA connection
 19:26:22.039079 > "226 File transfer complete[CR][LF]"
 19:26:22.082426 < "QUIT"
 19:26:22.082493 > "221 bye bye baby[CR][LF]"
 19:26:22.084528 MAIN sockfilt said DISC
 19:26:22.084566 ====> Client disconnected
 19:26:22.084652 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.634114 ====> Client connect
 19:26:21.634457 Received DATA (on stdin)
 19:26:21.634475 > 146 bytes data, server => client
 19:26:21.634488 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.634499 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.634508 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.634589 < 16 bytes data, client => server
 19:26:21.634605 'USER anonymous\r\n'
 19:26:21.634793 Received DATA (on stdin)
 19:26:21.634806 > 33 bytes data, server => client
 19:26:21.634817 '331 We are happy you popped in!\r\n'
 19:26:21.634878 < 22 bytes data, client => server
 19:26:21.634894 'PASS ftp@example.com\r\n'
 19:26:21.635020 Received DATA (on stdin)
 19:26:21.635033 > 30 bytes data, server => client
 19:26:21.635044 '230 Welcome you silly person\r\n'
 19:26:21.635104 < 5 bytes data, client => server
 19:26:21.635119 'PWD\r\n'
 19:26:21.635248 Received DATA (on stdin)
 19:26:21.635261 > 30 bytes data, server => client
 19:26:21.635271 '257 "/" is current directory\r\n'
 19:26:21.635344 < 6 bytes data, client => server
 19:26:21.635359 'EPSV\r\n'
 19:26:21.637817 Received DATA (on stdin)
 19:26:21.637831 > 39 bytes data, server => client
 19:26:21.637842 '229 Entering Passive Mode (|||39443|)\r\n'
 19:26:21.637978 < 8 bytes data, client => server
 19:26:21.637994 'TYPE I\r\n'
 19:26:21.638220 Received DATA (on stdin)
 19:26:21.638234 > 33 bytes data, server => client
 19:26:21.638245 '200 I modify TYPE as you wanted\r\n'
 19:26:21.638305 < 21 bytes data, client => server
 19:26:21.638321 'SIZE verifiedserver\r\n'
 19:26:21.638457 Received DATA (on stdin)
 19:26:21.638471 > 8 bytes data, server => client
 19:26:21.638481 '213 17\r\n'
 19:26:21.638541 < 21 bytes data, client => server
 19:26:21.638557 'RETR verifiedserver\r\n'
 19:26:21.638808 Received DATA (on stdin)
 19:26:21.638820 > 29 bytes data, server => client
 19:26:21.638830 '150 Binary junk (17 bytes).\r\n'
 19:26:21.639490 Received DATA (on stdin)
 19:26:21.639504 > 28 bytes data, server => client
 19:26:21.639514 '226 File transfer complete\r\n'
 19:26:21.682636 < 6 bytes data, client => server
 19:26:21.682674 'QUIT\r\n'
 19:26:21.682922 Received DATA (on stdin)
 19:26:21.682936 > 18 bytes data, server => client
 19:26:21.682947 '221 bye bye baby\r\n'
 19:26:21.684887 ====> Client disconnect
 19:26:21.685067 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:22.637277 Running IPv4 version
 19:26:22.637350 Listening on port 39443
 19:26:22.637388 Wrote pid 87374 to log/19/server/ftp_sockdata.pid
 19:26:22.637538 Received PING (on stdin)
 19:26:22.637634 Received PORT (on stdin)
 19:26:22.638016 ====> Client connect
 19:26:22.638859 Received DATA (on stdin)
 19:26:22.638871 > 17 bytes data, server => client
 19:26:22.638882 'WE ROOLZ: 84587\r\n'
 19:26:22.638908 Received DISC (on stdin)
 19:26:22.638923 ====> Client forcibly disconnected
 19:26:22.6CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind141 ../src/curl -q --include --trace-ascii log/5/trace141 --trace-time ftp://127.0.0.1:39641/blalbla/141 -I > log/5/stdout141 2> log/5/stderr141
39017 Received QUIT (on stdin)
 19:26:22.639030 quits
 19:26:22.639239 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY NLST 450 No files found
 Testnum 144
=== End of file server.cmd
=== Start of file valgrind144
 ==87412== 
 ==87412== Process terminating with default action of signal 4 (SIGILL)
 ==87412==  Illegal opcode at address 0x492B75F
 ==87412==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87412==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87412==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87412==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87412==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87412==    by 0x49908EB: curl_version_info (version.c:600)
 ==87412==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87412==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87412==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87412==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind144
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind145 ../src/curl -q --output log/16/curl145.out  --include --trace-ascii log/16/trace145 --trace-time ftp://127.0.0.1:40031/ -P - -l > log/16/stdout145 2> log/16/stderr145
test 0141 [FTP download info with -I]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind141 ../src/curl -q --include --trace-ascii log/5/trace141 --trace-time ftp://127.0.0.1:39641/blalbla/141 -I > log/5/stdout141 2> log/5/stderr141

 141: stdout FAILED:
--- log/5/check-expected	2026-10-15 19:26:24.506089788 +0000
+++ log/5/check-generated	2026-10-15 19:26:24.503847622 +0000
@@ -1,3 +0,0 @@
-Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT[CR][LF]
-Content-Length: 42[CR][LF]
-Accept-ranges: bytes[CR][LF]
== Contents of files in the log/5/ directory after test 141
=== Start of file check-expected
 Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT[CR][LF]
 Content-Length: 42[CR][LF]
 Accept-ranges: bytes[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind141 ../src/curl -q --include --trace-ascii log/5/trace141 --trace-time ftp://127.0.0.1:39641/blalbla/141 -I > log/5/stdout141 2> log/5/stderr141
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.747857 ====> Client connect
 19:26:21.748071 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.748359 < "USER anonymous"
 19:26:21.748396 > "331 We are happy you popped in![CR][LF]"
 19:26:21.748560 < "PASS ftp@example.com"
 19:26:21.748587 > "230 Welcome you silly person[CR][LF]"
 19:26:21.748740 < "PWD"
 19:26:21.748772 > "257 "/" is current directory[CR][LF]"
 19:26:21.748929 < "EPSV"
 19:26:21.748961 ====> Passive DATA channel requested by client
 19:26:21.748974 DATA sockfilt for passive data channel starting...
 19:26:21.750953 DATA sockfilt for passive data channel started (pid 87214)
 19:26:21.751059 DATA sockfilt for passive data channel listens on port 43623
 19:26:21.751100 > "229 Entering Passive Mode (|||43623|)[CR][LF]"
 19:26:21.751116 Client has been notified that upcoming DATA connection is awaited on port 43623
 19:26:21.751308 Client connects to port 43623
 19:26:21.751338 ====> Client established passive DATA connection on port 43623
 19:26:21.751446 < "TYPE I"
 19:26:21.751477 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.751626 < "SIZE verifiedserver"
 19:26:21.751660 > "213 17[CR][LF]"
 19:26:21.751798 < "RETR verifiedserver"
 19:26:21.751828 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.751914 =====> Closing passive DATA connection...
 19:26:21.751929 Server disconnects passive DATA connection
 19:26:21.752179 Server disconnected passive DATA connection
 19:26:21.752210 DATA sockfilt for passive data channel quits (pid 87214)
 19:26:21.752422 DATA sockfilt for passive data channel quit (pid 87214)
 19:26:21.752448 =====> Closed passive DATA connection
 19:26:21.752474 > "226 File transfer complete[CR][LF]"
 19:26:21.805560 < "QUIT"
 19:26:21.806867 > "221 bye bye baby[CR][LF]"
 19:26:21.806904 MAIN sockfilt said DISC
 19:26:21.806979 ====> Client disconnected
 19:26:21.807065 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.348064 ====> Client connect
 19:26:21.348413 Received DATA (on stdin)
 19:26:21.348427 > 146 bytes data, server => client
 19:26:21.348438 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.348448 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.348457 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.348532 < 16 bytes data, client => server
 19:26:21.348544 'USER anonymous\r\n'
 19:26:21.348729 Received DATA (on stdin)
 19:26:21.348739 > 33 bytes data, server => client
 19:26:21.348749 '331 We are happy you popped in!\r\n'
 19:26:21.348800 < 22 bytes data, client => server
 19:26:21.348811 'PASS ftp@example.com\r\n'
 19:26:21.348918 Received DATA (on stdin)
 19:26:21.348928 > 30 bytes data, server => client
 19:26:21.348938 '230 Welcome you silly person\r\n'
 19:26:21.348990 < 5 bytes data, client => server
 19:26:21.348999 'PWD\r\n'
 19:26:21.349101 Received DATA (on stdin)
 19:26:21.349111 > 30 bytes data, server => client
 19:26:21.349121 '257 "/" is current directory\r\n'
 19:26:21.349178 < 6 bytes data, client => server
 19:26:21.349188 'EPSV\r\n'
 19:26:21.351452 Received DATA (on stdin)
 19:26:21.351463 > 39 bytes data, server => client
 19:26:21.351474 '229 Entering Passive Mode (|||43623|)\r\n'
 19:26:21.351686 < 8 bytes data, client => server
 19:26:21.351696 'TYPE I\r\n'
 19:26:21.351809 Received DATA (on stdin)
 19:26:21.351819 > 33 bytes data, server => client
 19:26:21.351829 '200 I modify TYPE as you wanted\r\n'
 19:26:21.351877 < 21 bytes data, client => server
 19:26:21.351887 'SIZE verifiedserver\r\n'
 19:26:21.351989 Received DATA (on stdin)
 19:26:21.351999 > 8 bytes data, server => client
 19:26:21.352009 '213 17\r\n'
 19:26:21.352054 < 21 bytes data, client => server
 19:26:21.352064 'RETR verifiedserver\r\n'
 19:26:21.352261 Received DATA (on stdin)
 19:26:21.352271 > 29 bytes data, server => client
 19:26:21.352281 '150 Binary junk (17 bytes).\r\n'
 19:26:21.353110 Received DATA (on stdin)
 19:26:21.353124 > 28 bytes data, server => client
 19:26:21.353135 '226 File transfer complete\r\n'
 19:26:21.405707 < 6 bytes data, client => server
 19:26:21.405743 'QUIT\r\n'
 19:26:21.405939 Received DATA (on stdin)
 19:26:21.405951 > 18 bytes data, server => client
 19:26:21.405969 '221 bye bye baby\r\n'
 19:26:21.407152 ====> Client disconnect
 19:26:21.407253 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.350980 Running IPv4 version
 19:26:21.351045 Listening on port 43623
 19:26:21.351087 Wrote pid 87214 to log/5/server/ftp_sockdata.pid
 19:26:21.351233 Received PING (on stdin)
 19:26:21.351309 Received PORT (on stdin)
 19:26:21.351592 ====> Client connect
 19:26:21.352306 Received DATA (on stdin)
 19:26:21.352335 > 17 bytes data, server => client
 19:26:21.352345 'WE ROOLZ: 85245\r\n'
 19:26:21.352368 Received DISC (on stdin)
 19:26:21.352379 ====> Client forcibly disconnected
 19:26:21.352553 Received QUIT (on stdin)
 19:26:21.352564 quits
 19:26:21.352626 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 141
=== End of file server.cmd
=== Start of file valgrind141
 ==87248== 
 ==87248== Process terminating with default action of signal 4 (SIGILL)
 ==87248==  Illegal opcode at address 0x492B75F
 ==87248==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87248==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87248==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87248==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87248==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87248==    by 0x49908EB: curl_version_info (version.c:600)
 ==87248==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87248==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87248==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87248==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind141
test 0145 [FTP NLST dir list with weird reply code, using PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind145 ../src/curl -q --output log/16/curl145.out  --include --trace-ascii log/16/trace145 --trace-time ftp://127.0.0.1:40031/ -P - -l > log/16/stdout145 2> log/16/stderr145

 145: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 145
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind145 ../src/curl CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind154 ../src/curl -q --output log/22/curl154.out  --include --trace-ascii log/22/trace154 --trace-time http://127.0.0.1:35989/154 -T log/22/put154 -u testuser:testpass --anyauth > log/22/stdout154 2> log/22/stderr154
-q --output log/16/curl145.out  --include --trace-ascii log/16/trace145 --trace-time ftp://127.0.0.1:40031/ -P - -l > log/16/stdout145 2> log/16/stderr145
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:22.378941 ====> Client connect
 19:26:22.379158 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:22.379456 < "USER anonymous"
 19:26:22.379495 > "331 We are happy you popped in![CR][LF]"
 19:26:22.379668 < "PASS ftp@example.com"
 19:26:22.379696 > "230 Welcome you silly person[CR][LF]"
 19:26:22.379838 < "PWD"
 19:26:22.379869 > "257 "/" is current directory[CR][LF]"
 19:26:22.380014 < "EPSV"
 19:26:22.380039 ====> Passive DATA channel requested by client
 19:26:22.380052 DATA sockfilt for passive data channel starting...
 19:26:22.388704 DATA sockfilt for passive data channel started (pid 87562)
 19:26:22.394313 DATA sockfilt for passive data channel listens on port 38217
 19:26:22.394470 > "229 Entering Passive Mode (|||38217|)[CR][LF]"
 19:26:22.394504 Client has been notified that upcoming DATA connection is awaited on port 38217
 19:26:22.394845 Client connects to port 38217
 19:26:22.394883 ====> Client established passive DATA connection on port 38217
 19:26:22.395007 < "TYPE I"
 19:26:22.395053 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:22.395264 < "SIZE verifiedserver"
 19:26:22.395314 > "213 17[CR][LF]"
 19:26:22.395499 < "RETR verifiedserver"
 19:26:22.395534 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:22.396003 =====> Closing passive DATA connection...
 19:26:22.396026 Server disconnects passive DATA connection
 19:26:22.396053 Fancy that; client wants to DISC, too
 19:26:22.396138 Server disconnected passive DATA connection
 19:26:22.396160 DATA sockfilt for passive data channel quits (pid 87562)
 19:26:22.396386 DATA sockfilt for passive data channel quit (pid 87562)
 19:26:22.396409 =====> Closed passive DATA connection
 19:26:22.396489 > "226 File transfer complete[CR][LF]"
 19:26:22.445590 < "QUIT"
 19:26:22.445642 > "221 bye bye baby[CR][LF]"
 19:26:22.446865 MAIN sockfilt said DISC
 19:26:22.446906 ====> Client disconnected
 19:26:22.446988 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.979176 ====> Client connect
 19:26:21.979667 Received DATA (on stdin)
 19:26:21.979685 > 146 bytes data, server => client
 19:26:21.979695 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.979704 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.979712 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.979799 < 16 bytes data, client => server
 19:26:21.979812 'USER anonymous\r\n'
 19:26:21.979987 Received DATA (on stdin)
 19:26:21.979999 > 33 bytes data, server => client
 19:26:21.980008 '331 We are happy you popped in!\r\n'
 19:26:21.980061 < 22 bytes data, client => server
 19:26:21.980072 'PASS ftp@example.com\r\n'
 19:26:21.980184 Received DATA (on stdin)
 19:26:21.980194 > 30 bytes data, server => client
 19:26:21.980203 '230 Welcome you silly person\r\n'
 19:26:21.980249 < 5 bytes data, client => server
 19:26:21.980258 'PWD\r\n'
 19:26:21.980355 Received DATA (on stdin)
 19:26:21.980365 > 30 bytes data, server => client
 19:26:21.980374 '257 "/" is current directory\r\n'
 19:26:21.980428 < 6 bytes data, client => server
 19:26:21.980438 'EPSV\r\n'
 19:26:21.994877 Received DATA (on stdin)
 19:26:21.994900 > 39 bytes data, server => client
 19:26:21.995011 '229 Entering Passive Mode (|||38217|)\r\n'
 19:26:21.995278 < 8 bytes data, client => server
 19:26:21.995292 'TYPE I\r\n'
 19:26:21.995557 Received DATA (on stdin)
 19:26:21.995571 > 33 bytes data, server => client
 19:26:21.995582 '200 I modify TYPE as you wanted\r\n'
 19:26:21.995647 < 21 bytes data, client => server
 19:26:21.995663 'SIZE verifiedserver\r\n'
 19:26:21.995825 Received DATA (on stdin)
 19:26:21.995838 > 8 bytes data, server => client
 19:26:21.995847 '213 17\r\n'
 19:26:21.995902 < 21 bytes data, client => server
 19:26:21.995912 'RETR verifiedserver\r\n'
 19:26:21.996062 Received DATA (on stdin)
 19:26:21.996073 > 29 bytes data, server => client
 19:26:21.996083 '150 Binary junk (17 bytes).\r\n'
 19:26:21.996910 Received DATA (on stdin)
 19:26:21.996922 > 28 bytes data, server => client
 19:26:21.996940 '226 File transfer complete\r\n'
 19:26:22.045941 < 6 bytes data, client => server
 19:26:22.045962 'QUIT\r\n'
 19:26:22.046154 Received DATA (on stdin)
 19:26:22.046167 > 18 bytes data, server => client
 19:26:22.046177 '221 bye bye baby\r\n'
 19:26:22.047312 ====> Client disconnect
 19:26:22.047496 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:22.982278 Running IPv4 version
 19:26:22.982360 Listening on port 38217
 19:26:22.982406 Wrote pid 87562 to log/16/server/ftp_sockdata.pid
 19:26:22.986121 Received PING (on stdin)
 19:26:22.994634 Received PORT (on stdin)
 19:26:22.995243 ====> Client connect
 19:26:22.996036 Received DATA (on stdin)
 19:26:22.996049 > 17 bytes data, server => client
 19:26:22.996145 'WE ROOLZ: 84702\r\n'
 19:26:22.996217 ====> Client disconnect
 19:26:22.996544 Received DISC (on stdin)
 19:26:22.996557 Crikey! Client also wants to disconnect
 19:26:22.996567 Received ACKD (on stdin)
 19:26:22.996652 Received QUIT (on stdin)
 19:26:22.996662 quits
 19:26:22.996729 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY NLST 550 Have a taste on this
 Testnum 145
=== End of file server.cmd
=== Start of file valgrind145
 ==87597== 
 ==87597== Process terminating with default action of signal 4 (SIGILL)
 ==87597==  Illegal opcode at address 0x492B75F
 ==87597==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87597==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87597==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87597==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87597==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87597==    by 0x49908EB: curl_version_info (version.c:600)
 ==87597==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87597==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87597==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87597==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind145
test 0154 [HTTP PUT with --anyauth authorization (picking Digest)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind154 ../src/curl -q --output log/22/curl154.out  --include --trace-ascii log/22/trace154 --trace-time http://127.0.0.1:35989/154 -T log/22/put154 -u testuser:testpass --anyauth > log/22/stdout154 2> log/22/stderr154

 154: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 154
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind154 ../src/curl -q --output log/22/curl154.out  --include --trace-ascii log/22/trace154 --trace-time http://127.0.0.1:35989/154 -T log/22/put154 -u testuser:testpass --anyauth > log/22/stdout154 2> log/22/stderr154
=== End of file commands.log
=== Start of file http_server.log
 19:26:22.395223 ====> Client connect
 19:26:22.395258 accept_connection 3 returned 4
 19:26:22.395418 Read 93 bytes
 19:26:22.395435 Process 93 bytes request
 19:26:22.395448 Got request: GET /verifiedserver HTTP/1.1
 19:26:22.395457 Are-we-friendly question received
 19:26:22.395492 Wrote request (93 bytes) input to log/22/server.input
 19:26:22.395514 Identifying ourselves as friends
 19:26:22.395586 Response sent (56 bytes) and written to log/22/server.response
 19:26:22.395598 special request received, no persistency
 19:26:22.395606 ====> Client disconnect 0
=== End of fileCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind143 ../src/curl -q --output log/4/curl143.out  --include --trace-ascii log/4/trace143 --trace-time "ftp://127.0.0.1:39739/%2ftmp/moo/143;type=a" > log/4/stdout143 2> log/4/stderr143
 http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 41640 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file put154
 This is data we upload with PUT
 a second line
 line three
 four is the number of lines
=== End of file put154
=== Start of file server.cmd
 Testnum 154
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind154
 ==87977== 
 ==87977== Process terminating with default action of signal 4 (SIGILL)
 ==87977==  Illegal opcode at address 0x492B75F
 ==87977==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87977==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87977==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87977==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87977==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87977==    by 0x49908EB: curl_version_info (version.c:600)
 ==87977==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87977==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87977==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87977==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind154
test 0143 [FTP URL with type=a]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind143 ../src/curl -q --output log/4/curl143.out  --include --trace-ascii log/4/trace143 --trace-time "ftp://127.0.0.1:39739/%2ftmp/moo/143;type=a" > log/4/stdout143 2> log/4/stderr143

 143: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 143
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind143 ../src/curl -q --output log/4/curl143.out  --include --trace-ascii log/4/trace143 --trace-time "ftp://127.0.0.1:39739/%2ftmp/moo/143;type=a" > log/4/stdout143 2> log/4/stderr143
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:21.960318 ====> Client connect
 19:26:21.960546 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:21.960877 < "USER anonymous"
 19:26:21.960915 > "331 We are happy you popped in![CR][LF]"
 19:26:21.961096 < "PASS ftp@example.com"
 19:26:21.961125 > "230 Welcome you silly person[CR][LF]"
 19:26:21.961284 < "PWD"
 19:26:21.961320 > "257 "/" is current directory[CR][LF]"
 19:26:21.961499 < "EPSV"
 19:26:21.961530 ====> Passive DATA channel requested by client
 19:26:21.961544 DATA sockfilt for passive data channel starting...
 19:26:21.967459 DATA sockfilt for passive data channel started (pid 87335)
 19:26:21.967570 DATA sockfilt for passive data channel listens on port 37935
 19:26:21.967828 > "229 Entering Passive Mode (|||37935|)[CR][LF]"
 19:26:21.967852 Client has been notified that upcoming DATA connection is awaited on port 37935
 19:26:21.967906 Client connects to port 37935
 19:26:21.967927 ====> Client established passive DATA connection on port 37935
 19:26:21.968008 < "TYPE I"
 19:26:21.968144 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:21.968206 < "SIZE verifiedserver"
 19:26:21.968349 > "213 17[CR][LF]"
 19:26:21.968406 < "RETR verifiedserver"
 19:26:21.968521 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:21.968611 =====> Closing passive DATA connection...
 19:26:21.968627 Server disconnects passive DATA connection
 19:26:21.968798 Server disconnected passive DATA connection
 19:26:21.968822 DATA sockfilt for passive data channel quits (pid 87335)
 19:26:21.969058 DATA sockfilt for passive data channel quit (pid 87335)
 19:26:21.969086 =====> Closed passive DATA connection
 19:26:21.969167 > "226 File transfer complete[CR][LF]"
 19:26:22.015654 < "QUIT"
 19:26:22.015711 > "221 bye bye baby[CR][LF]"
 19:26:22.016923 MAIN sockfilt said DISC
 19:26:22.016958 ====> Client disconnected
 19:26:22.017040 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.560600 ====> Client connect
 19:26:21.560945 Received DATA (on stdin)
 19:26:21.560960 > 146 bytes data, server => client
 19:26:21.560971 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.560982 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.560991 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.561088 < 16 bytes data, client => server
 19:26:21.561101 'USER anonymous\r\n'
 19:26:21.561303 Received DATA (on stdin)
 19:26:21.561315 > 33 bytes data, server => client
 19:26:21.561325 '331 We are happy you popped in!\r\n'
 19:26:21.561382 < 22 bytes data, client => server
 19:26:21.561394 'PASS ftp@example.com\r\n'
 19:26:21.561509 Received DATA (on stdin)
 19:26:21.561520 > 30 bytes data, server => client
 19:26:21.561530 '230 Welcome you silly person\r\n'
 19:26:21.561584 < 5 bytes data, client => server
 19:26:21.561594 'PWD\r\n'
 19:26:21.561706 Received DATA (on stdin)
 19:26:21.561718 > 30 bytes data, server => client
 19:26:21.561728 '257 "/" is current directory\r\n'
 19:26:21.561792 < 6 bytes data, client => server
 19:26:21.561804 'EPSV\r\n'
 19:26:21.567970 Received DATA (on stdin)
 19:26:21.567983 > 39 bytes data, server => client
 19:26:21.568000 '229 Entering Passive Mode (|||37935|)\r\n'
 19:26:21.568143 < 8 bytes data, client => server
 19:26:21.568156 'TYPE I\r\n'
 19:26:21.568402 Received DATA (on stdin)
 19:26:21.568412 > 33 bytes data, server => client
 19:26:21.568430 '200 I modify TYPE as you wanted\r\n'
 19:26:21.568481 < 21 bytes data, client => server
 19:26:21.568492 'SIZE verifiedserver\r\n'
 19:26:21.568608 Received DATA (on stdin)
 19:26:21.568618 > 8 bytes data, server => client
 19:26:21.568635 '213 17\r\n'
 19:26:21.568684 < 21 bytes data, client => server
 19:26:21.568694 'RETR verifiedserver\r\n'
 19:26:21.568804 Received DATA (on stdin)
 19:26:21.568814 > 29 bytes data, server => client
 19:26:21.568831 '150 Binary junk (17 bytes).\r\n'
 19:26:21.569480 Received DATA (on stdin)
 19:26:21.569492 > 28 bytes data, server => client
 19:26:21.569510 '226 File transfer complete\r\n'
 19:26:21.615849 < 6 bytes data, client => server
 19:26:21.615886 'QUIT\r\n'
 19:26:21.616114 Received DATA (on stdin)
 19:26:21.616126 > 18 bytes data, server => client
 19:26:21.616136 '221 bye bye baby\r\n'
 19:26:21.617262 ====> Client disconnect
 19:26:21.617447 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:21.566430 Running IPv4 version
 19:26:21.566501 Listening on port 37935
 19:26:21.566543 Wrote pid 87335 to log/4/server/ftp_sockdata.pid
 19:26:21.567783 Received PING (on stdin)
 19:26:21.567874 Received PORT (on stdin)
 19:26:21.568248 ====> Client connect
 19:26:21.569014 Received DATA (on stdin)
 19:26:21.569027 > 17 bytes data, server => client
 19:26:21.569044 'WE ROOLZ: 85249\r\n'
 19:26:21.569111 Received DISC (on stdin)
 19:26:21.569124 ====> Client forcibly disconnected
 19:26:21.569216 Received QUIT (on stdin)
 19:26:21.569227 quits
 19:26:21.569296 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 143
=== End of file server.cmd
=== Start of file valgrind143
 ==87375== 
 ==87375== Process terminating with default action of signal 4 (SIGILL)
 ==87375==  Illegal opcode at address 0x492B75F
 ==87375==    at 0x492B75F: formatf.constprop.2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind149 ../src/curl -q --output log/12/curl149.out  --include --trace-ascii log/12/trace149 --trace-time -T log/12/upload149 ftp://127.0.0.1:40417/dir1/149 -T log/12/upload149 ftp://127.0.0.1:40417/dir2/149 > log/12/stdout149 2> log/12/stderr149
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind151 ../src/curl -q --output log/6/curl151.out  --include --trace-ascii log/6/trace151 --trace-time http://127.0.0.1:33935/151 > log/6/stdout151 2> log/6/stderr151
 (mprintf.c:1115)
 ==87375==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87375==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87375==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87375==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87375==    by 0x49908EB: curl_version_info (version.c:600)
 ==87375==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87375==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87375==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87375==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind143
test 0149 [FTP with multiple uploads]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind149 ../src/curl -q --output log/12/curl149.out  --include --trace-ascii log/12/trace149 --trace-time -T log/12/upload149 ftp://127.0.0.1:40417/dir1/149 -T log/12/upload149 ftp://127.0.0.1:40417/dir2/149 > log/12/stdout149 2> log/12/stderr149

 149: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 149
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind149 ../src/curl -q --output log/12/curl149.out  --include --trace-ascii log/12/trace149 --trace-time -T log/12/upload149 ftp://127.0.0.1:40417/dir1/149 -T log/12/upload149 ftp://127.0.0.1:40417/dir2/149 > log/12/stdout149 2> log/12/stderr149
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:22.534322 ====> Client connect
 19:26:22.534570 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:22.534910 < "USER anonymous"
 19:26:22.534957 > "331 We are happy you popped in![CR][LF]"
 19:26:22.542544 < "PASS ftp@example.com"
 19:26:22.542592 > "230 Welcome you silly person[CR][LF]"
 19:26:22.543820 < "PWD"
 19:26:22.543875 > "257 "/" is current directory[CR][LF]"
 19:26:22.544094 < "EPSV"
 19:26:22.544130 ====> Passive DATA channel requested by client
 19:26:22.544149 DATA sockfilt for passive data channel starting...
 19:26:22.552995 DATA sockfilt for passive data channel started (pid 87666)
 19:26:22.553160 DATA sockfilt for passive data channel listens on port 45563
 19:26:22.553224 > "229 Entering Passive Mode (|||45563|)[CR][LF]"
 19:26:22.553243 Client has been notified that upcoming DATA connection is awaited on port 45563
 19:26:22.555672 Client connects to port 45563
 19:26:22.555731 ====> Client established passive DATA connection on port 45563
 19:26:22.555850 < "TYPE I"
 19:26:22.555890 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:22.556056 < "SIZE verifiedserver"
 19:26:22.556097 > "213 17[CR][LF]"
 19:26:22.556244 < "RETR verifiedserver"
 19:26:22.556276 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:22.556361 =====> Closing passive DATA connection...
 19:26:22.556376 Server disconnects passive DATA connection
 19:26:22.556601 Server disconnected passive DATA connection
 19:26:22.556627 DATA sockfilt for passive data channel quits (pid 87666)
 19:26:22.556894 DATA sockfilt for passive data channel quit (pid 87666)
 19:26:22.556919 =====> Closed passive DATA connection
 19:26:22.556947 > "226 File transfer complete[CR][LF]"
 19:26:22.605637 < "QUIT"
 19:26:22.605691 > "221 bye bye baby[CR][LF]"
 19:26:22.607308 MAIN sockfilt said DISC
 19:26:22.607347 ====> Client disconnected
 19:26:22.607429 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:23.134732 ====> Client connect
 19:26:23.135119 Received DATA (on stdin)
 19:26:23.135137 > 146 bytes data, server => client
 19:26:23.135148 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:23.135158 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:23.135168 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:23.135257 < 16 bytes data, client => server
 19:26:23.135273 'USER anonymous\r\n'
 19:26:23.135495 Received DATA (on stdin)
 19:26:23.135508 > 33 bytes data, server => client
 19:26:23.135519 '331 We are happy you popped in!\r\n'
 19:26:23.135581 < 22 bytes data, client => server
 19:26:23.135596 'PASS ftp@example.com\r\n'
 19:26:23.144087 Received DATA (on stdin)
 19:26:23.144112 > 30 bytes data, server => client
 19:26:23.144123 '230 Welcome you silly person\r\n'
 19:26:23.144217 < 5 bytes data, client => server
 19:26:23.144233 'PWD\r\n'
 19:26:23.144417 Received DATA (on stdin)
 19:26:23.144430 > 30 bytes data, server => client
 19:26:23.144440 '257 "/" is current directory\r\n'
 19:26:23.144515 < 6 bytes data, client => server
 19:26:23.144531 'EPSV\r\n'
 19:26:23.155872 Received DATA (on stdin)
 19:26:23.155905 > 39 bytes data, server => client
 19:26:23.155917 '229 Entering Passive Mode (|||45563|)\r\n'
 19:26:23.156099 < 8 bytes data, client => server
 19:26:23.156113 'TYPE I\r\n'
 19:26:23.156426 Received DATA (on stdin)
 19:26:23.156438 > 33 bytes data, server => client
 19:26:23.156448 '200 I modify TYPE as you wanted\r\n'
 19:26:23.156502 < 21 bytes data, client => server
 19:26:23.156513 'SIZE verifiedserver\r\n'
 19:26:23.156631 Received DATA (on stdin)
 19:26:23.156641 > 8 bytes data, server => client
 19:26:23.156650 '213 17\r\n'
 19:26:23.156699 < 21 bytes data, client => server
 19:26:23.156708 'RETR verifiedserver\r\n'
 19:26:23.156914 Received DATA (on stdin)
 19:26:23.156924 > 29 bytes data, server => client
 19:26:23.156934 '150 Binary junk (17 bytes).\r\n'
 19:26:23.157479 Received DATA (on stdin)
 19:26:23.157490 > 28 bytes data, server => client
 19:26:23.157499 '226 File transfer complete\r\n'
 19:26:23.205990 < 6 bytes data, client => server
 19:26:23.206014 'QUIT\r\n'
 19:26:23.206239 Received DATA (on stdin)
 19:26:23.206250 > 18 bytes data, server => client
 19:26:23.206260 '221 bye bye baby\r\n'
 19:26:23.207787 ====> Client disconnect
 19:26:23.207976 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:22.146784 Running IPv4 version
 19:26:22.146876 Listening on port 45563
 19:26:22.146918 Wrote pid 87666 to log/12/server/ftp_sockdata.pid
 19:26:22.153437 Received PING (on stdin)
 19:26:22.153584 Received PORT (on stdin)
 19:26:22.156139 ====> Client connect
 19:26:22.156988 Received DATA (on stdin)
 19:26:22.157001 > 17 bytes data, server => client
 19:26:22.157010 'WE ROOLZ: 85158\r\n'
 19:26:22.157034 Received DISC (on stdin)
 19:26:22.157044 ====> Client forcibly disconnected
 19:26:22.157170 Received QUIT (on stdin)
 19:26:22.157181 quits
 19:26:22.157255 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 149
=== End of file server.cmd
=== Start of file upload149
 send away this contents
=== End of file upload149
=== Start of file valgrind149
 ==87768== 
 ==87768== Process terminating with default action of signal 4 (SIGILL)
 ==87768==  Illegal opcode at address 0x492B75F
 ==87768==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87768==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87768==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87768==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87768==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87768==    by 0x49908EB: curl_version_info (version.c:600)
 ==87768==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87768==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind149
test 0151 [HTTP GET with an error code that might trick authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind151 ../src/curl -q --outCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind148 ../src/curl -q --output log/10/curl148.out  --include --trace-ascii log/10/trace148 --trace-time ftp://127.0.0.1:44817/attempt/to/get/this/148 --ftp-create-dirs > log/10/stdout148 2> log/10/stderr148
put log/6/curl151.out  --include --trace-ascii log/6/trace151 --trace-time http://127.0.0.1:33935/151 > log/6/stdout151 2> log/6/stderr151

 151: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 151
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind151 ../src/curl -q --output log/6/curl151.out  --include --trace-ascii log/6/trace151 --trace-time http://127.0.0.1:33935/151 > log/6/stdout151 2> log/6/stderr151
=== End of file commands.log
=== Start of file http_server.log
 19:26:22.330465 ====> Client connect
 19:26:22.330499 accept_connection 3 returned 4
 19:26:22.330523 Read 93 bytes
 19:26:22.330534 Process 93 bytes request
 19:26:22.330547 Got request: GET /verifiedserver HTTP/1.1
 19:26:22.330557 Are-we-friendly question received
 19:26:22.330586 Wrote request (93 bytes) input to log/6/server.input
 19:26:22.330605 Identifying ourselves as friends
 19:26:22.330676 Response sent (56 bytes) and written to log/6/server.response
 19:26:22.330688 special request received, no persistency
 19:26:22.330697 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 56504 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 151
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind151
 ==87881== 
 ==87881== Process terminating with default action of signal 4 (SIGILL)
 ==87881==  Illegal opcode at address 0x492B75F
 ==87881==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87881==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87881==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87881==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87881==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87881==    by 0x49908EB: curl_version_info (version.c:600)
 ==87881==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87881==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87881==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87881==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind151
test 0148 [FTP with --ftp-create-dirs (failing MKD)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind148 ../src/curl -q --output log/10/curl148.out  --include --trace-ascii log/10/trace148 --trace-time ftp://127.0.0.1:44817/attempt/to/get/this/148 --ftp-create-dirs > log/10/stdout148 2> log/10/stderr148

 148: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 148
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind148 ../src/curl -q --output log/10/curl148.out  --include --trace-ascii log/10/trace148 --trace-time ftp://127.0.0.1:44817/attempt/to/get/this/148 --ftp-create-dirs > log/10/stdout148 2> log/10/stderr148
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:22.493695 ====> Client connect
 19:26:22.494004 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:22.501253 < "USER anonymous"
 19:26:22.501312 > "331 We are happy you popped in![CR][LF]"
 19:26:22.501551 < "PASS ftp@example.com"
 19:26:22.501588 > "230 Welcome you silly person[CR][LF]"
 19:26:22.501776 < "PWD"
 19:26:22.501816 > "257 "/" is current directory[CR][LF]"
 19:26:22.502023 < "EPSV"
 19:26:22.502057 ====> Passive DATA channel requested by client
 19:26:22.502074 DATA sockfilt for passive data channel starting...
 19:26:22.508946 DATA sockfilt for passive data channel started (pid 87630)
 19:26:22.509077 DATA sockfilt for passive data channel listens on port 45187
 19:26:22.509129 > "229 Entering Passive Mode (|||45187|)[CR][LF]"
 19:26:22.509146 Client has been notified that upcoming DATA connection is awaited on port 45187
 19:26:22.510113 Client connects to port 45187
 19:26:22.510153 ====> Client established passive DATA connection on port 45187
 19:26:22.518806 < "TYPE I"
 19:26:22.518863 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:22.528872 < "SIZE verifiedserver"
 19:26:22.528941 > "213 17[CR][LF]"
 19:26:22.529131 < "RETR verifiedserver"
 19:26:22.529173 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:22.529274 =====> Closing passive DATA connection...
 19:26:22.529291 Server disconnects passive DATA connection
 19:26:22.529563 Server disconnected passive DATA connection
 19:26:22.529589 DATA sockfilt for passive data channel quits (pid 87630)
 19:26:22.529895 DATA sockfilt for passive data channel quit (pid 87630)
 19:26:22.529922 =====> Closed passive DATA connection
 19:26:22.529951 > "226 File transfer complete[CR][LF]"
 19:26:22.578972 < "QUIT"
 19:26:22.579030 > "221 bye bye baby[CR][LF]"
 19:26:22.580195 MAIN sockfilt said DISC
 19:26:22.580237 ====> Client disconnected
 19:26:22.580319 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:23.093997 ====> Client connect
 19:26:23.096815 Received DATA (on stdin)
 19:26:23.096838 > 146 bytes data, server => client
 19:26:23.096849 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:23.096859 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:23.096868 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:23.101550 < 16 bytes data, client => server
 19:26:23.101573 'USER anonymous\r\n'
 19:26:23.101844 Received DATA (on stdin)
 19:26:23.101858 > 33 bytes data, server => client
 19:26:23.101869 '331 We are happy you popped in!\r\n'
 19:26:23.101961 < 22 bytes data, client => server
 19:26:23.101977 'PASS ftp@example.com\r\n'
 19:26:23.102113 Received DATA (on stdin)
 19:26:23.102126 > 30 bytes data, server => client
 19:26:23.102137 '230 Welcome you silly person\r\n'
 19:26:23.102198 < 5 bytes data, client => server
 19:26:23.102212 'PWD\r\n'
 19:26:23.102340 Received DATA (on stdin)
 19:26:23.102353 > 30 bytes data, server => client
 19:26:23.102364 '257 "/" is current directory\r\n'
 19:26:23.102437 < 6 bytes data, client => server
 19:26:23.102452 'EPSV\r\n'
 19:26:23.110354 Received DATA (on stdin)
 19:26:23.110375 > 39 bytes data, server => client
 19:26:23.110386 '229 Entering Passive Mode (|||45187|)\r\n'
 19:26:23.116249 < 8 bytes data, client => server
 19:26:23.116272 'TYPE I\r\n'
 19:26:23.119398 Received DATA (on stdin)
 19:26:23.119415 > 33 bytes data, server => client
 19:26:23.119426 '200 I modify TYPE as you wanted\r\n'
 19:26:23.129219 < 21 bytes data, client => server
 19:26:23.129248 'SIZE verifiedserver\r\n'
 19:26:23.129475 Received DATA (on stdin)
 19:26:23.129487 > 8 bytes data, server => client
 19:26:23.129496 '213 17\r\n'
 19:26:23.129567 < 21 bytes data, client => server
 19:26:23.129577 'RETR verifiedserver\r\n'
 19:26:23.129822 Received DATA (on stdin)
 19:26:23.129833 > 29 bytes data, server => client
 19:26:23.129842 '150 Binary junk (17 bytes).\r\n'
 19:26:23.130481 Received DATA (on stdin)
 19:26:23.130493 > 28 bytes data, server => client
 19:26:23.130503 '226 File transfeCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind147 ../src/curl -q --output log/7/curl147.out  --include --trace-ascii log/7/trace147 --trace-time ftp://127.0.0.1:44283/first/dir/here/147 --ftp-create-dirs > log/7/stdout147 2> log/7/stderr147
r complete\r\n'
 19:26:23.179314 < 6 bytes data, client => server
 19:26:23.179347 'QUIT\r\n'
 19:26:23.179576 Received DATA (on stdin)
 19:26:23.179590 > 18 bytes data, server => client
 19:26:23.179598 '221 bye bye baby\r\n'
 19:26:23.180660 ====> Client disconnect
 19:26:23.180871 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:22.106981 Running IPv4 version
 19:26:22.107083 Listening on port 45187
 19:26:22.107132 Wrote pid 87630 to log/10/server/ftp_sockdata.pid
 19:26:22.109402 Received PING (on stdin)
 19:26:22.109502 Received PORT (on stdin)
 19:26:22.110579 ====> Client connect
 19:26:22.129971 Received DATA (on stdin)
 19:26:22.129989 > 17 bytes data, server => client
 19:26:22.129999 'WE ROOLZ: 85153\r\n'
 19:26:22.130027 Received DISC (on stdin)
 19:26:22.130038 ====> Client forcibly disconnected
 19:26:22.130180 Received QUIT (on stdin)
 19:26:22.130193 quits
 19:26:22.130262 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 550 I won't allow this on my server
 REPLY MKD 550 We will have no such thing
 Testnum 148
=== End of file server.cmd
=== Start of file valgrind148
 ==87755== 
 ==87755== Process terminating with default action of signal 4 (SIGILL)
 ==87755==  Illegal opcode at address 0x492B75F
 ==87755==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87755==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87755==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87755==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87755==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87755==    by 0x49908EB: curl_version_info (version.c:600)
 ==87755==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87755==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87755==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87755==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind148
test 0147 [FTP with --ftp-create-dirs (failing CWD)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind147 ../src/curl -q --output log/7/curl147.out  --include --trace-ascii log/7/trace147 --trace-time ftp://127.0.0.1:44283/first/dir/here/147 --ftp-create-dirs > log/7/stdout147 2> log/7/stderr147

 147: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 147
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind147 ../src/curl -q --output log/7/curl147.out  --include --trace-ascii log/7/trace147 --trace-time ftp://127.0.0.1:44283/first/dir/here/147 --ftp-create-dirs > log/7/stdout147 2> log/7/stderr147
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:22.439924 ====> Client connect
 19:26:22.440183 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:22.440540 < "USER anonymous"
 19:26:22.440582 > "331 We are happy you popped in![CR][LF]"
 19:26:22.440757 < "PASS ftp@example.com"
 19:26:22.440785 > "230 Welcome you silly person[CR][LF]"
 19:26:22.440932 < "PWD"
 19:26:22.440965 > "257 "/" is current directory[CR][LF]"
 19:26:22.441156 < "EPSV"
 19:26:22.441188 ====> Passive DATA channel requested by client
 19:26:22.441206 DATA sockfilt for passive data channel starting...
 19:26:22.443374 DATA sockfilt for passive data channel started (pid 87587)
 19:26:22.443503 DATA sockfilt for passive data channel listens on port 37059
 19:26:22.443552 > "229 Entering Passive Mode (|||37059|)[CR][LF]"
 19:26:22.443575 Client has been notified that upcoming DATA connection is awaited on port 37059
 19:26:22.447251 Client connects to port 37059
 19:26:22.447283 ====> Client established passive DATA connection on port 37059
 19:26:22.447358 < "TYPE I"
 19:26:22.447387 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:22.447549 < "SIZE verifiedserver"
 19:26:22.447591 > "213 17[CR][LF]"
 19:26:22.447746 < "RETR verifiedserver"
 19:26:22.447779 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:22.447865 =====> Closing passive DATA connection...
 19:26:22.447882 Server disconnects passive DATA connection
 19:26:22.448127 Server disconnected passive DATA connection
 19:26:22.448157 DATA sockfilt for passive data channel quits (pid 87587)
 19:26:22.448387 DATA sockfilt for passive data channel quit (pid 87587)
 19:26:22.448411 =====> Closed passive DATA connection
 19:26:22.448440 > "226 File transfer complete[CR][LF]"
 19:26:22.493592 < "QUIT"
 19:26:22.493653 > "221 bye bye baby[CR][LF]"
 19:26:22.495261 MAIN sockfilt said DISC
 19:26:22.495297 ====> Client disconnected
 19:26:22.495454 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:23.040310 ====> Client connect
 19:26:23.040726 Received DATA (on stdin)
 19:26:23.040750 > 146 bytes data, server => client
 19:26:23.040763 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:23.040773 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:23.040783 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:23.040881 < 16 bytes data, client => server
 19:26:23.040898 'USER anonymous\r\n'
 19:26:23.041092 Received DATA (on stdin)
 19:26:23.041103 > 33 bytes data, server => client
 19:26:23.041113 '331 We are happy you popped in!\r\n'
 19:26:23.041170 < 22 bytes data, client => server
 19:26:23.041181 'PASS ftp@example.com\r\n'
 19:26:23.041289 Received DATA (on stdin)
 19:26:23.041299 > 30 bytes data, server => client
 19:26:23.041309 '230 Welcome you silly person\r\n'
 19:26:23.041357 < 5 bytes data, client => server
 19:26:23.041367 'PWD\r\n'
 19:26:23.041469 Received DATA (on stdin)
 19:26:23.041479 > 30 bytes data, server => client
 19:26:23.041490 '257 "/" is current directory\r\n'
 19:26:23.041560 < 6 bytes data, client => server
 19:26:23.041576 'EPSV\r\n'
 19:26:23.044091 Received DATA (on stdin)
 19:26:23.044105 > 39 bytes data, server => client
 19:26:23.044116 '229 Entering Passive Mode (|||37059|)\r\n'
 19:26:23.047462 < 8 bytes data, client => server
 19:26:23.047474 'TYPE I\r\n'
 19:26:23.047892 Received DATA (on stdin)
 19:26:23.047904 > 33 bytes data, server => client
 19:26:23.047914 '200 I modify TYPE as you wanted\r\n'
 19:26:23.047971 < 21 bytes data, client => server
 19:26:23.047981 'SIZE verifiedserver\r\n'
 19:26:23.048098 Received DATA (on stdin)
 19:26:23.048110 > 8 bytes data, server => client
 19:26:23.048121 '213 17\r\n'
 19:26:23.048170 < 21 bytes data, client => server
 19:26:23.048182 'RETR verifiedserver\r\n'
 19:26:23.048392 Received DATA (on stdin)
 19:26:23.048403 > 29 bytes data, server => client
 19:26:23.048414 '150 Binary junk (17 bytes).\r\n'
 19:26:23.048948 Received DATA (on stdin)
 19:26:23.048960 > 28 bytes data, server => client
 19:26:23.048971 '226 File transfer complete\r\n'
 19:26:23.092480 < 6 bytes data, client => server
 19:26:23.092526 'QUIT\r\n'
 19:26:23.094543 Received DATA (on stdin)
 19:26:23.094561 > 18 bytes data, server => client
 19:26:23.094571 '221 bye bye baby\r\n'
 19:26:23.095721 ====> Client disconnect
 19:26:23.095871 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:22.043507 Running IPv4 version
 19:26:22.043576 Listening on port 37059
 19:26:22.043621 Wrote pid 87587 to log/7/server/ftp_sockdata.pid
 19:26:22.043813 Received PING (on stdin)
 19:26:22.043912 Received PORT (on stdin)
 19:26:22.047702 ====> Client connect
 19:26:22.048475 Received DATA (on stdin)
 19:26:22.048489 > 17 bytes data, server => client
 19:26:22.048500 'WE ROOLZ: 84721\r\n'
 19:26:22.048527 Received DISC (on stdin)
 19:26:22.048538 ====> Client forcibly disconnected
 19:26:22.048671 Received QUIT (on stdin)
 19:26:22.048681 quits
 19:26:22.048748 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind152 ../src/curl -q --output log/23/curl152.out  --include --trace-ascii log/23/trace152 --trace-time http://127.0.0.1:44711/152 --fail > log/23/stdout152 2> log/23/stderr152
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind146 ../src/curl -q --output log/21/curl146.out  --include --trace-ascii log/21/trace146 --trace-time ftp://127.0.0.1:35787/first/dir/here/146 ftp://127.0.0.1:35787/146 > log/21/stdout146 2> log/21/stderr146
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind153 ../src/curl -q --include --trace-ascii log/17/trace153 --trace-time http://127.0.0.1:35993/1530001 -u testuser:testpass --digest http://127.0.0.1:35993/1530002 > log/17/stdout153 2> log/17/stderr153
========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 550 I won't allow this on my server
 COUNT CWD 1
 Testnum 147
=== End of file server.cmd
=== Start of file valgrind147
 ==87648== 
 ==87648== Process terminating with default action of signal 4 (SIGILL)
 ==87648==  Illegal opcode at address 0x492B75F
 ==87648==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87648==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87648==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87648==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87648==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87648==    by 0x49908EB: curl_version_info (version.c:600)
 ==87648==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87648==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87648==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87648==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind147
test 0146 [persistent FTP with different paths]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind146 ../src/curl -q --output log/21/curl146.out  --include --trace-ascii log/21/trace146 --trace-time ftp://127.0.0.1:35787/first/dir/here/146 ftp://127.0.0.1:35787/146 > log/21/stdout146 2> log/21/stderr146

 146: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 146
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind146 ../src/curl -q --output log/21/curl146.out  --include --trace-ascii log/21/trace146 --trace-time ftp://127.0.0.1:35787/first/dir/here/146 ftp://127.0.0.1:35787/146 > log/21/stdout146 2> log/21/stderr146
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:22.357682 ====> Client connect
 19:26:22.357886 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:22.358187 < "USER anonymous"
 19:26:22.358221 > "331 We are happy you popped in![CR][LF]"
 19:26:22.358371 < "PASS ftp@example.com"
 19:26:22.358393 > "230 Welcome you silly person[CR][LF]"
 19:26:22.358527 < "PWD"
 19:26:22.358553 > "257 "/" is current directory[CR][LF]"
 19:26:22.358713 < "EPSV"
 19:26:22.358739 ====> Passive DATA channel requested by client
 19:26:22.358755 DATA sockfilt for passive data channel starting...
 19:26:22.368775 DATA sockfilt for passive data channel started (pid 87560)
 19:26:22.368949 DATA sockfilt for passive data channel listens on port 45633
 19:26:22.369003 > "229 Entering Passive Mode (|||45633|)[CR][LF]"
 19:26:22.369018 Client has been notified that upcoming DATA connection is awaited on port 45633
 19:26:22.372619 Client connects to port 45633
 19:26:22.372790 ====> Client established passive DATA connection on port 45633
 19:26:22.373061 < "TYPE I"
 19:26:22.373114 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:22.378908 < "SIZE verifiedserver"
 19:26:22.378979 > "213 17[CR][LF]"
 19:26:22.379149 < "RETR verifiedserver"
 19:26:22.379185 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:22.379286 =====> Closing passive DATA connection...
 19:26:22.379304 Server disconnects passive DATA connection
 19:26:22.379553 Server disconnected passive DATA connection
 19:26:22.379579 DATA sockfilt for passive data channel quits (pid 87560)
 19:26:22.379858 DATA sockfilt for passive data channel quit (pid 87560)
 19:26:22.379881 =====> Closed passive DATA connection
 19:26:22.379908 > "226 File transfer complete[CR][LF]"
 19:26:22.425662 < "QUIT"
 19:26:22.425724 > "221 bye bye baby[CR][LF]"
 19:26:22.426918 MAIN sockfilt said DISC
 19:26:22.426949 ====> Client disconnected
 19:26:22.427031 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:21.958033 ====> Client connect
 19:26:21.958380 Received DATA (on stdin)
 19:26:21.958393 > 146 bytes data, server => client
 19:26:21.958404 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:21.958415 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:21.958424 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:21.958534 < 16 bytes data, client => server
 19:26:21.958545 'USER anonymous\r\n'
 19:26:21.958705 Received DATA (on stdin)
 19:26:21.958716 > 33 bytes data, server => client
 19:26:21.958725 '331 We are happy you popped in!\r\n'
 19:26:21.958776 < 22 bytes data, client => server
 19:26:21.958785 'PASS ftp@example.com\r\n'
 19:26:21.958874 Received DATA (on stdin)
 19:26:21.958884 > 30 bytes data, server => client
 19:26:21.958893 '230 Welcome you silly person\r\n'
 19:26:21.958938 < 5 bytes data, client => server
 19:26:21.958947 'PWD\r\n'
 19:26:21.959034 Received DATA (on stdin)
 19:26:21.959043 > 30 bytes data, server => client
 19:26:21.959053 '257 "/" is current directory\r\n'
 19:26:21.959108 < 6 bytes data, client => server
 19:26:21.959117 'EPSV\r\n'
 19:26:21.972503 Received DATA (on stdin)
 19:26:21.972546 > 39 bytes data, server => client
 19:26:21.972563 '229 Entering Passive Mode (|||45633|)\r\n'
 19:26:21.972804 < 8 bytes data, client => server
 19:26:21.972821 'TYPE I\r\n'
 19:26:21.975837 Received DATA (on stdin)
 19:26:21.975854 > 33 bytes data, server => client
 19:26:21.975864 '200 I modify TYPE as you wanted\r\n'
 19:26:21.979216 < 21 bytes data, client => server
 19:26:21.979236 'SIZE verifiedserver\r\n'
 19:26:21.979473 Received DATA (on stdin)
 19:26:21.979485 > 8 bytes data, server => client
 19:26:21.979495 '213 17\r\n'
 19:26:21.979551 < 21 bytes data, client => server
 19:26:21.979563 'RETR verifiedserver\r\n'
 19:26:21.979794 Received DATA (on stdin)
 19:26:21.979805 > 29 bytes data, server => client
 19:26:21.979815 '150 Binary junk (17 bytes).\r\n'
 19:26:21.980398 Received DATA (on stdin)
 19:26:21.980410 > 28 bytes data, server => client
 19:26:21.980420 '226 File transfer complete\r\n'
 19:26:22.025965 < 6 bytes data, client => server
 19:26:22.025996 'QUIT\r\n'
 19:26:22.026233 Received DATA (on stdin)
 19:26:22.026245 > 18 bytes data, server => client
 19:26:22.026256 '221 bye bye baby\r\n'
 19:26:22.027367 ====> Client disconnect
 19:26:22.027536 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:22.963748 Running IPv4 version
 19:26:22.963842 Listening on port 45633
 19:26:22.963885 Wrote pid 87560 to log/21/server/ftp_sockdata.pid
 19:26:22.969158 Received PING (on stdin)
 19:26:22.969326 Received PORT (on stdin)
 19:26:22.972933 ====> Client connect
 19:26:22.979876 Received DATA (on stdin)
 19:26:22.979893 > 17 bytes data, server => client
 19:26:22.979903 'WE ROOLZ: 84694\r\n'
 19:26:22.979931 Received DISC (on stdin)
 19:26:22.979942 ====> Client forcibly disconnected
 19:26:22.980075 Received QUIT (on stdin)
 19:26:22.980086 quits
 19:26:22.980153 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 146
=== End of file server.cmd
=== Start of file valgrind146
 ==87608== 
 ==87608== Process terminating with default action of signal 4 (SIGILL)
 ==87608==  Illegal opcode at address 0x492B75F
 ==87608==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87608==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87608==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87608==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87608==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87608==    by 0x49908EB: curl_version_info (version.c:600)
 ==87608==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87608==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87608==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87608==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind146
test 0152 [HTTP GET CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind156 ../src/curl -q --output log/18/curl156.out  --include --trace-ascii log/18/trace156 --trace-time http://127.0.0.1:43739/156 -T log/18/put156 -u testuser:testpass --anyauth > log/18/stdout156 2> log/18/stderr156
with an error code that might trick authentication and --fail]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind152 ../src/curl -q --output log/23/curl152.out  --include --trace-ascii log/23/trace152 --trace-time http://127.0.0.1:44711/152 --fail > log/23/stdout152 2> log/23/stderr152

 152: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 152
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind152 ../src/curl -q --output log/23/curl152.out  --include --trace-ascii log/23/trace152 --trace-time http://127.0.0.1:44711/152 --fail > log/23/stdout152 2> log/23/stderr152
=== End of file commands.log
=== Start of file http_server.log
 19:26:22.335971 ====> Client connect
 19:26:22.336006 accept_connection 3 returned 4
 19:26:22.336030 Read 93 bytes
 19:26:22.336040 Process 93 bytes request
 19:26:22.336052 Got request: GET /verifiedserver HTTP/1.1
 19:26:22.336060 Are-we-friendly question received
 19:26:22.336086 Wrote request (93 bytes) input to log/23/server.input
 19:26:22.336102 Identifying ourselves as friends
 19:26:22.336203 Response sent (56 bytes) and written to log/23/server.response
 19:26:22.336214 special request received, no persistency
 19:26:22.336223 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 39880 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 152
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind152
 ==87906== 
 ==87906== Process terminating with default action of signal 4 (SIGILL)
 ==87906==  Illegal opcode at address 0x492B75F
 ==87906==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87906==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87906==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87906==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87906==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87906==    by 0x49908EB: curl_version_info (version.c:600)
 ==87906==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87906==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind152
test 0153 [HTTP with Digest authorization with stale=true]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind153 ../src/curl -q --include --trace-ascii log/17/trace153 --trace-time http://127.0.0.1:35993/1530001 -u testuser:testpass --digest http://127.0.0.1:35993/1530002 > log/17/stdout153 2> log/17/stderr153

 153: stdout FAILED:
--- log/17/check-expected	2026-10-15 19:26:25.392698014 +0000
+++ log/17/check-generated	2026-10-15 19:26:25.390295148 +0000
@@ -1,30 +0,0 @@
-HTTP/1.1 401 Authorization Required swsclose[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 23[CR][LF]
-[CR][LF]
-This IS the real page![LF]
-HTTP/1.1 401 Authorization Required swsclose[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 30[CR][LF]
-[CR][LF]
-This IS the second real page![LF]
== Contents of files in the log/17/ directory after test 153
=== Start of file check-expected
 HTTP/1.1 401 Authorization Required swsclose[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 23[CR][LF]
 [CR][LF]
 This IS the real page![LF]
 HTTP/1.1 401 Authorization Required swsclose[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 30[CR][LF]
 [CR][LF]
 This IS the second real page![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind153 ../src/curl -q --include --trace-ascii log/17/trace153 --trace-time http://127.0.0.1:35993/1530001 -u testuser:testpass --digest http://127.0.0.1:35993/1530002 > log/17/stdout153 2> log/17/stderr153
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.389912 ====> Client connect
 19:26:23.389944 accept_connection 3 returned 4
 19:26:23.389967 Read 93 bytes
 19:26:23.389977 Process 93 bytes request
 19:26:23.389990 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.389999 Are-we-friendly question received
 19:26:23.390024 Wrote request (93 bytes) input to log/17/server.input
 19:26:23.390040 Identifying ourselves as friends
 19:26:23.390104 Response sent (56 bytes) and written to log/17/server.response
 19:26:23.390113 special request received, no persistency
 19:26:23.390121 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 43136 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 153
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind153
 ==87992== 
 ==87992== Process terminating with default action of signal 4 (SIGILL)
 ==87992==  Illegal opcode at address 0x492B75F
 ==87992==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==87992==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==87992==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==87992==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==87992==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==87992==    by 0x49908EB: curl_version_info (version.c:600)
 ==87992==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==87992==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==87992==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==87992==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind153
test 0156 [HTTP PUT with --anyauth (when the server requires none)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind156 ../src/curl -q --output log/18/curl156.out  --include --trace-ascii log/18/trace156 --trace-time http://127.0.0.1:43739/156 -T log/18/put156 -u testuser:testpass --anyauth > log/18/stdout156 2> log/18/stderr156

 156: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 156
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind156 ../src/curl -q --output log/18/curl156.out  --include --trace-ascii log/18/trace156 --trace-time http://127.0.0.1:43739/156 -T log/18/put156 -u testuser:testpass --anyauth > log/18/stdout156 2> log/18/stderr156
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.422657 ====> Client connect
 19:26:23.422692 accept_connection 3 returned 4
 19:26:23.424999 Read 93 bytes
 19:26:23.436681 Process 93 bytes request
 19:26:23.436709 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.436718 Are-we-friendly question received
 19:26:23.436769 Wrote request (93 bytes) input to log/18/server.input
 19:26:23.436795 Identifying ourselves as friends
 19:26:23.436897 Response sent (56 bytes) and written to log/18/server.response
 19:26:23.436907 special request received, no persistency
 19:26:23.436915 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45660 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file put156
 This is data we upload witCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind157 ../src/curl -q --output log/3/curl157.out  --include --trace-ascii log/3/trace157 --trace-time http://127.0.0.1:36161/157 -u testuser:testpass --anyauth > log/3/stdout157 2> log/3/stderr157
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind163 ../src/curl -q --output log/11/curl163.out  --include --trace-ascii log/11/trace163 --trace-time http://127.0.0.1:40989/we/want/163 -F "name=<log/11/field163" -F tool=curl > log/11/stdout163 2> log/11/stderr163
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind158 ../src/curl -q --output log/9/curl158.out  --include --trace-ascii log/9/trace158 --trace-time http://127.0.0.1:43733/158 -F name=daniel -C 0 > log/9/stdout158 2> log/9/stderr158
h PUT
 a second line
 line three
 four is the number of lines
=== End of file put156
=== Start of file server.cmd
 Testnum 156
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind156
 ==88000== 
 ==88000== Process terminating with default action of signal 4 (SIGILL)
 ==88000==  Illegal opcode at address 0x492B75F
 ==88000==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88000==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88000==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88000==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88000==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88000==    by 0x49908EB: curl_version_info (version.c:600)
 ==88000==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88000==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88000==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88000==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind156
test 0157 [HTTP GET with --anyauth (when the server requires none)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind157 ../src/curl -q --output log/3/curl157.out  --include --trace-ascii log/3/trace157 --trace-time http://127.0.0.1:36161/157 -u testuser:testpass --anyauth > log/3/stdout157 2> log/3/stderr157

 157: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 157
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind157 ../src/curl -q --output log/3/curl157.out  --include --trace-ascii log/3/trace157 --trace-time http://127.0.0.1:36161/157 -u testuser:testpass --anyauth > log/3/stdout157 2> log/3/stderr157
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.506714 ====> Client connect
 19:26:23.506764 accept_connection 3 returned 4
 19:26:23.506794 Read 93 bytes
 19:26:23.506805 Process 93 bytes request
 19:26:23.506819 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.506828 Are-we-friendly question received
 19:26:23.506862 Wrote request (93 bytes) input to log/3/server.input
 19:26:23.506887 Identifying ourselves as friends
 19:26:23.506984 Response sent (56 bytes) and written to log/3/server.response
 19:26:23.506997 special request received, no persistency
 19:26:23.507006 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36444 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 157
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind157
 ==88132== 
 ==88132== Process terminating with default action of signal 4 (SIGILL)
 ==88132==  Illegal opcode at address 0x492B75F
 ==88132==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88132==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88132==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88132==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88132==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88132==    by 0x49908EB: curl_version_info (version.c:600)
 ==88132==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88132==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88132==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88132==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind157
test 0163 [HTTP multipart formpost with contents from a file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind163 ../src/curl -q --output log/11/curl163.out  --include --trace-ascii log/11/trace163 --trace-time http://127.0.0.1:40989/we/want/163 -F "name=<log/11/field163" -F tool=curl > log/11/stdout163 2> log/11/stderr163

 163: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 163
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind163 ../src/curl -q --output log/11/curl163.out  --include --trace-ascii log/11/trace163 --trace-time http://127.0.0.1:40989/we/want/163 -F "name=<log/11/field163" -F tool=curl > log/11/stdout163 2> log/11/stderr163
=== End of file commands.log
=== Start of file field163
 contents
 from
 a
 file
 newlinens?
 yes please
         
 [tab][CR] too
=== End of file field163
=== Start of file http_server.log
 19:26:22.994521 ====> Client connect
 19:26:22.994559 accept_connection 3 returned 4
 19:26:22.994582 Read 93 bytes
 19:26:22.994593 Process 93 bytes request
 19:26:22.994605 Got request: GET /verifiedserver HTTP/1.1
 19:26:22.994614 Are-we-friendly question received
 19:26:22.994648 Wrote request (93 bytes) input to log/11/server.input
 19:26:22.994666 Identifying ourselves as friends
 19:26:22.994749 Response sent (56 bytes) and written to log/11/server.response
 19:26:22.994762 special request received, no persistency
 19:26:22.994770 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 47892 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 163
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind163
 ==88417== 
 ==88417== Process terminating with default action of signal 4 (SIGILL)
 ==88417==  Illegal opcode at address 0x492B75F
 ==88417==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88417==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88417==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88417==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88417==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88417==    by 0x49908EB: curl_version_info (version.c:600)
 ==88417==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88417==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88417==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88417==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind163
test 0158 [HTTP multipart formpost with zero resume offset and only a 100 reply]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind158 ../src/curl -q --output log/9/curl158.out  --include --trace-ascii log/9/trace158 --trace-time http://127.0.0.1:43733/158 -F name=daniel -C 0 > log/9/stdout158 2> log/9/stderr1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind160 ../src/curl -q --include --trace-ascii log/15/trace160 --trace-time http://127.0.0.1:40321/want/160 http://127.0.0.1:40321/wantmore/1600001 > log/15/stdout160 2> log/15/stderr160
58

 158: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 158
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind158 ../src/curl -q --output log/9/curl158.out  --include --trace-ascii log/9/trace158 --trace-time http://127.0.0.1:43733/158 -F name=daniel -C 0 > log/9/stdout158 2> log/9/stderr158
=== End of file commands.log
=== Start of file http_server.log
 19:26:22.575639 ====> Client connect
 19:26:22.575681 accept_connection 3 returned 4
 19:26:22.575706 Read 93 bytes
 19:26:22.575718 Process 93 bytes request
 19:26:22.575732 Got request: GET /verifiedserver HTTP/1.1
 19:26:22.575741 Are-we-friendly question received
 19:26:22.575772 Wrote request (93 bytes) input to log/9/server.input
 19:26:22.575797 Identifying ourselves as friends
 19:26:22.575872 Response sent (56 bytes) and written to log/9/server.response
 19:26:22.575885 special request received, no persistency
 19:26:22.575894 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 38654 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 158
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind158
 ==88227== 
 ==88227== Process terminating with default action of signal 4 (SIGILL)
 ==88227==  Illegal opcode at address 0x492B75F
 ==88227==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88227==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88227==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88227==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88227==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88227==    by 0x49908EB: curl_version_info (version.c:600)
 ==88227==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88227==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88227==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88227==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind158
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind164 ../src/curl -q --output log/13/curl164.out  --include --trace-ascii log/13/trace164 --trace-time http://127.0.0.1:38821/want/164 -r 0-10,12-15 > log/13/stdout164 2> log/13/stderr164
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind161 ../src/curl -q --output log/20/curl161.out  --include --trace-ascii log/20/trace161 --trace-time ftp://127.0.0.1:41549/161 > log/20/stdout161 2> log/20/stderr161
test 0160 [HTTP with delayed close, conn reuse, connection reset and retry]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind160 ../src/curl -q --include --trace-ascii log/15/trace160 --trace-time http://127.0.0.1:40321/want/160 http://127.0.0.1:40321/wantmore/1600001 > log/15/stdout160 2> log/15/stderr160

 160: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:26:25.893814389 +0000
+++ log/15/check-generated	2026-10-15 19:26:25.890171945 +0000
@@ -1,10 +0,0 @@
-HTTP/1.1 200 OK swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 9[CR][LF]
-[CR][LF]
-surprise[LF]
-HTTP/1.1 200 OK swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-surprise2[LF]
== Contents of files in the log/15/ directory after test 160
=== Start of file check-expected
 HTTP/1.1 200 OK swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 9[CR][LF]
 [CR][LF]
 surprise[LF]
 HTTP/1.1 200 OK swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 surprise2[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind160 ../src/curl -q --include --trace-ascii log/15/trace160 --trace-time http://127.0.0.1:40321/want/160 http://127.0.0.1:40321/wantmore/1600001 > log/15/stdout160 2> log/15/stderr160
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.924655 ====> Client connect
 19:26:23.924695 accept_connection 3 returned 4
 19:26:23.924718 Read 93 bytes
 19:26:23.924728 Process 93 bytes request
 19:26:23.924740 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.924749 Are-we-friendly question received
 19:26:23.924776 Wrote request (93 bytes) input to log/15/server.input
 19:26:23.924792 Identifying ourselves as friends
 19:26:23.925858 Response sent (56 bytes) and written to log/15/server.response
 19:26:23.925875 special request received, no persistency
 19:26:23.925884 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 49914 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 160
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind160
 ==88387== 
 ==88387== Process terminating with default action of signal 4 (SIGILL)
 ==88387==  Illegal opcode at address 0x492B75F
 ==88387==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88387==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88387==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88387==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88387==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88387==    by 0x49908EB: curl_version_info (version.c:600)
 ==88387==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88387==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88387==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88387==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind160
test 0164 [HTTP range with multiple ranges]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind164 ../src/curl -q --output log/13/curl164.out  --include --trace-ascii log/13/trace164 --trace-time http://127.0.0.1:38821/want/164 -r 0-10,12-15 > log/13/stdout164 2> log/13/stderr164

 164: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 164
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind164 ../src/curl -q --output log/13/curl164.out  --include --trace-ascii log/13/trace164 --trace-time http://127.0.0.1:38821/want/164 -r 0-10,12-15 > log/13/stdout164 2> log/13/stderr164
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.322584 ====> Client connect
 19:26:23.322619 accept_connection 3 returned 4
 19:26:23.322775 Read 93 bytes
 19:26:23.322791 Process 93 bytes request
 19:26:23.322805 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.322829 Are-we-friendly question received
 19:26:23.322862 Wrote request (93 bytes) input to log/13/server.input
 19:26:23.322880 Identifying ourselves as friends
 19:26:23.322943 Response sent (56 bytes) and written to log/13/server.response
 19:26:23.322952 special request received, no persistency
 19:26:23.322961 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 47576 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 164
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind164
 ==88569== 
 ==88569== Process terminating with default action of signal 4 (SIGILL)
 ==88569==  Illegal opcode at address 0x492B75F
 ==88569==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88569==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88569==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88569==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88569==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88569==    by 0x49908EB: curl_version_info (version.c:600)
 ==88569==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88569==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88569==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88569==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind164
test 0161 [FTP RETR partial file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind161 ../src/curl -q --output log/20/curl161.out  --include --trace-ascii log/20/trace161 --trace-time ftp://127.0.0.1:41549/161 > log/20/stdout161 2> log/20/stderr161

 161: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 161
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind161 ../src/curl -q --output log/20/curl161.out  --include --trace-ascii log/20/trace161 --trace-time ftp://127.0.0.1:41549/161 > log/20/stdout161 2> log/20/stderr161
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:23.330805 ====> Client connect
 19:26:23.331020 > "220-        _   _ ____  _[CR][LF]220-    ___| CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind167 ../src/curl -q --output log/8/curl167.out  --include --trace-ascii log/8/trace167 --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:44467 --proxy-user foo:bar --digest --user digest:a-lot > log/8/stdout167 2> log/8/stderr167
| | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:23.334339 < "USER anonymous"
 19:26:23.334389 > "331 We are happy you popped in![CR][LF]"
 19:26:23.336177 < "PASS ftp@example.com"
 19:26:23.336220 > "230 Welcome you silly person[CR][LF]"
 19:26:23.336413 < "PWD"
 19:26:23.336455 > "257 "/" is current directory[CR][LF]"
 19:26:23.336648 < "EPSV"
 19:26:23.336676 ====> Passive DATA channel requested by client
 19:26:23.336695 DATA sockfilt for passive data channel starting...
 19:26:23.345413 DATA sockfilt for passive data channel started (pid 88379)
 19:26:23.345553 DATA sockfilt for passive data channel listens on port 46093
 19:26:23.345606 > "229 Entering Passive Mode (|||46093|)[CR][LF]"
 19:26:23.345629 Client has been notified that upcoming DATA connection is awaited on port 46093
 19:26:23.351488 Client connects to port 46093
 19:26:23.351531 ====> Client established passive DATA connection on port 46093
 19:26:23.351641 < "TYPE I"
 19:26:23.351682 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:23.351889 < "SIZE verifiedserver"
 19:26:23.351937 > "213 17[CR][LF]"
 19:26:23.352145 < "RETR verifiedserver"
 19:26:23.352186 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:23.352293 =====> Closing passive DATA connection...
 19:26:23.352318 Server disconnects passive DATA connection
 19:26:23.352602 Server disconnected passive DATA connection
 19:26:23.352634 DATA sockfilt for passive data channel quits (pid 88379)
 19:26:23.352887 DATA sockfilt for passive data channel quit (pid 88379)
 19:26:23.352918 =====> Closed passive DATA connection
 19:26:23.352950 > "226 File transfer complete[CR][LF]"
 19:26:23.399012 < "QUIT"
 19:26:23.399072 > "221 bye bye baby[CR][LF]"
 19:26:23.400388 MAIN sockfilt said DISC
 19:26:23.400431 ====> Client disconnected
 19:26:23.400508 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:22.931429 ====> Client connect
 19:26:22.931768 Received DATA (on stdin)
 19:26:22.931786 > 146 bytes data, server => client
 19:26:22.931797 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:22.931807 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:22.931816 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:22.934886 < 16 bytes data, client => server
 19:26:22.934907 'USER anonymous\r\n'
 19:26:22.935129 Received DATA (on stdin)
 19:26:22.935143 > 33 bytes data, server => client
 19:26:22.935154 '331 We are happy you popped in!\r\n'
 19:26:22.936772 < 22 bytes data, client => server
 19:26:22.936790 'PASS ftp@example.com\r\n'
 19:26:22.936956 Received DATA (on stdin)
 19:26:22.936970 > 30 bytes data, server => client
 19:26:22.936980 '230 Welcome you silly person\r\n'
 19:26:22.937041 < 5 bytes data, client => server
 19:26:22.937055 'PWD\r\n'
 19:26:22.937188 Received DATA (on stdin)
 19:26:22.937201 > 30 bytes data, server => client
 19:26:22.937211 '257 "/" is current directory\r\n'
 19:26:22.937281 < 6 bytes data, client => server
 19:26:22.937295 'EPSV\r\n'
 19:26:22.949400 Received DATA (on stdin)
 19:26:22.949425 > 39 bytes data, server => client
 19:26:22.949437 '229 Entering Passive Mode (|||46093|)\r\n'
 19:26:22.952122 < 8 bytes data, client => server
 19:26:22.952142 'TYPE I\r\n'
 19:26:22.952419 Received DATA (on stdin)
 19:26:22.952433 > 33 bytes data, server => client
 19:26:22.952444 '200 I modify TYPE as you wanted\r\n'
 19:26:22.952510 < 21 bytes data, client => server
 19:26:22.952526 'SIZE verifiedserver\r\n'
 19:26:22.952680 Received DATA (on stdin)
 19:26:22.952693 > 8 bytes data, server => client
 19:26:22.952703 '213 17\r\n'
 19:26:22.952777 < 21 bytes data, client => server
 19:26:22.952792 'RETR verifiedserver\r\n'
 19:26:22.953058 Received DATA (on stdin)
 19:26:22.953071 > 29 bytes data, server => client
 19:26:22.953082 '150 Binary junk (17 bytes).\r\n'
 19:26:22.953689 Received DATA (on stdin)
 19:26:22.953702 > 28 bytes data, server => client
 19:26:22.953713 '226 File transfer complete\r\n'
 19:26:22.999545 < 6 bytes data, client => server
 19:26:22.999580 'QUIT\r\n'
 19:26:22.999824 Received DATA (on stdin)
 19:26:22.999838 > 18 bytes data, server => client
 19:26:22.999848 '221 bye bye baby\r\n'
 19:26:23.001073 ====> Client disconnect
 19:26:23.001253 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:23.940557 Running IPv4 version
 19:26:23.940638 Listening on port 46093
 19:26:23.940684 Wrote pid 88379 to log/20/server/ftp_sockdata.pid
 19:26:23.946068 Received PING (on stdin)
 19:26:23.946182 Received PORT (on stdin)
 19:26:23.952166 ====> Client connect
 19:26:23.953148 Received DATA (on stdin)
 19:26:23.953166 > 17 bytes data, server => client
 19:26:23.953177 'WE ROOLZ: 84833\r\n'
 19:26:23.953209 Received DISC (on stdin)
 19:26:23.953223 ====> Client forcibly disconnected
 19:26:23.953381 Received QUIT (on stdin)
 19:26:23.953394 quits
 19:26:23.953466 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 161
=== End of file server.cmd
=== Start of file valgrind161
 ==88412== 
 ==88412== Process terminating with default action of signal 4 (SIGILL)
 ==88412==  Illegal opcode at address 0x492B75F
 ==88412==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88412==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88412==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88412==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88412==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88412==    by 0x49908EB: curl_version_info (version.c:600)
 ==88412==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88412==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88412==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88412==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind161
test 0167 [HTTP with proxy-requiring-Basic to site-requiring-Digest]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind167 ../src/curl -q --output log/8/curl167.out  --include --trace-ascii log/8/trace167 --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:44467 --proxy-user foo:bar --digest --user digest:a-lot > log/8/stdout167 2> log/8/stderr167

 167: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 167
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind167 ../src/curl -q --output log/8/curl167.out  --include --trace-ascii log/8/trace167 --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:44467 --proxy-user foo:bar --digest --user digest:a-lot > log/8/stdout167 2> log/8/stderr167
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.813129 ====> Client connect
 19:26:23.813290 accept_connection 3 returned 4
 19:26:23.813319 Read 93 bytes
 19:26:23.813329 Process 93 bytes request
 19:26:23.813342 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.813351 Are-we-friendly question received
 19:26:23.813384 Wrote request (93 bytes) input to log/8/server.input
 19:26:23.813402 Identifying ourselves as friends
 19:26:23.813481 Response sent (56 bytes) and written to log/8/server.response
 19:26:23.813492 special request received, no persistency
 19:26:23.813501 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 56598 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 *CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind168 ../src/curl -q --output log/24/curl168.out  --include --trace-ascii log/24/trace168 --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:38895 --proxy-user foo:bar --proxy-digest --digest --user digest:a-lot > log/24/stdout168 2> log/24/stderr168
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind166 ../src/curl -q --output log/1/curl166.out  --include --trace-ascii log/1/trace166 --trace-time http://127.0.0.1:38815/we/want/166 -F "name=@log/1/fie ld 166" > log/1/stdout166 2> log/1/stderr166
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind171 ../src/curl -q --output log/2/curl171.out  --include --trace-ascii log/2/trace171 --trace-time -c log/2/jar171 -x 127.0.0.1:34531 http://z.x.com/171 > log/2/stdout171 2> log/2/stderr171
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind172 ../src/curl -q --output log/19/curl172.out  --include --trace-ascii log/19/trace172 --trace-time http://127.0.0.1:46497/we/want/172 -b log/19/jar172.txt -b "tool=curl; name=fool" > log/19/stdout172 2> log/19/stderr172
 Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 167
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind167
 ==88724== 
 ==88724== Process terminating with default action of signal 4 (SIGILL)
 ==88724==  Illegal opcode at address 0x492B75F
 ==88724==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88724==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88724==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88724==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88724==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88724==    by 0x49908EB: curl_version_info (version.c:600)
 ==88724==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88724==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88724==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88724==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind167
test 0168 [HTTP with proxy-requiring-Digest to site-requiring-Digest]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind168 ../src/curl -q --output log/24/curl168.out  --include --trace-ascii log/24/trace168 --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:38895 --proxy-user foo:bar --proxy-digest --digest --user digest:a-lot > log/24/stdout168 2> log/24/stderr168

 168: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 168
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind168 ../src/curl -q --output log/24/curl168.out  --include --trace-ascii log/24/trace168 --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:38895 --proxy-user foo:bar --proxy-digest --digest --user digest:a-lot > log/24/stdout168 2> log/24/stderr168
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.949707 ====> Client connect
 19:26:23.949747 accept_connection 3 returned 4
 19:26:23.949772 Read 93 bytes
 19:26:23.949782 Process 93 bytes request
 19:26:23.949824 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.949835 Are-we-friendly question received
 19:26:23.949897 Wrote request (93 bytes) input to log/24/server.input
 19:26:23.949925 Identifying ourselves as friends
 19:26:23.950155 Response sent (56 bytes) and written to log/24/server.response
 19:26:23.950169 special request received, no persistency
 19:26:23.950228 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 50112 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 168
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind168
 ==88835== 
 ==88835== Process terminating with default action of signal 4 (SIGILL)
 ==88835==  Illegal opcode at address 0x492B75F
 ==88835==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88835==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88835==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88835==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88835==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88835==    by 0x49908EB: curl_version_info (version.c:600)
 ==88835==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88835==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind168
test 0166 [HTTP formpost a file with spaces in name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind166 ../src/curl -q --output log/1/curl166.out  --include --trace-ascii log/1/trace166 --trace-time http://127.0.0.1:38815/we/want/166 -F "name=@log/1/fie ld 166" > log/1/stdout166 2> log/1/stderr166

 166: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 166
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind166 ../src/curl -q --output log/1/curl166.out  --include --trace-ascii log/1/trace166 --trace-time http://127.0.0.1:38815/we/want/166 -F "name=@log/1/fie ld 166" > log/1/stdout166 2> log/1/stderr166
=== End of file commands.log
=== Start of file fie ld 166
 data inside the file
=== End of file fie ld 166
=== Start of file http_server.log
 19:26:24.786937 ====> Client connect
 19:26:24.787088 accept_connection 3 returned 4
 19:26:24.787121 Read 93 bytes
 19:26:24.787133 Process 93 bytes request
 19:26:24.787148 Got request: GET /verifiedserver HTTP/1.1
 19:26:24.787166 Are-we-friendly question received
 19:26:24.787235 Wrote request (93 bytes) input to log/1/server.input
 19:26:24.787255 Identifying ourselves as friends
 19:26:24.787387 Response sent (56 bytes) and written to log/1/server.response
 19:26:24.787401 special request received, no persistency
 19:26:24.787411 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 34918 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 166
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind166
 ==88703== 
 ==88703== Process terminating with default action of signal 4 (SIGILL)
 ==88703==  Illegal opcode at address 0x492B75F
 ==88703==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88703==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88703==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88703==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88703==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88703==    by 0x49908EB: curl_version_info (version.c:600)
 ==88703==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88703==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88703==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88703==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind166
test 0171 [HTTP, get cookie with dot prefixed full domain]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind171 ../src/cuCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind165 ../src/curl -q --output log/14/curl165.out  --include --trace-ascii log/14/trace165 --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:45467 http://www.große.de/page/165 > log/14/stdout165 2> log/14/stderr165
rl -q --output log/2/curl171.out  --include --trace-ascii log/2/trace171 --trace-time -c log/2/jar171 -x 127.0.0.1:34531 http://z.x.com/171 > log/2/stdout171 2> log/2/stderr171

 171: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 171
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind171 ../src/curl -q --output log/2/curl171.out  --include --trace-ascii log/2/trace171 --trace-time -c log/2/jar171 -x 127.0.0.1:34531 http://z.x.com/171 > log/2/stdout171 2> log/2/stderr171
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.039780 ====> Client connect
 19:26:25.039813 accept_connection 3 returned 4
 19:26:25.040782 Read 93 bytes
 19:26:25.040796 Process 93 bytes request
 19:26:25.040808 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.040816 Are-we-friendly question received
 19:26:25.040844 Wrote request (93 bytes) input to log/2/server.input
 19:26:25.040859 Identifying ourselves as friends
 19:26:25.040918 Response sent (56 bytes) and written to log/2/server.response
 19:26:25.040927 special request received, no persistency
 19:26:25.040934 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 34208 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 171
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind171
 ==88901== 
 ==88901== Process terminating with default action of signal 4 (SIGILL)
 ==88901==  Illegal opcode at address 0x492B75F
 ==88901==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88901==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88901==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88901==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88901==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88901==    by 0x49908EB: curl_version_info (version.c:600)
 ==88901==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88901==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88901==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88901==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind171
test 0172 [HTTP with cookies file and custom added cookie]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind172 ../src/curl -q --output log/19/curl172.out  --include --trace-ascii log/19/trace172 --trace-time http://127.0.0.1:46497/we/want/172 -b log/19/jar172.txt -b "tool=curl; name=fool" > log/19/stdout172 2> log/19/stderr172

 172: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 172
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind172 ../src/curl -q --output log/19/curl172.out  --include --trace-ascii log/19/trace172 --trace-time http://127.0.0.1:46497/we/want/172 -b log/19/jar172.txt -b "tool=curl; name=fool" > log/19/stdout172 2> log/19/stderr172
=== End of file commands.log
=== Start of file http_server.log
 19:26:24.043046 ====> Client connect
 19:26:24.043084 accept_connection 3 returned 4
 19:26:24.049970 Read 93 bytes
 19:26:24.049994 Process 93 bytes request
 19:26:24.050006 Got request: GET /verifiedserver HTTP/1.1
 19:26:24.050015 Are-we-friendly question received
 19:26:24.050063 Wrote request (93 bytes) input to log/19/server.input
 19:26:24.050084 Identifying ourselves as friends
 19:26:24.050160 Response sent (56 bytes) and written to log/19/server.response
 19:26:24.050170 special request received, no persistency
 19:26:24.050179 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 33956 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file jar172.txt
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 .127.0.0.1	TRUE	/silly/	FALSE	0	ismatch	this
 .127.0.0.1	TRUE	/	FALSE	0	partmatch	present
 127.0.0.1	FALSE	/we/want/	FALSE	22139150993	nodomain	value
=== End of file jar172.txt
=== Start of file server.cmd
 Testnum 172
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind172
 ==88917== 
 ==88917== Process terminating with default action of signal 4 (SIGILL)
 ==88917==  Illegal opcode at address 0x492B75F
 ==88917==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88917==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88917==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88917==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88917==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88917==    by 0x49908EB: curl_version_info (version.c:600)
 ==88917==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88917==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88917==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88917==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind172
setenv LC_ALL = C.UTF-8
test 0165 [HTTP over proxy with IDN hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind165 ../src/curl -q --output log/14/curl165.out  --include --trace-ascii log/14/trace165 --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:45467 http://www.große.de/page/165 > log/14/stdout165 2> log/14/stderr165

 165: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 165
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind165 ../src/curl -q --output log/14/curl165.out  --include --trace-ascii log/14/trace165 --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:45467 http://www.große.de/page/165 > log/14/stdout165 2> log/14/stderr165
=== End of file commands.log
=== Start of file http_server.log
 19:26:23.733697 ====> Client connect
 19:26:23.733731 accept_connection 3 returned 4
 19:26:23.733753 Read 93 bytes
 19:26:23.733762 Process 93 bytes request
 19:26:23.733775 Got request: GET /verifiedserver HTTP/1.1
 19:26:23.733784 Are-we-friendly question received
 19:26:23.733810 Wrote request (93 bytes) input to log/14/server.input
 19:26:23.733830 Identifying ourselves as friends
 19:26:23.733931 ReCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind177 ../src/curl -q --output log/4/curl177.out  --include --trace-ascii log/4/trace177 --trace-time http://127.0.0.1:35735/177 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout177 2> log/4/stderr177
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind173 ../src/curl -q --output log/5/curl173.out  --include --trace-ascii log/5/trace173 --trace-time http://127.0.0.1:37089/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" <log/5/stdin-for-173 > log/5/stdout173 2> log/5/stderr173
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind175 ../src/curl -q --output log/22/curl175.out  --include --trace-ascii log/22/trace175 --trace-time http://127.0.0.1:35989/175 -u auser:apasswd --digest -d "junkelijunk" > log/22/stdout175 2> log/22/stderr175
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind174 ../src/curl -q --output log/16/curl174.out  --include --trace-ascii log/16/trace174 --trace-time http://127.0.0.1:35903/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/16/stdout174 2> log/16/stderr174
sponse sent (56 bytes) and written to log/14/server.response
 19:26:23.733941 special request received, no persistency
 19:26:23.733949 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 49670 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 165
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind165
 ==88687== 
 ==88687== Process terminating with default action of signal 4 (SIGILL)
 ==88687==  Illegal opcode at address 0x492B75F
 ==88687==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==88687==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==88687==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==88687==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==88687==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==88687==    by 0x49908EB: curl_version_info (version.c:600)
 ==88687==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==88687==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==88687==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==88687==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind165
test 0177 [HTTP POST --digest to server doing a 302-location response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind177 ../src/curl -q --output log/4/curl177.out  --include --trace-ascii log/4/trace177 --trace-time http://127.0.0.1:35735/177 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout177 2> log/4/stderr177

 177: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 177
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind177 ../src/curl -q --output log/4/curl177.out  --include --trace-ascii log/4/trace177 --trace-time http://127.0.0.1:35735/177 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout177 2> log/4/stderr177
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.453178 ====> Client connect
 19:26:25.453225 accept_connection 3 returned 4
 19:26:25.453253 Read 93 bytes
 19:26:25.453263 Process 93 bytes request
 19:26:25.453276 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.453285 Are-we-friendly question received
 19:26:25.453314 Wrote request (93 bytes) input to log/4/server.input
 19:26:25.453330 Identifying ourselves as friends
 19:26:25.453424 Response sent (56 bytes) and written to log/4/server.response
 19:26:25.453436 special request received, no persistency
 19:26:25.453445 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 54888 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 177
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind177
 ==89181== 
 ==89181== Process terminating with default action of signal 4 (SIGILL)
 ==89181==  Illegal opcode at address 0x492B75F
 ==89181==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89181==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89181==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89181==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89181==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89181==    by 0x49908EB: curl_version_info (version.c:600)
 ==89181==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89181==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89181==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89181==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind177
test 0173 [HTTP RFC1867-formpost a file from stdin with "faked" filename]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind173 ../src/curl -q --output log/5/curl173.out  --include --trace-ascii log/5/trace173 --trace-time http://127.0.0.1:37089/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" <log/5/stdin-for-173 > log/5/stdout173 2> log/5/stderr173

 173: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 173
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind173 ../src/curl -q --output log/5/curl173.out  --include --trace-ascii log/5/trace173 --trace-time http://127.0.0.1:37089/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" <log/5/stdin-for-173 > log/5/stdout173 2> log/5/stderr173
=== End of file commands.log
=== Start of file http_server.log
 19:26:24.193109 ====> Client connect
 19:26:24.193152 accept_connection 3 returned 4
 19:26:24.193178 Read 93 bytes
 19:26:24.193187 Process 93 bytes request
 19:26:24.193200 Got request: GET /verifiedserver HTTP/1.1
 19:26:24.193209 Are-we-friendly question received
 19:26:24.193236 Wrote request (93 bytes) input to log/5/server.input
 19:26:24.193252 Identifying ourselves as friends
 19:26:24.193331 Response sent (56 bytes) and written to log/5/server.response
 19:26:24.193342 special request received, no persistency
 19:26:24.193350 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 55902 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 173
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file stdin-for-173
 line1
 line2
 line3
 line4
 line5
 line6
 line7
 line8
=== End of file stdin-for-173
=== Start of file valgrind173
 ==89044== 
 ==89044== Process terminating with default action of signal 4 (SIGILL)
 ==89044==  Illegal opcode at address 0x492B75F
 ==89044==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89044==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89044==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89044==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89044==    by 0x49908EB: UnknownInliCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind180 ../src/curl -q --output log/10/curl180.out  --include --trace-ascii log/10/trace180 --trace-time http://127.0.0.1:40913/we/want/180 -T log/10/test180.txt --http1.0 > log/10/stdout180 2> log/10/stderr180
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind188 ../src/curl -q --output log/9/curl188.out  --include --trace-ascii log/9/trace188 --trace-time http://127.0.0.1:43733/188 -C 50 -L > log/9/stdout188 2> log/9/stderr188
nedFun (vtls.c:292)
 ==89044==    by 0x49908EB: curl_version_info (version.c:600)
 ==89044==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89044==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89044==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89044==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind173
test 0175 [HTTP POST --digest to server not requiring any auth at all]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind175 ../src/curl -q --output log/22/curl175.out  --include --trace-ascii log/22/trace175 --trace-time http://127.0.0.1:35989/175 -u auser:apasswd --digest -d "junkelijunk" > log/22/stdout175 2> log/22/stderr175

 175: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 175
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind175 ../src/curl -q --output log/22/curl175.out  --include --trace-ascii log/22/trace175 --trace-time http://127.0.0.1:35989/175 -u auser:apasswd --digest -d "junkelijunk" > log/22/stdout175 2> log/22/stderr175
=== End of file commands.log
=== Start of file http_server.log
 19:26:24.429834 ====> Client connect
 19:26:24.429871 accept_connection 3 returned 4
 19:26:24.429895 Read 93 bytes
 19:26:24.429905 Process 93 bytes request
 19:26:24.429918 Got request: GET /verifiedserver HTTP/1.1
 19:26:24.429927 Are-we-friendly question received
 19:26:24.429958 Wrote request (93 bytes) input to log/22/server.input
 19:26:24.429975 Identifying ourselves as friends
 19:26:24.430043 Response sent (56 bytes) and written to log/22/server.response
 19:26:24.430055 special request received, no persistency
 19:26:24.430064 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 41644 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 175
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind175
 ==89166== 
 ==89166== Process terminating with default action of signal 4 (SIGILL)
 ==89166==  Illegal opcode at address 0x492B75F
 ==89166==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89166==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89166==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89166==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89166==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89166==    by 0x49908EB: curl_version_info (version.c:600)
 ==89166==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89166==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind175
test 0174 [HTTP POST --anyauth to server not requiring any auth at all]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind174 ../src/curl -q --output log/16/curl174.out  --include --trace-ascii log/16/trace174 --trace-time http://127.0.0.1:35903/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/16/stdout174 2> log/16/stderr174

 174: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 174
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind174 ../src/curl -q --output log/16/curl174.out  --include --trace-ascii log/16/trace174 --trace-time http://127.0.0.1:35903/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/16/stdout174 2> log/16/stderr174
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.469837 ====> Client connect
 19:26:25.469875 accept_connection 3 returned 4
 19:26:25.469898 Read 93 bytes
 19:26:25.469908 Process 93 bytes request
 19:26:25.469922 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.469930 Are-we-friendly question received
 19:26:25.469958 Wrote request (93 bytes) input to log/16/server.input
 19:26:25.469975 Identifying ourselves as friends
 19:26:25.470065 Response sent (56 bytes) and written to log/16/server.response
 19:26:25.470076 special request received, no persistency
 19:26:25.470084 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58990 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 174
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind174
 ==89194== 
 ==89194== Process terminating with default action of signal 4 (SIGILL)
 ==89194==  Illegal opcode at address 0x492B75F
 ==89194==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89194==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89194==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89194==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89194==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89194==    by 0x49908EB: curl_version_info (version.c:600)
 ==89194==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89194==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89194==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89194==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind174
test 0188 [HTTP GET with resume and redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind188 ../src/curl -q --output log/9/curl188.out  --include --trace-ascii log/9/trace188 --trace-time http://127.0.0.1:43733/188 -C 50 -L > log/9/stdout188 2> log/9/stderr188

 188: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 188
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind188 ../src/curl -q --output log/9/curl188.out  --include --trace-ascii log/9/trace188 --trace-time http://127.0.0.1:43733/188 -C 50 -L > log/9/stdout188 2> log/9/stderr188
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.150001 ====> Client connect
 19:26:25.150124 accept_connection 3 returned 4
 19:26:25.150297 Read 93 bytes
 19:26:25.150310 Process 93 bytes request
 19:26:25.150323 Got request: GET /verifCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind186 ../src/curl -q --output log/21/curl186.out  --include --trace-ascii log/21/trace186 --trace-time http://127.0.0.1:39881/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= <body>hello</body>;type=text/html;charset=verymoo" > log/21/stdout186 2> log/21/stderr186
iedserver HTTP/1.1
 19:26:25.150331 Are-we-friendly question received
 19:26:25.150360 Wrote request (93 bytes) input to log/9/server.input
 19:26:25.150376 Identifying ourselves as friends
 19:26:25.150431 Response sent (56 bytes) and written to log/9/server.response
 19:26:25.150440 special request received, no persistency
 19:26:25.150447 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 38670 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 188
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind188
 ==89745== 
 ==89745== Process terminating with default action of signal 4 (SIGILL)
 ==89745==  Illegal opcode at address 0x492B75F
 ==89745==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89745==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89745==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89745==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89745==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89745==    by 0x49908EB: curl_version_info (version.c:600)
 ==89745==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89745==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89745==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89745==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind188
test 0180 [HTTP 1.0 PUT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind180 ../src/curl -q --output log/10/curl180.out  --include --trace-ascii log/10/trace180 --trace-time http://127.0.0.1:40913/we/want/180 -T log/10/test180.txt --http1.0 > log/10/stdout180 2> log/10/stderr180

 180: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 180
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind180 ../src/curl -q --output log/10/curl180.out  --include --trace-ascii log/10/trace180 --trace-time http://127.0.0.1:40913/we/want/180 -T log/10/test180.txt --http1.0 > log/10/stdout180 2> log/10/stderr180
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.020938 ====> Client connect
 19:26:25.020969 accept_connection 3 returned 4
 19:26:25.020989 Read 93 bytes
 19:26:25.020998 Process 93 bytes request
 19:26:25.021011 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.021018 Are-we-friendly question received
 19:26:25.021051 Wrote request (93 bytes) input to log/10/server.input
 19:26:25.021068 Identifying ourselves as friends
 19:26:25.021135 Response sent (56 bytes) and written to log/10/server.response
 19:26:25.021146 special request received, no persistency
 19:26:25.021155 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56494 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 180
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file test180.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    PUT
       feature
=== End of file test180.txt
=== Start of file valgrind180
 ==89459== 
 ==89459== Process terminating with default action of signal 4 (SIGILL)
 ==89459==  Illegal opcode at address 0x492B75F
 ==89459==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89459==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89459==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89459==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89459==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89459==    by 0x49908EB: curl_version_info (version.c:600)
 ==89459==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89459==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89459==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89459==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind180
test 0186 [HTTP RFC1867-type formposting with types on text fields]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind186 ../src/curl -q --output log/21/curl186.out  --include --trace-ascii log/21/trace186 --trace-time http://127.0.0.1:39881/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= <body>hello</body>;type=text/html;charset=verymoo" > log/21/stdout186 2> log/21/stderr186

 186: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 186
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind186 ../src/curl -q --output log/21/curl186.out  --include --trace-ascii log/21/trace186 --trace-time http://127.0.0.1:39881/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= <body>hello</body>;type=text/html;charset=verymoo" > log/21/stdout186 2> log/21/stderr186
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.126668 ====> Client connect
 19:26:25.126707 accept_connection 3 returned 4
 19:26:25.126733 Read 93 bytes
 19:26:25.126743 Process 93 bytes request
 19:26:25.126755 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.126764 Are-we-friendly question received
 19:26:25.126791 Wrote request (93 bytes) input to log/21/server.input
 19:26:25.126806 Identifying ourselves as friends
 19:26:25.126885 Response sent (56 bytes) and written to log/21/server.response
 19:26:25.126894 special request received, no persistency
 19:26:25.126902 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 45444 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 186
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind186
 ==89714== 
 ==89714== Process terminating with default action of signal 4 (SIGILL)
 ==89714==  Illegal opcode at address 0x492B75F
 ==89714==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89714==    by 0x492C53A: curl_mvsnprintf (mprinCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind183 ../src/curl -q --output log/17/curl183.out  --include --trace-ascii log/17/trace183 --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:35993 > log/17/stdout183 2> log/17/stderr183
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind179 ../src/curl -q --output log/6/curl179.out  --include --trace-ascii log/6/trace179 --trace-time http://supertrooper.fake/c/179 -b log/6/injar179 -x 127.0.0.1:33935 > log/6/stdout179 2> log/6/stderr179
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind178 ../src/curl -q --output log/12/curl178.out  --include --trace-ascii log/12/trace178 --trace-time http://127.0.0.1:40921/178 > log/12/stdout178 2> log/12/stderr178
tf.c:1257)
 ==89714==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89714==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89714==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89714==    by 0x49908EB: curl_version_info (version.c:600)
 ==89714==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89714==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89714==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89714==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind186
test 0183 [HTTP GET two URLs over a single proxy with persistent connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind183 ../src/curl -q --output log/17/curl183.out  --include --trace-ascii log/17/trace183 --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:35993 > log/17/stdout183 2> log/17/stderr183

 183: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 183
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind183 ../src/curl -q --output log/17/curl183.out  --include --trace-ascii log/17/trace183 --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:35993 > log/17/stdout183 2> log/17/stderr183
=== End of file commands.log
=== Start of file http_server.log
 19:26:26.060002 ====> Client connect
 19:26:26.060066 accept_connection 3 returned 4
 19:26:26.060092 Read 93 bytes
 19:26:26.060101 Process 93 bytes request
 19:26:26.060113 Got request: GET /verifiedserver HTTP/1.1
 19:26:26.060122 Are-we-friendly question received
 19:26:26.060147 Wrote request (93 bytes) input to log/17/server.input
 19:26:26.060163 Identifying ourselves as friends
 19:26:26.060248 Response sent (56 bytes) and written to log/17/server.response
 19:26:26.060259 special request received, no persistency
 19:26:26.060267 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 43144 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 183
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind183
 ==89538== 
 ==89538== Process terminating with default action of signal 4 (SIGILL)
 ==89538==  Illegal opcode at address 0x492B75F
 ==89538==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89538==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89538==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89538==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89538==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89538==    by 0x49908EB: curl_version_info (version.c:600)
 ==89538==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89538==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89538==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89538==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind183
test 0179 [HTTP using proxy and cookies with path checks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind179 ../src/curl -q --output log/6/curl179.out  --include --trace-ascii log/6/trace179 --trace-time http://supertrooper.fake/c/179 -b log/6/injar179 -x 127.0.0.1:33935 > log/6/stdout179 2> log/6/stderr179

 179: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 179
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind179 ../src/curl -q --output log/6/curl179.out  --include --trace-ascii log/6/trace179 --trace-time http://supertrooper.fake/c/179 -b log/6/injar179 -x 127.0.0.1:33935 > log/6/stdout179 2> log/6/stderr179
=== End of file commands.log
=== Start of file http_server.log
 19:26:24.801175 ====> Client connect
 19:26:24.801206 accept_connection 3 returned 4
 19:26:24.801226 Read 93 bytes
 19:26:24.801234 Process 93 bytes request
 19:26:24.801246 Got request: GET /verifiedserver HTTP/1.1
 19:26:24.801254 Are-we-friendly question received
 19:26:24.801277 Wrote request (93 bytes) input to log/6/server.input
 19:26:24.801292 Identifying ourselves as friends
 19:26:24.801346 Response sent (56 bytes) and written to log/6/server.response
 19:26:24.801355 special request received, no persistency
 19:26:24.801362 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 56510 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file injar179
 supertrooper.fake	FALSE	/a	FALSE	22139150993	mooo	indeed
 supertrooper.fake	FALSE	/b	FALSE	0		moo1	indeed
 supertrooper.fake	FALSE	/c	FALSE	22139150993	moo2	indeed
=== End of file injar179
=== Start of file server.cmd
 Testnum 179
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind179
 ==89409== 
 ==89409== Process terminating with default action of signal 4 (SIGILL)
 ==89409==  Illegal opcode at address 0x492B75F
 ==89409==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89409==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89409==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89409==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89409==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89409==    by 0x49908EB: curl_version_info (version.c:600)
 ==89409==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89409==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89409==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89409==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind179
test 0178 [HTTP response with negative Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind178 ../src/curl -q --output log/12/curl178.out  --include --trace-ascii log/12/trace178 --trace-time http://127.0.0.1:40921/178 > log/12/stdout178 2> log/12/stderr178

 178: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 178
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind178 ../src/cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind184 ../src/curl -q --output log/18/curl184.out  --include --trace-ascii log/18/trace184 --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43739 > log/18/stdout184 2> log/18/stderr184
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind182 ../src/curl -q --output log/23/curl182.out  --include --trace-ascii log/23/trace182 --trace-time ftp://127.0.0.1:35523/182 > log/23/stdout182 2> log/23/stderr182
url -q --output log/12/curl178.out  --include --trace-ascii log/12/trace178 --trace-time http://127.0.0.1:40921/178 > log/12/stdout178 2> log/12/stderr178
=== End of file commands.log
=== Start of file http_server.log
 19:26:24.773254 ====> Client connect
 19:26:24.773309 accept_connection 3 returned 4
 19:26:24.780085 Read 93 bytes
 19:26:24.780106 Process 93 bytes request
 19:26:24.780120 Got request: GET /verifiedserver HTTP/1.1
 19:26:24.780129 Are-we-friendly question received
 19:26:24.820015 Wrote request (93 bytes) input to log/12/server.input
 19:26:24.820084 Identifying ourselves as friends
 19:26:24.850457 Response sent (56 bytes) and written to log/12/server.response
 19:26:24.850480 special request received, no persistency
 19:26:24.850489 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 37302 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 178
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind178
 ==89386== 
 ==89386== Process terminating with default action of signal 4 (SIGILL)
 ==89386==  Illegal opcode at address 0x492B75F
 ==89386==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89386==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89386==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89386==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89386==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89386==    by 0x49908EB: curl_version_info (version.c:600)
 ==89386==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89386==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89386==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89386==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind178
test 0184 [HTTP replace Host: when following Location: to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind184 ../src/curl -q --output log/18/curl184.out  --include --trace-ascii log/18/trace184 --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43739 > log/18/stdout184 2> log/18/stderr184

 184: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 184
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind184 ../src/curl -q --output log/18/curl184.out  --include --trace-ascii log/18/trace184 --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43739 > log/18/stdout184 2> log/18/stderr184
=== End of file commands.log
=== Start of file http_server.log
 19:26:26.104221 ====> Client connect
 19:26:26.104255 accept_connection 3 returned 4
 19:26:26.104280 Read 93 bytes
 19:26:26.104291 Process 93 bytes request
 19:26:26.104302 Got request: GET /verifiedserver HTTP/1.1
 19:26:26.104311 Are-we-friendly question received
 19:26:26.104344 Wrote request (93 bytes) input to log/18/server.input
 19:26:26.104364 Identifying ourselves as friends
 19:26:26.104442 Response sent (56 bytes) and written to log/18/server.response
 19:26:26.104455 special request received, no persistency
 19:26:26.104464 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45662 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 184
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind184
 ==89622== 
 ==89622== Process terminating with default action of signal 4 (SIGILL)
 ==89622==  Illegal opcode at address 0x492B75F
 ==89622==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89622==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89622==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89622==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89622==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89622==    by 0x49908EB: curl_version_info (version.c:600)
 ==89622==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89622==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89622==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89622==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind184
test 0182 [FTP download an empty file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind182 ../src/curl -q --output log/23/curl182.out  --include --trace-ascii log/23/trace182 --trace-time ftp://127.0.0.1:35523/182 > log/23/stdout182 2> log/23/stderr182

 182: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 182
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind182 ../src/curl -q --output log/23/curl182.out  --include --trace-ascii log/23/trace182 --trace-time ftp://127.0.0.1:35523/182 > log/23/stdout182 2> log/23/stderr182
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:25.468931 ====> Client connect
 19:26:25.469162 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:25.475488 < "USER anonymous"
 19:26:25.475538 > "331 We are happy you popped in![CR][LF]"
 19:26:25.476046 < "PASS ftp@example.com"
 19:26:25.476084 > "230 Welcome you silly person[CR][LF]"
 19:26:25.476234 < "PWD"
 19:26:25.476269 > "257 "/" is current directory[CR][LF]"
 19:26:25.476417 < "EPSV"
 19:26:25.476439 ====> Passive DATA channel requested by client
 19:26:25.476452 DATA sockfilt for passive data channel starting...
 19:26:25.480256 DATA sockfilt for passive data channel started (pid 89515)
 19:26:25.480375 DATA sockfilt for passive data channel listens on port 33405
 19:26:25.480425 > "229 Entering Passive Mode (|||33405|)[CR][LF]"
 19:26:25.480445 Client has been notified that upcoming DATA connection is awaited on port 33405
 19:26:25.480723 Client connects to port 33405
 19:26:25.480754 ====> Client established passive DATA connection on port 33405
 19:26:25.480838 < "TYPE I"
 19:26:25.480867 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:25.481023 < "SIZE verifiedserver"
 19:26:25.481059 > "213 17[CR][LF]"
 19:26:25.481211 < "RETR verifiedserver"
 19:26:25.481244 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:25.481327 ====CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind187 ../src/curl -q --output log/11/curl187.out  --include --trace-ascii log/11/trace187 --trace-time http://127.0.0.1:40989?oh=what-weird=test/187 -L > log/11/stdout187 2> log/11/stderr187
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind181 ../src/curl -q --output log/7/curl181.out  --include --trace-ascii log/7/trace181 --trace-time http://127.0.0.1:40859/we/want/181 --data-binary @log/7/test181.txt --http1.0 > log/7/stdout181 2> log/7/stderr181
=> Closing passive DATA connection...
 19:26:25.481345 Server disconnects passive DATA connection
 19:26:25.481501 Server disconnected passive DATA connection
 19:26:25.481524 DATA sockfilt for passive data channel quits (pid 89515)
 19:26:25.481791 DATA sockfilt for passive data channel quit (pid 89515)
 19:26:25.481818 =====> Closed passive DATA connection
 19:26:25.481845 > "226 File transfer complete[CR][LF]"
 19:26:25.546567 < "QUIT"
 19:26:25.546628 > "221 bye bye baby[CR][LF]"
 19:26:25.552094 MAIN sockfilt said DISC
 19:26:25.552152 ====> Client disconnected
 19:26:25.552240 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:26.068780 ====> Client connect
 19:26:26.070436 Received DATA (on stdin)
 19:26:26.070457 > 146 bytes data, server => client
 19:26:26.070468 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:26.070479 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:26.070487 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:26.071229 < 16 bytes data, client => server
 19:26:26.071245 'USER anonymous\r\n'
 19:26:26.076803 Received DATA (on stdin)
 19:26:26.076818 > 33 bytes data, server => client
 19:26:26.076829 '331 We are happy you popped in!\r\n'
 19:26:26.077182 < 22 bytes data, client => server
 19:26:26.077198 'PASS ftp@example.com\r\n'
 19:26:26.077343 Received DATA (on stdin)
 19:26:26.077353 > 30 bytes data, server => client
 19:26:26.077363 '230 Welcome you silly person\r\n'
 19:26:26.077413 < 5 bytes data, client => server
 19:26:26.077422 'PWD\r\n'
 19:26:26.077524 Received DATA (on stdin)
 19:26:26.077534 > 30 bytes data, server => client
 19:26:26.077544 '257 "/" is current directory\r\n'
 19:26:26.077599 < 6 bytes data, client => server
 19:26:26.077609 'EPSV\r\n'
 19:26:26.081713 Received DATA (on stdin)
 19:26:26.081727 > 39 bytes data, server => client
 19:26:26.081738 '229 Entering Passive Mode (|||33405|)\r\n'
 19:26:26.081902 < 8 bytes data, client => server
 19:26:26.081917 'TYPE I\r\n'
 19:26:26.082127 Received DATA (on stdin)
 19:26:26.082138 > 33 bytes data, server => client
 19:26:26.082147 '200 I modify TYPE as you wanted\r\n'
 19:26:26.082200 < 21 bytes data, client => server
 19:26:26.082211 'SIZE verifiedserver\r\n'
 19:26:26.082319 Received DATA (on stdin)
 19:26:26.082330 > 8 bytes data, server => client
 19:26:26.082339 '213 17\r\n'
 19:26:26.082390 < 21 bytes data, client => server
 19:26:26.082401 'RETR verifiedserver\r\n'
 19:26:26.082691 Received DATA (on stdin)
 19:26:26.082703 > 29 bytes data, server => client
 19:26:26.082713 '150 Binary junk (17 bytes).\r\n'
 19:26:26.083107 Received DATA (on stdin)
 19:26:26.083118 > 28 bytes data, server => client
 19:26:26.083128 '226 File transfer complete\r\n'
 19:26:26.146635 < 6 bytes data, client => server
 19:26:26.146668 'QUIT\r\n'
 19:26:26.147917 Received DATA (on stdin)
 19:26:26.147934 > 18 bytes data, server => client
 19:26:26.147944 '221 bye bye baby\r\n'
 19:26:26.153293 ====> Client disconnect
 19:26:26.153525 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:25.081195 Running IPv4 version
 19:26:25.081267 Listening on port 33405
 19:26:25.081302 Wrote pid 89515 to log/23/server/ftp_sockdata.pid
 19:26:25.081456 Received PING (on stdin)
 19:26:25.081546 Received PORT (on stdin)
 19:26:25.081938 ====> Client connect
 19:26:25.082607 Received DATA (on stdin)
 19:26:25.082619 > 17 bytes data, server => client
 19:26:25.082629 'WE ROOLZ: 84709\r\n'
 19:26:25.082655 Received DISC (on stdin)
 19:26:25.082666 ====> Client forcibly disconnected
 19:26:25.082789 Received QUIT (on stdin)
 19:26:25.082799 quits
 19:26:25.082852 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 182
=== End of file server.cmd
=== Start of file valgrind182
 ==89685== 
 ==89685== Process terminating with default action of signal 4 (SIGILL)
 ==89685==  Illegal opcode at address 0x492B75F
 ==89685==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89685==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89685==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89685==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89685==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89685==    by 0x49908EB: curl_version_info (version.c:600)
 ==89685==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89685==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89685==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89685==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind182
test 0187 [HTTP redirect with bad hostname separation and slash in parameters]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind187 ../src/curl -q --output log/11/curl187.out  --include --trace-ascii log/11/trace187 --trace-time http://127.0.0.1:40989?oh=what-weird=test/187 -L > log/11/stdout187 2> log/11/stderr187

 187: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 187
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind187 ../src/curl -q --output log/11/curl187.out  --include --trace-ascii log/11/trace187 --trace-time http://127.0.0.1:40989?oh=what-weird=test/187 -L > log/11/stdout187 2> log/11/stderr187
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.162496 ====> Client connect
 19:26:25.162533 accept_connection 3 returned 4
 19:26:25.162642 Read 93 bytes
 19:26:25.162659 Process 93 bytes request
 19:26:25.162673 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.162682 Are-we-friendly question received
 19:26:25.162718 Wrote request (93 bytes) input to log/11/server.input
 19:26:25.162740 Identifying ourselves as friends
 19:26:25.162810 Response sent (56 bytes) and written to log/11/server.response
 19:26:25.162822 special request received, no persistency
 19:26:25.162831 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 47894 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 187
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind187
 ==89773== 
 ==89773== Process terminating with default action of signal 4 (SIGILL)
 ==89773==  Illegal opcode at address 0x492B75F
 ==89773==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89773==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89773==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89773==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89773==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89773==    by 0x49908EB: curl_version_info (version.c:600)
 ==89773==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89773==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89773==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89773==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind187
test 0181 [HTTP 1.0 POST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind181 ../src/curl -q --output log/7/curl181.out  --include --trace-ascii log/7/tCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind191 ../src/curl -q --output log/20/curl191.out  --include --trace-ascii log/20/trace191 --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:41549/191" > log/20/stdout191 2> log/20/stderr191
race181 --trace-time http://127.0.0.1:40859/we/want/181 --data-binary @log/7/test181.txt --http1.0 > log/7/stdout181 2> log/7/stderr181

 181: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 181
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind181 ../src/curl -q --output log/7/curl181.out  --include --trace-ascii log/7/trace181 --trace-time http://127.0.0.1:40859/we/want/181 --data-binary @log/7/test181.txt --http1.0 > log/7/stdout181 2> log/7/stderr181
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.042931 ====> Client connect
 19:26:25.042964 accept_connection 3 returned 4
 19:26:25.042985 Read 93 bytes
 19:26:25.042995 Process 93 bytes request
 19:26:25.043007 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.043015 Are-we-friendly question received
 19:26:25.043044 Wrote request (93 bytes) input to log/7/server.input
 19:26:25.043059 Identifying ourselves as friends
 19:26:25.043120 Response sent (56 bytes) and written to log/7/server.response
 19:26:25.043129 special request received, no persistency
 19:26:25.043136 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 52638 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 181
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file test181.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    POST
       feature
=== End of file test181.txt
=== Start of file valgrind181
 ==89503== 
 ==89503== Process terminating with default action of signal 4 (SIGILL)
 ==89503==  Illegal opcode at address 0x492B75F
 ==89503==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89503==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89503==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89503==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89503==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89503==    by 0x49908EB: curl_version_info (version.c:600)
 ==89503==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89503==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89503==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89503==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind181
test 0191 [FTP URL with ?-letters in username and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind191 ../src/curl -q --output log/20/curl191.out  --include --trace-ascii log/20/trace191 --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:41549/191" > log/20/stdout191 2> log/20/stderr191

 191: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 191
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind191 ../src/curl -q --output log/20/curl191.out  --include --trace-ascii log/20/trace191 --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:41549/191" > log/20/stdout191 2> log/20/stderr191
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:26.114947 ====> Client connect
 19:26:26.115158 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:26.115479 < "USER anonymous"
 19:26:26.115525 > "331 We are happy you popped in![CR][LF]"
 19:26:26.115726 < "PASS ftp@example.com"
 19:26:26.115762 > "230 Welcome you silly person[CR][LF]"
 19:26:26.115937 < "PWD"
 19:26:26.115975 > "257 "/" is current directory[CR][LF]"
 19:26:26.116155 < "EPSV"
 19:26:26.116181 ====> Passive DATA channel requested by client
 19:26:26.116197 DATA sockfilt for passive data channel starting...
 19:26:26.118306 DATA sockfilt for passive data channel started (pid 90148)
 19:26:26.118423 DATA sockfilt for passive data channel listens on port 33885
 19:26:26.118463 > "229 Entering Passive Mode (|||33885|)[CR][LF]"
 19:26:26.118482 Client has been notified that upcoming DATA connection is awaited on port 33885
 19:26:26.118734 Client connects to port 33885
 19:26:26.118764 ====> Client established passive DATA connection on port 33885
 19:26:26.118832 < "TYPE I"
 19:26:26.118856 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:26.118998 < "SIZE verifiedserver"
 19:26:26.119029 > "213 17[CR][LF]"
 19:26:26.119160 < "RETR verifiedserver"
 19:26:26.119188 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:26.119269 =====> Closing passive DATA connection...
 19:26:26.119285 Server disconnects passive DATA connection
 19:26:26.119462 Server disconnected passive DATA connection
 19:26:26.119483 DATA sockfilt for passive data channel quits (pid 90148)
 19:26:26.119739 DATA sockfilt for passive data channel quit (pid 90148)
 19:26:26.119764 =====> Closed passive DATA connection
 19:26:26.119787 > "226 File transfer complete[CR][LF]"
 19:26:26.172347 < "QUIT"
 19:26:26.172405 > "221 bye bye baby[CR][LF]"
 19:26:26.175435 MAIN sockfilt said DISC
 19:26:26.175478 ====> Client disconnected
 19:26:26.175563 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:25.716196 ====> Client connect
 19:26:25.716588 Received DATA (on stdin)
 19:26:25.716603 > 146 bytes data, server => client
 19:26:25.716614 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:25.716623 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:25.716631 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:25.716709 < 16 bytes data, client => server
 19:26:25.716720 'USER anonymous\r\n'
 19:26:25.716948 Received DATA (on stdin)
 19:26:25.716961 > 33 bytes data, server => client
 19:26:25.716972 '331 We are happy you popped in!\r\n'
 19:26:25.717033 < 22 bytes data, client => server
 19:26:25.717046 'PASS ftp@example.com\r\n'
 19:26:25.717182 Received DATA (on stdin)
 19:26:25.717193 > 30 bytes data, server => client
 19:26:25.717204 '230 Welcome you silly person\r\n'
 19:26:25.717260 < 5 bytes data, client => server
 19:26:25.717272 'PWD\r\n'
 19:26:25.717392 Received DATA (on stdin)
 19:26:25.717404 > 30 bytes data, server => client
 19:26:25.717415 '257 "/" is current directory\r\n'
 19:26:25.717480 < 6 bytes data, client => server
 19:26:25.717492 'EPSV\r\n'
 19:26:25.719906 Received DATA (on stdin)
 19:26:25.719918 > 39 bytes data, server => client
 19:26:25.719929 '229 Entering Passive Mode (|||33885|)\r\n'
 19:26:25.720062 < 8 bytes data, client => server
 19:26:25.720089 'TYPE I\r\n'
 19:26:25.720270 Received DATA (on stdin)
 19:26:25.720280 > 33 bytes data, server => client
 19:26:25.720289 '200 I modify TYPE as you wanted\r\n'
 19:26:25.720339 < 21 bytes data, client => server
 19:26:25.720349 'SIZE verifiedserver\r\n'
 19:26:25.720442 Received DATA (on stdin)
 19:26:25.720451 > 8 bytes data, server => client
 19:26:25.720460 '213 17\r\n'
 19:26:25.720505 < 21 bytes data, client => server
 19:26:25.720515 'RETR verifiedserver\r\n'
 19:26:25.720701 Received DATA (on stdin)
 19:26:25.720711 > 29 bytes data, server => client
 19:26:25CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind185 ../src/curl -q --output log/3/curl185.out  --include --trace-ascii log/3/trace185 --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:36161 > log/3/stdout185 2> log/3/stderr185
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind189 ../src/curl -q --output log/15/curl189.out  --include --trace-ascii log/15/trace189 --trace-time http://127.0.0.1:40321/189 -C 50 -L > log/15/stdout189 2> log/15/stderr189
.720720 '150 Binary junk (17 bytes).\r\n'
 19:26:25.721202 Received DATA (on stdin)
 19:26:25.721213 > 28 bytes data, server => client
 19:26:25.721222 '226 File transfer complete\r\n'
 19:26:25.773571 < 6 bytes data, client => server
 19:26:25.773608 'QUIT\r\n'
 19:26:25.773839 Received DATA (on stdin)
 19:26:25.773850 > 18 bytes data, server => client
 19:26:25.773860 '221 bye bye baby\r\n'
 19:26:25.776783 ====> Client disconnect
 19:26:25.776997 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:26.719386 Running IPv4 version
 19:26:26.719462 Listening on port 33885
 19:26:26.719501 Wrote pid 90148 to log/20/server/ftp_sockdata.pid
 19:26:26.719661 Received PING (on stdin)
 19:26:26.719753 Received PORT (on stdin)
 19:26:26.720108 ====> Client connect
 19:26:26.720774 Received DATA (on stdin)
 19:26:26.720786 > 17 bytes data, server => client
 19:26:26.720796 'WE ROOLZ: 84833\r\n'
 19:26:26.720818 Received DISC (on stdin)
 19:26:26.720828 ====> Client forcibly disconnected
 19:26:26.720948 Received QUIT (on stdin)
 19:26:26.720960 quits
 19:26:26.721016 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 191
=== End of file server.cmd
=== Start of file valgrind191
 ==90180== 
 ==90180== Process terminating with default action of signal 4 (SIGILL)
 ==90180==  Illegal opcode at address 0x492B75F
 ==90180==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90180==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90180==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90180==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90180==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90180==    by 0x49908EB: curl_version_info (version.c:600)
 ==90180==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90180==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90180==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90180==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind191
test 0185 [HTTP replace Host: when following Location: on the same host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind185 ../src/curl -q --output log/3/curl185.out  --include --trace-ascii log/3/trace185 --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:36161 > log/3/stdout185 2> log/3/stderr185

 185: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 185
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind185 ../src/curl -q --output log/3/curl185.out  --include --trace-ascii log/3/trace185 --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:36161 > log/3/stdout185 2> log/3/stderr185
=== End of file commands.log
=== Start of file http_server.log
 19:26:26.100975 ====> Client connect
 19:26:26.101008 accept_connection 3 returned 4
 19:26:26.101028 Read 93 bytes
 19:26:26.101038 Process 93 bytes request
 19:26:26.101050 Got request: GET /verifiedserver HTTP/1.1
 19:26:26.101058 Are-we-friendly question received
 19:26:26.101085 Wrote request (93 bytes) input to log/3/server.input
 19:26:26.101101 Identifying ourselves as friends
 19:26:26.101160 Response sent (56 bytes) and written to log/3/server.response
 19:26:26.101169 special request received, no persistency
 19:26:26.101177 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36454 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 185
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind185
 ==89602== 
 ==89602== Process terminating with default action of signal 4 (SIGILL)
 ==89602==  Illegal opcode at address 0x492B75F
 ==89602==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==89602==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==89602==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==89602==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==89602==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==89602==    by 0x49908EB: curl_version_info (version.c:600)
 ==89602==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==89602==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==89602==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==89602==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind185
test 0189 [HTTP GET with resume and redirect (to a page that does not resume)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind189 ../src/curl -q --output log/15/curl189.out  --include --trace-ascii log/15/trace189 --trace-time http://127.0.0.1:40321/189 -C 50 -L > log/15/stdout189 2> log/15/stderr189

 189: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 189
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind189 ../src/curl -q --output log/15/curl189.out  --include --trace-ascii log/15/trace189 --trace-time http://127.0.0.1:40321/189 -C 50 -L > log/15/stdout189 2> log/15/stderr189
=== End of file commands.log
=== Start of file http_server.log
 19:26:26.610123 ====> Client connect
 19:26:26.610165 accept_connection 3 returned 4
 19:26:26.610189 Read 93 bytes
 19:26:26.610200 Process 93 bytes request
 19:26:26.610213 Got request: GET /verifiedserver HTTP/1.1
 19:26:26.610221 Are-we-friendly question received
 19:26:26.610252 Wrote request (93 bytes) input to log/15/server.input
 19:26:26.610271 Identifying ourselves as friends
 19:26:26.610351 Response sent (56 bytes) and written to log/15/server.response
 19:26:26.610364 special request received, no persistency
 19:26:26.610372 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 49930 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 189
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind189
 ==90099== 
 ==90099== Process terminating with default action of signal 4 (SIGILL)
 ==90099==  Illegal opcode at address 0x492B75F
 ==90099==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90099==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90099==    by 0x492B67B: curlCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind190 ../src/curl -q --output log/13/curl190.out  --include --trace-ascii log/13/trace190 --trace-time ftp://127.0.0.1:36047/path/to/file/190 -m 10 > log/13/stdout190 2> log/13/stderr190
* kill pid for ftp-ctrl => 85038
RUN: Process with pid 84987 signalled to die
RUN: Process with pid 84987 gracefully died
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind193 ../src/curl -q --include --trace-ascii log/24/trace193 --trace-time http://127.0.0.1:38895/193 -w "%{num_connects}\n" -L > log/24/stdout193 2> log/24/stderr193
_msnprintf (mprintf.c:1277)
 ==90099==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90099==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90099==    by 0x49908EB: curl_version_info (version.c:600)
 ==90099==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90099==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90099==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90099==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind189
test 0190 [FTP download with strict timeout and slow CWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind190 ../src/curl -q --output log/13/curl190.out  --include --trace-ascii log/13/trace190 --trace-time ftp://127.0.0.1:36047/path/to/file/190 -m 10 > log/13/stdout190 2> log/13/stderr190

 190: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 190
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind190 ../src/curl -q --output log/13/curl190.out  --include --trace-ascii log/13/trace190 --trace-time ftp://127.0.0.1:36047/path/to/file/190 -m 10 > log/13/stdout190 2> log/13/stderr190
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:26.116851 ====> Client connect
 19:26:26.117024 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:26.122559 < "USER anonymous"
 19:26:26.122614 > "331 We are happy you popped in![CR][LF]"
 19:26:26.133063 < "PASS ftp@example.com"
 19:26:26.133126 > "230 Welcome you silly person[CR][LF]"
 19:26:26.133342 < "PWD"
 19:26:26.133382 > "257 "/" is current directory[CR][LF]"
 19:26:26.133552 < "EPSV"
 19:26:26.133578 ====> Passive DATA channel requested by client
 19:26:26.133591 DATA sockfilt for passive data channel starting...
 19:26:26.140426 DATA sockfilt for passive data channel started (pid 90154)
 19:26:26.140548 DATA sockfilt for passive data channel listens on port 37549
 19:26:26.140593 > "229 Entering Passive Mode (|||37549|)[CR][LF]"
 19:26:26.140609 Client has been notified that upcoming DATA connection is awaited on port 37549
 19:26:26.145430 Client connects to port 37549
 19:26:26.145485 ====> Client established passive DATA connection on port 37549
 19:26:26.145604 < "TYPE I"
 19:26:26.145649 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:26.152133 < "SIZE verifiedserver"
 19:26:26.152195 > "213 17[CR][LF]"
 19:26:26.152422 < "RETR verifiedserver"
 19:26:26.152589 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:26.152708 =====> Closing passive DATA connection...
 19:26:26.152732 Server disconnects passive DATA connection
 19:26:26.152912 Server disconnected passive DATA connection
 19:26:26.152939 DATA sockfilt for passive data channel quits (pid 90154)
 19:26:26.153260 DATA sockfilt for passive data channel quit (pid 90154)
 19:26:26.153290 =====> Closed passive DATA connection
 19:26:26.153378 > "226 File transfer complete[CR][LF]"
 19:26:26.208885 < "QUIT"
 19:26:26.208943 > "221 bye bye baby[CR][LF]"
 19:26:26.215376 MAIN sockfilt said DISC
 19:26:26.215456 ====> Client disconnected
 19:26:26.215545 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:26.718174 ====> Client connect
 19:26:26.718449 Received DATA (on stdin)
 19:26:26.718463 > 146 bytes data, server => client
 19:26:26.718472 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:26.718481 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:26.718488 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:26.718554 < 16 bytes data, client => server
 19:26:26.718563 'USER anonymous\r\n'
 19:26:26.726803 Received DATA (on stdin)
 19:26:26.726831 > 33 bytes data, server => client
 19:26:26.726841 '331 We are happy you popped in!\r\n'
 19:26:26.734234 < 22 bytes data, client => server
 19:26:26.734269 'PASS ftp@example.com\r\n'
 19:26:26.734556 Received DATA (on stdin)
 19:26:26.734570 > 30 bytes data, server => client
 19:26:26.734581 '230 Welcome you silly person\r\n'
 19:26:26.734658 < 5 bytes data, client => server
 19:26:26.734668 'PWD\r\n'
 19:26:26.734802 Received DATA (on stdin)
 19:26:26.734813 > 30 bytes data, server => client
 19:26:26.734822 '257 "/" is current directory\r\n'
 19:26:26.734887 < 6 bytes data, client => server
 19:26:26.734896 'EPSV\r\n'
 19:26:26.743434 Received DATA (on stdin)
 19:26:26.743461 > 39 bytes data, server => client
 19:26:26.743473 '229 Entering Passive Mode (|||37549|)\r\n'
 19:26:26.743695 < 8 bytes data, client => server
 19:26:26.743711 'TYPE I\r\n'
 19:26:26.750096 Received DATA (on stdin)
 19:26:26.750120 > 33 bytes data, server => client
 19:26:26.750132 '200 I modify TYPE as you wanted\r\n'
 19:26:26.750232 < 21 bytes data, client => server
 19:26:26.750244 'SIZE verifiedserver\r\n'
 19:26:26.753600 Received DATA (on stdin)
 19:26:26.753621 > 8 bytes data, server => client
 19:26:26.753633 '213 17\r\n'
 19:26:26.753723 < 21 bytes data, client => server
 19:26:26.753739 'RETR verifiedserver\r\n'
 19:26:26.753881 Received DATA (on stdin)
 19:26:26.753897 > 29 bytes data, server => client
 19:26:26.753917 '150 Binary junk (17 bytes).\r\n'
 19:26:26.754726 Received DATA (on stdin)
 19:26:26.754739 > 28 bytes data, server => client
 19:26:26.754758 '226 File transfer complete\r\n'
 19:26:26.810124 < 6 bytes data, client => server
 19:26:26.810160 'QUIT\r\n'
 19:26:26.810386 Received DATA (on stdin)
 19:26:26.810400 > 18 bytes data, server => client
 19:26:26.810409 '221 bye bye baby\r\n'
 19:26:26.811650 ====> Client disconnect
 19:26:26.816992 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:26.741396 Running IPv4 version
 19:26:26.741598 Listening on port 37549
 19:26:26.741634 Wrote pid 90154 to log/13/server/ftp_sockdata.pid
 19:26:26.741789 Received PING (on stdin)
 19:26:26.741879 Received PORT (on stdin)
 19:26:26.746777 ====> Client connect
 19:26:26.754169 Received DATA (on stdin)
 19:26:26.754187 > 17 bytes data, server => client
 19:26:26.754197 'WE ROOLZ: 84987\r\n'
 19:26:26.754285 Received DISC (on stdin)
 19:26:26.754371 ====> Client forcibly disconnected
 19:26:26.754416 Received QUIT (on stdin)
 19:26:26.754428 quits
 19:26:26.754503 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 DELAY CWD 60
 Testnum 190
=== End of file server.cmd
=== Start of file valgrind190
 ==90200== 
 ==90200== Process terminating with default action of signal 4 (SIGILL)
 ==90200==  Illegal opcode at address 0x492B75F
 ==90200==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90200==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90200==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90200==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90200==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90200==    by 0x49908EB: curl_version_info (version.c:600)
 ==90200==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90200==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind190
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind196 ../src/curl -q --include --trace-ascii log/19/trace196 --trace-time ftp://127.0.0.1:38555/196 --retry 1 -w '%{num_retries}\n' > log/19/stdout196 2> log/19/stderr196
test 0193 [HTTP GET -w num_connects with redirected fetch (2 connects)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind193 ../src/curl -q --include --trace-ascii log/24/trace193 --trace-time http://127.0.0.1:38895/193 -w "%{num_connects}\n" -L > log/24/stdout193 2> log/24/stderr193

 193: stdout FAILED:
--- log/24/check-expected	2026-10-15 19:26:29.003758959 +0000
+++ log/24/check-generated	2026-10-15 19:26:28.999413332 +0000
@@ -1,13 +0,0 @@
-HTTP/1.1 302 OK swsbounce swsclose[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 8[LF]
-Connection: close[LF]
-Location: ./193[LF]
-[LF]
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 8[LF]
-Connection: close[LF]
-[LF]
-monster[LF]
-2[LF]
== Contents of files in the log/24/ directory after test 193
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce swsclose[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 8[LF]
 Connection: close[LF]
 Location: ./193[LF]
 [LF]
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 8[LF]
 Connection: close[LF]
 [LF]
 monster[LF]
 2[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind193 ../src/curl -q --include --trace-ascii log/24/trace193 --trace-time http://127.0.0.1:38895/193 -w "%{num_connects}\n" -L > log/24/stdout193 2> log/24/stderr193
=== End of file commands.log
=== Start of file http_server.log
 19:26:26.053238 ====> Client connect
 19:26:26.053272 accept_connection 3 returned 4
 19:26:26.053457 Read 93 bytes
 19:26:26.053478 Process 93 bytes request
 19:26:26.053498 Got request: GET /verifiedserver HTTP/1.1
 19:26:26.053508 Are-we-friendly question received
 19:26:26.053542 Wrote request (93 bytes) input to log/24/server.input
 19:26:26.053563 Identifying ourselves as friends
 19:26:26.053636 Response sent (56 bytes) and written to log/24/server.response
 19:26:26.053649 special request received, no persistency
 19:26:26.053658 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 50122 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 193
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind193
 ==90341== 
 ==90341== Process terminating with default action of signal 4 (SIGILL)
 ==90341==  Illegal opcode at address 0x492B75F
 ==90341==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90341==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90341==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90341==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90341==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90341==    by 0x49908EB: curl_version_info (version.c:600)
 ==90341==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90341==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90341==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90341==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind193
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind194 ../src/curl -q --output log/1/curl194.out  --include --trace-ascii log/1/trace194 --trace-time http://127.0.0.1:38815/want/194 -C 87 --fail > log/1/stdout194 2> log/1/stderr194
test 0196 [FTP transient error, retry request once]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind196 ../src/curl -q --include --trace-ascii log/19/trace196 --trace-time ftp://127.0.0.1:38555/196 --retry 1 -w '%{num_retries}\n' > log/19/stdout196 2> log/19/stderr196

 196: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:26:29.266550464 +0000
+++ log/19/check-generated	2026-10-15 19:26:29.262683109 +0000
@@ -1 +0,0 @@
-1[LF]
== Contents of files in the log/19/ directory after test 196
=== Start of file check-expected
 1[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind196 ../src/curl -q --include --trace-ascii log/19/trace196 --trace-time ftp://127.0.0.1:38555/196 --retry 1 -w '%{num_retries}\n' > log/19/stdout196 2> log/19/stderr196
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:27.022040 ====> Client connect
 19:26:27.022289 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:27.022643 < "USER anonymous"
 19:26:27.022681 > "331 We are happy you popped in![CR][LF]"
 19:26:27.028952 < "PASS ftp@example.com"
 19:26:27.029000 > "230 Welcome you silly person[CR][LF]"
 19:26:27.029170 < "PWD"
 19:26:27.029208 > "257 "/" is current directory[CR][LF]"
 19:26:27.029365 < "EPSV"
 19:26:27.029389 ====> Passive DATA channel requested by client
 19:26:27.029402 DATA sockfilt for passive data channel starting...
 19:26:27.035009 DATA sockfilt for passive data channel started (pid 90550)
 19:26:27.045526 DATA sockfilt for passive data channel listens on port 43625
 19:26:27.045623 > "229 Entering Passive Mode (|||43625|)[CR][LF]"
 19:26:27.045650 Client has been notified that upcoming DATA connection is awaited on port 43625
 19:26:27.052102 Client connects to port 43625
 19:26:27.052162 ====> Client established passive DATA connection on port 43625
 19:26:27.052441 < "TYPE I"
 19:26:27.052495 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:27.052734 < "SIZE verifiedserver"
 19:26:27.052785 > "213 17[CR][LF]"
 19:26:27.052990 < "RETR verifiedserver"
 19:26:27.053036 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:27.053145 =====> Closing passive DATA connection...
 19:26:27.053169 Server disconnects passive DATA connection
 19:26:27.053349 Server disconnected passive DATA connection
 19:26:27.053375 DATA sockfilt for passive data channel quits (pid 90550)
 19:26:27.053707 DATA sockfilt for passive data channel quit (pid 90550)
 19:26:27.053737 =====> Closed passive DATA connection
 19:26:27.053773 > "226 File transfer complete[CR][LF]"
 19:26:27.102252 < "QUIT"
 19:26:27.102326 > "221 bye bye baby[CR][LF]"
 19:26:27.108769 MAIN sockfilt said DISC
 19:26:27.108836 ====> Client disconnected
 19:26:27.108937 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:26.616990 ====> Client connect
 19:26:26.623948 Received DATA (on stdin)
 19:26:26.623969 > 146 bytes data, server => client
 19:26:26.623981 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:26.623991 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:26.624000 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:26.624126 < 16 bytes data, client => server
 19:26:26.624137 'USER anonymous\r\n'
 19:26:26.630318 Received DATA (on stdin)
 19:26:26.630345 > 33 bytes data, server => client
 19:26:26.630356 '331 We are happy you popped in!\r\n'
 19:26:26.630436 < 22 bytes data, client => server
 19:26:26.630447 'PASS ftp@example.com\r\n'
 19:26:26.630642 Received DATA (on stdin)
 19:26:26.630653 > 30 bytes data, server => client
 19:26:26.630663 '230 Welcome you silly person\r\n'
 19:26:26.630717 < 5 bytes data, client => server
 19:26:26.630727 'PWD\r\n'
 19:26:26.630847 Received DATA (on stdin)
 19:26:26.630858 > 30 bytes data, server => client
 19:26:26.630867 '257 "/" is current directory\r\n'
 19:26:26.630926 < 6 bytes data, client => server
 19:26:26.630935 'EPSV\r\n'
 19:26:26.650318 Received DATA (on stdin)
 19:26:26.650352 > 39 bytes data, server => client
 19:26:26.650363 '229 Entering Passive Mode (|||43625|)\r\n'
 19:26:26.653915 < 8 bytes data, client => server
 19:26:26.653937 'TYPE I\r\n'
 19:26:26.654152 Received DATA (on stdin)
 19:26:26.654169 > 33 bytes data, server => client
 19:26:26.654180 '200 I modify TYPE as you wanted\r\n'
 19:26:26.654265 < 21 bytes data, client => server
 19:26:26.654282 'SIZE verifiedserver\r\n'
 19:26:26.654438 Received DATA (on stdin)
 19:26:26.654451 > 8 bytes data, server => client
 19:26:26.654461 '213 17\r\n'
 19:26:26.654525 < 21 bytes data, client => server
 19:26:26.654544 'RETR verifiedserver\r\n'
 19:26:26.654820 Received DATA (on stdin)
 19:26:26.654832 > 29 bytes data, server => client
 19:26:26.654842 '150 Binary junk (17 bytes).\r\n'
 19:26:26.655426 Received DATA (on stdin)
 19:26:26.655439 > 28 bytes data, server => client
 19:26:26.655449 '226 File transfer complete\r\n'
 19:26:26.703678 < 6 bytes data, client => server
 19:26:26.703719 'QUIT\r\n'
 19:26:26.703997 Received DATA (on stdin)
 19:26:26.704013 > 18 bytes data, server => client
 19:26:26.704024 '221 bye bye baby\r\n'
 19:26:26.710339 ====> Client disconnect
 19:26:26.710616 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:27.635100 Running IPv4 version
 19:26:27.635191 Listening on port 43625
 19:26:27.635235 Wrote pid 90550 to log/19/server/ftp_sockdata.pid
 19:26:27.635258 Received PING (on stdin)
 19:26:27.643641 Received PORT (on stdin)
 19:26:27.653667 ====> Client connect
 19:26:27.654873 Received DATA (on stdin)
 19:26:27.654889 > 17 bytes data, server => client
 19:26:27.654899 'WE ROOLZ: 84587\r\n'
 19:26:27.654928 Received DISC (on stdin)
 19:26:27.654941 ====> Client forcibly disconnected
 19:26:27.655036 Received QUIT (on stdin)
 19:26:27.655048 quits
 19:26:27.655130 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 430 temporarily not available
 Testnum 196
=== End of file server.cmd
=== Start of file valgrind196
 ==90596== 
 ==90596== Process terminating with default action of signal 4 (SIGILL)
 ==90596==  Illegal opcode at address 0x492B75F
 ==90596==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90596==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90596==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90596==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90596==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90596==    by 0x49908EB: curl_version_info (version.c:600)
 ==90596==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90596==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind196
test 0194 [HTTP resume transfer with the whole file already downloaded and --fail]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind194 ../src/curl -q --output log/1/curl194.out  --include --trace-ascii log/1/trace194 --trace-time http://127.0.0.1:38815/want/194 -C 87 --fail > log/1/stdout194 2> log/1/stderr194

 194: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 194
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind194 ../src/curl -q --output log/1/curl194.out  --include --trace-ascii log/1/trace194 --traceCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind197 ../src/curl -q --include --trace-ascii log/14/trace197 --trace-time http://127.0.0.1:45467/197 --retry 1000 > log/14/stdout197 2> log/14/stderr197
-time http://127.0.0.1:38815/want/194 -C 87 --fail > log/1/stdout194 2> log/1/stderr194
=== End of file commands.log
=== Start of file http_server.log
 19:26:27.410350 ====> Client connect
 19:26:27.410396 accept_connection 3 returned 4
 19:26:27.410424 Read 93 bytes
 19:26:27.410434 Process 93 bytes request
 19:26:27.410448 Got request: GET /verifiedserver HTTP/1.1
 19:26:27.410456 Are-we-friendly question received
 19:26:27.410485 Wrote request (93 bytes) input to log/1/server.input
 19:26:27.410503 Identifying ourselves as friends
 19:26:27.410594 Response sent (56 bytes) and written to log/1/server.response
 19:26:27.410604 special request received, no persistency
 19:26:27.410612 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 34920 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 194
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind194
 ==90451== 
 ==90451== Process terminating with default action of signal 4 (SIGILL)
 ==90451==  Illegal opcode at address 0x492B75F
 ==90451==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90451==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90451==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90451==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90451==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90451==    by 0x49908EB: curl_version_info (version.c:600)
 ==90451==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90451==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90451==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90451==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind194
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind200 ../src/curl -q --output log/16/curl200.out  --trace-ascii log/16/trace200 --trace-time file://localhost/startdir/src/build-curl/tests/log/16/test200.txt > log/16/stdout200 2> log/16/stderr200
test 0197 [HTTP GET --retry on 503 error with output to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind197 ../src/curl -q --include --trace-ascii log/14/trace197 --trace-time http://127.0.0.1:45467/197 --retry 1000 > log/14/stdout197 2> log/14/stderr197

 197: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:26:29.310971373 +0000
+++ log/14/check-generated	2026-10-15 19:26:29.306005987 +0000
@@ -1,11 +0,0 @@
-HTTP/1.1 503 BAD swsbounce[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 21[LF]
-[LF]
-server not available[LF]
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 3[LF]
-Connection: close[LF]
-[LF]
-ok[LF]
== Contents of files in the log/14/ directory after test 197
=== Start of file check-expected
 HTTP/1.1 503 BAD swsbounce[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 21[LF]
 [LF]
 server not available[LF]
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 3[LF]
 Connection: close[LF]
 [LF]
 ok[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind197 ../src/curl -q --include --trace-ascii log/14/trace197 --trace-time http://127.0.0.1:45467/197 --retry 1000 > log/14/stdout197 2> log/14/stderr197
=== End of file commands.log
=== Start of file http_server.log
 19:26:26.627483 ====> Client connect
 19:26:26.627518 accept_connection 3 returned 4
 19:26:26.627542 Read 93 bytes
 19:26:26.627552 Process 93 bytes request
 19:26:26.627567 Got request: GET /verifiedserver HTTP/1.1
 19:26:26.627576 Are-we-friendly question received
 19:26:26.627606 Wrote request (93 bytes) input to log/14/server.input
 19:26:26.627624 Identifying ourselves as friends
 19:26:26.627695 Response sent (56 bytes) and written to log/14/server.response
 19:26:26.627707 special request received, no persistency
 19:26:26.627716 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 49684 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 197
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind197
 ==90558== 
 ==90558== Process terminating with default action of signal 4 (SIGILL)
 ==90558==  Illegal opcode at address 0x492B75F
 ==90558==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90558==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90558==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90558==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90558==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90558==    by 0x49908EB: curl_version_info (version.c:600)
 ==90558==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90558==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90558==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90558==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind197
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind195 ../src/curl -q --output log/2/curl195.out  --include --trace-ascii log/2/trace195 --trace-time ftp://127.0.0.1:38033/195 > log/2/stdout195 2> log/2/stderr195
test 0200 [basic file:// file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind200 ../src/curl -q --output log/16/curl200.out  --trace-ascii log/16/trace200 --trace-time file://localhost/startdir/src/build-curl/tests/log/16/test200.txt > log/16/stdout200 2> log/16/stderr200

 200: data FAILED:
--- log/16/check-expected	2026-10-15 19:26:29.446682321 +0000
+++ log/16/check-generated	2026-10-15 19:26:29.442639673 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/16/ directory after test 200
=== Start of file check-expected
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind200 ../src/curl -q --output log/16/curl200.out  --trace-ascii log/16/trace200 --trace-time file://localhost/startdir/src/build-curl/tests/log/16/test200.txt > log/16/stdout200 2> log/16/stderr200
=== End of file commands.log
=== Start of file server.cmd
 Testnum 200
=== End of file server.cmd
=== Start of file test200.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test200.txt
=== Start of file valgrind200
 ==90760== 
 ==90760== Process terminating with default action of signal 4 (SIGILL)
 ==90760==  Illegal opcode at address 0x492B75F
 ==90760==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90760==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90760==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90760==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90760==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90760==    by 0x49908EB: curl_version_info (version.c:600)
 ==90760==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90760==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90760==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90760==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind200
test 0195 [FTP response 530 after PASS, temporarily not allowed access]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind195 ../src/curl -q --output log/2/curl195.out  --include --trace-ascii log/2/trace195 --trace-time ftp://127.0.0.1:38033/195 > log/2/stdout195 2> log/2/stderr195

 195: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 195
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind195 ../src/curl -q --output log/2/curl195.out  --include --trace-ascii log/2/trace195 --trace-time ftp://127.0.0.1:38033/195 > log/2/stdout195 2> log/2/stderr195
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:26.982292 ====> Client connect
 19:26:26.982540 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:26.983171 < "USER anonymous"
 19:26:26.983221 > "331 We are happy you popped in![CR][LF]"
 19:26:26.983419 < "PASS ftp@example.com"
 19:26:26.985376 > "230 Welcome you silly person[CR][LF]"
 19:26:26.988888 < "PWD"
 19:26:26.988941 > "257 "/" is current directory[CR][LF]"
 19:26:26.989156 < "EPSV"
 19:26:26.989187 ====> Passive DATA channel requested by client
 19:26:26.989205 DATA sockfilt for passive data channel starting...
 19:26:27.002062 DATA sockfilt for passive data channel started (pid 90537)
 19:26:27.005446 DATA sockfilt for passive data channel listens on port 39411
 19:26:27.005534 > "229 Entering Passive Mode (|||39411|)[CR][LF]"
 19:26:27.005563 Client has been notified that upcoming DATA connection is awaited on port 39411
 19:26:27.005840 Client connects to port 39411
 19:26:27.005874 ====> Client established passive DATA connection on port 39411
 19:26:27.006062 < "TYPE I"
 19:26:27.006108 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:27.006301 < "SIZE verifiedserver"
 19:26:27.006349 > "213 17[CR][LF]"
 19:26:27.006544 < "RETR verifiedserver"
 19:26:27.006590 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:27.006701 =====> Closing passive DATA connection...
 19:26:27.006724 Server disconnects passive DATA connection
 19:26:27.006856 Server disconnected passive DATA connection
 19:26:27.006884 DATA sockfilt for passive data channel quits (pid 90537)
 19:26:27.007180 DATA sockfilt for passive data channel quit (pid 90537)
 19:26:27.007210 =====> Closed passive DATA connection
 19:26:27.007237 > "226 File transfer complete[CR][LF]"
 19:26:27.055395 < "QUIT"
 19:26:27.055475 > "221 bye bye baby[CR][LF]"
 19:26:27.056801 MAIN sockfilt said DISC
 19:26:27.056844 ====> Client disconnected
 19:26:27.056925 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:26.583437 ====> Client connect
 19:26:26.584203 Received DATA (on stdin)
 19:26:26.584226 > 146 bytes data, server => client
 19:26:26.584237 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:26.584248 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:26.584257 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:26.584624 < 16 bytes data, client => server
 19:26:26.584644 'USER anonymous\r\n'
 19:26:26.584861 Received DATA (on stdin)
 19:26:26.584876 > 33 bytes data, server => client
 19:26:26.584886 '331 We are happy you popped in!\r\n'
 19:26:26.584941 < 22 bytes data, client => server
 19:26:26.584956 'PASS ftp@example.com\r\n'
 19:26:26.587031 Received DATA (on stdin)
 19:26:26.587047 > 30 bytes data, server => client
 19:26:26.587058 '230 Welcome you silly person\r\n'
 19:26:26.590377 < 5 bytes data, client => server
 19:26:26.590399 'PWD\r\n'
 19:26:26.590579 Received DATA (on stdin)
 19:26:26.590592 > 30 bytes data, server => client
 19:26:26.590602 '257 "/" is current directory\r\n'
 19:26:26.590681 < 6 bytes data, client => server
 19:26:26.590696 'EPSV\r\n'
 19:26:26.607215 Received DATA (on stdin)
 19:26:26.607236 > 39 bytes data, server => client
 19:26:26.607247 '229 Entering Passive Mode (|||39411|)\r\n'
 19:26:26.607567 < 8 bytes data, client => server
 19:26:26.607580 'TYPE I\r\n'
 19:26:26.607753 Received DATA (on stdin)
 19:26:26.607766 > 33 bytes data, server => client
 19:26:26.607777 '200 I modify TYPE as you wanted\r\n'
 19:26:26.607832 < 21 bytes data, client => server
 19:26:26.607846 'SIZE verifiedserver\r\n'
 19:26:26.607992 Received DATA (on stdin)
 19:26:26.608006 > 8 bytes data, server => client
 19:26:26.608016 '213 17\r\n'
 19:26:26.608078 < 21 bytes data, client => server
 19:26:26.608093 'RETR verifiedserver\r\n'
 19:26:26.608877 Received DATA (on stdin)
 19:26:26.608890 > 29 bytes data, server => client
 19:26:26.608900 '150 Binary junk (17 bytes).\r\n'
 19:26:26.608923 Received DATA (on stdin)
 19:26:26.608935 > 28 bytes data, server => client
 19:26:26.608945 '226 File transfer complete\r\n'
 19:26:26.656828 < 6 bytes data, client => server
 19:26:26.656856 'QUIT\r\n'
 19:26:26.657139 Received DATA (on stdin)
 19:26:26.657156 > 18 bytes data, server => client
 19:26:26.657167 '221 bye bye baby\r\n'
 19:26:26.658385 ====> Client disconnect
 19:26:26.658578 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:26.594402 Running IPv4 version
 19:26:26.594510 Listening on port 39411
 19:26:26.594555 Wrote pid 90537 to log/2/server/ftp_sockdata.pid
 19:26:26.600800 Received PING (on stdin)
 19:26:26.603783 Received PORT (on stdin)
 19:26:26.607413 ====> Client connect
 19:26:26.608365 Received DATA (on stdin)
 19:26:26.608381 > 17 bytes data, server => client
 19:26:26.608391 'WE ROOLZ: 85208\r\n'CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind192 ../src/curl -q --include --trace-ascii log/8/trace192 --trace-time http://127.0.0.1:44467/192 -w "%{num_connects}\n" > log/8/stdout192 2> log/8/stderr192

 19:26:26.608421 Received DISC (on stdin)
 19:26:26.608437 ====> Client forcibly disconnected
 19:26:26.608531 Received QUIT (on stdin)
 19:26:26.608544 quits
 19:26:26.608619 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 530 temporarily not available
 Testnum 195
=== End of file server.cmd
=== Start of file valgrind195
 ==90562== 
 ==90562== Process terminating with default action of signal 4 (SIGILL)
 ==90562==  Illegal opcode at address 0x492B75F
 ==90562==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90562==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90562==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90562==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90562==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90562==    by 0x49908EB: curl_version_info (version.c:600)
 ==90562==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90562==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90562==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90562==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind195
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind198 ../src/curl -q --output log/4/curl198.out  --include --trace-ascii log/4/trace198 --trace-time http://127.0.0.1:35735/198 --retry 1000 > log/4/stdout198 2> log/4/stderr198
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind199 ../src/curl -q --output log/22/curl199.out  --include --trace-ascii log/22/trace199 --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:35989/{199,199}" -G > log/22/stdout199 2> log/22/stderr199
test 0192 [HTTP GET -w num_connects with one simple connect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind192 ../src/curl -q --include --trace-ascii log/8/trace192 --trace-time http://127.0.0.1:44467/192 -w "%{num_connects}\n" > log/8/stdout192 2> log/8/stderr192

 192: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:26:29.775970911 +0000
+++ log/8/check-generated	2026-10-15 19:26:29.772560036 +0000
@@ -1,7 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 8[LF]
-Connection: close[LF]
-[LF]
-monster[LF]
-1[LF]
== Contents of files in the log/8/ directory after test 192
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 8[LF]
 Connection: close[LF]
 [LF]
 monster[LF]
 1[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind192 ../src/curl -q --include --trace-ascii log/8/trace192 --trace-time http://127.0.0.1:44467/192 -w "%{num_connects}\n" > log/8/stdout192 2> log/8/stderr192
=== End of file commands.log
=== Start of file http_server.log
 19:26:25.960223 ====> Client connect
 19:26:25.960274 accept_connection 3 returned 4
 19:26:25.960302 Read 93 bytes
 19:26:25.960312 Process 93 bytes request
 19:26:25.960325 Got request: GET /verifiedserver HTTP/1.1
 19:26:25.960334 Are-we-friendly question received
 19:26:25.960364 Wrote request (93 bytes) input to log/8/server.input
 19:26:25.960381 Identifying ourselves as friends
 19:26:25.960491 Response sent (56 bytes) and written to log/8/server.response
 19:26:25.960502 special request received, no persistency
 19:26:25.960511 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 56600 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 192
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind192
 ==90272== 
 ==90272== Process terminating with default action of signal 4 (SIGILL)
 ==90272==  Illegal opcode at address 0x492B75F
 ==90272==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90272==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90272==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90272==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90272==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90272==    by 0x49908EB: curl_version_info (version.c:600)
 ==90272==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90272==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90272==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90272==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind192
test 0198 [HTTP GET --retry on 503 error with output to file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind198 ../src/curl -q --output log/4/curl198.out  --include --trace-ascii log/4/trace198 --trace-time http://127.0.0.1:35735/198 --retry 1000 > log/4/stdout198 2> log/4/stderr198

 198: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 198
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind198 ../src/curl -q --output log/4/curl198.out  --include --trace-ascii log/4/trace198 --trace-time http://127.0.0.1:35735/198 --retry 1000 > log/4/stdout198 2> log/4/stderr198
=== End of file commands.log
=== Start of file http_server.log
 19:26:27.767837 ====> Client connect
 19:26:27.767881 accept_connection 3 returned 4
 19:26:27.767906 Read 93 bytes
 19:26:27.767916 Process 93 bytes request
 19:26:27.767928 Got request: GET /verifiedserver HTTP/1.1
 19:26:27.767937 Are-we-friendly question received
 19:26:27.767965 Wrote request (93 bytes) input to log/4/server.input
 19:26:27.767982 Identifying ourselves as friends
 19:26:27.768064 Response sent (56 bytes) and written to log/4/server.response
 19:26:27.768074 special request received, no persistency
 19:26:27.768083 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 54904 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 198
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind198
 ==90632== 
 ==90632== Process terminating with default action of signal 4 (SIGILL)
 ==90632==  Illegal opcode at address 0x492B75F
 ==90632==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90632==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90632==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90632==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90632==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90632==    by 0x49908EB: curl_version_info (version.c:600)
 ==90632==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90632==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90632==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90632==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind198
test 0199 [HTTP with -d, -G and {}]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind199 ../src/curl -q --output log/22/curl199.out  --include --trace-ascii log/22/trace199 --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:35989/{199,199}" -G > log/22/stdout199 2> log/22/stderr199

 199: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 199
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind199 ../src/curl -q --output log/22/curl199.out  --include --trace-ascii log/22/trace199 --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:35989/{199,199}" -G > log/22/stdout199 2> log/22/stderr199
=== End of file commands.log
=== Start of file http_server.log
 19:26:27.003895 ====> Client connect
 19:26:27.003945 accept_connection 3 returned 4
 19:26:27.003976 Read 93 bytes
 19:26:27.003988 Process 93 bytes request
 19:26:27.004003 Got request: GET /verifiedserver HTTP/1.1
 19:26:27.004012 Are-we-friendly question received
 19:26:27.004047 Wrote request (93 bytes) input to log/22/server.input
 19:26:27.004069 Identifying CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind202 ../src/curl -q --trace-ascii log/10/trace202 --trace-time file://localhost/startdir/src/build-curl/tests/log/10/test202.txt FILE://localhost/startdir/src/build-curl/tests/log/10/test202.txt > log/10/stdout202 2> log/10/stderr202
ourselves as friends
 19:26:27.004174 Response sent (56 bytes) and written to log/22/server.response
 19:26:27.004188 special request received, no persistency
 19:26:27.004198 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 41660 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 199
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind199
 ==90830== 
 ==90830== Process terminating with default action of signal 4 (SIGILL)
 ==90830==  Illegal opcode at address 0x492B75F
 ==90830==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90830==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90830==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90830==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90830==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90830==    by 0x49908EB: curl_version_info (version.c:600)
 ==90830==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90830==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind199
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind201 ../src/curl -q --output log/5/curl201.out  --include --trace-ascii log/5/trace201 --trace-time file://localhost//startdir/src/build-curl/tests/log/5/non-existent-file.txt > log/5/stdout201 2> log/5/stderr201
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind203 ../src/curl -q --output log/9/curl203.out  --trace-ascii log/9/trace203 --trace-time file:/startdir/src/build-curl/tests/log/9/test203.txt > log/9/stdout203 2> log/9/stderr203
test 0202 [two file:// URLs to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind202 ../src/curl -q --trace-ascii log/10/trace202 --trace-time file://localhost/startdir/src/build-curl/tests/log/10/test202.txt FILE://localhost/startdir/src/build-curl/tests/log/10/test202.txt > log/10/stdout202 2> log/10/stderr202

 202: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:26:30.016008788 +0000
+++ log/10/check-generated	2026-10-15 19:26:30.012502128 +0000
@@ -1,2 +0,0 @@
-contents in a single file[LF]
-contents in a single file[LF]
== Contents of files in the log/10/ directory after test 202
=== Start of file check-expected
 contents in a single file[LF]
 contents in a single file[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind202 ../src/curl -q --trace-ascii log/10/trace202 --trace-time file://localhost/startdir/src/build-curl/tests/log/10/test202.txt FILE://localhost/startdir/src/build-curl/tests/log/10/test202.txt > log/10/stdout202 2> log/10/stderr202
=== End of file commands.log
=== Start of file server.cmd
 Testnum 202
=== End of file server.cmd
=== Start of file test202.txt
 contents in a single file
=== End of file test202.txt
=== Start of file valgrind202
 ==90943== 
 ==90943== Process terminating with default action of signal 4 (SIGILL)
 ==90943==  Illegal opcode at address 0x492B75F
 ==90943==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90943==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90943==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90943==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90943==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90943==    by 0x49908EB: curl_version_info (version.c:600)
 ==90943==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90943==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind202
test 0201 [missing file:// file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind201 ../src/curl -q --output log/5/curl201.out  --include --trace-ascii log/5/trace201 --trace-time file://localhost//startdir/src/build-curl/tests/log/5/non-existent-file.txt > log/5/stdout201 2> log/5/stderr201

curl returned 132, when expecting 37
 201: exit FAILED
== Contents of files in the log/5/ directory after test 201
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind201 ../src/curl -q --output log/5/curl201.out  --include --trace-ascii log/5/trace201 --trace-time file://localhost//startdir/src/build-curl/tests/log/5/non-existent-file.txt > log/5/stdout201 2> log/5/stderr201
=== End of file commands.log
=== Start of file server.cmd
 Testnum 201
=== End of file server.cmd
=== Start of file valgrind201
 ==90769== 
 ==90769== Process terminating with default action of signal 4 (SIGILL)
 ==90769==  Illegal opcode at address 0x492B75F
 ==90769==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90769==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90769==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90769==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90769==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90769==    by 0x49908EB: curl_version_info (version.c:600)
 ==90769==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90769==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90769==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90769==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind201
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind207 ../src/curl -q --output log/12/curl207.out  --include --trace-ascii log/12/trace207 --trace-time http://127.0.0.1:40921/207 > log/12/stdout207 2> log/12/stderr207
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind215 ../src/curl -q --output log/3/curl215.out  --include --trace-ascii log/3/trace215 --trace-time ftp://127.0.0.1:42249/a/path/215/ ftp://127.0.0.1:42249/a/path/215/ > log/3/stdout215 2> log/3/stderr215
setenv MSYS2_ARG_CONV_EXCL = file:
test 0203 [file:/path URL with a single slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind203 ../src/curl -q --output log/9/curl203.out  --trace-ascii log/9/trace203 --trace-time file:/startdir/src/build-curl/tests/log/9/test203.txt > log/9/stdout203 2> log/9/stderr203

 203: data FAILED:
--- log/9/check-expected	2026-10-15 19:26:30.272328516 +0000
+++ log/9/check-generated	2026-10-15 19:26:30.269107168 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/9/ directory after test 203
=== Start of file check-expected
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind203 ../src/curl -q --output log/9/curl203.out  --trace-ascii log/9/trace203 --trace-time file:/startdir/src/build-curl/tests/log/9/test203.txt > log/9/stdout203 2> log/9/stderr203
=== End of file commands.log
=== Start of file server.cmd
 Testnum 203
=== End of file server.cmd
=== Start of file test203.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test203.txt
=== Start of file valgrind203
 ==90947== 
 ==90947== Process terminating with default action of signal 4 (SIGILL)
 ==90947==  Illegal opcode at address 0x492B75F
 ==90947==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==90947==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==90947==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==90947==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==90947==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==90947==    by 0x49908EB: curl_version_info (version.c:600)
 ==90947==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==90947==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==90947==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==90947==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind203
test 0207 [HTTP GET with chunked Transfer-Encoding closed prematurely]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind207 ../src/curl -q --output log/12/curl207.out  --include --trace-ascii log/12/trace207 --trace-time http://127.0.0.1:40921/207 > log/12/stdout207 2> log/12/stderr207

 207: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 207
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind207 ../src/curl -q --output log/12/curl207.out  --include --trace-ascii log/12/trace207 --trace-time http://127.0.0.1:40921/207 > log/12/stdout207 2> log/12/stderr207
=== End of file commands.log
=== Start of file http_server.log
 19:26:27.799886 ====> Client connect
 19:26:27.799917 accept_connection 3 returned 4
 19:26:27.799938 Read 93 bytes
 19:26:27.799948 Process 93 bytes request
 19:26:27.799959 Got request: GET /verifiedserver HTTP/1.1
 19:26:27.799968 Are-we-friendly question received
 19:26:27.799996 Wrote request (93 bytes) input to log/12/server.input
 19:26:27.800013 Identifying ourselves as friends
 19:26:27.800083 Response sent (56 bytes) and written to log/12/server.response
 19:26:27.800092 special request received, no persistency
 19:26:27.800100 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 37314 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 207
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind207
 ==91250== 
 ==91250== Process terminating with default action of signal 4 (SIGILL)
 ==91250==  Illegal opcode at address 0x492B75F
 ==91250==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91250==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91250==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91250==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91250==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91250==    by 0x49908EB: curl_version_info (version.c:600)
 ==91250==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91250==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91250==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91250==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind207
test 0215 [Get two FTP dir listings from the same remote dir: no second CWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind215 ../src/curl -q --output log/3/curl215.out  --include --trace-ascii log/3/trace215 --trace-time ftp://127.0.0.1:42249/a/path/215/ ftp://127.0.0.1:42249/a/path/215/ > log/3/stdout215 2> log/3/stderr215

 215: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 215
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind215 ../src/curl -q --output log/3/curl215.out  --include --trace-ascii log/3/trace215 --trace-time ftp://127.0.0.1:42249/a/path/215/ ftp://127.0.0.1:42249/a/path/215/ > log/3/stdout215 2> log/3/stderr215
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:28.448698 ====> Client connect
 19:26:28.448949 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:28.449301 < "USER anonymous"
 19:26:28.449383 > "331 We are happy you popped in![CR][LF]"
 19:26:28.449550 < "PASS ftp@example.com"
 19:26:28.449648 > "230 Welcome you silly person[CR][LF]"
 19:26:28.449787 < "PWD"
 19:26:28.449829 > "257 "/" is current directory[CR][LF]"
 19:26:28.450026 < "EPSV"
 19:26:28.450063 ====> Passive DATA channel requested by client
 19:26:28.450082 DATA sockfilt for passive data channel starting...
 19:26:28.456652 DATA sockfilt for passive data channel started (pid 91512)
 19:26:28.456808 DATA sockfilt for passive data channel listens on port 32865
 19:26:28.456866 > "229 Entering Passive Mode (|||32865|)[CR][LF]"
 19:26:28.456885 Client has been notified that upcoming DATA connection is awaited on port 32865
 19:26:28.462096 Client connects to port 32865
 19:26:28.462163 ====> Client established passive DATA connection on port 32865
 19:26:28.462304 < "TYPE I"
 19:26:28.462348 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:28.462847 < "SIZE verifiedserver"
 19:26:28.462918 > "213 17[CR][LF]"
 19:26:28.464222 < "RETR verifiedserver"
 19:26:28.464297 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:28.464394 =====> Closing passive DATA connection...
 19:26:28.464411 Server disconnects passive DATA connection
 19:26:28.468708 Server disconnected passive DATA connection
 19:26:28.468773 DATA sockfilt for passive data channel quits (pid 915CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind210 ../src/curl -q --output log/23/curl210.out  --trace-ascii log/23/trace210 --trace-time ftp://127.0.0.1:35523/a/path/210 ftp://127.0.0.1:35523/a/path/210 > log/23/stdout210 2> log/23/stderr210
12)
 19:26:28.475394 DATA sockfilt for passive data channel quit (pid 91512)
 19:26:28.475463 =====> Closed passive DATA connection
 19:26:28.475508 > "226 File transfer complete[CR][LF]"
 19:26:28.512211 < "QUIT"
 19:26:28.512264 > "221 bye bye baby[CR][LF]"
 19:26:28.513564 MAIN sockfilt said DISC
 19:26:28.513605 ====> Client disconnected
 19:26:28.513686 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:29.050540 ====> Client connect
 19:26:29.050957 Received DATA (on stdin)
 19:26:29.050975 > 146 bytes data, server => client
 19:26:29.050987 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:29.050997 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:29.051007 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:29.051105 < 16 bytes data, client => server
 19:26:29.051121 'USER anonymous\r\n'
 19:26:29.051306 Received DATA (on stdin)
 19:26:29.051321 > 33 bytes data, server => client
 19:26:29.051377 '331 We are happy you popped in!\r\n'
 19:26:29.051432 < 22 bytes data, client => server
 19:26:29.051446 'PASS ftp@example.com\r\n'
 19:26:29.051550 Received DATA (on stdin)
 19:26:29.051563 > 30 bytes data, server => client
 19:26:29.051582 '230 Welcome you silly person\r\n'
 19:26:29.051677 < 5 bytes data, client => server
 19:26:29.051691 'PWD\r\n'
 19:26:29.051826 Received DATA (on stdin)
 19:26:29.051839 > 30 bytes data, server => client
 19:26:29.051849 '257 "/" is current directory\r\n'
 19:26:29.051916 < 6 bytes data, client => server
 19:26:29.051930 'EPSV\r\n'
 19:26:29.058884 Received DATA (on stdin)
 19:26:29.058902 > 39 bytes data, server => client
 19:26:29.058913 '229 Entering Passive Mode (|||32865|)\r\n'
 19:26:29.060858 < 8 bytes data, client => server
 19:26:29.060890 'TYPE I\r\n'
 19:26:29.064508 Received DATA (on stdin)
 19:26:29.064541 > 33 bytes data, server => client
 19:26:29.064553 '200 I modify TYPE as you wanted\r\n'
 19:26:29.064644 < 21 bytes data, client => server
 19:26:29.064656 'SIZE verifiedserver\r\n'
 19:26:29.066014 Received DATA (on stdin)
 19:26:29.066033 > 8 bytes data, server => client
 19:26:29.066044 '213 17\r\n'
 19:26:29.066107 < 21 bytes data, client => server
 19:26:29.066120 'RETR verifiedserver\r\n'
 19:26:29.066472 Received DATA (on stdin)
 19:26:29.066496 > 29 bytes data, server => client
 19:26:29.066506 '150 Binary junk (17 bytes).\r\n'
 19:26:29.077518 Received DATA (on stdin)
 19:26:29.077543 > 28 bytes data, server => client
 19:26:29.077554 '226 File transfer complete\r\n'
 19:26:29.114016 < 6 bytes data, client => server
 19:26:29.114051 'QUIT\r\n'
 19:26:29.114269 Received DATA (on stdin)
 19:26:29.114281 > 18 bytes data, server => client
 19:26:29.114290 '221 bye bye baby\r\n'
 19:26:29.115493 ====> Client disconnect
 19:26:29.115686 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:28.058209 Running IPv4 version
 19:26:28.058317 Listening on port 32865
 19:26:28.058364 Wrote pid 91512 to log/3/server/ftp_sockdata.pid
 19:26:28.058572 Received PING (on stdin)
 19:26:28.058689 Received PORT (on stdin)
 19:26:28.064002 ====> Client connect
 19:26:28.067336 Received DATA (on stdin)
 19:26:28.067362 > 17 bytes data, server => client
 19:26:28.067373 'WE ROOLZ: 84710\r\n'
 19:26:28.067411 Received DISC (on stdin)
 19:26:28.067424 ====> Client forcibly disconnected
 19:26:28.074005 Received QUIT (on stdin)
 19:26:28.074033 quits
 19:26:28.074115 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 215
=== End of file server.cmd
=== Start of file valgrind215
 ==91593== 
 ==91593== Process terminating with default action of signal 4 (SIGILL)
 ==91593==  Illegal opcode at address 0x492B75F
 ==91593==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91593==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91593==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91593==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91593==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91593==    by 0x49908EB: curl_version_info (version.c:600)
 ==91593==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91593==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91593==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91593==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind215
test 0210 [Get two FTP files from the same remote dir: no second CWD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind210 ../src/curl -q --output log/23/curl210.out  --trace-ascii log/23/trace210 --trace-time ftp://127.0.0.1:35523/a/path/210 ftp://127.0.0.1:35523/a/path/210 > log/23/stdout210 2> log/23/stderr210

 210: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 210
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind210 ../src/curl -q --output log/23/curl210.out  --trace-ascii log/23/trace210 --trace-time ftp://127.0.0.1:35523/a/path/210 ftp://127.0.0.1:35523/a/path/210 > log/23/stdout210 2> log/23/stderr210
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:28.198151 ====> Client connect
 19:26:28.200228 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:28.215619 < "USER anonymous"
 19:26:28.215673 > "331 We are happy you popped in![CR][LF]"
 19:26:28.215925 < "PASS ftp@example.com"
 19:26:28.215959 > "230 Welcome you silly person[CR][LF]"
 19:26:28.216117 < "PWD"
 19:26:28.216151 > "257 "/" is current directory[CR][LF]"
 19:26:28.216312 < "EPSV"
 19:26:28.216336 ====> Passive DATA channel requested by client
 19:26:28.216351 DATA sockfilt for passive data channel starting...
 19:26:28.223220 DATA sockfilt for passive data channel started (pid 91240)
 19:26:28.223358 DATA sockfilt for passive data channel listens on port 39585
 19:26:28.223413 > "229 Entering Passive Mode (|||39585|)[CR][LF]"
 19:26:28.223437 Client has been notified that upcoming DATA connection is awaited on port 39585
 19:26:28.228754 Client connects to port 39585
 19:26:28.228803 ====> Client established passive DATA connection on port 39585
 19:26:28.228925 < "TYPE I"
 19:26:28.228971 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:28.229223 < "SIZE verifiedserver"
 19:26:28.229273 > "213 17[CR][LF]"
 19:26:28.229460 < "RETR verifiedserver"
 19:26:28.229502 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:28.229597 =====> Closing passive DATA connection...
 19:26:28.229617 Server disconnects passive DATA connection
 19:26:28.229892 Server disconnected passive DATA connection
 19:26:28.229924 DATA sockfilt for passive data channel quits (pid 91240)
 19:26:28.230172 DATA sockfilt for passive data channel quit (pid 91240)
 19:26:28.230203 =====> Closed passive DATA connection
 19:26:28.230235 > "226 File transfer complete[CR][LF]"
 19:26:28.278887 < "QUIT"
 19:26:28.278958 > "221 bye bye baby[CR][LF]"
 19:26:28.280275 MAIN sockfilt said DISC
 19:26:28.280319 ====> Client disconnected
 19:26:28.280400 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:28.799972 ====> Client connect
 19:26:28.802054 Received DATA (on stdin)
 19:26:28.802093 > 146 bytes data, server => client
 19:26:28.802181 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:28.802193 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:28.802202 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:28.817321 < 16 bytes data, client => server
 19:26:28.817354 'USER anonymous\r\n'
 19:26:28.817608 Received DATA (on stdin)
 19:26:28.817620 > 33 bytes data, server => client
 19:26:28.817631 '331 We are happy you popped inCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind205 ../src/curl -q --output log/17/curl205.out  --trace-ascii log/17/trace205 --trace-time file://localhost//startdir/src/build-curl/tests/log/17/nonexisting/result205.txt -T log/17/upload205.txt > log/17/stdout205 2> log/17/stderr205
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind204 ../src/curl -q --output log/21/curl204.out  --trace-ascii log/21/trace204 --trace-time file://localhost/startdir/src/build-curl/tests/log/21/result204.txt -T log/21/upload204.txt > log/21/stdout204 2> log/21/stderr204
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind206 ../src/curl -q --output log/6/curl206.out  --include --trace-ascii log/6/trace206 --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy=http://127.0.0.1:33935 --proxy-user=silly:person --proxy-digest --proxytunnel > log/6/stdout206 2> log/6/stderr206
!\r\n'
 19:26:28.817741 < 22 bytes data, client => server
 19:26:28.817753 'PASS ftp@example.com\r\n'
 19:26:28.817887 Received DATA (on stdin)
 19:26:28.817898 > 30 bytes data, server => client
 19:26:28.817909 '230 Welcome you silly person\r\n'
 19:26:28.817962 < 5 bytes data, client => server
 19:26:28.817972 'PWD\r\n'
 19:26:28.818078 Received DATA (on stdin)
 19:26:28.818088 > 30 bytes data, server => client
 19:26:28.818098 '257 "/" is current directory\r\n'
 19:26:28.818160 < 6 bytes data, client => server
 19:26:28.818170 'EPSV\r\n'
 19:26:28.827275 Received DATA (on stdin)
 19:26:28.827305 > 39 bytes data, server => client
 19:26:28.827316 '229 Entering Passive Mode (|||39585|)\r\n'
 19:26:28.827506 < 8 bytes data, client => server
 19:26:28.827523 'TYPE I\r\n'
 19:26:28.830919 Received DATA (on stdin)
 19:26:28.830937 > 33 bytes data, server => client
 19:26:28.830948 '200 I modify TYPE as you wanted\r\n'
 19:26:28.831039 < 21 bytes data, client => server
 19:26:28.831055 'SIZE verifiedserver\r\n'
 19:26:28.831210 Received DATA (on stdin)
 19:26:28.831223 > 8 bytes data, server => client
 19:26:28.831232 '213 17\r\n'
 19:26:28.831296 < 21 bytes data, client => server
 19:26:28.831310 'RETR verifiedserver\r\n'
 19:26:28.831553 Received DATA (on stdin)
 19:26:28.831565 > 29 bytes data, server => client
 19:26:28.831575 '150 Binary junk (17 bytes).\r\n'
 19:26:28.832173 Received DATA (on stdin)
 19:26:28.832186 > 28 bytes data, server => client
 19:26:28.832196 '226 File transfer complete\r\n'
 19:26:28.880622 < 6 bytes data, client => server
 19:26:28.880650 'QUIT\r\n'
 19:26:28.880913 Received DATA (on stdin)
 19:26:28.880928 > 18 bytes data, server => client
 19:26:28.880937 '221 bye bye baby\r\n'
 19:26:28.882159 ====> Client disconnect
 19:26:28.882349 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:28.824770 Running IPv4 version
 19:26:28.824860 Listening on port 39585
 19:26:28.824900 Wrote pid 91240 to log/23/server/ftp_sockdata.pid
 19:26:28.825081 Received PING (on stdin)
 19:26:28.825189 Received PORT (on stdin)
 19:26:28.830618 ====> Client connect
 19:26:28.831646 Received DATA (on stdin)
 19:26:28.831663 > 17 bytes data, server => client
 19:26:28.831673 'WE ROOLZ: 84709\r\n'
 19:26:28.831704 Received DISC (on stdin)
 19:26:28.831716 ====> Client forcibly disconnected
 19:26:28.831866 Received QUIT (on stdin)
 19:26:28.831877 quits
 19:26:28.831942 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 210
=== End of file server.cmd
=== Start of file valgrind210
 ==91334== 
 ==91334== Process terminating with default action of signal 4 (SIGILL)
 ==91334==  Illegal opcode at address 0x492B75F
 ==91334==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91334==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91334==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91334==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91334==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91334==    by 0x49908EB: curl_version_info (version.c:600)
 ==91334==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91334==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind210
test 0205 ["upload" nonexisting with file://]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind205 ../src/curl -q --output log/17/curl205.out  --trace-ascii log/17/trace205 --trace-time file://localhost//startdir/src/build-curl/tests/log/17/nonexisting/result205.txt -T log/17/upload205.txt > log/17/stdout205 2> log/17/stderr205

curl returned 132, when expecting 23
 205: exit FAILED
== Contents of files in the log/17/ directory after test 205
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind205 ../src/curl -q --output log/17/curl205.out  --trace-ascii log/17/trace205 --trace-time file://localhost//startdir/src/build-curl/tests/log/17/nonexisting/result205.txt -T log/17/upload205.txt > log/17/stdout205 2> log/17/stderr205
=== End of file commands.log
=== Start of file server.cmd
 Testnum 205
=== End of file server.cmd
=== Start of file upload205.txt
 data
 in
 file
 to
 write
=== End of file upload205.txt
=== Start of file valgrind205
 ==91082== 
 ==91082== Process terminating with default action of signal 4 (SIGILL)
 ==91082==  Illegal opcode at address 0x492B75F
 ==91082==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91082==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91082==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91082==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91082==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91082==    by 0x49908EB: curl_version_info (version.c:600)
 ==91082==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91082==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91082==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91082==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind205
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind216 ../src/curl -q --output log/15/curl216.out  --include --trace-ascii log/15/trace216 --trace-time -T log/15/upload.216 ftp://127.0.0.1:44883/a/path/216/ -T log/15/upload.216 ftp://127.0.0.1:44883/a/path/216/%2e%2eanotherup.216 > log/15/stdout216 2> log/15/stderr216
test 0204 ["upload" with file://]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind204 ../src/curl -q --output log/21/curl204.out  --trace-ascii log/21/trace204 --trace-time file://localhost/startdir/src/build-curl/tests/log/21/result204.txt -T log/21/upload204.txt > log/21/stdout204 2> log/21/stderr204

 204: output (log/21/result204.txt) FAILED:
--- log/21/check-expected	2026-10-15 19:26:30.859338890 +0000
+++ log/21/check-generated	2026-10-15 19:26:30.855632977 +0000
@@ -1,5 +0,0 @@
-data[LF]
-in[LF]
-file[LF]
-to[LF]
-write[LF]
== Contents of files in the log/21/ directory after test 204
=== Start of file check-expected
 data[LF]
 in[LF]
 file[LF]
 to[LF]
 write[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind204 ../src/curl -q --output log/21/curl204.out  --trace-ascii log/21/trace204 --trace-time file://localhost/startdir/src/build-curl/tests/log/21/result204.txt -T log/21/upload204.txt > log/21/stdout204 2> log/21/stderr204
=== End of file commands.log
=== Start of file server.cmd
 Testnum 204
=== End of file server.cmd
=== Start of file upload204.txt
 data
 in
 file
 to
 write
=== End of file upload204.txt
=== Start of file valgrind204
 ==91048== 
 ==91048== Process terminating with default action of signal 4 (SIGILL)
 ==91048==  Illegal opcode at address 0x492B75F
 ==91048==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91048==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91048==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91048==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91048==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91048==    by 0x49908EB: curl_version_info (version.c:600)
 ==91048==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91048==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91048==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91048==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind204
test 0206 [HTTP proxy CONNECT auth Digest]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind206 ../src/curl -q --output log/6/curl206.out  --include --trace-ascii log/6/trace206 --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy=http://127.0.0.1:33935 --proxy-user=silly:person --proxy-digest --proxytunnel > log/6/stdout206 2> log/6/stderr206

 206: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 206
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind206 ../src/curl -q --output log/6/curl206.out  --include --trace-ascii log/6/trace206 --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy=http://127.0.0.1:33935 --proxy-user=silly:person --proxy-digest --proxytunnel > log/6/stdout206 2> log/6/stderr206
=== End of file commands.log
=== Start of file http_server.log
 19:26:27.780663 ====> Client connect
 19:26:27.780706 accept_connection 3 returned 4
 19:26:27.782151 Read 93 bytes
 19:26:27.782171 Process 93 bytes request
 19:26:27.782185 Got request: GET /verifiedserver HTTP/1.1
 19:26:27.782194 Are-we-friendly question received
 19:26:27.782228 Wrote request (93 bytes) input to log/6/server.input
 19:26:27.782247 Identifying ourselves as friends
 19:26:27.782326 Response sent (56 bytes) and written to log/6/server.response
 19:26:27.782338 special request received, no persistency
 19:26:27.782346 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 56514 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 auth_required
 Testnum 206
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind206
 ==91251== 
 ==91251== Process terminating with default action of signal 4 (SIGILL)
 ==91251==  Illegal opcode at address 0x492B75F
 ==91251==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91251==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91251==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91251==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91251==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91251==    by 0x49908EB: curl_version_info (version.c:600)
 ==91251==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91251==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91251==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91251==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind206
test 0216 [FTP upload two files to the same dir]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind216 ../src/curl -q --output log/15/curl216.out  --include --trace-ascii log/15/trace216 --trace-time -T log/15/upload.216 ftp://127.0.0.1:44883/a/path/216/ -T log/15/upload.216 ftp://127.0.0.1:44883/a/path/216/%2e%2eanotherup.216 > log/15/stdout216 2> log/15/stderr216

 216: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 216
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind216 ../src/curl -q --output log/15/curl216.out  --include --trace-ascii log/15/trace216 --trace-time -T log/15/upload.216 ftp://127.0.0.1:44883/a/path/216/ -T log/15/upload.216 ftp://127.0.0.1:44883/a/path/216/%2e%2eanotherup.216 > log/15/stdout216 2> log/15/stderr216
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:28.595497 ====> Client connect
 19:26:28.595810 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:28.598905 < "USER anonymous"
 19:26:28.598946 > "331 We are happy you popped in![CR][LF]"
 19:26:28.599134 < "PASS ftp@example.com"
 19:26:28.599167 > "230 Welcome you silly person[CR][LF]"
 19:26:28.599330 < "PWD"
 19:26:28.599362 > "257 "/" is current directory[CR][LF]"
 19:26:28.599542 < "EPSV"
 19:26:28.599569 ====> Passive DATA channel requested by client
 19:26:28.599584 DATA sockfilt for passive data channel starting...
 19:26:28.603380 DATA sockfilt for passive data channel started (pid 91646)
 19:26:28.603495 DATA sockfilt for passive data channel listens on port 38563
 19:26:28.603538 > "229 Entering Passive Mode (|||38563|)[CR][LF]"
 19:26:28.603555 Client has been notified that upcoming DATA connection is awaited on port 38563
 19:26:28.603841 Client connects to port 38563
 19:26:28.603871 ====> Client established passive DATA connection on port 38563
 19:26:28.603949 < "TYPE I"
 19:26:28.603979 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:28.604134 < "SIZE verifiedserver"
 19:26:28.6CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind212 ../src/curl -q --output log/7/curl212.out  --include --trace-ascii log/7/trace212 --trace-time ftp://127.0.0.1:44283/a/path/212 ftp://127.0.0.1:44283/a/path/212 -P - > log/7/stdout212 2> log/7/stderr212
04173 > "213 17[CR][LF]"
 19:26:28.604326 < "RETR verifiedserver"
 19:26:28.604357 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:28.604442 =====> Closing passive DATA connection...
 19:26:28.604459 Server disconnects passive DATA connection
 19:26:28.604688 Server disconnected passive DATA connection
 19:26:28.604716 DATA sockfilt for passive data channel quits (pid 91646)
 19:26:28.604956 DATA sockfilt for passive data channel quit (pid 91646)
 19:26:28.604984 =====> Closed passive DATA connection
 19:26:28.605010 > "226 File transfer complete[CR][LF]"
 19:26:28.649085 < "QUIT"
 19:26:28.649157 > "221 bye bye baby[CR][LF]"
 19:26:28.650455 MAIN sockfilt said DISC
 19:26:28.650510 ====> Client disconnected
 19:26:28.650597 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:28.197375 ====> Client connect
 19:26:28.197696 Received DATA (on stdin)
 19:26:28.197711 > 146 bytes data, server => client
 19:26:28.197729 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:28.197739 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:28.197746 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:28.200748 < 16 bytes data, client => server
 19:26:28.200768 'USER anonymous\r\n'
 19:26:28.200972 Received DATA (on stdin)
 19:26:28.200983 > 33 bytes data, server => client
 19:26:28.200993 '331 We are happy you popped in!\r\n'
 19:26:28.201058 < 22 bytes data, client => server
 19:26:28.201071 'PASS ftp@example.com\r\n'
 19:26:28.201190 Received DATA (on stdin)
 19:26:28.201200 > 30 bytes data, server => client
 19:26:28.201210 '230 Welcome you silly person\r\n'
 19:26:28.201266 < 5 bytes data, client => server
 19:26:28.201277 'PWD\r\n'
 19:26:28.201382 Received DATA (on stdin)
 19:26:28.201392 > 30 bytes data, server => client
 19:26:28.201402 '257 "/" is current directory\r\n'
 19:26:28.201469 < 6 bytes data, client => server
 19:26:28.201484 'EPSV\r\n'
 19:26:28.205584 Received DATA (on stdin)
 19:26:28.205598 > 39 bytes data, server => client
 19:26:28.205608 '229 Entering Passive Mode (|||38563|)\r\n'
 19:26:28.205787 < 8 bytes data, client => server
 19:26:28.205801 'TYPE I\r\n'
 19:26:28.206002 Received DATA (on stdin)
 19:26:28.206013 > 33 bytes data, server => client
 19:26:28.206022 '200 I modify TYPE as you wanted\r\n'
 19:26:28.206075 < 21 bytes data, client => server
 19:26:28.206086 'SIZE verifiedserver\r\n'
 19:26:28.206195 Received DATA (on stdin)
 19:26:28.206205 > 8 bytes data, server => client
 19:26:28.206214 '213 17\r\n'
 19:26:28.206265 < 21 bytes data, client => server
 19:26:28.206276 'RETR verifiedserver\r\n'
 19:26:28.206483 Received DATA (on stdin)
 19:26:28.206497 > 29 bytes data, server => client
 19:26:28.206507 '150 Binary junk (17 bytes).\r\n'
 19:26:28.207033 Received DATA (on stdin)
 19:26:28.207044 > 28 bytes data, server => client
 19:26:28.207054 '226 File transfer complete\r\n'
 19:26:28.250859 < 6 bytes data, client => server
 19:26:28.250897 'QUIT\r\n'
 19:26:28.251209 Received DATA (on stdin)
 19:26:28.251227 > 18 bytes data, server => client
 19:26:28.251237 '221 bye bye baby\r\n'
 19:26:28.252425 ====> Client disconnect
 19:26:28.252639 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:28.205071 Running IPv4 version
 19:26:28.205156 Listening on port 38563
 19:26:28.205196 Wrote pid 91646 to log/15/server/ftp_sockdata.pid
 19:26:28.205345 Received PING (on stdin)
 19:26:28.205430 Received PORT (on stdin)
 19:26:28.205819 ====> Client connect
 19:26:28.206562 Received DATA (on stdin)
 19:26:28.206574 > 17 bytes data, server => client
 19:26:28.206585 'WE ROOLZ: 84744\r\n'
 19:26:28.206610 Received DISC (on stdin)
 19:26:28.206620 ====> Client forcibly disconnected
 19:26:28.206747 Received QUIT (on stdin)
 19:26:28.206759 quits
 19:26:28.206824 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 216
=== End of file server.cmd
=== Start of file upload.216
 upload this file twice
=== End of file upload.216
=== Start of file valgrind216
 ==91679== 
 ==91679== Process terminating with default action of signal 4 (SIGILL)
 ==91679==  Illegal opcode at address 0x492B75F
 ==91679==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91679==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91679==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91679==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91679==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91679==    by 0x49908EB: curl_version_info (version.c:600)
 ==91679==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91679==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91679==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91679==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind216
test 0212 [Get two FTP files with no remote EPRT support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind212 ../src/curl -q --output log/7/curl212.out  --include --trace-ascii log/7/trace212 --trace-time ftp://127.0.0.1:44283/a/path/212 ftp://127.0.0.1:44283/a/path/212 -P - > log/7/stdout212 2> log/7/stderr212

 212: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 212
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind212 ../src/curl -q --output log/7/curl212.out  --include --trace-ascii log/7/trace212 --trace-time ftp://127.0.0.1:44283/a/path/212 ftp://127.0.0.1:44283/a/path/212 -P - > log/7/stdout212 2> log/7/stderr212
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:28.235651 ====> Client connect
 19:26:28.235849 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:28.236107 < "USER anonymous"
 19:26:28.236137 > "331 We are happy you popped in![CR][LF]"
 19:26:28.236278 < "PASS ftp@example.com"
 19:26:28.236301 > "230 Welcome you silly person[CR][LF]"
 19:26:28.236441 < "PWD"
 19:26:28.236471 > "257 "/" is current directory[CR][LF]"
 19:26:28.236632 < "EPSV"
 19:26:28.236658 ====> Passive DATA channel requested by client
 19:26:28.236671 DATA sockfilt for passive data channel starting...
 19:26:28.248932 DATA sockfilt for passive data channel started (pid 91258)
 19:26:28.249085 DATA sockfilt for passive data channel listens on port 46705
 19:26:28.249134 > "229 Entering Passive Mode (|||46705|)[CR][LF]"
 19:26:28.249151 Client has been notified that upcoming DATA connection is awaited on port 46705
 19:26:28.249467 Client connects to port 46705
 19:26:28.249496 ====> Client established passive DATA connection on port 46705
 19:26:28.249593 < "TYPE I"
 19:26:28.249630 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:28.249804 < "SIZE verifiedserver"
 19:26:28.249848 > "213 17[CR][LF]"
 19:26:28.250024 < "RETR verifiedserver"
 19:26:28.250059 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:28.250158 =====> Closing passive DATA connection...
 19:26:28.250179 Server disconnects passive DATA connection
 19:26:28.250416 Server disconnected passive DATA connection
 19:26:28.250445 DATA sockfilt for passive data channel quits (pid 91258)
 19:26:28.250751 DATA sockfilt for passive data channel quit (pid 91258)
 19:26:28.250779 =====> Closed passive DATA connection
 19:26:28.250807 > "226 File transfer complete[CR][LF]"
 19:26:28.293607 < "QUIT"
 19:26:28.293663 > "221 bye bye baby[CR][LF]"
 19:26:28.295048 MAIN sockfilt said DISC
 19:26:28.295078 ====> Client disconnected
 19:26:28.295143 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:28.837474 ====> Client connect
 19:26:28.837792 Received DATA (on stdin)
 19:26:28.837809 > 146 bytes data, serCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind211 ../src/curl -q --output log/11/curl211.out  --include --trace-ascii log/11/trace211 --trace-time ftp://127.0.0.1:37735/a/path/211 ftp://127.0.0.1:37735/a/path/211 > log/11/stdout211 2> log/11/stderr211
ver => client
 19:26:28.837819 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:28.837829 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:28.837837 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:28.837901 < 16 bytes data, client => server
 19:26:28.837911 'USER anonymous\r\n'
 19:26:28.838070 Received DATA (on stdin)
 19:26:28.838080 > 33 bytes data, server => client
 19:26:28.838088 '331 We are happy you popped in!\r\n'
 19:26:28.838134 < 22 bytes data, client => server
 19:26:28.838143 'PASS ftp@example.com\r\n'
 19:26:28.838233 Received DATA (on stdin)
 19:26:28.838243 > 30 bytes data, server => client
 19:26:28.838252 '230 Welcome you silly person\r\n'
 19:26:28.838299 < 5 bytes data, client => server
 19:26:28.838308 'PWD\r\n'
 19:26:28.838404 Received DATA (on stdin)
 19:26:28.838415 > 30 bytes data, server => client
 19:26:28.838424 '257 "/" is current directory\r\n'
 19:26:28.838483 < 6 bytes data, client => server
 19:26:28.838493 'EPSV\r\n'
 19:26:28.851096 Received DATA (on stdin)
 19:26:28.851114 > 39 bytes data, server => client
 19:26:28.851124 '229 Entering Passive Mode (|||46705|)\r\n'
 19:26:28.851351 < 8 bytes data, client => server
 19:26:28.851362 'TYPE I\r\n'
 19:26:28.851572 Received DATA (on stdin)
 19:26:28.851583 > 33 bytes data, server => client
 19:26:28.851593 '200 I modify TYPE as you wanted\r\n'
 19:26:28.851649 < 21 bytes data, client => server
 19:26:28.851662 'SIZE verifiedserver\r\n'
 19:26:28.851789 Received DATA (on stdin)
 19:26:28.851801 > 8 bytes data, server => client
 19:26:28.851815 '213 17\r\n'
 19:26:28.851872 < 21 bytes data, client => server
 19:26:28.851885 'RETR verifiedserver\r\n'
 19:26:28.852121 Received DATA (on stdin)
 19:26:28.852133 > 29 bytes data, server => client
 19:26:28.852143 '150 Binary junk (17 bytes).\r\n'
 19:26:28.852747 Received DATA (on stdin)
 19:26:28.852758 > 28 bytes data, server => client
 19:26:28.852768 '226 File transfer complete\r\n'
 19:26:28.895379 < 6 bytes data, client => server
 19:26:28.895411 'QUIT\r\n'
 19:26:28.895617 Received DATA (on stdin)
 19:26:28.895629 > 18 bytes data, server => client
 19:26:28.895640 '221 bye bye baby\r\n'
 19:26:28.896944 ====> Client disconnect
 19:26:28.897087 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:28.850432 Running IPv4 version
 19:26:28.850543 Listening on port 46705
 19:26:28.850608 Wrote pid 91258 to log/7/server/ftp_sockdata.pid
 19:26:28.850786 Received PING (on stdin)
 19:26:28.850918 Received PORT (on stdin)
 19:26:28.851324 ====> Client connect
 19:26:28.852173 Received DATA (on stdin)
 19:26:28.852184 > 17 bytes data, server => client
 19:26:28.852194 'WE ROOLZ: 84721\r\n'
 19:26:28.852219 Received DISC (on stdin)
 19:26:28.852231 ====> Client forcibly disconnected
 19:26:28.852391 Received QUIT (on stdin)
 19:26:28.852403 quits
 19:26:28.852476 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPRT 500 no such command
 Testnum 212
=== End of file server.cmd
=== Start of file valgrind212
 ==91344== 
 ==91344== Process terminating with default action of signal 4 (SIGILL)
 ==91344==  Illegal opcode at address 0x492B75F
 ==91344==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91344==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91344==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91344==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91344==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91344==    by 0x49908EB: curl_version_info (version.c:600)
 ==91344==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91344==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91344==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91344==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind212
test 0211 [Get two FTP files with no remote EPSV support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind211 ../src/curl -q --output log/11/curl211.out  --include --trace-ascii log/11/trace211 --trace-time ftp://127.0.0.1:37735/a/path/211 ftp://127.0.0.1:37735/a/path/211 > log/11/stdout211 2> log/11/stderr211

 211: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 211
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind211 ../src/curl -q --output log/11/curl211.out  --include --trace-ascii log/11/trace211 --trace-time ftp://127.0.0.1:37735/a/path/211 ftp://127.0.0.1:37735/a/path/211 > log/11/stdout211 2> log/11/stderr211
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:28.195479 ====> Client connect
 19:26:28.195730 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:28.196082 < "USER anonymous"
 19:26:28.196125 > "331 We are happy you popped in![CR][LF]"
 19:26:28.196346 < "PASS ftp@example.com"
 19:26:28.196384 > "230 Welcome you silly person[CR][LF]"
 19:26:28.196605 < "PWD"
 19:26:28.196644 > "257 "/" is current directory[CR][LF]"
 19:26:28.196837 < "EPSV"
 19:26:28.196863 ====> Passive DATA channel requested by client
 19:26:28.196878 DATA sockfilt for passive data channel starting...
 19:26:28.206558 DATA sockfilt for passive data channel started (pid 91226)
 19:26:28.206697 DATA sockfilt for passive data channel listens on port 37701
 19:26:28.206750 > "229 Entering Passive Mode (|||37701|)[CR][LF]"
 19:26:28.206770 Client has been notified that upcoming DATA connection is awaited on port 37701
 19:26:28.222237 Client connects to port 37701
 19:26:28.222306 ====> Client established passive DATA connection on port 37701
 19:26:28.222420 < "TYPE I"
 19:26:28.222457 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:28.226160 < "SIZE verifiedserver"
 19:26:28.226220 > "213 17[CR][LF]"
 19:26:28.238800 < "RETR verifiedserver"
 19:26:28.238878 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:28.239013 =====> Closing passive DATA connection...
 19:26:28.239042 Server disconnects passive DATA connection
 19:26:28.239209 Server disconnected passive DATA connection
 19:26:28.239243 DATA sockfilt for passive data channel quits (pid 91226)
 19:26:28.239568 DATA sockfilt for passive data channel quit (pid 91226)
 19:26:28.239599 =====> Closed passive DATA connection
 19:26:28.239637 > "226 File transfer complete[CR][LF]"
 19:26:28.285567 < "QUIT"
 19:26:28.285622 > "221 bye bye baby[CR][LF]"
 19:26:28.286872 MAIN sockfilt said DISC
 19:26:28.286915 ====> Client disconnected
 19:26:28.287004 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:27.797278 ====> Client connect
 19:26:27.797682 Received DATA (on stdin)
 19:26:27.797706 > 146 bytes data, server => client
 19:26:27.797718 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:27.797732 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:27.797741 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:27.797842 < 16 bytes data, client => server
 19:26:27.797859 'USER anonymous\r\n'
 19:26:27.798058 Received DATA (on stdin)
 19:26:27.798071 > 33 bytes data, server => client
 19:26:27.798081 '331 We are happy you popped in!\r\n'
 19:26:27.798153 < 22 bytes data, client => server
 19:26:27.798169 'PASS ftp@example.com\r\n'
 19:26:27.798335 Received DATA (on stdin)
 19:26:27.798349 > 30 bytes data, server => client
 19:26:27.798360 '230 Welcome you silly person\r\n'
 19:26:27.798425 < 5 bytes data, client => server
 19:26:27.798441 'PWD\r\n'
 19:26:27.798572 Received DATA (on stdin)
 19:26:27.798583 > 30 bytes data, server => client
 19:26:27.798593 '257 "/" is current directory\r\n'
 19:26:27.798663 < 6 bytes data, client => server
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind208 ../src/curl -q --output log/18/curl208.out  --include --trace-ascii log/18/trace208 --trace-time -x http://127.0.0.1:43739 ftp://daniel:mysecret@host.com/we/want/208 -T log/18/test208.txt > log/18/stdout208 2> log/18/stderr208
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind219 ../src/curl -q --output log/19/curl219.out  --include --trace-ascii log/19/trace219 --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/19/stdout219 2> log/19/stderr219
19:26:27.798678 'EPSV\r\n'
 19:26:27.808708 Received DATA (on stdin)
 19:26:27.808725 > 39 bytes data, server => client
 19:26:27.808735 '229 Entering Passive Mode (|||37701|)\r\n'
 19:26:27.824122 < 8 bytes data, client => server
 19:26:27.824147 'TYPE I\r\n'
 19:26:27.824389 Received DATA (on stdin)
 19:26:27.824401 > 33 bytes data, server => client
 19:26:27.824412 '200 I modify TYPE as you wanted\r\n'
 19:26:27.827953 < 21 bytes data, client => server
 19:26:27.827969 'SIZE verifiedserver\r\n'
 19:26:27.828153 Received DATA (on stdin)
 19:26:27.828163 > 8 bytes data, server => client
 19:26:27.828172 '213 17\r\n'
 19:26:27.833939 < 21 bytes data, client => server
 19:26:27.833964 'RETR verifiedserver\r\n'
 19:26:27.841454 Received DATA (on stdin)
 19:26:27.841477 > 29 bytes data, server => client
 19:26:27.841488 '150 Binary junk (17 bytes).\r\n'
 19:26:27.841621 Received DATA (on stdin)
 19:26:27.841637 > 28 bytes data, server => client
 19:26:27.841647 '226 File transfer complete\r\n'
 19:26:27.887320 < 6 bytes data, client => server
 19:26:27.887352 'QUIT\r\n'
 19:26:27.887572 Received DATA (on stdin)
 19:26:27.887584 > 18 bytes data, server => client
 19:26:27.887594 '221 bye bye baby\r\n'
 19:26:27.888758 ====> Client disconnect
 19:26:27.888952 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:28.808110 Running IPv4 version
 19:26:28.808203 Listening on port 37701
 19:26:28.808251 Wrote pid 91226 to log/11/server/ftp_sockdata.pid
 19:26:28.808419 Received PING (on stdin)
 19:26:28.808525 Received PORT (on stdin)
 19:26:28.824077 ====> Client connect
 19:26:28.840992 Received DATA (on stdin)
 19:26:28.841014 > 17 bytes data, server => client
 19:26:28.841024 'WE ROOLZ: 84823\r\n'
 19:26:28.841067 Received DISC (on stdin)
 19:26:28.841084 ====> Client forcibly disconnected
 19:26:28.841196 Received QUIT (on stdin)
 19:26:28.841210 quits
 19:26:28.841292 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 211
=== End of file server.cmd
=== Start of file valgrind211
 ==91324== 
 ==91324== Process terminating with default action of signal 4 (SIGILL)
 ==91324==  Illegal opcode at address 0x492B75F
 ==91324==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91324==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91324==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91324==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91324==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91324==    by 0x49908EB: curl_version_info (version.c:600)
 ==91324==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91324==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind211
test 0208 [HTTP PUT to an FTP URL with username+password - over HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind208 ../src/curl -q --output log/18/curl208.out  --include --trace-ascii log/18/trace208 --trace-time -x http://127.0.0.1:43739 ftp://daniel:mysecret@host.com/we/want/208 -T log/18/test208.txt > log/18/stdout208 2> log/18/stderr208

 208: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 208
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind208 ../src/curl -q --output log/18/curl208.out  --include --trace-ascii log/18/trace208 --trace-time -x http://127.0.0.1:43739 ftp://daniel:mysecret@host.com/we/want/208 -T log/18/test208.txt > log/18/stdout208 2> log/18/stderr208
=== End of file commands.log
=== Start of file http_server.log
 19:26:28.793490 ====> Client connect
 19:26:28.793532 accept_connection 3 returned 4
 19:26:28.793557 Read 93 bytes
 19:26:28.793567 Process 93 bytes request
 19:26:28.793580 Got request: GET /verifiedserver HTTP/1.1
 19:26:28.793589 Are-we-friendly question received
 19:26:28.793619 Wrote request (93 bytes) input to log/18/server.input
 19:26:28.793636 Identifying ourselves as friends
 19:26:28.793710 Response sent (56 bytes) and written to log/18/server.response
 19:26:28.793719 special request received, no persistency
 19:26:28.793726 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45678 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 208
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file test208.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    PUT
       feature
=== End of file test208.txt
=== Start of file valgrind208
 ==91257== 
 ==91257== Process terminating with default action of signal 4 (SIGILL)
 ==91257==  Illegal opcode at address 0x492B75F
 ==91257==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91257==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91257==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91257==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91257==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91257==    by 0x49908EB: curl_version_info (version.c:600)
 ==91257==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91257==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91257==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91257==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind208
test 0219 [try using proxy with unsupported scheme]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind219 ../src/curl -q --output log/19/curl219.out  --include --trace-ascii log/19/trace219 --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/19/stdout219 2> log/19/stderr219

curl returned 132, when expecting 7
 219: exit FAILED
== Contents of files in the log/19/ directory after test 219
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind219 ../src/curl -q --output log/19/curl219.out  --include --trace-ascii log/19/trace219 --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/19/stdout219 2> log/19/stderr219
=== End of file commands.log
=== Start of file server.cmd
 Testnum 219
=== End of file server.cmd
=== Start of file valgrind219
 ==91925== 
 ==91925== Process terminating with default action of signal 4 (SIGILL)
 ==91925==  Illegal opcode at address 0x492B75F
 ==91925==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91925==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91925==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91925==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91925==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91925==    by 0x49908EB: curl_version_info (version.c:600)
 ==91925==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91925==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91925==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91925==    by 0x40CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind221 ../src/curl -q --output log/14/curl221.out  --include --trace-ascii log/14/trace221 --trace-time http://127.0.0.1:45467/221 --compressed > log/14/stdout221 2> log/14/stderr221
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind217 ../src/curl -q --include --trace-ascii log/13/trace217 --trace-time http://test.remote.example.com.217:38821/path/2170002 --proxy http://127.0.0.1:38821 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/13/stdout217 2> log/13/stderr217
03269: main (tool_main.c:195)
=== End of file valgrind219
test 0221 [HTTP GET gzip compressed content with broken gzip header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind221 ../src/curl -q --output log/14/curl221.out  --include --trace-ascii log/14/trace221 --trace-time http://127.0.0.1:45467/221 --compressed > log/14/stdout221 2> log/14/stderr221

 221: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 221
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind221 ../src/curl -q --output log/14/curl221.out  --include --trace-ascii log/14/trace221 --trace-time http://127.0.0.1:45467/221 --compressed > log/14/stdout221 2> log/14/stderr221
=== End of file commands.log
=== Start of file http_server.log
 19:26:29.026594 ====> Client connect
 19:26:29.026633 accept_connection 3 returned 4
 19:26:29.026658 Read 93 bytes
 19:26:29.026669 Process 93 bytes request
 19:26:29.026687 Got request: GET /verifiedserver HTTP/1.1
 19:26:29.026700 Are-we-friendly question received
 19:26:29.026731 Wrote request (93 bytes) input to log/14/server.input
 19:26:29.026749 Identifying ourselves as friends
 19:26:29.026812 Response sent (56 bytes) and written to log/14/server.response
 19:26:29.026821 special request received, no persistency
 19:26:29.026830 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 49694 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 221
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind221
 ==92019== 
 ==92019== Process terminating with default action of signal 4 (SIGILL)
 ==92019==  Illegal opcode at address 0x492B75F
 ==92019==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92019==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92019==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92019==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92019==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92019==    by 0x49908EB: curl_version_info (version.c:600)
 ==92019==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92019==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92019==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92019==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind221
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind214 ../src/curl -q --output log/20/curl214.out  --include --trace-ascii log/20/trace214 --trace-time "http://127.0.0.1:33897/\{\}\/214" > log/20/stdout214 2> log/20/stderr214
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind218 ../src/curl -q --output log/24/curl218.out  --include --trace-ascii log/24/trace218 --trace-time -T log/24/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38895/218 > log/24/stdout218 2> log/24/stderr218
test 0217 [HTTP proxy CONNECT to proxy returning 405]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind217 ../src/curl -q --include --trace-ascii log/13/trace217 --trace-time http://test.remote.example.com.217:38821/path/2170002 --proxy http://127.0.0.1:38821 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/13/stdout217 2> log/13/stderr217

 217: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:26:31.637265195 +0000
+++ log/13/check-generated	2026-10-15 19:26:31.632113920 +0000
@@ -1,3 +0,0 @@
-HTTP/1.1 405 Method Not Allowed swsclose[CR][LF]
-[CR][LF]
-000 405[LF]
== Contents of files in the log/13/ directory after test 217
=== Start of file check-expected
 HTTP/1.1 405 Method Not Allowed swsclose[CR][LF]
 [CR][LF]
 000 405[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind217 ../src/curl -q --include --trace-ascii log/13/trace217 --trace-time http://test.remote.example.com.217:38821/path/2170002 --proxy http://127.0.0.1:38821 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/13/stdout217 2> log/13/stderr217
=== End of file commands.log
=== Start of file http_server.log
 19:26:28.510115 ====> Client connect
 19:26:28.510156 accept_connection 3 returned 4
 19:26:28.510181 Read 93 bytes
 19:26:28.510193 Process 93 bytes request
 19:26:28.510206 Got request: GET /verifiedserver HTTP/1.1
 19:26:28.510215 Are-we-friendly question received
 19:26:28.510246 Wrote request (93 bytes) input to log/13/server.input
 19:26:28.510271 Identifying ourselves as friends
 19:26:28.510343 Response sent (56 bytes) and written to log/13/server.response
 19:26:28.510356 special request received, no persistency
 19:26:28.510365 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 47584 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 217
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind217
 ==91790== 
 ==91790== Process terminating with default action of signal 4 (SIGILL)
 ==91790==  Illegal opcode at address 0x492B75F
 ==91790==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91790==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91790==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91790==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91790==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91790==    by 0x49908EB: curl_version_info (version.c:600)
 ==91790==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91790==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91790==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91790==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind217
setenv MSYS2_ARG_CONV_EXCL = http://
test 0214 [HTTP URL with escaped { and }]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind214 ../src/curl -q --output log/20/curl214.out  --include --trace-ascii log/20/trace214 --trace-time "http://127.0.0.1:33897/\{\}\/214" > log/20/stdout214 2> log/20/stderr214

 214: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 214
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind214 ../src/curl -q --output log/20/curl214.out  --include --trace-ascii log/20/trace214 --trace-time "http://127.0.0.1:33897/\{\}\/214" > log/20/stdout214 2> log/20/stderr214
=== End of file commands.log
=== Start of file http_server.log
 19:26:28.070734 ====> Client connect
 19:26:28.070775 accept_connection 3 returned 4
 19:26:28.070801 Read 93 bytes
 19:26:28.070811 Process 93 bytes request
 19:26:28.070824 Got request: GET /verifiedserver HTTP/1.1
 19:26:28.070833 Are-we-friendly question received
 19:26:28.070863 Wrote request (93 bytes) input to log/20/server.input
 19:26:28.070880 Identifying ourselves as friends
 19:26:28.070957 Response sent (56 bytes) and written to log/20/server.response
 19:26:28.070967 special request received, no persistency
 19:26:28.070975 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 40586 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 214
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind214
 ==91568== 
 ==91568== Process terminating with default action of signal 4 (SIGILL)
 ==91568==  Illegal opcode at address 0x492B75F
 ==91568==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91568==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91568==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91568==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91568==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91568==    by 0x49908EB: curl_version_info (version.c:600)
 ==91568==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91568==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind214
test 0218 [HTTP PUT from a file but enforce chunked transfer-encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind218 ../src/curl -q --output log/24/curl218.out  --include --trace-ascii log/24/trace218 --trace-time -T log/24/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38895/218 > log/24/stdout218 2> log/24/stderr218

 218: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 218
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind218 ../src/curl -q --output log/24/curl218.out  --include --trace-ascii log/24/trace218 --trace-time -T log/24/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38895/218 > log/24/stdout218 2> log/24/stderr218
=== End of file commands.log
=== Start of file file218
 some tiny teeny test contents
=== End of file file218
=== Start of file http_server.log
 19:26:28.685794 ====> Client connect
 19:26:28.685823 accept_connection 3 returned 4
 19:26:28.685843 Read 93 bytes
 19:26:28.685852 Process CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind220 ../src/curl -q --output log/1/curl220.out  --include --trace-ascii log/1/trace220 --trace-time http://127.0.0.1:38815/220 --compressed -s -w '%{stderr}%{size_delivered}\n' > log/1/stdout220 2> log/1/stderr220
93 bytes request
 19:26:28.685865 Got request: GET /verifiedserver HTTP/1.1
 19:26:28.685873 Are-we-friendly question received
 19:26:28.685898 Wrote request (93 bytes) input to log/24/server.input
 19:26:28.685914 Identifying ourselves as friends
 19:26:28.685971 Response sent (56 bytes) and written to log/24/server.response
 19:26:28.685979 special request received, no persistency
 19:26:28.685987 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 50132 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 218
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind218
 ==91856== 
 ==91856== Process terminating with default action of signal 4 (SIGILL)
 ==91856==  Illegal opcode at address 0x492B75F
 ==91856==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91856==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91856==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91856==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91856==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91856==    by 0x49908EB: curl_version_info (version.c:600)
 ==91856==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91856==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91856==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91856==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind218
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind225 ../src/curl -q --output log/4/curl225.out  --include --trace-ascii log/4/trace225 --trace-time ftp://bad%0auser:passwd@127.0.0.1:39739/225%0a > log/4/stdout225 2> log/4/stderr225
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind223 ../src/curl -q --output log/2/curl223.out  --include --trace-ascii log/2/trace223 --trace-time http://127.0.0.1:34531/223 --compressed > log/2/stdout223 2> log/2/stderr223
test 0220 [HTTP GET gzip compressed content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind220 ../src/curl -q --output log/1/curl220.out  --include --trace-ascii log/1/trace220 --trace-time http://127.0.0.1:38815/220 --compressed -s -w '%{stderr}%{size_delivered}\n' > log/1/stdout220 2> log/1/stderr220

 220: stderr FAILED:
--- log/1/check-expected	2026-10-15 19:26:32.282860911 +0000
+++ log/1/check-generated	2026-10-15 19:26:32.281958965 +0000
@@ -1 +0,0 @@
-24[CR][LF]
== Contents of files in the log/1/ directory after test 220
=== Start of file check-expected
 24[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind220 ../src/curl -q --output log/1/curl220.out  --include --trace-ascii log/1/trace220 --trace-time http://127.0.0.1:38815/220 --compressed -s -w '%{stderr}%{size_delivered}\n' > log/1/stdout220 2> log/1/stderr220
=== End of file commands.log
=== Start of file http_server.log
 19:26:29.988210 ====> Client connect
 19:26:29.988250 accept_connection 3 returned 4
 19:26:29.988273 Read 93 bytes
 19:26:29.988284 Process 93 bytes request
 19:26:29.988298 Got request: GET /verifiedserver HTTP/1.1
 19:26:29.988306 Are-we-friendly question received
 19:26:29.988339 Wrote request (93 bytes) input to log/1/server.input
 19:26:29.988358 Identifying ourselves as friends
 19:26:29.988433 Response sent (56 bytes) and written to log/1/server.response
 19:26:29.988445 special request received, no persistency
 19:26:29.988453 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 34928 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 220
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind220
 ==91985== 
 ==91985== Process terminating with default action of signal 4 (SIGILL)
 ==91985==  Illegal opcode at address 0x492B75F
 ==91985==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==91985==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==91985==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==91985==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==91985==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==91985==    by 0x49908EB: curl_version_info (version.c:600)
 ==91985==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==91985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==91985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==91985==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind220
test 0223 [HTTP GET deflate compressed content with broken deflate header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind223 ../src/curl -q --output log/2/curl223.out  --include --trace-ascii log/2/trace223 --trace-time http://127.0.0.1:34531/223 --compressed > log/2/stdout223 2> log/2/stderr223

 223: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 223
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind223 ../src/curl -q --output log/2/curl223.out  --include --trace-ascii log/2/trace223 --trace-time http://127.0.0.1:34531/223 --compressed > log/2/stdout223 2> log/2/stderr223
=== End of file commands.log
=== Start of file http_server.log
 19:26:30.393054 ====> Client connect
 19:26:30.393089 accept_connection 3 returned 4
 19:26:30.393112 Read 93 bytes
 19:26:30.393122 Process 93 bytes request
 19:26:30.393134 Got request: GET /verifiedserver HTTP/1.1
 19:26:30.393143 Are-we-friendly question received
 19:26:30.393171 Wrote request (93 bytes) input to log/2/server.input
 19:26:30.393188 Identifying ourselves as friends
 19:26:30.393252 Response sent (56 bytes) and written to log/2/server.response
 19:26:30.393262 special request received, no persistency
 19:26:30.393271 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 34210 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 223
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind223
 ==92210== 
 ==92210== Process terminating with default action of signal 4 (SIGILL)
 ==92210==  Illegal opcode at address 0x492B75F
 ==92210==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92210==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92210==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92210==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92210==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92210==    by 0x49908EB: curl_version_info (version.c:600)
 ==92210==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92210==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92210==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92210==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind223
test 0225 [FTP %0a-code in URL's name part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind225 ../src/curl -q --output log/4/curl225.out  --include --trace-ascii log/4/trace225 --trace-time ftp://bad%0auser:passwd@127.0.0.1:39739/225%0a > log/4/stdout225 2> log/4/stderr225

curl returned 132, when expecting 3
 225: exit FAILED
== Contents of files in the log/4/ directory after test 225
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind225 ../src/curl -q --output log/4/curl225.out  --include --trace-ascii log/4/trace225 --trace-time ftp://bad%0auser:passwd@127.0.0.1:39739/225%0a > log/4/stdout225 2> log/4/stderr225
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:30.072181 ====> Client connect
 19:26:30.072401 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:30.073142 < "USER anonymous"
 19:26:30.073195 > "331 We are happy you popped in![CR][LF]"
 19:26:30.073453 < "PASS ftp@example.com"
 19:26:30.073496 > "230 Welcome you silly person[CR][LF]"
 19:26:30.073707 < "PWD"
 19:26:30.073751 > "257 "/" is current directory[CR][LF]"
 19:26:30.073960 < "EPSV"
 19:26:30.073992 ====> Passive DATA channel requested by client
 19:26:30.0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind224 ../src/curl -q --output log/8/curl224.out  --include --trace-ascii log/8/trace224 --trace-time http://127.0.0.1:44467/224 --compressed > log/8/stdout224 2> log/8/stderr224
74009 DATA sockfilt for passive data channel starting...
 19:26:30.083605 DATA sockfilt for passive data channel started (pid 92331)
 19:26:30.083736 DATA sockfilt for passive data channel listens on port 34607
 19:26:30.083776 > "229 Entering Passive Mode (|||34607|)[CR][LF]"
 19:26:30.083792 Client has been notified that upcoming DATA connection is awaited on port 34607
 19:26:30.084057 Client connects to port 34607
 19:26:30.084085 ====> Client established passive DATA connection on port 34607
 19:26:30.084205 < "TYPE I"
 19:26:30.084234 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:30.084998 < "SIZE verifiedserver"
 19:26:30.085034 > "213 17[CR][LF]"
 19:26:30.085171 < "RETR verifiedserver"
 19:26:30.085202 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:30.085285 =====> Closing passive DATA connection...
 19:26:30.085300 Server disconnects passive DATA connection
 19:26:30.085605 Server disconnected passive DATA connection
 19:26:30.085631 DATA sockfilt for passive data channel quits (pid 92331)
 19:26:30.085836 DATA sockfilt for passive data channel quit (pid 92331)
 19:26:30.085857 =====> Closed passive DATA connection
 19:26:30.085882 > "226 File transfer complete[CR][LF]"
 19:26:30.135450 < "QUIT"
 19:26:30.135500 > "221 bye bye baby[CR][LF]"
 19:26:30.136731 MAIN sockfilt said DISC
 19:26:30.136762 ====> Client disconnected
 19:26:30.136832 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:29.674411 ====> Client connect
 19:26:29.674801 Received DATA (on stdin)
 19:26:29.674818 > 146 bytes data, server => client
 19:26:29.674828 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:29.674837 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:29.674845 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:29.674965 < 16 bytes data, client => server
 19:26:29.674978 'USER anonymous\r\n'
 19:26:29.675589 Received DATA (on stdin)
 19:26:29.675605 > 33 bytes data, server => client
 19:26:29.675616 '331 We are happy you popped in!\r\n'
 19:26:29.675702 < 22 bytes data, client => server
 19:26:29.675719 'PASS ftp@example.com\r\n'
 19:26:29.675883 Received DATA (on stdin)
 19:26:29.675897 > 30 bytes data, server => client
 19:26:29.675907 '230 Welcome you silly person\r\n'
 19:26:29.675975 < 5 bytes data, client => server
 19:26:29.675990 'PWD\r\n'
 19:26:29.676136 Received DATA (on stdin)
 19:26:29.676149 > 30 bytes data, server => client
 19:26:29.676159 '257 "/" is current directory\r\n'
 19:26:29.676237 < 6 bytes data, client => server
 19:26:29.676252 'EPSV\r\n'
 19:26:29.686179 Received DATA (on stdin)
 19:26:29.686196 > 39 bytes data, server => client
 19:26:29.686206 '229 Entering Passive Mode (|||34607|)\r\n'
 19:26:29.686481 < 8 bytes data, client => server
 19:26:29.686491 'TYPE I\r\n'
 19:26:29.687219 Received DATA (on stdin)
 19:26:29.687232 > 33 bytes data, server => client
 19:26:29.687242 '200 I modify TYPE as you wanted\r\n'
 19:26:29.687296 < 21 bytes data, client => server
 19:26:29.687305 'SIZE verifiedserver\r\n'
 19:26:29.687412 Received DATA (on stdin)
 19:26:29.687422 > 8 bytes data, server => client
 19:26:29.687430 '213 17\r\n'
 19:26:29.687477 < 21 bytes data, client => server
 19:26:29.687487 'RETR verifiedserver\r\n'
 19:26:29.687856 Received DATA (on stdin)
 19:26:29.687867 > 29 bytes data, server => client
 19:26:29.687877 '150 Binary junk (17 bytes).\r\n'
 19:26:29.688262 Received DATA (on stdin)
 19:26:29.688273 > 28 bytes data, server => client
 19:26:29.688283 '226 File transfer complete\r\n'
 19:26:29.734488 < 6 bytes data, client => server
 19:26:29.734510 'QUIT\r\n'
 19:26:29.737900 Received DATA (on stdin)
 19:26:29.737915 > 18 bytes data, server => client
 19:26:29.737925 '221 bye bye baby\r\n'
 19:26:29.739074 ====> Client disconnect
 19:26:29.739223 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:30.685620 Running IPv4 version
 19:26:30.685706 Listening on port 34607
 19:26:30.685747 Wrote pid 92331 to log/4/server/ftp_sockdata.pid
 19:26:30.685926 Received PING (on stdin)
 19:26:30.686023 Received PORT (on stdin)
 19:26:30.686390 ====> Client connect
 19:26:30.687680 Received DATA (on stdin)
 19:26:30.687692 > 17 bytes data, server => client
 19:26:30.687796 'WE ROOLZ: 85249\r\n'
 19:26:30.687823 Received DISC (on stdin)
 19:26:30.687833 ====> Client forcibly disconnected
 19:26:30.688019 Received QUIT (on stdin)
 19:26:30.688029 quits
 19:26:30.688087 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 225
=== End of file server.cmd
=== Start of file valgrind225
 ==92367== 
 ==92367== Process terminating with default action of signal 4 (SIGILL)
 ==92367==  Illegal opcode at address 0x492B75F
 ==92367==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92367==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92367==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92367==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92367==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92367==    by 0x49908EB: curl_version_info (version.c:600)
 ==92367==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92367==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92367==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92367==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind225
test 0224 [HTTP GET gzip compressed content with huge comment and extra field]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind224 ../src/curl -q --output log/8/curl224.out  --include --trace-ascii log/8/trace224 --trace-time http://127.0.0.1:44467/224 --compressed > log/8/stdout224 2> log/8/stderr224

 224: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 224
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind224 ../src/curl -q --output log/8/curl224.out  --include --trace-ascii log/8/trace224 --trace-time http://127.0.0.1:44467/224 --compressed > log/8/stdout224 2> log/8/stderr224
=== End of file commands.log
=== Start of file http_server.log
 19:26:29.501093 ====> Client connect
 19:26:29.501142 accept_connection 3 returned 4
 19:26:29.501169 Read 93 bytes
 19:26:29.501179 Process 93 bytes request
 19:26:29.501193 Got request: GET /verifiedserver HTTP/1.1
 19:26:29.501202 Are-we-friendly question received
 19:26:29.501229 Wrote request (93 bytes) input to log/8/server.input
 19:26:29.501245 Identifying ourselves as friends
 19:26:29.501332 Response sent (56 bytes) and written to log/8/server.response
 19:26:29.501341 special request received, no persistency
 19:26:29.501349 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 56604 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 224
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind224
 ==92249== 
 ==92249== Process terminating with default action of signal 4 (SIGILL)
 ==92249==  Illegal opcode at address 0x492B75F
 ==92249==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92249==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92249==    by 0x492B67B: curl_msnprintf (mprintf.c:1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind222 ../src/curl -q --output log/16/curl222.out  --include --trace-ascii log/16/trace222 --trace-time http://127.0.0.1:35903/222 --compressed > log/16/stdout222 2> log/16/stderr222
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind229 ../src/curl -q --output log/9/curl229.out  --include --trace-ascii log/9/trace229 --trace-time ftp://127.0.0.1:36605/229 --ftp-account "one count" > log/9/stdout229 2> log/9/stderr229
277)
 ==92249==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92249==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92249==    by 0x49908EB: curl_version_info (version.c:600)
 ==92249==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92249==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92249==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92249==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind224
test 0222 [HTTP GET deflate compressed content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind222 ../src/curl -q --output log/16/curl222.out  --include --trace-ascii log/16/trace222 --trace-time http://127.0.0.1:35903/222 --compressed > log/16/stdout222 2> log/16/stderr222

 222: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 222
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind222 ../src/curl -q --output log/16/curl222.out  --include --trace-ascii log/16/trace222 --trace-time http://127.0.0.1:35903/222 --compressed > log/16/stdout222 2> log/16/stderr222
=== End of file commands.log
=== Start of file http_server.log
 19:26:30.145054 ====> Client connect
 19:26:30.145093 accept_connection 3 returned 4
 19:26:30.145203 Read 93 bytes
 19:26:30.145221 Process 93 bytes request
 19:26:30.145235 Got request: GET /verifiedserver HTTP/1.1
 19:26:30.145244 Are-we-friendly question received
 19:26:30.145278 Wrote request (93 bytes) input to log/16/server.input
 19:26:30.145302 Identifying ourselves as friends
 19:26:30.145371 Response sent (56 bytes) and written to log/16/server.response
 19:26:30.145385 special request received, no persistency
 19:26:30.145394 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58996 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 222
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind222
 ==92092== 
 ==92092== Process terminating with default action of signal 4 (SIGILL)
 ==92092==  Illegal opcode at address 0x492B75F
 ==92092==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92092==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92092==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92092==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92092==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92092==    by 0x49908EB: curl_version_info (version.c:600)
 ==92092==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92092==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92092==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92092==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind222
test 0229 [FTP RETR with bad ACCT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind229 ../src/curl -q --output log/9/curl229.out  --include --trace-ascii log/9/trace229 --trace-time ftp://127.0.0.1:36605/229 --ftp-account "one count" > log/9/stdout229 2> log/9/stderr229

 229: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 229
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind229 ../src/curl -q --output log/9/curl229.out  --include --trace-ascii log/9/trace229 --trace-time ftp://127.0.0.1:36605/229 --ftp-account "one count" > log/9/stdout229 2> log/9/stderr229
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:30.348806 ====> Client connect
 19:26:30.349026 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:30.349335 < "USER anonymous"
 19:26:30.349410 > "331 We are happy you popped in![CR][LF]"
 19:26:30.349578 < "PASS ftp@example.com"
 19:26:30.349720 > "230 Welcome you silly person[CR][LF]"
 19:26:30.349781 < "PWD"
 19:26:30.355359 > "257 "/" is current directory[CR][LF]"
 19:26:30.358924 < "EPSV"
 19:26:30.358956 ====> Passive DATA channel requested by client
 19:26:30.358970 DATA sockfilt for passive data channel starting...
 19:26:30.365617 DATA sockfilt for passive data channel started (pid 92519)
 19:26:30.365740 DATA sockfilt for passive data channel listens on port 45031
 19:26:30.365786 > "229 Entering Passive Mode (|||45031|)[CR][LF]"
 19:26:30.365805 Client has been notified that upcoming DATA connection is awaited on port 45031
 19:26:30.368772 Client connects to port 45031
 19:26:30.368808 ====> Client established passive DATA connection on port 45031
 19:26:30.368907 < "TYPE I"
 19:26:30.368941 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:30.375518 < "SIZE verifiedserver"
 19:26:30.375570 > "213 17[CR][LF]"
 19:26:30.375744 < "RETR verifiedserver"
 19:26:30.375783 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:30.375878 =====> Closing passive DATA connection...
 19:26:30.375896 Server disconnects passive DATA connection
 19:26:30.376138 Server disconnected passive DATA connection
 19:26:30.376167 DATA sockfilt for passive data channel quits (pid 92519)
 19:26:30.376444 DATA sockfilt for passive data channel quit (pid 92519)
 19:26:30.376469 =====> Closed passive DATA connection
 19:26:30.376528 > "226 File transfer complete[CR][LF]"
 19:26:30.425670 < "QUIT"
 19:26:30.425731 > "221 bye bye baby[CR][LF]"
 19:26:30.426895 MAIN sockfilt said DISC
 19:26:30.426928 ====> Client disconnected
 19:26:30.427011 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:29.951110 ====> Client connect
 19:26:29.951488 Received DATA (on stdin)
 19:26:29.951505 > 146 bytes data, server => client
 19:26:29.951516 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:29.951526 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:29.951536 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:29.951623 < 16 bytes data, client => server
 19:26:29.951636 'USER anonymous\r\n'
 19:26:29.951799 Received DATA (on stdin)
 19:26:29.951812 > 33 bytes data, server => client
 19:26:29.951857 '331 We are happy you popped in!\r\n'
 19:26:29.951910 < 22 bytes data, client => server
 19:26:29.951922 'PASS ftp@example.com\r\n'
 19:26:29.952032 Received DATA (on stdin)
 19:26:29.952044 > 30 bytes data, server => client
 19:26:29.952061 '230 Welcome you silly person\r\n'
 19:26:29.952113 < 5 bytes data, client => server
 19:26:29.952125 'PWD\r\n'
 19:26:29.952239 Received DATA (on stdin)
 19:26:29.952251 > 30 bytes data, server => client
 19:26:29.952268 '257 "/" is current directory\r\n'
 19:26:29.957848 < 6 bytes data, client => server
 19:26:29.957865 'EPSV\r\n'
 19:26:29.968260 Received DATA (on stdin)
 19:26:29.968275 > 39 bytes data, server => client
 19:26:29.968285 '229 Entering Passive Mode (|||45031|)\r\n'
 19:26:29.971121 < 8 bytes data, client => server
 19:26:29.971141 'TYPE I\r\n'
 19:26:29.971392 ReceCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind228 ../src/curl -q --output log/5/curl228.out  --include --trace-ascii log/5/trace228 --trace-time ftp://127.0.0.1:39641/228 --ftp-account "one count" > log/5/stdout228 2> log/5/stderr228
ived DATA (on stdin)
 19:26:29.971405 > 33 bytes data, server => client
 19:26:29.971415 '200 I modify TYPE as you wanted\r\n'
 19:26:29.977840 < 21 bytes data, client => server
 19:26:29.977860 'SIZE verifiedserver\r\n'
 19:26:29.978024 Received DATA (on stdin)
 19:26:29.978036 > 8 bytes data, server => client
 19:26:29.978045 '213 17\r\n'
 19:26:29.978101 < 21 bytes data, client => server
 19:26:29.978112 'RETR verifiedserver\r\n'
 19:26:29.978350 Received DATA (on stdin)
 19:26:29.978362 > 29 bytes data, server => client
 19:26:29.978372 '150 Binary junk (17 bytes).\r\n'
 19:26:29.978927 Received DATA (on stdin)
 19:26:29.978939 > 28 bytes data, server => client
 19:26:29.978980 '226 File transfer complete\r\n'
 19:26:30.027910 < 6 bytes data, client => server
 19:26:30.027939 'QUIT\r\n'
 19:26:30.028204 Received DATA (on stdin)
 19:26:30.028218 > 18 bytes data, server => client
 19:26:30.028229 '221 bye bye baby\r\n'
 19:26:30.029306 ====> Client disconnect
 19:26:30.029483 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:30.963513 Running IPv4 version
 19:26:30.963701 Listening on port 45031
 19:26:30.963741 Wrote pid 92519 to log/9/server/ftp_sockdata.pid
 19:26:30.967987 Received PING (on stdin)
 19:26:30.968098 Received PORT (on stdin)
 19:26:30.971169 ====> Client connect
 19:26:30.978402 Received DATA (on stdin)
 19:26:30.978416 > 17 bytes data, server => client
 19:26:30.978426 'WE ROOLZ: 84695\r\n'
 19:26:30.978451 Received DISC (on stdin)
 19:26:30.978462 ====> Client forcibly disconnected
 19:26:30.978619 Received QUIT (on stdin)
 19:26:30.978631 quits
 19:26:30.978700 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 332 please provide account name
 REPLY ACCT 532 bluah
 Testnum 229
=== End of file server.cmd
=== Start of file valgrind229
 ==92581== 
 ==92581== Process terminating with default action of signal 4 (SIGILL)
 ==92581==  Illegal opcode at address 0x492B75F
 ==92581==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92581==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92581==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92581==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92581==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92581==    by 0x49908EB: curl_version_info (version.c:600)
 ==92581==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92581==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92581==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92581==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind229
test 0228 [FTP RETR with ACCT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind228 ../src/curl -q --output log/5/curl228.out  --include --trace-ascii log/5/trace228 --trace-time ftp://127.0.0.1:39641/228 --ftp-account "one count" > log/5/stdout228 2> log/5/stderr228

 228: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 228
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind228 ../src/curl -q --output log/5/curl228.out  --include --trace-ascii log/5/trace228 --trace-time ftp://127.0.0.1:39641/228 --ftp-account "one count" > log/5/stdout228 2> log/5/stderr228
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:30.292039 ====> Client connect
 19:26:30.292300 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:30.302207 < "USER anonymous"
 19:26:30.302273 > "331 We are happy you popped in![CR][LF]"
 19:26:30.302537 < "PASS ftp@example.com"
 19:26:30.302565 > "230 Welcome you silly person[CR][LF]"
 19:26:30.302723 < "PWD"
 19:26:30.302763 > "257 "/" is current directory[CR][LF]"
 19:26:30.302942 < "EPSV"
 19:26:30.302970 ====> Passive DATA channel requested by client
 19:26:30.302985 DATA sockfilt for passive data channel starting...
 19:26:30.318769 DATA sockfilt for passive data channel started (pid 92478)
 19:26:30.319204 DATA sockfilt for passive data channel listens on port 40187
 19:26:30.319273 > "229 Entering Passive Mode (|||40187|)[CR][LF]"
 19:26:30.319299 Client has been notified that upcoming DATA connection is awaited on port 40187
 19:26:30.322352 Client connects to port 40187
 19:26:30.322404 ====> Client established passive DATA connection on port 40187
 19:26:30.322577 < "TYPE I"
 19:26:30.322624 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:30.322818 < "SIZE verifiedserver"
 19:26:30.322859 > "213 17[CR][LF]"
 19:26:30.323050 < "RETR verifiedserver"
 19:26:30.323088 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:30.323206 =====> Closing passive DATA connection...
 19:26:30.323230 Server disconnects passive DATA connection
 19:26:30.323361 Server disconnected passive DATA connection
 19:26:30.323394 DATA sockfilt for passive data channel quits (pid 92478)
 19:26:30.323683 DATA sockfilt for passive data channel quit (pid 92478)
 19:26:30.323713 =====> Closed passive DATA connection
 19:26:30.323741 > "226 File transfer complete[CR][LF]"
 19:26:30.372346 < "QUIT"
 19:26:30.372403 > "221 bye bye baby[CR][LF]"
 19:26:30.373493 MAIN sockfilt said DISC
 19:26:30.373525 ====> Client disconnected
 19:26:30.373615 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:29.889782 ====> Client connect
 19:26:29.897321 Received DATA (on stdin)
 19:26:29.897356 > 146 bytes data, server => client
 19:26:29.897369 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:29.897380 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:29.897389 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:29.897498 < 16 bytes data, client => server
 19:26:29.897515 'USER anonymous\r\n'
 19:26:29.904720 Received DATA (on stdin)
 19:26:29.904739 > 33 bytes data, server => client
 19:26:29.904749 '331 We are happy you popped in!\r\n'
 19:26:29.904870 < 22 bytes data, client => server
 19:26:29.904885 'PASS ftp@example.com\r\n'
 19:26:29.904997 Received DATA (on stdin)
 19:26:29.905008 > 30 bytes data, server => client
 19:26:29.905017 '230 Welcome you silly person\r\n'
 19:26:29.905071 < 5 bytes data, client => server
 19:26:29.905082 'PWD\r\n'
 19:26:29.905202 Received DATA (on stdin)
 19:26:29.905215 > 30 bytes data, server => client
 19:26:29.905225 '257 "/" is current directory\r\n'
 19:26:29.905290 < 6 bytes data, client => server
 19:26:29.905302 'EPSV\r\n'
 19:26:29.924434 Received DATA (on stdin)
 19:26:29.924466 > 39 bytes data, server => client
 19:26:29.924477 '229 Entering Passive Mode (|||40187|)\r\n'
 19:26:29.924875 < 8 bytes data, client => server
 19:26:29.924888 'TYPE I\r\n'
 19:26:29.925073 Received DATA (on stdin)
 19:26:29.925086 > 33 bytes data, server => client
 19:26:29.925097 '200 I modify TYPE as you wanted\r\n'
 19:26:29.925159 < 21 bytes data, client => server
 19:26:29.925173 'SIZE verifiedserver\r\n'
 19:26:29.925306 Received DATA (on stdin)
 19:26:29.925319 > 8 bytes data, server => client
 19:26:29.925329 '213 17\r\n'
 19:26:29.925389 < 21 bytes data, client => server
 19:26:29.925404 'RETR verifiedserver\r\n'
 19:26:29.926185 Received DATA (on stdin)
 19:26:29.926199 > 29 bytes data, server => client
 19:26:29.926209 '150 Binary junk (17 bytes).\r\n'
 19:26:29.926236 Received DATA (on stdin)
 19:26:29.926248 > 28 bytes data, server => client
 19:26:29.926258 '226 File transfer complete\r\n'
 19:26:29.974599 < 6 bytes data, client => server
 19:26:29.974636 'QUIT\r\n'
 19:26:29.974858 Received DATA (on stdin)
 19:26:29.974869 > 18 bytes data, server => client
 19:26:29.974878 '221 bye bye baby\r\n'
 19:26:29.975887 ====> Client disconnect
 19:26:29.976075 Received ACKD (on stCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind226 ../src/curl -q --output log/22/curl226.out  --include --trace-ascii log/22/trace226 --trace-time ftp://127.0.0.1:33255/226%0d > log/22/stdout226 2> log/22/stderr226
din)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:30.913460 Running IPv4 version
 19:26:30.913562 Listening on port 40187
 19:26:30.913611 Wrote pid 92478 to log/5/server/ftp_sockdata.pid
 19:26:30.921114 Received PING (on stdin)
 19:26:30.921512 Received PORT (on stdin)
 19:26:30.924725 ====> Client connect
 19:26:30.925675 Received DATA (on stdin)
 19:26:30.925688 > 17 bytes data, server => client
 19:26:30.925698 'WE ROOLZ: 85245\r\n'
 19:26:30.925729 Received DISC (on stdin)
 19:26:30.925744 ====> Client forcibly disconnected
 19:26:30.925846 Received QUIT (on stdin)
 19:26:30.925859 quits
 19:26:30.925937 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 332 please provide account name
 REPLY ACCT 230 thank you
 Testnum 228
=== End of file server.cmd
=== Start of file valgrind228
 ==92545== 
 ==92545== Process terminating with default action of signal 4 (SIGILL)
 ==92545==  Illegal opcode at address 0x492B75F
 ==92545==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92545==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92545==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92545==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92545==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92545==    by 0x49908EB: curl_version_info (version.c:600)
 ==92545==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92545==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92545==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92545==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind228
test 0226 [FTP %0d-code in URL's CWD part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind226 ../src/curl -q --output log/22/curl226.out  --include --trace-ascii log/22/trace226 --trace-time ftp://127.0.0.1:33255/226%0d > log/22/stdout226 2> log/22/stderr226

curl returned 132, when expecting 3
 226: exit FAILED
== Contents of files in the log/22/ directory after test 226
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind226 ../src/curl -q --output log/22/curl226.out  --include --trace-ascii log/22/trace226 --trace-time ftp://127.0.0.1:33255/226%0d > log/22/stdout226 2> log/22/stderr226
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:30.113386 ====> Client connect
 19:26:30.113630 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:30.113946 < "USER anonymous"
 19:26:30.113988 > "331 We are happy you popped in![CR][LF]"
 19:26:30.114182 < "PASS ftp@example.com"
 19:26:30.114213 > "230 Welcome you silly person[CR][LF]"
 19:26:30.114396 < "PWD"
 19:26:30.114436 > "257 "/" is current directory[CR][LF]"
 19:26:30.114628 < "EPSV"
 19:26:30.114656 ====> Passive DATA channel requested by client
 19:26:30.114672 DATA sockfilt for passive data channel starting...
 19:26:30.122282 DATA sockfilt for passive data channel started (pid 92352)
 19:26:30.122438 DATA sockfilt for passive data channel listens on port 41429
 19:26:30.122490 > "229 Entering Passive Mode (|||41429|)[CR][LF]"
 19:26:30.122507 Client has been notified that upcoming DATA connection is awaited on port 41429
 19:26:30.122837 Client connects to port 41429
 19:26:30.122867 ====> Client established passive DATA connection on port 41429
 19:26:30.122960 < "TYPE I"
 19:26:30.122992 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:30.123147 < "SIZE verifiedserver"
 19:26:30.123182 > "213 17[CR][LF]"
 19:26:30.123326 < "RETR verifiedserver"
 19:26:30.123359 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:30.123446 =====> Closing passive DATA connection...
 19:26:30.123462 Server disconnects passive DATA connection
 19:26:30.123640 Server disconnected passive DATA connection
 19:26:30.123663 DATA sockfilt for passive data channel quits (pid 92352)
 19:26:30.124012 DATA sockfilt for passive data channel quit (pid 92352)
 19:26:30.124043 =====> Closed passive DATA connection
 19:26:30.124071 > "226 File transfer complete[CR][LF]"
 19:26:30.173390 < "QUIT"
 19:26:30.173446 > "221 bye bye baby[CR][LF]"
 19:26:30.175083 MAIN sockfilt said DISC
 19:26:30.175124 ====> Client disconnected
 19:26:30.175205 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:30.715621 ====> Client connect
 19:26:30.716038 Received DATA (on stdin)
 19:26:30.716055 > 146 bytes data, server => client
 19:26:30.716066 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:30.716076 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:30.716086 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:30.716168 < 16 bytes data, client => server
 19:26:30.716184 'USER anonymous\r\n'
 19:26:30.716383 Received DATA (on stdin)
 19:26:30.716396 > 33 bytes data, server => client
 19:26:30.716406 '331 We are happy you popped in!\r\n'
 19:26:30.716467 < 22 bytes data, client => server
 19:26:30.716482 'PASS ftp@example.com\r\n'
 19:26:30.716604 Received DATA (on stdin)
 19:26:30.716617 > 30 bytes data, server => client
 19:26:30.716627 '230 Welcome you silly person\r\n'
 19:26:30.716687 < 5 bytes data, client => server
 19:26:30.716701 'PWD\r\n'
 19:26:30.716829 Received DATA (on stdin)
 19:26:30.716841 > 30 bytes data, server => client
 19:26:30.716852 '257 "/" is current directory\r\n'
 19:26:30.716921 < 6 bytes data, client => server
 19:26:30.716936 'EPSV\r\n'
 19:26:30.724909 Received DATA (on stdin)
 19:26:30.724927 > 39 bytes data, server => client
 19:26:30.724937 '229 Entering Passive Mode (|||41429|)\r\n'
 19:26:30.725149 < 8 bytes data, client => server
 19:26:30.725162 'TYPE I\r\n'
 19:26:30.725382 Received DATA (on stdin)
 19:26:30.725394 > 33 bytes data, server => client
 19:26:30.725407 '200 I modify TYPE as you wanted\r\n'
 19:26:30.725458 < 21 bytes data, client => server
 19:26:30.725468 'SIZE verifiedserver\r\n'
 19:26:30.725570 Received DATA (on stdin)
 19:26:30.725580 > 8 bytes data, server => client
 19:26:30.725589 '213 17\r\n'
 19:26:30.725636 < 21 bytes data, client => server
 19:26:30.725646 'RETR verifiedserver\r\n'
 19:26:30.725852 Received DATA (on stdin)
 19:26:30.725862 > 29 bytes data, server => client
 19:26:30.725871 '150 Binary junk (17 bytes).\r\n'
 19:26:30.726461 Received DATA (on stdin)
 19:26:30.726473 > 28 bytes data, server => client
 19:26:30.726483 '226 File transfer complete\r\n'
 19:26:30.774881 < 6 bytes data, client => server
 19:26:30.774909 'QUIT\r\n'
 19:26:30.775851 Received DATA (on stdin)
 19:26:30.775863 > 18 bytes data, server => client
 19:26:30.775872 '221 bye bye baby\r\n'
 19:26:30.776984 ====> Client disconnect
 19:26:30.777605 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:30.722010 Running IPv4 version
 19:26:30.722100 Listening on port 41429
 19:26:30.722144 Wrote pid 92352 to log/22/server/ftp_sockdata.pid
 19:26:30.724582 Received PING (on stdin)
 19:26:30.724720 Received PORT (on stdin)
 19:26:30.725181 ====> Client connect
 19:26:30.725924 Received DATA (on stdin)
 19:26:30.725936 > 17 bytes data, server => client
 19:26:30.725945 'WE ROOLZ: 84714\r\n'
 19:26:30.725971 Received DISC (on stdin)
 19:26:30.725982 ====> Client forcibly disconnected
 19:26:30.726105 Received QUIT (on stdin)
 19:26:30.726117 quits
 19:26:30.726197 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 226
=== End of file server.cmd
=== Start of file valgrind226
 ==92389== 
 ==92389== Process terminating with default action of signal 4 (SIGILL)
 ==92389==  Illegal opcode at address 0x492B75F
 ==92389==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92389==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92389==    by 0x492B67B: curl_msnprintf (mpriCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind227 ../src/curl -q --output log/10/curl227.out  --include --trace-ascii log/10/trace227 --trace-time ftp://127.0.0.1:44817/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/10/stdout227 2> log/10/stderr227
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind230 ../src/curl -q --output log/12/curl230.out  --include --trace-ascii log/12/trace230 --trace-time http://127.0.0.1:40921/230 --compressed > log/12/stdout230 2> log/12/stderr230
ntf.c:1277)
 ==92389==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92389==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92389==    by 0x49908EB: curl_version_info (version.c:600)
 ==92389==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92389==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92389==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92389==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind226
test 0227 [FTP with quote ops]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind227 ../src/curl -q --output log/10/curl227.out  --include --trace-ascii log/10/trace227 --trace-time ftp://127.0.0.1:44817/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/10/stdout227 2> log/10/stderr227

 227: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 227
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind227 ../src/curl -q --output log/10/curl227.out  --include --trace-ascii log/10/trace227 --trace-time ftp://127.0.0.1:44817/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/10/stdout227 2> log/10/stderr227
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:30.132161 ====> Client connect
 19:26:30.132401 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:30.132731 < "USER anonymous"
 19:26:30.132780 > "331 We are happy you popped in![CR][LF]"
 19:26:30.132982 < "PASS ftp@example.com"
 19:26:30.133015 > "230 Welcome you silly person[CR][LF]"
 19:26:30.133193 < "PWD"
 19:26:30.133229 > "257 "/" is current directory[CR][LF]"
 19:26:30.133427 < "EPSV"
 19:26:30.133456 ====> Passive DATA channel requested by client
 19:26:30.133473 DATA sockfilt for passive data channel starting...
 19:26:30.145385 DATA sockfilt for passive data channel started (pid 92358)
 19:26:30.152129 DATA sockfilt for passive data channel listens on port 37473
 19:26:30.152232 > "229 Entering Passive Mode (|||37473|)[CR][LF]"
 19:26:30.152254 Client has been notified that upcoming DATA connection is awaited on port 37473
 19:26:30.152572 Client connects to port 37473
 19:26:30.152612 ====> Client established passive DATA connection on port 37473
 19:26:30.152753 < "TYPE I"
 19:26:30.152786 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:30.152985 < "SIZE verifiedserver"
 19:26:30.153033 > "213 17[CR][LF]"
 19:26:30.153212 < "RETR verifiedserver"
 19:26:30.153254 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:30.153356 =====> Closing passive DATA connection...
 19:26:30.153377 Server disconnects passive DATA connection
 19:26:30.153635 Server disconnected passive DATA connection
 19:26:30.153665 DATA sockfilt for passive data channel quits (pid 92358)
 19:26:30.153977 DATA sockfilt for passive data channel quit (pid 92358)
 19:26:30.154007 =====> Closed passive DATA connection
 19:26:30.154039 > "226 File transfer complete[CR][LF]"
 19:26:30.200425 < "QUIT"
 19:26:30.200481 > "221 bye bye baby[CR][LF]"
 19:26:30.202086 MAIN sockfilt said DISC
 19:26:30.202126 ====> Client disconnected
 19:26:30.203409 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:30.734412 ====> Client connect
 19:26:30.734820 Received DATA (on stdin)
 19:26:30.734837 > 146 bytes data, server => client
 19:26:30.734849 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:30.734859 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:30.734869 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:30.734956 < 16 bytes data, client => server
 19:26:30.734972 'USER anonymous\r\n'
 19:26:30.735182 Received DATA (on stdin)
 19:26:30.735193 > 33 bytes data, server => client
 19:26:30.735203 '331 We are happy you popped in!\r\n'
 19:26:30.735262 < 22 bytes data, client => server
 19:26:30.735277 'PASS ftp@example.com\r\n'
 19:26:30.735411 Received DATA (on stdin)
 19:26:30.735423 > 30 bytes data, server => client
 19:26:30.735432 '230 Welcome you silly person\r\n'
 19:26:30.735489 < 5 bytes data, client => server
 19:26:30.735502 'PWD\r\n'
 19:26:30.735628 Received DATA (on stdin)
 19:26:30.735641 > 30 bytes data, server => client
 19:26:30.735651 '257 "/" is current directory\r\n'
 19:26:30.735722 < 6 bytes data, client => server
 19:26:30.735736 'EPSV\r\n'
 19:26:30.754666 Received DATA (on stdin)
 19:26:30.754689 > 39 bytes data, server => client
 19:26:30.754700 '229 Entering Passive Mode (|||37473|)\r\n'
 19:26:30.755034 < 8 bytes data, client => server
 19:26:30.755047 'TYPE I\r\n'
 19:26:30.755185 Received DATA (on stdin)
 19:26:30.755197 > 33 bytes data, server => client
 19:26:30.755207 '200 I modify TYPE as you wanted\r\n'
 19:26:30.755275 < 21 bytes data, client => server
 19:26:30.755291 'SIZE verifiedserver\r\n'
 19:26:30.755433 Received DATA (on stdin)
 19:26:30.755445 > 8 bytes data, server => client
 19:26:30.755455 '213 17\r\n'
 19:26:30.755515 < 21 bytes data, client => server
 19:26:30.755529 'RETR verifiedserver\r\n'
 19:26:30.755878 Received DATA (on stdin)
 19:26:30.755892 > 29 bytes data, server => client
 19:26:30.755902 '150 Binary junk (17 bytes).\r\n'
 19:26:30.756438 Received DATA (on stdin)
 19:26:30.756449 > 28 bytes data, server => client
 19:26:30.756459 '226 File transfer complete\r\n'
 19:26:30.802231 < 6 bytes data, client => server
 19:26:30.802264 'QUIT\r\n'
 19:26:30.802898 Received DATA (on stdin)
 19:26:30.802913 > 18 bytes data, server => client
 19:26:30.802922 '221 bye bye baby\r\n'
 19:26:30.804436 ====> Client disconnect
 19:26:30.804605 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:30.737508 Running IPv4 version
 19:26:30.737599 Listening on port 37473
 19:26:30.737635 Wrote pid 92358 to log/10/server/ftp_sockdata.pid
 19:26:30.744407 Received PING (on stdin)
 19:26:30.747864 Received PORT (on stdin)
 19:26:30.754906 ====> Client connect
 19:26:30.755779 Received DATA (on stdin)
 19:26:30.755794 > 17 bytes data, server => client
 19:26:30.755804 'WE ROOLZ: 85153\r\n'
 19:26:30.755834 Received DISC (on stdin)
 19:26:30.755848 ====> Client forcibly disconnected
 19:26:30.756075 Received QUIT (on stdin)
 19:26:30.756088 quits
 19:26:30.756162 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 REPLY FAIL 500 this might not be a failure
 Testnum 227
=== End of file server.cmd
=== Start of file valgrind227
 ==92407== 
 ==92407== Process terminating with default action of signal 4 (SIGILL)
 ==92407==  Illegal opcode at address 0x492B75F
 ==92407==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92407==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92407==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92407==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92407==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92407==    by 0x49908EB: curl_version_info (version.c:600)
 ==92407==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92407==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92407==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92407==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind227
test 0230 [HTTP GET multiply compressed content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind230 ../src/curl -q --output log/12/curl230.out  --include --trace-ascii log/12/trace230 --trace-time http://127.0.0.1:40921/230 --compressed > log/12/stdout230 2> log/12/stderr230

 230: protocol FAILED!CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind231 ../src/curl -q --output log/3/curl231.out  --trace-ascii log/3/trace231 --trace-time file://localhost/startdir/src/build-curl/tests/log/3/test231.txt -C 10 > log/3/stdout231 2> log/3/stderr231

 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 230
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind230 ../src/curl -q --output log/12/curl230.out  --include --trace-ascii log/12/trace230 --trace-time http://127.0.0.1:40921/230 --compressed > log/12/stdout230 2> log/12/stderr230
=== End of file commands.log
=== Start of file http_server.log
 19:26:30.194572 ====> Client connect
 19:26:30.194607 accept_connection 3 returned 4
 19:26:30.194629 Read 93 bytes
 19:26:30.194638 Process 93 bytes request
 19:26:30.194650 Got request: GET /verifiedserver HTTP/1.1
 19:26:30.194658 Are-we-friendly question received
 19:26:30.194689 Wrote request (93 bytes) input to log/12/server.input
 19:26:30.194712 Identifying ourselves as friends
 19:26:30.194777 Response sent (56 bytes) and written to log/12/server.response
 19:26:30.194786 special request received, no persistency
 19:26:30.194794 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 37318 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 230
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind230
 ==92690== 
 ==92690== Process terminating with default action of signal 4 (SIGILL)
 ==92690==  Illegal opcode at address 0x492B75F
 ==92690==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92690==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92690==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92690==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92690==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92690==    by 0x49908EB: curl_version_info (version.c:600)
 ==92690==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92690==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92690==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92690==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind230
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind235 ../src/curl -q --output log/6/curl235.out  --include --trace-ascii log/6/trace235 --trace-time ftp://127.0.0.1:33989/235 -T log/6/upload235 -C - > log/6/stdout235 2> log/6/stderr235
test 0231 [file:// with resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind231 ../src/curl -q --output log/3/curl231.out  --trace-ascii log/3/trace231 --trace-time file://localhost/startdir/src/build-curl/tests/log/3/test231.txt -C 10 > log/3/stdout231 2> log/3/stderr231

 231: data FAILED:
--- log/3/check-expected	2026-10-15 19:26:33.082825327 +0000
+++ log/3/check-generated	2026-10-15 19:26:33.081768887 +0000
@@ -1,2 +0,0 @@
-B01234567[LF]
-C01234567[LF]
== Contents of files in the log/3/ directory after test 231
=== Start of file check-expected
 B01234567[LF]
 C01234567[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind231 ../src/curl -q --output log/3/curl231.out  --trace-ascii log/3/trace231 --trace-time file://localhost/startdir/src/build-curl/tests/log/3/test231.txt -C 10 > log/3/stdout231 2> log/3/stderr231
=== End of file commands.log
=== Start of file server.cmd
 Testnum 231
=== End of file server.cmd
=== Start of file test231.txt
 A01234567
 B01234567
 C01234567
=== End of file test231.txt
=== Start of file valgrind231
 ==92630== 
 ==92630== Process terminating with default action of signal 4 (SIGILL)
 ==92630==  Illegal opcode at address 0x492B75F
 ==92630==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92630==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92630==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92630==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92630==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92630==    by 0x49908EB: curl_version_info (version.c:600)
 ==92630==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92630==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92630==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92630==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind231
test 0235 [FTP resumed upload but no file present remotely]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind235 ../src/curl -q --output log/6/curl235.out  --include --trace-ascii log/6/trace235 --trace-time ftp://127.0.0.1:33989/235 -T log/6/upload235 -C - > log/6/stdout235 2> log/6/stderr235

 235: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 235
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind235 ../src/curl -q --output log/6/curl235.out  --include --trace-ascii log/6/trace235 --trace-time ftp://127.0.0.1:33989/235 -T log/6/upload235 -C - > log/6/stdout235 2> log/6/stderr235
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:30.949135 ====> Client connect
 19:26:30.949346 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:30.949609 < "USER anonymous"
 19:26:30.949638 > "331 We are happy you popped in![CR][LF]"
 19:26:30.949777 < "PASS ftp@example.com"
 19:26:30.949799 > "230 Welcome you silly person[CR][LF]"
 19:26:30.949921 < "PWD"
 19:26:30.949947 > "257 "/" is current directory[CR][LF]"
 19:26:30.950075 < "EPSV"
 19:26:30.950100 ====> Passive DATA channel requested by client
 19:26:30.950112 DATA sockfilt for passive data channel starting...
 19:26:30.953390 DATA sockfilt for passive data channel started (pid 92878)
 19:26:30.953521 DATA sockfilt for passive data channel listens on port 39031
 19:26:30.953573 > "229 Entering Passive Mode (|||39031|)[CR][LF]"
 19:26:30.953597 Client has been notified that upcoming DATA connection is awaited on port 39031
 19:26:30.953876 Client connects to port 39031
 19:26:30.953911 ====> Client established passive DATA connection on port 39031
 19:26:30.953996 < "TYPE I"
 19:26:30.954031 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:30.954219 < "SIZE verifiedserver"
 19:26:30.954264 > "213 17[CR][LF]"
 19:26:30.954454 < "RETR verifiedserver"
 19:26:30.954501 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:30.954601 =====> Closing passive DATA connection...
 19:26:30.954623 Server disconnects passive DATA connection
 19:26:30.954897 Server disconnected passive DATA connection
 19:26:30.954929 DATA sockfilt for passive data channel quits (pid 92878)
 19:26:30.956621 DATA sockfilt for passive data channel quit (pid 92878)
 19:26:30.956653 =====> Closed passive DATA connection
 19:26:30.956684 > "226 File transfer complete[CR][LF]"
 19:26:31.002330 < "QUIT"
 19:26:31.002386 > "221 bye bye baby[CR][LF]"
 19:26:31.003551 MAIN sockfilt said DISC
 19:26:31.003591 ====> Client disconnected
 19:26:31.003677 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:31.551620 ====> Client connect
 19:26:31.551944 Received DATA (on stdin)
 19:26:31.551956 > 146 bytes data, server => client
 19:26:31.551966 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:31.551975 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:31.551983 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:31.552057 < 16 bytes data, client => server
 19:26:31.552066 'USER anonymous\r\n'
 19:26:31.552226 Received DATA (on stdin)
 19:26:31.552235 > 33 bytes data, server => client
 19:26:31.552243 '331 We are happy you popped in!\r\n'
 19:26:31.552288 < 22 bytes data, client => server
 19:26:31.552297 'PASS ftp@example.com\r\n'
 19:26:31.552383 Received DATA (on stdin)
 19:26:31.552391 > 30 bytes data, server => client
 19:26:31.552400 '230 Welcome you silly person\r\n'
 19:26:31.552441 < 5 bytes data, client => server
 19:26:31.552449 'PWD\r\n'
 19:26:31.552532 Received DATA (on stdin)
 19:26:31.552540 > 30 bytes data, server => client
 19:26:31.552549 '257 "/" is current directory\r\n'
 19:26:31.552596 < 6 bytes data, client => server
 19:26:31.552604 'EPSV\r\n'
 19:26:31.556196 Received DATA (on stdin)
 19:26:31.556210 > 39 bytes data, server => client
 19:26:31.556221 '229 Entering Passive Mode (|||39031|)\r\n'
 19:26:31.556383 < 8 bytes data, client => server
 19:26:31.556400 'TYPE I\r\n'
 19:26:31.556626 Received DATA (on stdin)
 19:26:31.556639 > 33 bytes data, server => client
 19:26:31.556649 '200 I modify TYPE as you wanted\r\n'
 19:26:31.556709 < 21 bytes data, client => server
 19:26:31.556724 'SIZE verifiedserver\r\n'
 19:26:31.556860 Received DATA (on stdin)
 19:26:31.556873 > 8 bytes data, server => client
 19:26:31.556883 '213 17\r\n'
 19:26:31.556941 < 21 bytes data, client => server
 19:26:31.556956 'RETR verifiedserver\r\n'
 19:26:31.557217 Received DATA (on stdin)
 19:26:31.557230 > 29 bytes data, server => client
 19:26:31.557241 '150 Binary junk (17 bytes).\r\n'
 19:26:31.566367 Received DATA (on stdin)
 19:26:31.566414 > 28 bytes data, server => client
 19:26:31.566428 '226 File transfer complete\r\n'
 19:26:31.604726 < 6 bytes data, client => server
 19:26:31.604768 'QUIT\r\n'
 19:26:31.604991 Received DATA (on stdin)
 19:26:31.605001 > 18 bytes data, server => client
 19:26:31.605011 '221 bye bye baby\r\n'
 19:26:31.606084 ====> Client disconnect
 19:26:31.606279 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:30.555647 Running IPv4 version
 19:26:30.555722 Listening on port 39031
 19:26:30.555766 Wrote pid 92878 to log/6/server/ftp_sockdata.pid
 19:26:30.555916 Received PING (on stdin)
 19:26:30.556017 Received PORT (on stdin)
 19:26:30.556419 ====> Client connect
 19:26:30.557308 Received DATA (on stdin)
 19:26:30.557325 > 17 bytes data, server => client
 19:26:30.557336 'WE ROOLZ: 85558\r\n'
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind232 ../src/curl -q --output log/23/curl232.out  --include --trace-ascii log/23/trace232 --trace-time http://127.0.0.1:44711/232 --compressed > log/23/stdout232 2> log/23/stderr232
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind234 ../src/curl -q --output log/21/curl234.out  --include --trace-ascii log/21/trace234 --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:39881 --user iam:myself --proxy-user testing:this --location-trusted > log/21/stdout234 2> log/21/stderr234
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind233 ../src/curl -q --output log/17/curl233.out  --include --trace-ascii log/17/trace233 --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:35993 --user iam:myself --proxy-user testing:this --location > log/17/stdout233 2> log/17/stderr233
6:30.557367 Received DISC (on stdin)
 19:26:30.557382 ====> Client forcibly disconnected
 19:26:30.557531 Received QUIT (on stdin)
 19:26:30.557545 quits
 19:26:30.557612 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY SIZE 500 command not understood
 Testnum 235
=== End of file server.cmd
=== Start of file upload235
 this is the *****crap******** that we are gonna upload
 worx?
=== End of file upload235
=== Start of file valgrind235
 ==92926== 
 ==92926== Process terminating with default action of signal 4 (SIGILL)
 ==92926==  Illegal opcode at address 0x492B75F
 ==92926==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92926==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92926==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92926==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92926==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92926==    by 0x49908EB: curl_version_info (version.c:600)
 ==92926==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92926==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92926==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92926==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind235
test 0232 [HTTP GET deflate raw-compressed content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind232 ../src/curl -q --output log/23/curl232.out  --include --trace-ascii log/23/trace232 --trace-time http://127.0.0.1:44711/232 --compressed > log/23/stdout232 2> log/23/stderr232

 232: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 232
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind232 ../src/curl -q --output log/23/curl232.out  --include --trace-ascii log/23/trace232 --trace-time http://127.0.0.1:44711/232 --compressed > log/23/stdout232 2> log/23/stderr232
=== End of file commands.log
=== Start of file http_server.log
 19:26:30.424670 ====> Client connect
 19:26:30.424714 accept_connection 3 returned 4
 19:26:30.424739 Read 93 bytes
 19:26:30.424749 Process 93 bytes request
 19:26:30.424762 Got request: GET /verifiedserver HTTP/1.1
 19:26:30.424770 Are-we-friendly question received
 19:26:30.424796 Wrote request (93 bytes) input to log/23/server.input
 19:26:30.424811 Identifying ourselves as friends
 19:26:30.425009 Response sent (56 bytes) and written to log/23/server.response
 19:26:30.425019 special request received, no persistency
 19:26:30.425028 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 39890 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 232
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind232
 ==92814== 
 ==92814== Process terminating with default action of signal 4 (SIGILL)
 ==92814==  Illegal opcode at address 0x492B75F
 ==92814==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92814==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92814==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92814==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92814==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92814==    by 0x49908EB: curl_version_info (version.c:600)
 ==92814==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92814==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92814==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92814==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind232
test 0234 [HTTP, proxy, site+proxy auth and Location: --location-trusted]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind234 ../src/curl -q --output log/21/curl234.out  --include --trace-ascii log/21/trace234 --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:39881 --user iam:myself --proxy-user testing:this --location-trusted > log/21/stdout234 2> log/21/stderr234

 234: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 234
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind234 ../src/curl -q --output log/21/curl234.out  --include --trace-ascii log/21/trace234 --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:39881 --user iam:myself --proxy-user testing:this --location-trusted > log/21/stdout234 2> log/21/stderr234
=== End of file commands.log
=== Start of file http_server.log
 19:26:30.546500 ====> Client connect
 19:26:30.546565 accept_connection 3 returned 4
 19:26:30.546584 Read 93 bytes
 19:26:30.546593 Process 93 bytes request
 19:26:30.546604 Got request: GET /verifiedserver HTTP/1.1
 19:26:30.546612 Are-we-friendly question received
 19:26:30.546637 Wrote request (93 bytes) input to log/21/server.input
 19:26:30.546653 Identifying ourselves as friends
 19:26:30.546709 Response sent (56 bytes) and written to log/21/server.response
 19:26:30.546718 special request received, no persistency
 19:26:30.546727 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 45452 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 234
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind234
 ==92894== 
 ==92894== Process terminating with default action of signal 4 (SIGILL)
 ==92894==  Illegal opcode at address 0x492B75F
 ==92894==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92894==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92894==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92894==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92894==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92894==    by 0x49908EB: curl_version_info (version.c:600)
 ==92894==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92894==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92894==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92894==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind234
test 0233 [HTTP, proxy, site+proxy auth and Location: to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind233 ../src/curl -q --output log/17/curl233.out  --include -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind236 ../src/curl -q --output log/15/curl236.out  --include --trace-ascii log/15/trace236 --trace-time ftp://127.0.0.1:44883/236 -T log/15/file236.txt -C - > log/15/stdout236 2> log/15/stderr236
-trace-ascii log/17/trace233 --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:35993 --user iam:myself --proxy-user testing:this --location > log/17/stdout233 2> log/17/stderr233

 233: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 233
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind233 ../src/curl -q --output log/17/curl233.out  --include --trace-ascii log/17/trace233 --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:35993 --user iam:myself --proxy-user testing:this --location > log/17/stdout233 2> log/17/stderr233
=== End of file commands.log
=== Start of file http_server.log
 19:26:31.538201 ====> Client connect
 19:26:31.538248 accept_connection 3 returned 4
 19:26:31.538275 Read 93 bytes
 19:26:31.538287 Process 93 bytes request
 19:26:31.538300 Got request: GET /verifiedserver HTTP/1.1
 19:26:31.538310 Are-we-friendly question received
 19:26:31.538343 Wrote request (93 bytes) input to log/17/server.input
 19:26:31.538363 Identifying ourselves as friends
 19:26:31.538451 Response sent (56 bytes) and written to log/17/server.response
 19:26:31.538465 special request received, no persistency
 19:26:31.538474 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 43150 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 233
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind233
 ==92889== 
 ==92889== Process terminating with default action of signal 4 (SIGILL)
 ==92889==  Illegal opcode at address 0x492B75F
 ==92889==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==92889==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==92889==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==92889==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==92889==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==92889==    by 0x49908EB: curl_version_info (version.c:600)
 ==92889==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==92889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==92889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==92889==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind233
test 0236 [FTP resume upload but denied access to remote file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind236 ../src/curl -q --output log/15/curl236.out  --include --trace-ascii log/15/trace236 --trace-time ftp://127.0.0.1:44883/236 -T log/15/file236.txt -C - > log/15/stdout236 2> log/15/stderr236

 236: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 236
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind236 ../src/curl -q --output log/15/curl236.out  --include --trace-ascii log/15/trace236 --trace-time ftp://127.0.0.1:44883/236 -T log/15/file236.txt -C - > log/15/stdout236 2> log/15/stderr236
=== End of file commands.log
=== Start of file file236.txt
 Test data
=== End of file file236.txt
=== Start of file ftp_server.log
 19:26:31.077886 ====> Client connect
 19:26:31.078145 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:31.079613 < "USER anonymous"
 19:26:31.079664 > "331 We are happy you popped in![CR][LF]"
 19:26:31.079869 < "PASS ftp@example.com"
 19:26:31.079908 > "230 Welcome you silly person[CR][LF]"
 19:26:31.094854 < "PWD"
 19:26:31.094917 > "257 "/" is current directory[CR][LF]"
 19:26:31.095507 < "EPSV"
 19:26:31.095535 ====> Passive DATA channel requested by client
 19:26:31.095550 DATA sockfilt for passive data channel starting...
 19:26:31.100871 DATA sockfilt for passive data channel started (pid 93000)
 19:26:31.101025 DATA sockfilt for passive data channel listens on port 41827
 19:26:31.101080 > "229 Entering Passive Mode (|||41827|)[CR][LF]"
 19:26:31.101099 Client has been notified that upcoming DATA connection is awaited on port 41827
 19:26:31.101448 Client connects to port 41827
 19:26:31.101486 ====> Client established passive DATA connection on port 41827
 19:26:31.101591 < "TYPE I"
 19:26:31.101763 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:31.101835 < "SIZE verifiedserver"
 19:26:31.101988 > "213 17[CR][LF]"
 19:26:31.102096 < "RETR verifiedserver"
 19:26:31.102130 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:31.102223 =====> Closing passive DATA connection...
 19:26:31.102240 Server disconnects passive DATA connection
 19:26:31.102487 Server disconnected passive DATA connection
 19:26:31.102514 DATA sockfilt for passive data channel quits (pid 93000)
 19:26:31.102741 DATA sockfilt for passive data channel quit (pid 93000)
 19:26:31.102764 =====> Closed passive DATA connection
 19:26:31.102792 > "226 File transfer complete[CR][LF]"
 19:26:31.155504 < "QUIT"
 19:26:31.155564 > "221 bye bye baby[CR][LF]"
 19:26:31.158127 MAIN sockfilt said DISC
 19:26:31.158233 ====> Client disconnected
 19:26:31.158321 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:30.680361 ====> Client connect
 19:26:30.680795 Received DATA (on stdin)
 19:26:30.680814 > 146 bytes data, server => client
 19:26:30.680826 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:30.680837 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:30.680847 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:30.682058 < 16 bytes data, client => server
 19:26:30.682077 'USER anonymous\r\n'
 19:26:30.682291 Received DATA (on stdin)
 19:26:30.682303 > 33 bytes data, server => client
 19:26:30.682313 '331 We are happy you popped in!\r\n'
 19:26:30.682378 < 22 bytes data, client => server
 19:26:30.682390 'PASS ftp@example.com\r\n'
 19:26:30.682531 Received DATA (on stdin)
 19:26:30.682543 > 30 bytes data, server => client
 19:26:30.682553 '230 Welcome you silly person\r\n'
 19:26:30.691367 < 5 bytes data, client => server
 19:26:30.691399 'PWD\r\n'
 19:26:30.697552 Received DATA (on stdin)
 19:26:30.697572 > 30 bytes data, server => client
 19:26:30.697582 '257 "/" is current directory\r\n'
 19:26:30.698027 < 6 bytes data, client => server
 19:26:30.698043 'EPSV\r\n'
 19:26:30.703734 Received DATA (on stdin)
 19:26:30.703750 > 39 bytes data, server => client
 19:26:30.703761 '229 Entering Passive Mode (|||41827|)\r\n'
 19:26:30.703986 < 8 bytes data, client => server
 19:26:30.704003 'TYPE I\r\n'
 19:26:30.704232 Received DATA (on stdin)
 19:26:30.704246 > 33 bytes data, server => client
 19:26:30.704269 '200 I modify TYPE as you wanted\r\n'
 19:26:30.704334 < 21 bytes data, client => server
 19:26:30.704345 'SIZE verifiedserver\r\n'
 19:26:30.704479 Received DATA (on stdin)
 19:26:30.704490 > 8 bytes data, server => client
 19:26:30.704506 '213 17\r\n'
 19:26:30.704563 < 21 bytes data, client => server
 19:26:30.704573 'RETR verifiedserver\r\n'
 19:26:30.704865 Received DATA (on stdin)
 19:26:3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind245 ../src/curl -q --output log/20/curl245.out  --include --trace-ascii log/20/trace245 --trace-time http://127.0.0.1:33897/245 -u auser:apasswd --digest -d "junkelijunk" > log/20/stdout245 2> log/20/stderr245
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind237 ../src/curl -q --output log/7/curl237.out  --include --trace-ascii log/7/trace237 --trace-time ftp://127.0.0.1:44283/237 --disable-epsv > log/7/stdout237 2> log/7/stderr237
0.704877 > 29 bytes data, server => client
 19:26:30.704887 '150 Binary junk (17 bytes).\r\n'
 19:26:30.705417 Received DATA (on stdin)
 19:26:30.705429 > 28 bytes data, server => client
 19:26:30.705439 '226 File transfer complete\r\n'
 19:26:30.754699 < 6 bytes data, client => server
 19:26:30.754738 'QUIT\r\n'
 19:26:30.758210 Received DATA (on stdin)
 19:26:30.758226 > 18 bytes data, server => client
 19:26:30.758236 '221 bye bye baby\r\n'
 19:26:30.759416 ====> Client disconnect
 19:26:30.760792 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:31.702275 Running IPv4 version
 19:26:31.702397 Listening on port 41827
 19:26:31.703404 Wrote pid 93000 to log/15/server/ftp_sockdata.pid
 19:26:31.703430 Received PING (on stdin)
 19:26:31.703542 Received PORT (on stdin)
 19:26:31.704025 ====> Client connect
 19:26:31.704949 Received DATA (on stdin)
 19:26:31.704961 > 17 bytes data, server => client
 19:26:31.704975 'WE ROOLZ: 84744\r\n'
 19:26:31.705004 Received DISC (on stdin)
 19:26:31.705015 ====> Client forcibly disconnected
 19:26:31.705146 Received QUIT (on stdin)
 19:26:31.705156 quits
 19:26:31.705220 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY SIZE 550 access to this file is very much denied
 REPLY APPE 550 I said: access to this file is very much denied
 REPLY STOR 550 I said: access to this file is very much denied
 REPLY SIZE 500 command not understood
 Testnum 236
=== End of file server.cmd
=== Start of file valgrind236
 ==93061== 
 ==93061== Process terminating with default action of signal 4 (SIGILL)
 ==93061==  Illegal opcode at address 0x492B75F
 ==93061==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93061==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93061==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93061==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93061==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93061==    by 0x49908EB: curl_version_info (version.c:600)
 ==93061==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93061==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93061==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93061==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind236
test 0245 [HTTP POST --digest]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind245 ../src/curl -q --output log/20/curl245.out  --include --trace-ascii log/20/trace245 --trace-time http://127.0.0.1:33897/245 -u auser:apasswd --digest -d "junkelijunk" > log/20/stdout245 2> log/20/stderr245

 245: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 245
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind245 ../src/curl -q --output log/20/curl245.out  --include --trace-ascii log/20/trace245 --trace-time http://127.0.0.1:33897/245 -u auser:apasswd --digest -d "junkelijunk" > log/20/stdout245 2> log/20/stderr245
=== End of file commands.log
=== Start of file http_server.log
 19:26:31.344836 ====> Client connect
 19:26:31.344874 accept_connection 3 returned 4
 19:26:31.344897 Read 93 bytes
 19:26:31.344906 Process 93 bytes request
 19:26:31.344919 Got request: GET /verifiedserver HTTP/1.1
 19:26:31.344927 Are-we-friendly question received
 19:26:31.344954 Wrote request (93 bytes) input to log/20/server.input
 19:26:31.344971 Identifying ourselves as friends
 19:26:31.345036 Response sent (56 bytes) and written to log/20/server.response
 19:26:31.345044 special request received, no persistency
 19:26:31.345052 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 40588 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 245
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind245
 ==93309== 
 ==93309== Process terminating with default action of signal 4 (SIGILL)
 ==93309==  Illegal opcode at address 0x492B75F
 ==93309==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93309==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93309==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93309==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93309==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93309==    by 0x49908EB: curl_version_info (version.c:600)
 ==93309==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93309==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93309==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93309==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind245
test 0237 [FTP getting bad host in 227-response to PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind237 ../src/curl -q --output log/7/curl237.out  --include --trace-ascii log/7/trace237 --trace-time ftp://127.0.0.1:44283/237 --disable-epsv > log/7/stdout237 2> log/7/stderr237

 237: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 237
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind237 ../src/curl -q --output log/7/curl237.out  --include --trace-ascii log/7/trace237 --trace-time ftp://127.0.0.1:44283/237 --disable-epsv > log/7/stdout237 2> log/7/stderr237
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:31.303487 ====> Client connect
 19:26:31.303674 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:31.303941 < "USER anonymous"
 19:26:31.303974 > "331 We are happy you popped in![CR][LF]"
 19:26:31.304135 < "PASS ftp@example.com"
 19:26:31.304159 > "230 Welcome you silly person[CR][LF]"
 19:26:31.304301 < "PWD"
 19:26:31.304331 > "257 "/" is current directory[CR][LF]"
 19:26:31.304483 < "EPSV"
 19:26:31.304507 ====> Passive DATA channel requested by client
 19:26:31.304520 DATA sockfilt for passive data channel starting...
 19:26:31.308307 DATA sockfilt for passive data channel started (pid 93142)
 19:26:31.308597 DATA sockfilt for passive data channel listens on port 46477
 19:26:31.308643 > "229 Entering Passive Mode (|||46477|)[CR][LF]"
 19:26:31.308659 Client has been notified that upcoming DATA connection is awaited on port 46477
 19:26:31.312073 Client connects to port 46477
 19:26:31.312111 ====> Client established passive DATA connection on port 46477
 19:26:31.312209 < "TYPE I"
 19:26:31.312250 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:31.313773 < "SIZE verifiedserver"
 19:26:31.313817 > "213 17[CR][LF]"
 19:26:31.313975 < "RETR verifiedserver"
 19:26:31.314012 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:31.314097 =====> Closing passive DATA connection...
 19:26:31.314115 Server disconnects passive DATA connection
 19:26:31.318697 Server disconnected passiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind238 ../src/curl -q --output log/11/curl238.out  --include --trace-ascii log/11/trace238 --trace-time ftp://127.0.0.1:37735/238 > log/11/stdout238 2> log/11/stderr238
ve DATA connection
 19:26:31.318744 DATA sockfilt for passive data channel quits (pid 93142)
 19:26:31.319299 DATA sockfilt for passive data channel quit (pid 93142)
 19:26:31.319329 =====> Closed passive DATA connection
 19:26:31.319362 > "226 File transfer complete[CR][LF]"
 19:26:31.358151 < "QUIT"
 19:26:31.358209 > "221 bye bye baby[CR][LF]"
 19:26:31.359470 MAIN sockfilt said DISC
 19:26:31.359507 ====> Client disconnected
 19:26:31.359583 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:31.906052 ====> Client connect
 19:26:31.906356 Received DATA (on stdin)
 19:26:31.906370 > 146 bytes data, server => client
 19:26:31.906381 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:31.906390 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:31.906399 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:31.906480 < 16 bytes data, client => server
 19:26:31.906491 'USER anonymous\r\n'
 19:26:31.906648 Received DATA (on stdin)
 19:26:31.906659 > 33 bytes data, server => client
 19:26:31.906669 '331 We are happy you popped in!\r\n'
 19:26:31.906725 < 22 bytes data, client => server
 19:26:31.906735 'PASS ftp@example.com\r\n'
 19:26:31.906830 Received DATA (on stdin)
 19:26:31.906840 > 30 bytes data, server => client
 19:26:31.906850 '230 Welcome you silly person\r\n'
 19:26:31.906897 < 5 bytes data, client => server
 19:26:31.906907 'PWD\r\n'
 19:26:31.907002 Received DATA (on stdin)
 19:26:31.907012 > 30 bytes data, server => client
 19:26:31.907021 '257 "/" is current directory\r\n'
 19:26:31.907078 < 6 bytes data, client => server
 19:26:31.907088 'EPSV\r\n'
 19:26:31.913759 Received DATA (on stdin)
 19:26:31.913781 > 39 bytes data, server => client
 19:26:31.913792 '229 Entering Passive Mode (|||46477|)\r\n'
 19:26:31.913957 < 8 bytes data, client => server
 19:26:31.913973 'TYPE I\r\n'
 19:26:31.916261 Received DATA (on stdin)
 19:26:31.916280 > 33 bytes data, server => client
 19:26:31.916290 '200 I modify TYPE as you wanted\r\n'
 19:26:31.916350 < 21 bytes data, client => server
 19:26:31.916360 'SIZE verifiedserver\r\n'
 19:26:31.916494 Received DATA (on stdin)
 19:26:31.916505 > 8 bytes data, server => client
 19:26:31.916514 '213 17\r\n'
 19:26:31.916566 < 21 bytes data, client => server
 19:26:31.916576 'RETR verifiedserver\r\n'
 19:26:31.916793 Received DATA (on stdin)
 19:26:31.916805 > 29 bytes data, server => client
 19:26:31.916814 '150 Binary junk (17 bytes).\r\n'
 19:26:31.922045 Received DATA (on stdin)
 19:26:31.922060 > 28 bytes data, server => client
 19:26:31.922070 '226 File transfer complete\r\n'
 19:26:31.960630 < 6 bytes data, client => server
 19:26:31.960664 'QUIT\r\n'
 19:26:31.960899 Received DATA (on stdin)
 19:26:31.960909 > 18 bytes data, server => client
 19:26:31.960918 '221 bye bye baby\r\n'
 19:26:31.961364 ====> Client disconnect
 19:26:31.962267 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:31.909057 Running IPv4 version
 19:26:31.909133 Listening on port 46477
 19:26:31.909175 Wrote pid 93142 to log/7/server/ftp_sockdata.pid
 19:26:31.910872 Received PING (on stdin)
 19:26:31.911097 Received PORT (on stdin)
 19:26:31.914689 ====> Client connect
 19:26:31.918016 Received DATA (on stdin)
 19:26:31.918035 > 17 bytes data, server => client
 19:26:31.918045 'WE ROOLZ: 84721\r\n'
 19:26:31.918078 Received DISC (on stdin)
 19:26:31.918090 ====> Client forcibly disconnected
 19:26:31.921439 Received QUIT (on stdin)
 19:26:31.921452 quits
 19:26:31.921522 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASV 227 Entering Passive Mode (1216,256,2,127,127,127)
 Testnum 237
=== End of file server.cmd
=== Start of file valgrind237
 ==93166== 
 ==93166== Process terminating with default action of signal 4 (SIGILL)
 ==93166==  Illegal opcode at address 0x492B75F
 ==93166==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93166==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93166==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93166==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93166==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93166==    by 0x49908EB: curl_version_info (version.c:600)
 ==93166==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93166==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind237
test 0238 [FTP getting bad port in response to EPSV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind238 ../src/curl -q --output log/11/curl238.out  --include --trace-ascii log/11/trace238 --trace-time ftp://127.0.0.1:37735/238 > log/11/stdout238 2> log/11/stderr238

 238: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 238
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind238 ../src/curl -q --output log/11/curl238.out  --include --trace-ascii log/11/trace238 --trace-time ftp://127.0.0.1:37735/238 > log/11/stdout238 2> log/11/stderr238
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:31.288808 ====> Client connect
 19:26:31.289039 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:31.289362 < "USER anonymous"
 19:26:31.289400 > "331 We are happy you popped in![CR][LF]"
 19:26:31.289574 < "PASS ftp@example.com"
 19:26:31.289604 > "230 Welcome you silly person[CR][LF]"
 19:26:31.289772 < "PWD"
 19:26:31.289808 > "257 "/" is current directory[CR][LF]"
 19:26:31.289993 < "EPSV"
 19:26:31.290021 ====> Passive DATA channel requested by client
 19:26:31.290037 DATA sockfilt for passive data channel starting...
 19:26:31.296728 DATA sockfilt for passive data channel started (pid 93137)
 19:26:31.296896 DATA sockfilt for passive data channel listens on port 40881
 19:26:31.296959 > "229 Entering Passive Mode (|||40881|)[CR][LF]"
 19:26:31.296986 Client has been notified that upcoming DATA connection is awaited on port 40881
 19:26:31.312084 Client connects to port 40881
 19:26:31.312138 ====> Client established passive DATA connection on port 40881
 19:26:31.312255 < "TYPE I"
 19:26:31.312299 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:31.312505 < "SIZE verifiedserver"
 19:26:31.312545 > "213 17[CR][LF]"
 19:26:31.312707 < "RETR verifiedserver"
 19:26:31.312742 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:31.312837 =====> Closing passive DATA connection...
 19:26:31.312856 Server disconnects passive DATA connection
 19:26:31.313080 Server disconnected passive DATA connection
 19:26:31.313111 DATA sockfilt for passive data channel quits (pid 93137)
 19:26:31.313375 DATA sockfilt for passive data channel quit (pid 93137)
 19:26:31.313402 =====> Closed passive DATA connection
 19:26:31.313430 > "226 File transfer complete[CR][LF]"
 19:26:31.365570 < "QUIT"
 19:26:31.365648 > "221 bye bye baby[CR][LF]"
 19:26:31.375371 MAIN sockfilt said DISC
 19:26:31.375445 ====> Client disconnected
 19:26:31.375521 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:30.891344 ====> Client connect
 19:26:30.891727 Received DATA (on stdin)
 19:26:30.891743 > 146 bytes data, server => client
 19:26:30.891754 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:30.891764 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:30.891774 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:30.891865 < 16 bytes data, client => server
 19:26:30.891881 'USER anonymous\r\n'
 19:26:30.892076 Received DATA (on stdin)
 19:26:30.892089 > 33 byCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind246 ../src/curl -q --output log/24/curl246.out  --include --trace-ascii log/24/trace246 --trace-time http://127.0.0.1:38895/246 -u auser:apasswd --digest -d "junkelijunk" > log/24/stdout246 2> log/24/stderr246
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind249 ../src/curl -q --output log/2/curl249.out  --include --trace-ascii log/2/trace249 --trace-time http://127.0.0.1:34531/249 -z "dec 12 12:00:00 1999 GMT" > log/2/stdout249 2> log/2/stderr249
tes data, server => client
 19:26:30.892099 '331 We are happy you popped in!\r\n'
 19:26:30.892155 < 22 bytes data, client => server
 19:26:30.892166 'PASS ftp@example.com\r\n'
 19:26:30.892276 Received DATA (on stdin)
 19:26:30.892287 > 30 bytes data, server => client
 19:26:30.892296 '230 Welcome you silly person\r\n'
 19:26:30.892351 < 5 bytes data, client => server
 19:26:30.892364 'PWD\r\n'
 19:26:30.892479 Received DATA (on stdin)
 19:26:30.892490 > 30 bytes data, server => client
 19:26:30.892500 '257 "/" is current directory\r\n'
 19:26:30.892567 < 6 bytes data, client => server
 19:26:30.892580 'EPSV\r\n'
 19:26:30.899675 Received DATA (on stdin)
 19:26:30.899694 > 39 bytes data, server => client
 19:26:30.899705 '229 Entering Passive Mode (|||40881|)\r\n'
 19:26:30.904810 < 8 bytes data, client => server
 19:26:30.904835 'TYPE I\r\n'
 19:26:30.914982 Received DATA (on stdin)
 19:26:30.915001 > 33 bytes data, server => client
 19:26:30.915011 '200 I modify TYPE as you wanted\r\n'
 19:26:30.915091 < 21 bytes data, client => server
 19:26:30.915103 'SIZE verifiedserver\r\n'
 19:26:30.915222 Received DATA (on stdin)
 19:26:30.915233 > 8 bytes data, server => client
 19:26:30.915242 '213 17\r\n'
 19:26:30.915296 < 21 bytes data, client => server
 19:26:30.915308 'RETR verifiedserver\r\n'
 19:26:30.915618 Received DATA (on stdin)
 19:26:30.915629 > 29 bytes data, server => client
 19:26:30.915639 '150 Binary junk (17 bytes).\r\n'
 19:26:30.916106 Received DATA (on stdin)
 19:26:30.916117 > 28 bytes data, server => client
 19:26:30.916127 '226 File transfer complete\r\n'
 19:26:30.968050 < 6 bytes data, client => server
 19:26:30.968097 'QUIT\r\n'
 19:26:30.968344 Received DATA (on stdin)
 19:26:30.968356 > 18 bytes data, server => client
 19:26:30.968366 '221 bye bye baby\r\n'
 19:26:30.974703 ====> Client disconnect
 19:26:30.978220 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:31.894340 Running IPv4 version
 19:26:31.894413 Listening on port 40881
 19:26:31.894462 Wrote pid 93137 to log/11/server/ftp_sockdata.pid
 19:26:31.899305 Received PING (on stdin)
 19:26:31.899456 Received PORT (on stdin)
 19:26:31.914685 ====> Client connect
 19:26:31.915534 Received DATA (on stdin)
 19:26:31.915545 > 17 bytes data, server => client
 19:26:31.915555 'WE ROOLZ: 84823\r\n'
 19:26:31.915583 Received DISC (on stdin)
 19:26:31.915594 ====> Client forcibly disconnected
 19:26:31.915795 Received QUIT (on stdin)
 19:26:31.915806 quits
 19:26:31.915874 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 229 Entering Passive Mode (|||1000000|)
 Testnum 238
=== End of file server.cmd
=== Start of file valgrind238
 ==93200== 
 ==93200== Process terminating with default action of signal 4 (SIGILL)
 ==93200==  Illegal opcode at address 0x492B75F
 ==93200==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93200==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93200==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93200==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93200==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93200==    by 0x49908EB: curl_version_info (version.c:600)
 ==93200==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93200==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind238
test 0246 [HTTP POST --digest with server doing a 100 before 401 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind246 ../src/curl -q --output log/24/curl246.out  --include --trace-ascii log/24/trace246 --trace-time http://127.0.0.1:38895/246 -u auser:apasswd --digest -d "junkelijunk" > log/24/stdout246 2> log/24/stderr246

 246: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 246
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind246 ../src/curl -q --output log/24/curl246.out  --include --trace-ascii log/24/trace246 --trace-time http://127.0.0.1:38895/246 -u auser:apasswd --digest -d "junkelijunk" > log/24/stdout246 2> log/24/stderr246
=== End of file commands.log
=== Start of file http_server.log
 19:26:31.860829 ====> Client connect
 19:26:31.860863 accept_connection 3 returned 4
 19:26:31.860884 Read 93 bytes
 19:26:31.860893 Process 93 bytes request
 19:26:31.860906 Got request: GET /verifiedserver HTTP/1.1
 19:26:31.860915 Are-we-friendly question received
 19:26:31.860940 Wrote request (93 bytes) input to log/24/server.input
 19:26:31.860955 Identifying ourselves as friends
 19:26:31.861013 Response sent (56 bytes) and written to log/24/server.response
 19:26:31.861022 special request received, no persistency
 19:26:31.861030 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 47306 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 246
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind246
 ==93399== 
 ==93399== Process terminating with default action of signal 4 (SIGILL)
 ==93399==  Illegal opcode at address 0x492B75F
 ==93399==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93399==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93399==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93399==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93399==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93399==    by 0x49908EB: curl_version_info (version.c:600)
 ==93399==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93399==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93399==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93399==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind246
test 0249 [HTTP 304 response with "illegal" Content-Length: header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind249 ../src/curl -q --output log/2/curl249.out  --include --trace-ascii log/2/trace249 --trace-time http://127.0.0.1:34531/249 -z "dec 12 12:00:00 1999 GMT" > log/2/stdout249 2> log/2/stderr249

 249: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 249
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind249 ../src/curl -q --output log/2/curl249.out  --include --trace-ascii log/2/trace249 --trace-time http://127.0.0.1:34531/249 -z "dec 12 12:00:00 1999 GMT" > log/2/stdout249 2> log/2/stderr249
=== End of file commands.log
=== Start of file http_server.log
 19:26:33.002278 ====> Client connect
 19:26:33.002322 accept_connection 3 returned 4
 19:26:33.002349 Read 93 bytes
 19:26:33.002360 Process 93 bytes request
 19:26:33.002374 Got request: GET /verifiedserver HTTP/1.1
 19:26:33.002383 Are-we-friendly question recCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind240 ../src/curl -q --output log/18/curl240.out  --include --trace-ascii log/18/trace240 --trace-time -g "http://[::1]:34495/240" > log/18/stdout240 2> log/18/stderr240
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind244 ../src/curl -q --output log/13/curl244.out  --include --trace-ascii log/13/trace244 --trace-time --ftp-method nocwd ftp://127.0.0.1:33695/fir%23t/th%69rd/244/ > log/13/stdout244 2> log/13/stderr244
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind251 ../src/curl -q --output log/16/curl251.out  --include --trace-ascii log/16/trace251 --trace-time ftp://127.0.0.1:40031/ -P 127.0.0.1 > log/16/stdout251 2> log/16/stderr251
eived
 19:26:33.002418 Wrote request (93 bytes) input to log/2/server.input
 19:26:33.002438 Identifying ourselves as friends
 19:26:33.002514 Response sent (56 bytes) and written to log/2/server.response
 19:26:33.002528 special request received, no persistency
 19:26:33.002537 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 51494 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 249
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind249
 ==93487== 
 ==93487== Process terminating with default action of signal 4 (SIGILL)
 ==93487==  Illegal opcode at address 0x492B75F
 ==93487==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93487==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93487==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93487==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93487==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93487==    by 0x49908EB: curl_version_info (version.c:600)
 ==93487==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93487==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93487==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93487==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind249
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/18/server/http_ipv6_server.pid" --logfile "log/18/http_ipv6_server.log" --logdir "log/18" --portfile log/18/server/http_ipv6_server.port --config log/18/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 93140 port 34495
* pid http-ipv6 => 93140 93140
test 0240 [HTTP-IPv6 GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind240 ../src/curl -q --output log/18/curl240.out  --include --trace-ascii log/18/trace240 --trace-time -g "http://[::1]:34495/240" > log/18/stdout240 2> log/18/stderr240

 240: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 240
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind240 ../src/curl -q --output log/18/curl240.out  --include --trace-ascii log/18/trace240 --trace-time -g "http://[::1]:34495/240" > log/18/stdout240 2> log/18/stderr240
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:26:31.930077 Running HTTP IPv6 version on port 34495
 19:26:31.930198 Wrote pid 93140 to log/18/server/http_ipv6_server.pid
 19:26:31.930236 Wrote port 34495 to log/18/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 240
=== End of file server.cmd
=== Start of file valgrind240
 ==93420== 
 ==93420== Process terminating with default action of signal 4 (SIGILL)
 ==93420==  Illegal opcode at address 0x492B75F
 ==93420==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93420==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93420==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93420==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93420==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93420==    by 0x49908EB: curl_version_info (version.c:600)
 ==93420==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93420==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93420==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93420==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind240
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/13/server/ftp_server.pid" --logfile "log/13/ftp_server.log" --logdir "log/13" --portfile "log/13/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33695 (log/13/server/ftp_server.port)
RUN: FTP server is PID 93286 port 33695
* pid ftp => 93286 93286
test 0244 [FTP dir listing with nocwd and URL encoded path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind244 ../src/curl -q --output log/13/curl244.out  --include --trace-ascii log/13/trace244 --trace-time --ftp-method nocwd ftp://127.0.0.1:33695/fir%23t/th%69rd/244/ > log/13/stdout244 2> log/13/stderr244

 244: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 244
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind244 ../src/curl -q --output log/13/curl244.out  --include --trace-ascii log/13/trace244 --trace-time --ftp-method nocwd ftp://127.0.0.1:33695/fir%23t/th%69rd/244/ > log/13/stdout244 2> log/13/stderr244
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:31.690417 FTP server listens on port IPv4/33695
 19:26:31.690520 logged pid 93286 in log/13/server/ftp_server.pid
 19:26:31.690550 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:31.292737 Running IPv4 version
 19:26:31.292838 Listening on port 33695
 19:26:31.292877 Wrote pid 93294 to log/13/server/ftp_sockctrl.pid
 19:26:31.292909 Wrote port 33695 to log/13/server/ftp_server.port
 19:26:31.293082 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 244
=== End of file server.cmd
=== Start of file valgrind244
 ==93796== 
 ==93796== Process terminating with default action of signal 4 (SIGILL)
 ==93796==  Illegal opcode at address 0x492B75F
 ==93796==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93796==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93796==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93796==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93796==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93796==    by 0x49908EB: curl_version_info (version.c:600)
 ==93796==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93796==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93796==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93796==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind244
test 0251 [FTP dir list, PORT with specified IP and slow response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind251 ../src/curl -q --output log/16/curl251.out  --include --trace-ascii log/16/trace251 --trace-time ftp://127.0.0.1:40031/ -P 127.0.0.1 > log/16/stdout251 2> log/16/stderr251

 251: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 251
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind247 ../src/curl -q --output log/1/curl247.out  --include --trace-ascii log/1/trace247 --trace-time ftp://127.0.0.1:40221/247 -T log/1/test247.txt -z "apr 1 2005 08:00:00" > log/1/stdout247 2> log/1/stderr247
6 --log-file=log/16/valgrind251 ../src/curl -q --output log/16/curl251.out  --include --trace-ascii log/16/trace251 --trace-time ftp://127.0.0.1:40031/ -P 127.0.0.1 > log/16/stdout251 2> log/16/stderr251
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:32.579593 ====> Client connect
 19:26:32.579802 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:32.582236 < "USER anonymous"
 19:26:32.582395 > "331 We are happy you popped in![CR][LF]"
 19:26:32.582461 < "PASS ftp@example.com"
 19:26:32.582599 > "230 Welcome you silly person[CR][LF]"
 19:26:32.582657 < "PWD"
 19:26:32.582814 > "257 "/" is current directory[CR][LF]"
 19:26:32.582871 < "EPSV"
 19:26:32.582899 ====> Passive DATA channel requested by client
 19:26:32.582914 DATA sockfilt for passive data channel starting...
 19:26:32.595551 DATA sockfilt for passive data channel started (pid 93678)
 19:26:32.595736 DATA sockfilt for passive data channel listens on port 42121
 19:26:32.595798 > "229 Entering Passive Mode (|||42121|)[CR][LF]"
 19:26:32.595818 Client has been notified that upcoming DATA connection is awaited on port 42121
 19:26:32.597038 Client connects to port 42121
 19:26:32.597076 ====> Client established passive DATA connection on port 42121
 19:26:32.597182 < "TYPE I"
 19:26:32.597218 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:32.597386 < "SIZE verifiedserver"
 19:26:32.597425 > "213 17[CR][LF]"
 19:26:32.597564 < "RETR verifiedserver"
 19:26:32.597596 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:32.597686 =====> Closing passive DATA connection...
 19:26:32.597701 Server disconnects passive DATA connection
 19:26:32.597932 Server disconnected passive DATA connection
 19:26:32.597956 DATA sockfilt for passive data channel quits (pid 93678)
 19:26:32.598192 DATA sockfilt for passive data channel quit (pid 93678)
 19:26:32.598213 =====> Closed passive DATA connection
 19:26:32.598248 > "226 File transfer complete[CR][LF]"
 19:26:32.645554 < "QUIT"
 19:26:32.645613 > "221 bye bye baby[CR][LF]"
 19:26:32.647333 MAIN sockfilt said DISC
 19:26:32.647375 ====> Client disconnected
 19:26:32.647453 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:32.182457 ====> Client connect
 19:26:32.182795 Received DATA (on stdin)
 19:26:32.182811 > 146 bytes data, server => client
 19:26:32.182822 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:32.182832 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:32.182840 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:32.185050 < 16 bytes data, client => server
 19:26:32.185068 'USER anonymous\r\n'
 19:26:32.185232 Received DATA (on stdin)
 19:26:32.185245 > 33 bytes data, server => client
 19:26:32.185263 '331 We are happy you popped in!\r\n'
 19:26:32.185318 < 22 bytes data, client => server
 19:26:32.185331 'PASS ftp@example.com\r\n'
 19:26:32.185445 Received DATA (on stdin)
 19:26:32.185456 > 30 bytes data, server => client
 19:26:32.185473 '230 Welcome you silly person\r\n'
 19:26:32.185525 < 5 bytes data, client => server
 19:26:32.185537 'PWD\r\n'
 19:26:32.185647 Received DATA (on stdin)
 19:26:32.185659 > 30 bytes data, server => client
 19:26:32.185676 '257 "/" is current directory\r\n'
 19:26:32.185738 < 6 bytes data, client => server
 19:26:32.185750 'EPSV\r\n'
 19:26:32.198809 Received DATA (on stdin)
 19:26:32.198827 > 39 bytes data, server => client
 19:26:32.198838 '229 Entering Passive Mode (|||42121|)\r\n'
 19:26:32.199048 < 8 bytes data, client => server
 19:26:32.199065 'TYPE I\r\n'
 19:26:32.200199 Received DATA (on stdin)
 19:26:32.200211 > 33 bytes data, server => client
 19:26:32.200222 '200 I modify TYPE as you wanted\r\n'
 19:26:32.200285 < 21 bytes data, client => server
 19:26:32.200295 'SIZE verifiedserver\r\n'
 19:26:32.200404 Received DATA (on stdin)
 19:26:32.200414 > 8 bytes data, server => client
 19:26:32.200424 '213 17\r\n'
 19:26:32.200470 < 21 bytes data, client => server
 19:26:32.200479 'RETR verifiedserver\r\n'
 19:26:32.200684 Received DATA (on stdin)
 19:26:32.200694 > 29 bytes data, server => client
 19:26:32.200704 '150 Binary junk (17 bytes).\r\n'
 19:26:32.201231 Received DATA (on stdin)
 19:26:32.201242 > 28 bytes data, server => client
 19:26:32.201252 '226 File transfer complete\r\n'
 19:26:32.248349 < 6 bytes data, client => server
 19:26:32.248379 'QUIT\r\n'
 19:26:32.248609 Received DATA (on stdin)
 19:26:32.248620 > 18 bytes data, server => client
 19:26:32.248630 '221 bye bye baby\r\n'
 19:26:32.250066 ====> Client disconnect
 19:26:32.250446 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:32.188911 Running IPv4 version
 19:26:32.188980 Listening on port 42121
 19:26:32.189022 Wrote pid 93678 to log/16/server/ftp_sockdata.pid
 19:26:32.191277 Received PING (on stdin)
 19:26:32.198597 Received PORT (on stdin)
 19:26:32.199960 ====> Client connect
 19:26:32.200761 Received DATA (on stdin)
 19:26:32.200775 > 17 bytes data, server => client
 19:26:32.200784 'WE ROOLZ: 84702\r\n'
 19:26:32.200810 Received DISC (on stdin)
 19:26:32.200820 ====> Client forcibly disconnected
 19:26:32.200943 Received QUIT (on stdin)
 19:26:32.200953 quits
 19:26:32.201025 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 SLOWDOWN
 Testnum 251
=== End of file server.cmd
=== Start of file valgrind251
 ==93845== 
 ==93845== Process terminating with default action of signal 4 (SIGILL)
 ==93845==  Illegal opcode at address 0x492B75F
 ==93845==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93845==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93845==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93845==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93845==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93845==    by 0x49908EB: curl_version_info (version.c:600)
 ==93845==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93845==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93845==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93845==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind251
test 0247 [FTP upload time condition evaluates TRUE => skip upload]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind247 ../src/curl -q --output log/1/curl247.out  --include --trace-ascii log/1/trace247 --trace-time ftp://127.0.0.1:40221/247 -T log/1/test247.txt -z "apr 1 2005 08:00:00" > log/1/stdout247 2> log/1/stderr247

 247: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 247
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind247 ../src/curl -q --output log/1/curl247.out  --include --trace-ascii log/1/trace247 --trace-time ftp://127.0.0.1:40221/247 -T log/1/test247.txt -z "apr 1 2005 08:00:00" > log/1/stdout247 2> log/1/stderr247
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:32.417788 ====> Client connect
 19:26:32.418023 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:32.418358 < "USER anonymous"
 19:26:32.418399 > "331 We are happy you popped in![CR][LF]"
 19:26:32.418595 < "PASS ftp@example.com"
 19:26:32.418632 > "230 Welcome you silly person[CR][LF]"
 19:26:32.423919 < "PWD"
 19:26:32.423973 > "257 "/" is current directory[CR][LF]"
 19:26:32.424173 < "EPSV"
 19:26:32.424199 ====> Passive DATA channel requested by client
 19:26:32.424213 DATA sockfilt for passive data channel starting...
 19:26:32.428964 DATA sockfilt for passive data chaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind241 ../src/curl -q --output log/19/curl241.out  --include --trace-ascii log/19/trace241 --trace-time -g "http://ip6-localhost:44065/241" > log/19/stdout241 2> log/19/stderr241
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind250 ../src/curl -q --output log/8/curl250.out  --include --trace log/8/trace250 --trace-time ftp://127.0.0.1:41879/ > log/8/stdout250 2> log/8/stderr250
nnel started (pid 93489)
 19:26:32.429199 DATA sockfilt for passive data channel listens on port 40559
 19:26:32.429249 > "229 Entering Passive Mode (|||40559|)[CR][LF]"
 19:26:32.429268 Client has been notified that upcoming DATA connection is awaited on port 40559
 19:26:32.435414 Client connects to port 40559
 19:26:32.435469 ====> Client established passive DATA connection on port 40559
 19:26:32.435573 < "TYPE I"
 19:26:32.435616 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:32.452136 < "SIZE verifiedserver"
 19:26:32.452429 > "213 17[CR][LF]"
 19:26:32.452527 < "RETR verifiedserver"
 19:26:32.452692 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:32.452812 =====> Closing passive DATA connection...
 19:26:32.452834 Server disconnects passive DATA connection
 19:26:32.453061 Server disconnected passive DATA connection
 19:26:32.453091 DATA sockfilt for passive data channel quits (pid 93489)
 19:26:32.459228 DATA sockfilt for passive data channel quit (pid 93489)
 19:26:32.459273 =====> Closed passive DATA connection
 19:26:32.459379 > "226 File transfer complete[CR][LF]"
 19:26:32.505493 < "QUIT"
 19:26:32.505551 > "221 bye bye baby[CR][LF]"
 19:26:32.507308 MAIN sockfilt said DISC
 19:26:32.507355 ====> Client disconnected
 19:26:32.507427 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:33.020605 ====> Client connect
 19:26:33.020980 Received DATA (on stdin)
 19:26:33.020996 > 146 bytes data, server => client
 19:26:33.021007 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:33.021017 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:33.021026 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:33.021113 < 16 bytes data, client => server
 19:26:33.021127 'USER anonymous\r\n'
 19:26:33.021343 Received DATA (on stdin)
 19:26:33.021355 > 33 bytes data, server => client
 19:26:33.021365 '331 We are happy you popped in!\r\n'
 19:26:33.021424 < 22 bytes data, client => server
 19:26:33.021435 'PASS ftp@example.com\r\n'
 19:26:33.021571 Received DATA (on stdin)
 19:26:33.021610 > 30 bytes data, server => client
 19:26:33.021620 '230 Welcome you silly person\r\n'
 19:26:33.024958 < 5 bytes data, client => server
 19:26:33.024979 'PWD\r\n'
 19:26:33.026916 Received DATA (on stdin)
 19:26:33.026929 > 30 bytes data, server => client
 19:26:33.026940 '257 "/" is current directory\r\n'
 19:26:33.027027 < 6 bytes data, client => server
 19:26:33.027039 'EPSV\r\n'
 19:26:33.033376 Received DATA (on stdin)
 19:26:33.033399 > 39 bytes data, server => client
 19:26:33.033412 '229 Entering Passive Mode (|||40559|)\r\n'
 19:26:33.033886 < 8 bytes data, client => server
 19:26:33.033904 'TYPE I\r\n'
 19:26:33.041615 Received DATA (on stdin)
 19:26:33.041642 > 33 bytes data, server => client
 19:26:33.041654 '200 I modify TYPE as you wanted\r\n'
 19:26:33.048386 < 21 bytes data, client => server
 19:26:33.048420 'SIZE verifiedserver\r\n'
 19:26:33.055144 Received DATA (on stdin)
 19:26:33.055168 > 8 bytes data, server => client
 19:26:33.055191 '213 17\r\n'
 19:26:33.055308 < 21 bytes data, client => server
 19:26:33.055326 'RETR verifiedserver\r\n'
 19:26:33.055502 Received DATA (on stdin)
 19:26:33.055517 > 29 bytes data, server => client
 19:26:33.055538 '150 Binary junk (17 bytes).\r\n'
 19:26:33.062242 Received DATA (on stdin)
 19:26:33.062260 > 28 bytes data, server => client
 19:26:33.062278 '226 File transfer complete\r\n'
 19:26:33.102094 < 6 bytes data, client => server
 19:26:33.102119 'QUIT\r\n'
 19:26:33.108519 Received DATA (on stdin)
 19:26:33.108534 > 18 bytes data, server => client
 19:26:33.108544 '221 bye bye baby\r\n'
 19:26:33.109726 ====> Client disconnect
 19:26:33.110388 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:32.031486 Running IPv4 version
 19:26:32.031572 Listening on port 40559
 19:26:32.031626 Wrote pid 93489 to log/1/server/ftp_sockdata.pid
 19:26:32.031769 Received PING (on stdin)
 19:26:32.032047 Received PORT (on stdin)
 19:26:32.038280 ====> Client connect
 19:26:32.055790 Received DATA (on stdin)
 19:26:32.055808 > 17 bytes data, server => client
 19:26:32.055818 'WE ROOLZ: 84935\r\n'
 19:26:32.055912 Received DISC (on stdin)
 19:26:32.055932 ====> Client forcibly disconnected
 19:26:32.056053 Received QUIT (on stdin)
 19:26:32.056066 quits
 19:26:32.056144 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 247
=== End of file server.cmd
=== Start of file test247.txt
 data
     to
       see
 that FTP
 works
   so does it?
=== End of file test247.txt
=== Start of file valgrind247
 ==93680== 
 ==93680== Process terminating with default action of signal 4 (SIGILL)
 ==93680==  Illegal opcode at address 0x492B75F
 ==93680==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93680==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93680==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93680==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93680==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93680==    by 0x49908EB: curl_version_info (version.c:600)
 ==93680==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93680==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93680==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93680==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind247
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/19/server/http_ipv6_server.pid" --logfile "log/19/http_ipv6_server.log" --logdir "log/19" --portfile log/19/server/http_ipv6_server.port --config log/19/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 93199 port 44065
* pid http-ipv6 => 93199 93199
prechecked ./server/servers resolve --ipv6 ip6-localhost
test 0241 [HTTP-IPv6 GET (using ip6-localhost)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind241 ../src/curl -q --output log/19/curl241.out  --include --trace-ascii log/19/trace241 --trace-time -g "http://ip6-localhost:44065/241" > log/19/stdout241 2> log/19/stderr241

 241: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 241
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind241 ../src/curl -q --output log/19/curl241.out  --include --trace-ascii log/19/trace241 --trace-time -g "http://ip6-localhost:44065/241" > log/19/stdout241 2> log/19/stderr241
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:26:31.072252 Running HTTP IPv6 version on port 44065
 19:26:31.072439 Wrote pid 93199 to log/19/server/http_ipv6_server.pid
 19:26:31.072484 Wrote port 44065 to log/19/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 241
=== End of file server.cmd
=== Start of file valgrind241
 ==93536== 
 ==93536== Process terminating with default action of signal 4 (SIGILL)
 ==93536==  Illegal opcode at address 0x492B75F
 ==93536==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93536==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93536==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93536==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93536==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93536==    by 0x49908EB: curl_version_info (version.c:600)
 ==93536==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93536==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind241
test 0250 [FTP dir list PASV with slow response]
../libtool --mode=execute /usr/bin/valgrCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind242 ../src/curl -q --output log/14/curl242.out  --include --trace-ascii log/14/trace242 --trace-time -g "http://foobar:barfoo@[::1]:42263/242" > log/14/stdout242 2> log/14/stderr242
ind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind250 ../src/curl -q --output log/8/curl250.out  --include --trace log/8/trace250 --trace-time ftp://127.0.0.1:41879/ > log/8/stdout250 2> log/8/stderr250

 250: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 250
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind250 ../src/curl -q --output log/8/curl250.out  --include --trace log/8/trace250 --trace-time ftp://127.0.0.1:41879/ > log/8/stdout250 2> log/8/stderr250
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:32.540417 ====> Client connect
 19:26:32.540607 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:32.540908 < "USER anonymous"
 19:26:32.540950 > "331 We are happy you popped in![CR][LF]"
 19:26:32.541138 < "PASS ftp@example.com"
 19:26:32.541170 > "230 Welcome you silly person[CR][LF]"
 19:26:32.541332 < "PWD"
 19:26:32.541366 > "257 "/" is current directory[CR][LF]"
 19:26:32.541542 < "EPSV"
 19:26:32.541570 ====> Passive DATA channel requested by client
 19:26:32.541584 DATA sockfilt for passive data channel starting...
 19:26:32.554110 DATA sockfilt for passive data channel started (pid 93639)
 19:26:32.556215 DATA sockfilt for passive data channel listens on port 38345
 19:26:32.556275 > "229 Entering Passive Mode (|||38345|)[CR][LF]"
 19:26:32.556291 Client has been notified that upcoming DATA connection is awaited on port 38345
 19:26:32.556551 Client connects to port 38345
 19:26:32.556598 ====> Client established passive DATA connection on port 38345
 19:26:32.556817 < "TYPE I"
 19:26:32.556864 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:32.557044 < "SIZE verifiedserver"
 19:26:32.557088 > "213 17[CR][LF]"
 19:26:32.557254 < "RETR verifiedserver"
 19:26:32.557295 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:32.557396 =====> Closing passive DATA connection...
 19:26:32.557415 Server disconnects passive DATA connection
 19:26:32.557537 Server disconnected passive DATA connection
 19:26:32.557561 DATA sockfilt for passive data channel quits (pid 93639)
 19:26:32.557834 DATA sockfilt for passive data channel quit (pid 93639)
 19:26:32.557860 =====> Closed passive DATA connection
 19:26:32.557889 > "226 File transfer complete[CR][LF]"
 19:26:32.606468 < "QUIT"
 19:26:32.606523 > "221 bye bye baby[CR][LF]"
 19:26:32.607695 MAIN sockfilt said DISC
 19:26:32.607728 ====> Client disconnected
 19:26:32.607809 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:32.143273 ====> Client connect
 19:26:32.143595 Received DATA (on stdin)
 19:26:32.143612 > 146 bytes data, server => client
 19:26:32.143624 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:32.143634 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:32.143643 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:32.143728 < 16 bytes data, client => server
 19:26:32.143742 'USER anonymous\r\n'
 19:26:32.143922 Received DATA (on stdin)
 19:26:32.143934 > 33 bytes data, server => client
 19:26:32.143944 '331 We are happy you popped in!\r\n'
 19:26:32.144003 < 22 bytes data, client => server
 19:26:32.144015 'PASS ftp@example.com\r\n'
 19:26:32.144138 Received DATA (on stdin)
 19:26:32.144150 > 30 bytes data, server => client
 19:26:32.144160 '230 Welcome you silly person\r\n'
 19:26:32.144213 < 5 bytes data, client => server
 19:26:32.144223 'PWD\r\n'
 19:26:32.144335 Received DATA (on stdin)
 19:26:32.144346 > 30 bytes data, server => client
 19:26:32.144356 '257 "/" is current directory\r\n'
 19:26:32.144419 < 6 bytes data, client => server
 19:26:32.144432 'EPSV\r\n'
 19:26:32.159231 Received DATA (on stdin)
 19:26:32.159261 > 39 bytes data, server => client
 19:26:32.159272 '229 Entering Passive Mode (|||38345|)\r\n'
 19:26:32.159645 < 8 bytes data, client => server
 19:26:32.159661 'TYPE I\r\n'
 19:26:32.159843 Received DATA (on stdin)
 19:26:32.159855 > 33 bytes data, server => client
 19:26:32.159866 '200 I modify TYPE as you wanted\r\n'
 19:26:32.159916 < 21 bytes data, client => server
 19:26:32.159928 'SIZE verifiedserver\r\n'
 19:26:32.160061 Received DATA (on stdin)
 19:26:32.160073 > 8 bytes data, server => client
 19:26:32.160082 '213 17\r\n'
 19:26:32.160137 < 21 bytes data, client => server
 19:26:32.160147 'RETR verifiedserver\r\n'
 19:26:32.160864 Received DATA (on stdin)
 19:26:32.160875 > 29 bytes data, server => client
 19:26:32.160885 '150 Binary junk (17 bytes).\r\n'
 19:26:32.160906 Received DATA (on stdin)
 19:26:32.160915 > 28 bytes data, server => client
 19:26:32.160925 '226 File transfer complete\r\n'
 19:26:32.209242 < 6 bytes data, client => server
 19:26:32.209270 'QUIT\r\n'
 19:26:32.209509 Received DATA (on stdin)
 19:26:32.209520 > 18 bytes data, server => client
 19:26:32.209530 '221 bye bye baby\r\n'
 19:26:32.210625 ====> Client disconnect
 19:26:32.210791 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:32.149445 Running IPv4 version
 19:26:32.152019 Listening on port 38345
 19:26:32.152057 Wrote pid 93639 to log/8/server/ftp_sockdata.pid
 19:26:32.152079 Received PING (on stdin)
 19:26:32.159051 Received PORT (on stdin)
 19:26:32.159456 ====> Client connect
 19:26:32.160392 Received DATA (on stdin)
 19:26:32.160407 > 17 bytes data, server => client
 19:26:32.160417 'WE ROOLZ: 84824\r\n'
 19:26:32.160445 Received DISC (on stdin)
 19:26:32.160458 ====> Client forcibly disconnected
 19:26:32.160541 Received QUIT (on stdin)
 19:26:32.160552 quits
 19:26:32.160624 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 SLOWDOWN
 Testnum 250
=== End of file server.cmd
=== Start of file valgrind250
 ==93749== 
 ==93749== Process terminating with default action of signal 4 (SIGILL)
 ==93749==  Illegal opcode at address 0x492B75F
 ==93749==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93749==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93749==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93749==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93749==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93749==    by 0x49908EB: curl_version_info (version.c:600)
 ==93749==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93749==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93749==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93749==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind250
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/14/server/http_ipv6_server.pid" --logfile "log/14/http_ipv6_server.log" --logdir "log/14" --portfile log/14/server/http_ipv6_server.port --config log/14/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 93258 port 42263
* pid http-ipv6 => 93258 93258
test 0242 [HTTP-IPv6 GET with username+password in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind242 ../src/curl -q --output log/14/curl242.out  --include --trace-ascii log/14/trace242 --trace-time -g "http://foobar:barfoo@[::1]:42263/242" > log/14/stdout242 2> log/14/stderr242

 242: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 242
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind248 ../src/curl -q --output log/4/curl248.out  --include --trace-ascii log/4/trace248 --trace-time ftp://127.0.0.1:39739/248 -T log/4/test248.txt -z "apr 1 2005 08:00:00" > log/4/stdout248 2> log/4/stderr248
-num-callers=16 --log-file=log/14/valgrind242 ../src/curl -q --output log/14/curl242.out  --include --trace-ascii log/14/trace242 --trace-time -g "http://foobar:barfoo@[::1]:42263/242" > log/14/stdout242 2> log/14/stderr242
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:26:31.218123 Running HTTP IPv6 version on port 42263
 19:26:31.218251 Wrote pid 93258 to log/14/server/http_ipv6_server.pid
 19:26:31.218283 Wrote port 42263 to log/14/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 242
=== End of file server.cmd
=== Start of file valgrind242
 ==93688== 
 ==93688== Process terminating with default action of signal 4 (SIGILL)
 ==93688==  Illegal opcode at address 0x492B75F
 ==93688==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93688==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==93688==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93688==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93688==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93688==    by 0x49908EB: curl_version_info (version.c:600)
 ==93688==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93688==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93688==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93688==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind242
test 0248 [FTP upload time condition evaluates FALSE => upload anyway]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind248 ../src/curl -q --output log/4/curl248.out  --include --trace-ascii log/4/trace248 --trace-time ftp://127.0.0.1:39739/248 -T log/4/test248.txt -z "apr 1 2005 08:00:00" > log/4/stdout248 2> log/4/stderr248

 248: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 248
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind248 ../src/curl -q --output log/4/curl248.out  --include --trace-ascii log/4/trace248 --trace-time ftp://127.0.0.1:39739/248 -T log/4/test248.txt -z "apr 1 2005 08:00:00" > log/4/stdout248 2> log/4/stderr248
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:32.365379 ====> Client connect
 19:26:32.365611 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:32.365964 < "USER anonymous"
 19:26:32.366009 > "331 We are happy you popped in![CR][LF]"
 19:26:32.366298 < "PASS ftp@example.com"
 19:26:32.366335 > "230 Welcome you silly person[CR][LF]"
 19:26:32.366529 < "PWD"
 19:26:32.366567 > "257 "/" is current directory[CR][LF]"
 19:26:32.366750 < "EPSV"
 19:26:32.366781 ====> Passive DATA channel requested by client
 19:26:32.366802 DATA sockfilt for passive data channel starting...
 19:26:32.382115 DATA sockfilt for passive data channel started (pid 93472)
 19:26:32.382270 DATA sockfilt for passive data channel listens on port 46457
 19:26:32.382318 > "229 Entering Passive Mode (|||46457|)[CR][LF]"
 19:26:32.382335 Client has been notified that upcoming DATA connection is awaited on port 46457
 19:26:32.382644 Client connects to port 46457
 19:26:32.382673 ====> Client established passive DATA connection on port 46457
 19:26:32.382770 < "TYPE I"
 19:26:32.382802 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:32.382956 < "SIZE verifiedserver"
 19:26:32.382993 > "213 17[CR][LF]"
 19:26:32.383153 < "RETR verifiedserver"
 19:26:32.383188 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:32.383285 =====> Closing passive DATA connection...
 19:26:32.383302 Server disconnects passive DATA connection
 19:26:32.383518 Server disconnected passive DATA connection
 19:26:32.383545 DATA sockfilt for passive data channel quits (pid 93472)
 19:26:32.383812 DATA sockfilt for passive data channel quit (pid 93472)
 19:26:32.383836 =====> Closed passive DATA connection
 19:26:32.383864 > "226 File transfer complete[CR][LF]"
 19:26:32.428961 < "QUIT"
 19:26:32.429013 > "221 bye bye baby[CR][LF]"
 19:26:32.430153 MAIN sockfilt said DISC
 19:26:32.430195 ====> Client disconnected
 19:26:32.430269 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:31.968163 ====> Client connect
 19:26:31.968562 Received DATA (on stdin)
 19:26:31.968580 > 146 bytes data, server => client
 19:26:31.968592 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:31.968602 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:31.968611 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:31.968694 < 16 bytes data, client => server
 19:26:31.968708 'USER anonymous\r\n'
 19:26:31.968943 Received DATA (on stdin)
 19:26:31.968955 > 33 bytes data, server => client
 19:26:31.969046 '331 We are happy you popped in!\r\n'
 19:26:31.969106 < 22 bytes data, client => server
 19:26:31.969121 'PASS ftp@example.com\r\n'
 19:26:31.969269 Received DATA (on stdin)
 19:26:31.969282 > 30 bytes data, server => client
 19:26:31.969292 '230 Welcome you silly person\r\n'
 19:26:31.969352 < 5 bytes data, client => server
 19:26:31.969366 'PWD\r\n'
 19:26:31.969495 Received DATA (on stdin)
 19:26:31.969507 > 30 bytes data, server => client
 19:26:31.969516 '257 "/" is current directory\r\n'
 19:26:31.969582 < 6 bytes data, client => server
 19:26:31.969595 'EPSV\r\n'
 19:26:31.985273 Received DATA (on stdin)
 19:26:31.985290 > 39 bytes data, server => client
 19:26:31.985299 '229 Entering Passive Mode (|||46457|)\r\n'
 19:26:31.985492 < 8 bytes data, client => server
 19:26:31.985506 'TYPE I\r\n'
 19:26:31.985732 Received DATA (on stdin)
 19:26:31.985743 > 33 bytes data, server => client
 19:26:31.985752 '200 I modify TYPE as you wanted\r\n'
 19:26:31.985804 < 21 bytes data, client => server
 19:26:31.985814 'SIZE verifiedserver\r\n'
 19:26:31.985924 Received DATA (on stdin)
 19:26:31.985935 > 8 bytes data, server => client
 19:26:31.985944 '213 17\r\n'
 19:26:31.985997 < 21 bytes data, client => server
 19:26:31.986008 'RETR verifiedserver\r\n'
 19:26:31.986232 Received DATA (on stdin)
 19:26:31.986242 > 29 bytes data, server => client
 19:26:31.986251 '150 Binary junk (17 bytes).\r\n'
 19:26:31.986794 Received DATA (on stdin)
 19:26:31.986806 > 28 bytes data, server => client
 19:26:31.986815 '226 File transfer complete\r\n'
 19:26:32.031746 < 6 bytes data, client => server
 19:26:32.031769 'QUIT\r\n'
 19:26:32.031958 Received DATA (on stdin)
 19:26:32.031970 > 18 bytes data, server => client
 19:26:32.031979 '221 bye bye baby\r\n'
 19:26:32.033037 ====> Client disconnect
 19:26:32.033212 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:32.972824 Running IPv4 version
 19:26:32.972924 Listening on port 46457
 19:26:32.972972 Wrote pid 93472 to log/4/server/ftp_sockdata.pid
 19:26:32.984945 Received PING (on stdin)
 19:26:32.985099 Received PORT (on stdin)
 19:26:32.985527 ====> Client connect
 19:26:32.986277 Received DATA (on stdin)
 19:26:32.986288 > 17 bytes data, server => client
 19:26:32.986297 'WE ROOLZ: 85249\r\n'
 19:26:32.986322 Received DISC (on stdin)
 19:26:32.986332 ====> Client forcibly disconnected
 19:26:32.986482 Received QUIT (on stdin)
 19:26:32.986493 quits
 19:26:32.986575 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 248
=== End of file server.cmd
=== Start of file test248.txt
 data
     to
       see
 that FTP
 works
   so does it?
=== End of file test248.txt
=== Start of file valgrind248
 ==93525== 
 ==93525== Process terminating with default action of signal 4 (SIGILL)
 ==93525==  Illegal opcode at address 0x492B75F
 ==93525==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==93525==    by 0x492C53A: curl_mvsnprintf (mprintf.c:125CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind259 ../src/curl -q --output log/23/curl259.out  --include --trace-ascii log/23/trace259 --trace-time -x http://127.0.0.1:44711 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/23/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/23/stdout259 2> log/23/stderr259
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind258 ../src/curl -q --output log/6/curl258.out  --include --trace-ascii log/6/trace258 --trace-time -x http://127.0.0.1:33935 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/6/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/6/stdout258 2> log/6/stderr258
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind256 ../src/curl -q --include --trace-ascii log/12/trace256 --trace-time -x http://127.0.0.1:40921 http://127.0.0.1:40921/want/256 -C - --no-include -o log/12/fewl256.txt -U daniel:stenberg > log/12/stdout256 2> log/12/stderr256
7)
 ==93525==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==93525==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==93525==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==93525==    by 0x49908EB: curl_version_info (version.c:600)
 ==93525==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==93525==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==93525==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==93525==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind248
test 0259 [HTTP POST multipart with Expect: header using proxy anyauth (Digest)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind259 ../src/curl -q --output log/23/curl259.out  --include --trace-ascii log/23/trace259 --trace-time -x http://127.0.0.1:44711 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/23/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/23/stdout259 2> log/23/stderr259

 259: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 259
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind259 ../src/curl -q --output log/23/curl259.out  --include --trace-ascii log/23/trace259 --trace-time -x http://127.0.0.1:44711 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/23/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/23/stdout259 2> log/23/stderr259
=== End of file commands.log
=== Start of file http_server.log
 19:26:32.980413 ====> Client connect
 19:26:32.980444 accept_connection 3 returned 4
 19:26:32.980465 Read 93 bytes
 19:26:32.980474 Process 93 bytes request
 19:26:32.980487 Got request: GET /verifiedserver HTTP/1.1
 19:26:32.980495 Are-we-friendly question received
 19:26:32.980520 Wrote request (93 bytes) input to log/23/server.input
 19:26:32.980535 Identifying ourselves as friends
 19:26:32.980591 Response sent (56 bytes) and written to log/23/server.response
 19:26:32.980600 special request received, no persistency
 19:26:32.980608 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 36306 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 259
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file test259.txt
 foo-
 This is a moo-
 bar
=== End of file test259.txt
=== Start of file valgrind259
 ==94193== 
 ==94193== Process terminating with default action of signal 4 (SIGILL)
 ==94193==  Illegal opcode at address 0x492B75F
 ==94193==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94193==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94193==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94193==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94193==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94193==    by 0x49908EB: curl_version_info (version.c:600)
 ==94193==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94193==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind259
test 0258 [HTTP multipart POST without Expect: using proxy anyauth (Digest)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind258 ../src/curl -q --output log/6/curl258.out  --include --trace-ascii log/6/trace258 --trace-time -x http://127.0.0.1:33935 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/6/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/6/stdout258 2> log/6/stderr258

 258: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 258
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind258 ../src/curl -q --output log/6/curl258.out  --include --trace-ascii log/6/trace258 --trace-time -x http://127.0.0.1:33935 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/6/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/6/stdout258 2> log/6/stderr258
=== End of file commands.log
=== Start of file http_server.log
 19:26:32.897373 ====> Client connect
 19:26:32.897406 accept_connection 3 returned 4
 19:26:32.897428 Read 93 bytes
 19:26:32.897437 Process 93 bytes request
 19:26:32.897451 Got request: GET /verifiedserver HTTP/1.1
 19:26:32.897460 Are-we-friendly question received
 19:26:32.897489 Wrote request (93 bytes) input to log/6/server.input
 19:26:32.897506 Identifying ourselves as friends
 19:26:32.897567 Response sent (56 bytes) and written to log/6/server.response
 19:26:32.897577 special request received, no persistency
 19:26:32.897586 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 37242 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 258
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file test258.txt
 foo-
 This is a moo-
 bar
=== End of file test258.txt
=== Start of file valgrind258
 ==94135== 
 ==94135== Process terminating with default action of signal 4 (SIGILL)
 ==94135==  Illegal opcode at address 0x492B75F
 ==94135==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94135==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94135==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94135==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94135==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94135==    by 0x49908EB: curl_version_info (version.c:600)
 ==94135==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94135==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94135==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94135==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind258
test 0256 [HTTP resume request over proxy with auth without server supporting it]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind256 ../src/curl -q --include --trace-ascii log/12/trace256 --trace-time -x http://127.0.0.1:40921 http://127.0.0.1:40921/want/256 -C - --no-include -o log/12/fewl256.txt -U daniel:stenberg > log/12/stdout256 2> log/12/stderr256

 256: CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind257 ../src/curl -q --output log/3/curl257.out  --include --trace-ascii log/3/trace257 --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:36161 --netrc-optional --netrc-file log/3/netrc257 > log/3/stdout257 2> log/3/stderr257
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind253 ../src/curl -q --output log/5/curl253.out  --include --trace-ascii log/5/trace253 --trace-time -g "ftp://[::1]:36385/" -P - > log/5/stdout253 2> log/5/stderr253
protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 256
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind256 ../src/curl -q --include --trace-ascii log/12/trace256 --trace-time -x http://127.0.0.1:40921 http://127.0.0.1:40921/want/256 -C - --no-include -o log/12/fewl256.txt -U daniel:stenberg > log/12/stdout256 2> log/12/stderr256
=== End of file commands.log
=== Start of file fewl256.txt
 This text is here to simulate a partly downloaded file to resume
 download on.
=== End of file fewl256.txt
=== Start of file http_server.log
 19:26:32.636547 ====> Client connect
 19:26:32.636583 accept_connection 3 returned 4
 19:26:32.648495 Read 93 bytes
 19:26:32.648522 Process 93 bytes request
 19:26:32.648534 Got request: GET /verifiedserver HTTP/1.1
 19:26:32.648542 Are-we-friendly question received
 19:26:32.648589 Wrote request (93 bytes) input to log/12/server.input
 19:26:32.648607 Identifying ourselves as friends
 19:26:32.648670 Response sent (56 bytes) and written to log/12/server.response
 19:26:32.648678 special request received, no persistency
 19:26:32.648684 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 40990 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 256
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind256
 ==94017== 
 ==94017== Process terminating with default action of signal 4 (SIGILL)
 ==94017==  Illegal opcode at address 0x492B75F
 ==94017==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94017==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94017==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94017==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94017==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94017==    by 0x49908EB: curl_version_info (version.c:600)
 ==94017==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94017==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94017==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94017==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind256
test 0257 [HTTP Location: following with --netrc-optional]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind257 ../src/curl -q --output log/3/curl257.out  --include --trace-ascii log/3/trace257 --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:36161 --netrc-optional --netrc-file log/3/netrc257 > log/3/stdout257 2> log/3/stderr257

 257: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 257
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind257 ../src/curl -q --output log/3/curl257.out  --include --trace-ascii log/3/trace257 --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:36161 --netrc-optional --netrc-file log/3/netrc257 > log/3/stdout257 2> log/3/stderr257
=== End of file commands.log
=== Start of file http_server.log
 19:26:33.775083 ====> Client connect
 19:26:33.775297 accept_connection 3 returned 4
 19:26:33.775322 Read 93 bytes
 19:26:33.775331 Process 93 bytes request
 19:26:33.775343 Got request: GET /verifiedserver HTTP/1.1
 19:26:33.775351 Are-we-friendly question received
 19:26:33.775378 Wrote request (93 bytes) input to log/3/server.input
 19:26:33.775394 Identifying ourselves as friends
 19:26:33.775456 Response sent (56 bytes) and written to log/3/server.response
 19:26:33.775465 special request received, no persistency
 19:26:33.775473 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 43464 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file netrc257
 machine supersite.com login user1 password passwd1
 machine anotherone.com login user2 password passwd2
=== End of file netrc257
=== Start of file server.cmd
 Testnum 257
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind257
 ==94084== 
 ==94084== Process terminating with default action of signal 4 (SIGILL)
 ==94084==  Illegal opcode at address 0x492B75F
 ==94084==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94084==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94084==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94084==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94084==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94084==    by 0x49908EB: curl_version_info (version.c:600)
 ==94084==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94084==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind257
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/5/server/ftp_ipv6_server.pid" --logfile "log/5/ftp_ipv6_server.log" --logdir "log/5" --portfile "log/5/server/ftp_ipv6_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]"
PINGPONG runs on port 36385 (log/5/server/ftp_ipv6_server.port)
RUN: FTP-IPv6 server is PID 93651 port 36385
* pid ftp-ipv6 => 93651 93651
test 0253 [FTP IPv6 dir list with EPRT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind253 ../src/curl -q --output log/5/curl253.out  --include --trace-ascii log/5/trace253 --trace-time -g "ftp://[::1]:36385/" -P - > log/5/stdout253 2> log/5/stderr253

 253: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 253
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind253 ../src/curl -q --output log/5/curl253.out  --include --trace-ascii log/5/trace253 --trace-time -g "ftp://[::1]:36385/" -P - > log/5/stdout253 2> log/5/stderr253
=== End of file commands.log
=== Start of file ftp_ipv6_server.log
 19:26:32.652422 FTP server listens on port IPv6/36385
 19:26:32.652569 logged pid 93651 in log/5/server/ftp_ipv6_server.pid
 19:26:32.652612 Awaiting input
=== End of file ftp_ipv6_server.log
=== Start of file ftp_ipv6_sockctrl.log
 19:26:32.25CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind252 ../src/curl -q --output log/9/curl252.out  --include --trace-ascii log/9/trace252 --trace-time -g "ftp://[::1]:41913/" > log/9/stdout252 2> log/9/stderr252
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind260 ../src/curl -q --output log/21/curl260.out  --include --trace-ascii log/21/trace260 --trace-time "http://127.0.0.1:39881?260" > log/21/stdout260 2> log/21/stderr260
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind261 ../src/curl -q --output log/17/curl261.out  --include --trace-ascii log/17/trace261 --trace-time ftp://127.0.0.1:46137/261 > log/17/stdout261 2> log/17/stderr261
3103 Running IPv6 version
 19:26:32.253228 Listening on port 36385
 19:26:32.253278 Wrote pid 93754 to log/5/server/ftp_ipv6_sockctrl.pid
 19:26:32.253314 Wrote port 36385 to log/5/server/ftp_ipv6_server.port
 19:26:32.255148 Received PING (on stdin)
=== End of file ftp_ipv6_sockctrl.log
=== Start of file server.cmd
 Testnum 253
=== End of file server.cmd
=== Start of file valgrind253
 ==94336== 
 ==94336== Process terminating with default action of signal 4 (SIGILL)
 ==94336==  Illegal opcode at address 0x492B75F
 ==94336==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94336==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94336==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94336==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94336==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94336==    by 0x49908EB: curl_version_info (version.c:600)
 ==94336==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94336==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94336==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94336==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind253
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/9/server/ftp_ipv6_server.pid" --logfile "log/9/ftp_ipv6_server.log" --logdir "log/9" --portfile "log/9/server/ftp_ipv6_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]"
PINGPONG runs on port 41913 (log/9/server/ftp_ipv6_server.port)
RUN: FTP-IPv6 server is PID 93636 port 41913
* pid ftp-ipv6 => 93636 93636
test 0252 [FTP IPv6 dir list PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind252 ../src/curl -q --output log/9/curl252.out  --include --trace-ascii log/9/trace252 --trace-time -g "ftp://[::1]:41913/" > log/9/stdout252 2> log/9/stderr252

 252: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 252
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind252 ../src/curl -q --output log/9/curl252.out  --include --trace-ascii log/9/trace252 --trace-time -g "ftp://[::1]:41913/" > log/9/stdout252 2> log/9/stderr252
=== End of file commands.log
=== Start of file ftp_ipv6_server.log
 19:26:32.635677 FTP server listens on port IPv6/41913
 19:26:32.635834 logged pid 93636 in log/9/server/ftp_ipv6_server.pid
 19:26:32.635879 Awaiting input
=== End of file ftp_ipv6_server.log
=== Start of file ftp_ipv6_sockctrl.log
 19:26:32.236213 Running IPv6 version
 19:26:32.236314 Listening on port 41913
 19:26:32.236361 Wrote pid 93728 to log/9/server/ftp_ipv6_sockctrl.pid
 19:26:32.236427 Wrote port 41913 to log/9/server/ftp_ipv6_server.port
 19:26:32.238519 Received PING (on stdin)
=== End of file ftp_ipv6_sockctrl.log
=== Start of file server.cmd
 Testnum 252
=== End of file server.cmd
=== Start of file valgrind252
 ==94324== 
 ==94324== Process terminating with default action of signal 4 (SIGILL)
 ==94324==  Illegal opcode at address 0x492B75F
 ==94324==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94324==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94324==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94324==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94324==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94324==    by 0x49908EB: curl_version_info (version.c:600)
 ==94324==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94324==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind252
test 0260 [HTTP GET URL without slash but with question mark]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind260 ../src/curl -q --output log/21/curl260.out  --include --trace-ascii log/21/trace260 --trace-time "http://127.0.0.1:39881?260" > log/21/stdout260 2> log/21/stderr260

 260: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 260
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind260 ../src/curl -q --output log/21/curl260.out  --include --trace-ascii log/21/trace260 --trace-time "http://127.0.0.1:39881?260" > log/21/stdout260 2> log/21/stderr260
=== End of file commands.log
=== Start of file http_server.log
 19:26:33.081929 ====> Client connect
 19:26:33.081975 accept_connection 3 returned 4
 19:26:33.081998 Read 93 bytes
 19:26:33.082008 Process 93 bytes request
 19:26:33.082021 Got request: GET /verifiedserver HTTP/1.1
 19:26:33.082029 Are-we-friendly question received
 19:26:33.082054 Wrote request (93 bytes) input to log/21/server.input
 19:26:33.082070 Identifying ourselves as friends
 19:26:33.082143 Response sent (56 bytes) and written to log/21/server.response
 19:26:33.082152 special request received, no persistency
 19:26:33.082160 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 56470 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 260
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind260
 ==94267== 
 ==94267== Process terminating with default action of signal 4 (SIGILL)
 ==94267==  Illegal opcode at address 0x492B75F
 ==94267==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94267==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94267==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94267==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94267==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94267==    by 0x49908EB: curl_version_info (version.c:600)
 ==94267==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94267==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94267==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94267==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind260
test 0261 [FTP RETR with 226 response code to TYPE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind261 ../src/curl -q --output log/17/curl261.out  --include --trace-ascii log/17/trace261 --trace-time ftp://127.0.0.1:46137/261 > log/17/stdout261 2> log/17/stderr261

 261: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 261
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind261 ../src/curl -q --output log/17/curl261.out  --include --trace-ascii log/17/trace261 --trace-time ftp://127.0.0.1:46137/261 > CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind255 ../src/curl -q --output log/10/curl255.out  --include --trace-ascii log/10/trace255 --trace-time -g "ftp://[::1]:36903/" -P - --disable-eprt > log/10/stdout255 2> log/10/stderr255
log/17/stdout261 2> log/17/stderr261
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:33.625377 ====> Client connect
 19:26:33.625634 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:33.626464 < "USER anonymous"
 19:26:33.626516 > "331 We are happy you popped in![CR][LF]"
 19:26:33.632137 < "PASS ftp@example.com"
 19:26:33.632196 > "230 Welcome you silly person[CR][LF]"
 19:26:33.642184 < "PWD"
 19:26:33.642252 > "257 "/" is current directory[CR][LF]"
 19:26:33.642513 < "EPSV"
 19:26:33.642549 ====> Passive DATA channel requested by client
 19:26:33.642565 DATA sockfilt for passive data channel starting...
 19:26:33.655590 DATA sockfilt for passive data channel started (pid 94396)
 19:26:33.655727 DATA sockfilt for passive data channel listens on port 38477
 19:26:33.655771 > "229 Entering Passive Mode (|||38477|)[CR][LF]"
 19:26:33.655788 Client has been notified that upcoming DATA connection is awaited on port 38477
 19:26:33.656066 Client connects to port 38477
 19:26:33.656100 ====> Client established passive DATA connection on port 38477
 19:26:33.656237 < "TYPE I"
 19:26:33.656273 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:33.656460 < "SIZE verifiedserver"
 19:26:33.656507 > "213 17[CR][LF]"
 19:26:33.656683 < "RETR verifiedserver"
 19:26:33.656718 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:33.656815 =====> Closing passive DATA connection...
 19:26:33.656833 Server disconnects passive DATA connection
 19:26:33.657075 Server disconnected passive DATA connection
 19:26:33.657105 DATA sockfilt for passive data channel quits (pid 94396)
 19:26:33.657389 DATA sockfilt for passive data channel quit (pid 94396)
 19:26:33.657415 =====> Closed passive DATA connection
 19:26:33.657474 > "226 File transfer complete[CR][LF]"
 19:26:33.702393 < "QUIT"
 19:26:33.702446 > "221 bye bye baby[CR][LF]"
 19:26:33.703757 MAIN sockfilt said DISC
 19:26:33.703803 ====> Client disconnected
 19:26:33.703893 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:33.227491 ====> Client connect
 19:26:33.229137 Received DATA (on stdin)
 19:26:33.229180 > 146 bytes data, server => client
 19:26:33.229193 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:33.229204 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:33.229213 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:33.229299 < 16 bytes data, client => server
 19:26:33.229313 'USER anonymous\r\n'
 19:26:33.231894 Received DATA (on stdin)
 19:26:33.231919 > 33 bytes data, server => client
 19:26:33.231930 '331 We are happy you popped in!\r\n'
 19:26:33.232000 < 22 bytes data, client => server
 19:26:33.232012 'PASS ftp@example.com\r\n'
 19:26:33.238575 Received DATA (on stdin)
 19:26:33.238606 > 30 bytes data, server => client
 19:26:33.238617 '230 Welcome you silly person\r\n'
 19:26:33.238718 < 5 bytes data, client => server
 19:26:33.238731 'PWD\r\n'
 19:26:33.245493 Received DATA (on stdin)
 19:26:33.245512 > 30 bytes data, server => client
 19:26:33.245523 '257 "/" is current directory\r\n'
 19:26:33.245630 < 6 bytes data, client => server
 19:26:33.245644 'EPSV\r\n'
 19:26:33.259027 Received DATA (on stdin)
 19:26:33.259044 > 39 bytes data, server => client
 19:26:33.259054 '229 Entering Passive Mode (|||38477|)\r\n'
 19:26:33.259352 < 8 bytes data, client => server
 19:26:33.259364 'TYPE I\r\n'
 19:26:33.259507 Received DATA (on stdin)
 19:26:33.259518 > 33 bytes data, server => client
 19:26:33.259528 '200 I modify TYPE as you wanted\r\n'
 19:26:33.259594 < 21 bytes data, client => server
 19:26:33.259606 'SIZE verifiedserver\r\n'
 19:26:33.259744 Received DATA (on stdin)
 19:26:33.259755 > 8 bytes data, server => client
 19:26:33.259764 '213 17\r\n'
 19:26:33.259823 < 21 bytes data, client => server
 19:26:33.259835 'RETR verifiedserver\r\n'
 19:26:33.260160 Received DATA (on stdin)
 19:26:33.260172 > 29 bytes data, server => client
 19:26:33.260182 '150 Binary junk (17 bytes).\r\n'
 19:26:33.260655 Received DATA (on stdin)
 19:26:33.260667 > 28 bytes data, server => client
 19:26:33.260706 '226 File transfer complete\r\n'
 19:26:33.305444 < 6 bytes data, client => server
 19:26:33.305479 'QUIT\r\n'
 19:26:33.305697 Received DATA (on stdin)
 19:26:33.305709 > 18 bytes data, server => client
 19:26:33.305719 '221 bye bye baby\r\n'
 19:26:33.306936 ====> Client disconnect
 19:26:33.307143 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:33.256177 Running IPv4 version
 19:26:33.256291 Listening on port 38477
 19:26:33.256330 Wrote pid 94396 to log/17/server/ftp_sockdata.pid
 19:26:33.258740 Received PING (on stdin)
 19:26:33.258864 Received PORT (on stdin)
 19:26:33.259245 ====> Client connect
 19:26:33.260070 Received DATA (on stdin)
 19:26:33.260082 > 17 bytes data, server => client
 19:26:33.260092 'WE ROOLZ: 84749\r\n'
 19:26:33.260122 Received DISC (on stdin)
 19:26:33.260133 ====> Client forcibly disconnected
 19:26:33.260349 Received QUIT (on stdin)
 19:26:33.260360 quits
 19:26:33.260431 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY TYPE 226 Kind of on the positive side
 Testnum 261
=== End of file server.cmd
=== Start of file valgrind261
 ==94464== 
 ==94464== Process terminating with default action of signal 4 (SIGILL)
 ==94464==  Illegal opcode at address 0x492B75F
 ==94464==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94464==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94464==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94464==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94464==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94464==    by 0x49908EB: curl_version_info (version.c:600)
 ==94464==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94464==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94464==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94464==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind261
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/10/server/ftp_ipv6_server.pid" --logfile "log/10/ftp_ipv6_server.log" --logdir "log/10" --portfile "log/10/server/ftp_ipv6_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]"
PINGPONG runs on port 36903 (log/10/server/ftp_ipv6_server.port)
RUN: FTP-IPv6 server is PID 93908 port 36903
* pid ftp-ipv6 => 93908 93908
test 0255 [FTP IPv6 dir list with EPRT and --disable-eprt]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind255 ../src/curl -q --output log/10/curl255.out  --include --trace-ascii log/10/trace255 --trace-time -g "ftp://[::1]:36903/" -P - --disable-eprt > log/10/stdout255 2> log/10/stderr255

 255: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 255
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind255 ../src/curl -q --output log/10/curl255.out  --include --trace-ascii log/10/trace255 --trace-time -g "ftp://[::1]:36903/" -P - --disable-eprt > log/10/stdout255 2> log/10/stderr255
=== End of file commands.log
=== Start of file ftp_ipv6_server.log
 19:26:32.858834 FTP server listens on port IPv6/36903
 19:26:32.859000 logged pid 93908 in log/10/server/ftp_ipv6_server.pid
 19:26:32.859040 Awaiting input
=== End of file ftp_ipv6_server.log
=== Start of file ftp_ipv6_sockctrl.log
 19:26:32.456414 Running IPv6 version
 19:26:32.456516 Listening on port 36903
 19:26:32.456557 Wrote pid 93964 to log/10/server/ftp_ipv6_sockctrl.pid
 19:26:32.456587 Wrote port 36903 to log/10/server/ftp_ipCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind254 ../src/curl -q --output log/22/curl254.out  --include --trace-ascii log/22/trace254 --trace-time -g "ftp://[::1]:36459/" --disable-epsv > log/22/stdout254 2> log/22/stderr254
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind262 ../src/curl -q --output log/15/curl262.out  --include --trace-ascii log/15/trace262 --trace-time http://127.0.0.1:40321/262 > log/15/stdout262 2> log/15/stderr262
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind264 ../src/curl -q --output log/7/curl264.out  --include --trace-ascii log/7/trace264 --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:40859 > log/7/stdout264 2> log/7/stderr264
v6_server.port
 19:26:32.456608 Received PING (on stdin)
=== End of file ftp_ipv6_sockctrl.log
=== Start of file server.cmd
 Testnum 255
=== End of file server.cmd
=== Start of file valgrind255
 ==94510== 
 ==94510== Process terminating with default action of signal 4 (SIGILL)
 ==94510==  Illegal opcode at address 0x492B75F
 ==94510==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94510==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94510==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94510==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94510==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94510==    by 0x49908EB: curl_version_info (version.c:600)
 ==94510==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94510==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94510==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94510==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind255
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/22/server/ftp_ipv6_server.pid" --logfile "log/22/ftp_ipv6_server.log" --logdir "log/22" --portfile "log/22/server/ftp_ipv6_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]"
PINGPONG runs on port 36459 (log/22/server/ftp_ipv6_server.port)
RUN: FTP-IPv6 server is PID 93790 port 36459
* pid ftp-ipv6 => 93790 93790
test 0254 [FTP IPv6 dir list PASV and --disable-epsv]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind254 ../src/curl -q --output log/22/curl254.out  --include --trace-ascii log/22/trace254 --trace-time -g "ftp://[::1]:36459/" --disable-epsv > log/22/stdout254 2> log/22/stderr254

 254: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 254
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind254 ../src/curl -q --output log/22/curl254.out  --include --trace-ascii log/22/trace254 --trace-time -g "ftp://[::1]:36459/" --disable-epsv > log/22/stdout254 2> log/22/stderr254
=== End of file commands.log
=== Start of file ftp_ipv6_server.log
 19:26:32.762125 FTP server listens on port IPv6/36459
 19:26:32.762409 logged pid 93790 in log/22/server/ftp_ipv6_server.pid
 19:26:32.762457 Awaiting input
=== End of file ftp_ipv6_server.log
=== Start of file ftp_ipv6_sockctrl.log
 19:26:32.356231 Running IPv6 version
 19:26:32.356326 Listening on port 36459
 19:26:32.356363 Wrote pid 93885 to log/22/server/ftp_ipv6_sockctrl.pid
 19:26:32.356393 Wrote port 36459 to log/22/server/ftp_ipv6_server.port
 19:26:32.361765 Received PING (on stdin)
=== End of file ftp_ipv6_sockctrl.log
=== Start of file server.cmd
 Testnum 254
=== End of file server.cmd
=== Start of file valgrind254
 ==94436== 
 ==94436== Process terminating with default action of signal 4 (SIGILL)
 ==94436==  Illegal opcode at address 0x492B75F
 ==94436==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94436==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94436==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94436==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94436==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94436==    by 0x49908EB: curl_version_info (version.c:600)
 ==94436==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94436==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94436==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94436==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind254
test 0262 [Reject HTTP response with binary zero in header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind262 ../src/curl -q --output log/15/curl262.out  --include --trace-ascii log/15/trace262 --trace-time http://127.0.0.1:40321/262 > log/15/stdout262 2> log/15/stderr262

 262: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 262
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind262 ../src/curl -q --output log/15/curl262.out  --include --trace-ascii log/15/trace262 --trace-time http://127.0.0.1:40321/262 > log/15/stdout262 2> log/15/stderr262
=== End of file commands.log
=== Start of file http_server.log
 19:26:34.482016 ====> Client connect
 19:26:34.482065 accept_connection 3 returned 4
 19:26:34.482088 Read 93 bytes
 19:26:34.482098 Process 93 bytes request
 19:26:34.482113 Got request: GET /verifiedserver HTTP/1.1
 19:26:34.482122 Are-we-friendly question received
 19:26:34.482155 Wrote request (93 bytes) input to log/15/server.input
 19:26:34.482178 Identifying ourselves as friends
 19:26:34.482278 Response sent (56 bytes) and written to log/15/server.response
 19:26:34.482294 special request received, no persistency
 19:26:34.482303 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 52236 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 262
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind262
 ==94637== 
 ==94637== Process terminating with default action of signal 4 (SIGILL)
 ==94637==  Illegal opcode at address 0x492B75F
 ==94637==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94637==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94637==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94637==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94637==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94637==    by 0x49908EB: curl_version_info (version.c:600)
 ==94637==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94637==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94637==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94637==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind262
test 0264 [HTTP with proxy string including http:// and user+password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind264 ../src/curl -q --output log/7/curl264.out  --include --trace-ascii log/7/trace264 --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:40859 > log/7/stdout264 2> log/7/stderr264

 264: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 264
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind264 ../src/curl -q --output log/7/curl264.out  --include --trace-ascii log/7/trace264 --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:40859 > log/7/stdout264 2> log/7/stderr2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind266 ../src/curl -q --output log/11/curl266.out  --include --trace-ascii log/11/trace266 --trace-time http://127.0.0.1:40989/266 -D log/11/heads266 > log/11/stdout266 2> log/11/stderr266
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind269 ../src/curl -q --output log/2/curl269.out  --include --trace-ascii log/2/trace269 --trace-time http://127.0.0.1:34531/269 --ignore-content-length > log/2/stdout269 2> log/2/stderr269
64
=== End of file commands.log
=== Start of file http_server.log
 19:26:33.772101 ====> Client connect
 19:26:33.772151 accept_connection 3 returned 4
 19:26:33.772181 Read 93 bytes
 19:26:33.772192 Process 93 bytes request
 19:26:33.772206 Got request: GET /verifiedserver HTTP/1.1
 19:26:33.772215 Are-we-friendly question received
 19:26:33.772249 Wrote request (93 bytes) input to log/7/server.input
 19:26:33.772270 Identifying ourselves as friends
 19:26:33.772369 Response sent (56 bytes) and written to log/7/server.response
 19:26:33.772384 special request received, no persistency
 19:26:33.772392 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 58964 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 264
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind264
 ==94723== 
 ==94723== Process terminating with default action of signal 4 (SIGILL)
 ==94723==  Illegal opcode at address 0x492B75F
 ==94723==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94723==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94723==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94723==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94723==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94723==    by 0x49908EB: curl_version_info (version.c:600)
 ==94723==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94723==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94723==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94723==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind264
test 0266 [HTTP GET with chunked Transfer-Encoding and chunked trailer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind266 ../src/curl -q --output log/11/curl266.out  --include --trace-ascii log/11/trace266 --trace-time http://127.0.0.1:40989/266 -D log/11/heads266 > log/11/stdout266 2> log/11/stderr266

 266: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 266
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind266 ../src/curl -q --output log/11/curl266.out  --include --trace-ascii log/11/trace266 --trace-time http://127.0.0.1:40989/266 -D log/11/heads266 > log/11/stdout266 2> log/11/stderr266
=== End of file commands.log
=== Start of file http_server.log
 19:26:33.756500 ====> Client connect
 19:26:33.756534 accept_connection 3 returned 4
 19:26:33.756554 Read 93 bytes
 19:26:33.756563 Process 93 bytes request
 19:26:33.756576 Got request: GET /verifiedserver HTTP/1.1
 19:26:33.756584 Are-we-friendly question received
 19:26:33.756609 Wrote request (93 bytes) input to log/11/server.input
 19:26:33.756625 Identifying ourselves as friends
 19:26:33.756682 Response sent (56 bytes) and written to log/11/server.response
 19:26:33.756691 special request received, no persistency
 19:26:33.756700 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 38490 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 266
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind266
 ==94712== 
 ==94712== Process terminating with default action of signal 4 (SIGILL)
 ==94712==  Illegal opcode at address 0x492B75F
 ==94712==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94712==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94712==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94712==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94712==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94712==    by 0x49908EB: curl_version_info (version.c:600)
 ==94712==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94712==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind266
test 0269 [HTTP --ignore-content-length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind269 ../src/curl -q --output log/2/curl269.out  --include --trace-ascii log/2/trace269 --trace-time http://127.0.0.1:34531/269 --ignore-content-length > log/2/stdout269 2> log/2/stderr269

 269: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 269
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind269 ../src/curl -q --output log/2/curl269.out  --include --trace-ascii log/2/trace269 --trace-time http://127.0.0.1:34531/269 --ignore-content-length > log/2/stdout269 2> log/2/stderr269
=== End of file commands.log
=== Start of file http_server.log
 19:26:35.237325 ====> Client connect
 19:26:35.237360 accept_connection 3 returned 4
 19:26:35.237381 Read 93 bytes
 19:26:35.237390 Process 93 bytes request
 19:26:35.237402 Got request: GET /verifiedserver HTTP/1.1
 19:26:35.237411 Are-we-friendly question received
 19:26:35.237439 Wrote request (93 bytes) input to log/2/server.input
 19:26:35.237455 Identifying ourselves as friends
 19:26:35.237521 Response sent (56 bytes) and written to log/2/server.response
 19:26:35.237530 special request received, no persistency
 19:26:35.237539 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 51510 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 269
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind269
 ==94876== 
 ==94876== Process terminating with default action of signal 4 (SIGILL)
 ==94876==  Illegal opcode at address 0x492B75F
 ==94876==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94876==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94876==    by 0x492B67B: curl_msnprintf (mCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind270 ../src/curl -q --output log/18/curl270.out  --include --trace-ascii log/18/trace270 --trace-time ftp://127.0.0.1:36115/270 --ftp-skip-pasv-ip --disable-epsv > log/18/stdout270 2> log/18/stderr270
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind268 ../src/curl -q --output log/24/curl268.out  --include --trace-ascii log/24/trace268 --trace-time http://127.0.0.1:38895/268 --variable hello@log/24/junk --expand-data {{hello:json}} > log/24/stdout268 2> log/24/stderr268
printf.c:1277)
 ==94876==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94876==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94876==    by 0x49908EB: curl_version_info (version.c:600)
 ==94876==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94876==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94876==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94876==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind269
test 0270 [FTP RETR PASV --ftp-skip-pasv-ip]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind270 ../src/curl -q --output log/18/curl270.out  --include --trace-ascii log/18/trace270 --trace-time ftp://127.0.0.1:36115/270 --ftp-skip-pasv-ip --disable-epsv > log/18/stdout270 2> log/18/stderr270

 270: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 270
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind270 ../src/curl -q --output log/18/curl270.out  --include --trace-ascii log/18/trace270 --trace-time ftp://127.0.0.1:36115/270 --ftp-skip-pasv-ip --disable-epsv > log/18/stdout270 2> log/18/stderr270
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:34.755656 ====> Client connect
 19:26:34.755928 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:34.759033 < "USER anonymous"
 19:26:34.759085 > "331 We are happy you popped in![CR][LF]"
 19:26:34.762214 < "PASS ftp@example.com"
 19:26:34.762257 > "230 Welcome you silly person[CR][LF]"
 19:26:34.762384 < "PWD"
 19:26:34.762421 > "257 "/" is current directory[CR][LF]"
 19:26:34.762565 < "EPSV"
 19:26:34.762598 ====> Passive DATA channel requested by client
 19:26:34.762616 DATA sockfilt for passive data channel starting...
 19:26:34.764529 DATA sockfilt for passive data channel started (pid 94961)
 19:26:34.764659 DATA sockfilt for passive data channel listens on port 46837
 19:26:34.764712 > "229 Entering Passive Mode (|||46837|)[CR][LF]"
 19:26:34.764730 Client has been notified that upcoming DATA connection is awaited on port 46837
 19:26:34.765062 Client connects to port 46837
 19:26:34.765096 ====> Client established passive DATA connection on port 46837
 19:26:34.765184 < "TYPE I"
 19:26:34.765221 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:34.765410 < "SIZE verifiedserver"
 19:26:34.765456 > "213 17[CR][LF]"
 19:26:34.766144 < "RETR verifiedserver"
 19:26:34.766185 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:34.766269 =====> Closing passive DATA connection...
 19:26:34.766284 Server disconnects passive DATA connection
 19:26:34.766514 Server disconnected passive DATA connection
 19:26:34.766538 DATA sockfilt for passive data channel quits (pid 94961)
 19:26:34.766752 DATA sockfilt for passive data channel quit (pid 94961)
 19:26:34.766773 =====> Closed passive DATA connection
 19:26:34.766799 > "226 File transfer complete[CR][LF]"
 19:26:34.809158 < "QUIT"
 19:26:34.809229 > "221 bye bye baby[CR][LF]"
 19:26:34.810595 MAIN sockfilt said DISC
 19:26:34.810639 ====> Client disconnected
 19:26:34.810738 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:34.355879 ====> Client connect
 19:26:34.362164 Received DATA (on stdin)
 19:26:34.362203 > 146 bytes data, server => client
 19:26:34.362215 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:34.362225 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:34.362234 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:34.362335 < 16 bytes data, client => server
 19:26:34.362346 'USER anonymous\r\n'
 19:26:34.365488 Received DATA (on stdin)
 19:26:34.365507 > 33 bytes data, server => client
 19:26:34.365518 '331 We are happy you popped in!\r\n'
 19:26:34.365586 < 22 bytes data, client => server
 19:26:34.365597 'PASS ftp@example.com\r\n'
 19:26:34.365730 Received DATA (on stdin)
 19:26:34.365743 > 30 bytes data, server => client
 19:26:34.365754 '230 Welcome you silly person\r\n'
 19:26:34.365805 < 5 bytes data, client => server
 19:26:34.365816 'PWD\r\n'
 19:26:34.365896 Received DATA (on stdin)
 19:26:34.365910 > 30 bytes data, server => client
 19:26:34.365920 '257 "/" is current directory\r\n'
 19:26:34.365982 < 6 bytes data, client => server
 19:26:34.365992 'EPSV\r\n'
 19:26:34.368235 Received DATA (on stdin)
 19:26:34.368253 > 39 bytes data, server => client
 19:26:34.368264 '229 Entering Passive Mode (|||46837|)\r\n'
 19:26:34.368466 < 8 bytes data, client => server
 19:26:34.368483 'TYPE I\r\n'
 19:26:34.368721 Received DATA (on stdin)
 19:26:34.368733 > 33 bytes data, server => client
 19:26:34.368744 '200 I modify TYPE as you wanted\r\n'
 19:26:34.368812 < 21 bytes data, client => server
 19:26:34.368826 'SIZE verifiedserver\r\n'
 19:26:34.368957 Received DATA (on stdin)
 19:26:34.368968 > 8 bytes data, server => client
 19:26:34.368977 '213 17\r\n'
 19:26:34.369030 < 21 bytes data, client => server
 19:26:34.369041 'RETR verifiedserver\r\n'
 19:26:34.369777 Received DATA (on stdin)
 19:26:34.369788 > 29 bytes data, server => client
 19:26:34.369797 '150 Binary junk (17 bytes).\r\n'
 19:26:34.370292 Received DATA (on stdin)
 19:26:34.370303 > 28 bytes data, server => client
 19:26:34.370312 '226 File transfer complete\r\n'
 19:26:34.412411 < 6 bytes data, client => server
 19:26:34.412449 'QUIT\r\n'
 19:26:34.412750 Received DATA (on stdin)
 19:26:34.412767 > 18 bytes data, server => client
 19:26:34.412778 '221 bye bye baby\r\n'
 19:26:34.414029 ====> Client disconnect
 19:26:34.414257 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:34.367664 Running IPv4 version
 19:26:34.367753 Listening on port 46837
 19:26:34.367803 Wrote pid 94961 to log/18/server/ftp_sockdata.pid
 19:26:34.367959 Received PING (on stdin)
 19:26:34.368055 Received PORT (on stdin)
 19:26:34.368507 ====> Client connect
 19:26:34.369855 Received DATA (on stdin)
 19:26:34.369867 > 17 bytes data, server => client
 19:26:34.369876 'WE ROOLZ: 85350\r\n'
 19:26:34.369901 Received DISC (on stdin)
 19:26:34.369911 ====> Client forcibly disconnected
 19:26:34.370037 Received QUIT (on stdin)
 19:26:34.370046 quits
 19:26:34.370107 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 PASVBADIP
 Testnum 270
=== End of file server.cmd
=== Start of file valgrind270
 ==95020== 
 ==95020== Process terminating with default action of signal 4 (SIGILL)
 ==95020==  Illegal opcode at address 0x492B75F
 ==95020==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95020==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95020==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95020==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95020==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95020==    by 0x49908EB: curl_version_info (version.c:600)
 ==95020==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95020==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95020==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95020==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind270
test 0268 [JSON encoding of Unicode string]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind268 ../src/curl -q --output log/24/curl268.out  --include --trace-ascii log/24/trace268 --trace-time http://127.0.0.1:38895/268 --variable hello@log/24/junk --expand-data {{hello:json}} > log/24/stdout268 2> log/24/stderr268

 268: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server gCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind273 ../src/curl -q --output log/1/curl273.out  --include --trace-ascii log/1/trace273 --trace-time http://127.0.0.1:38815/273 -u testuser:testpass --digest > log/1/stdout273 2> log/1/stderr273
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind272 ../src/curl -q --output log/16/curl272.out  --include --trace-ascii log/16/trace272 --trace-time ftp://127.0.0.1:40031/272 -z "2004 jan 1 12:12:12 UTC" > log/16/stdout272 2> log/16/stderr272
litch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 268
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind268 ../src/curl -q --output log/24/curl268.out  --include --trace-ascii log/24/trace268 --trace-time http://127.0.0.1:38895/268 --variable hello@log/24/junk --expand-data {{hello:json}} > log/24/stdout268 2> log/24/stderr268
=== End of file commands.log
=== Start of file http_server.log
 19:26:34.244355 ====> Client connect
 19:26:34.244390 accept_connection 3 returned 4
 19:26:34.244414 Read 93 bytes
 19:26:34.244425 Process 93 bytes request
 19:26:34.244437 Got request: GET /verifiedserver HTTP/1.1
 19:26:34.244447 Are-we-friendly question received
 19:26:34.244475 Wrote request (93 bytes) input to log/24/server.input
 19:26:34.244494 Identifying ourselves as friends
 19:26:34.244563 Response sent (56 bytes) and written to log/24/server.response
 19:26:34.244576 special request received, no persistency
 19:26:34.244584 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 47314 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file junk
 “
=== End of file junk
=== Start of file server.cmd
 Testnum 268
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind268
 ==94895== 
 ==94895== Process terminating with default action of signal 4 (SIGILL)
 ==94895==  Illegal opcode at address 0x492B75F
 ==94895==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==94895==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==94895==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==94895==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==94895==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==94895==    by 0x49908EB: curl_version_info (version.c:600)
 ==94895==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==94895==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==94895==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==94895==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind268
test 0273 [HTTP with two Digest authorization headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind273 ../src/curl -q --output log/1/curl273.out  --include --trace-ascii log/1/trace273 --trace-time http://127.0.0.1:38815/273 -u testuser:testpass --digest > log/1/stdout273 2> log/1/stderr273

 273: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 273
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind273 ../src/curl -q --output log/1/curl273.out  --include --trace-ascii log/1/trace273 --trace-time http://127.0.0.1:38815/273 -u testuser:testpass --digest > log/1/stdout273 2> log/1/stderr273
=== End of file commands.log
=== Start of file http_server.log
 19:26:35.446917 ====> Client connect
 19:26:35.446960 accept_connection 3 returned 4
 19:26:35.446984 Read 93 bytes
 19:26:35.446993 Process 93 bytes request
 19:26:35.447006 Got request: GET /verifiedserver HTTP/1.1
 19:26:35.447014 Are-we-friendly question received
 19:26:35.447038 Wrote request (93 bytes) input to log/1/server.input
 19:26:35.447053 Identifying ourselves as friends
 19:26:35.447141 Response sent (56 bytes) and written to log/1/server.response
 19:26:35.447149 special request received, no persistency
 19:26:35.447157 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 52204 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 273
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind273
 ==95048== 
 ==95048== Process terminating with default action of signal 4 (SIGILL)
 ==95048==  Illegal opcode at address 0x492B75F
 ==95048==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95048==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95048==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95048==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95048==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95048==    by 0x49908EB: curl_version_info (version.c:600)
 ==95048==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95048==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95048==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95048==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind273
test 0272 [FTP timed conditioned get file with identical time stamp]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind272 ../src/curl -q --output log/16/curl272.out  --include --trace-ascii log/16/trace272 --trace-time ftp://127.0.0.1:40031/272 -z "2004 jan 1 12:12:12 UTC" > log/16/stdout272 2> log/16/stderr272

 272: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 272
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind272 ../src/curl -q --output log/16/curl272.out  --include --trace-ascii log/16/trace272 --trace-time ftp://127.0.0.1:40031/272 -z "2004 jan 1 12:12:12 UTC" > log/16/stdout272 2> log/16/stderr272
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:34.872132 ====> Client connect
 19:26:34.872357 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:34.882260 < "USER anonymous"
 19:26:34.882314 > "331 We are happy you popped in![CR][LF]"
 19:26:34.888862 < "PASS ftp@example.com"
 19:26:34.888911 > "230 Welcome you silly person[CR][LF]"
 19:26:34.889110 < "PWD"
 19:26:34.889142 > "257 "/" is current directory[CR][LF]"
 19:26:34.889299 < "EPSV"
 19:26:34.889324 ====> Passive DATA channel requested by client
 19:26:34.889338 DATA sockfilt for passive data channel starting...
 19:26:34.902041 DATA sockfilt for passive data channel started (pid 95051)
 19:26:34.902540 DATA sockfilt for passive data channel listens on port 38559
 19:26:34.902599 > "229 Entering Passive Mode (|||38559|)[CR][LF]"
 19:26:34.902620 Client has been notified that upcoming DATA connection is awaited on port 38559
 19:26:34.902971 Client connects to port 38559
 19:26:34.9CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind274 ../src/curl -q --output log/19/curl274.out  --include --trace-ascii log/19/trace274 --trace-time http://127.0.0.1:46497/want/274 -L --max-redirs 0 > log/19/stdout274 2> log/19/stderr274
03003 ====> Client established passive DATA connection on port 38559
 19:26:34.903106 < "TYPE I"
 19:26:34.903143 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:34.903330 < "SIZE verifiedserver"
 19:26:34.903373 > "213 17[CR][LF]"
 19:26:34.903552 < "RETR verifiedserver"
 19:26:34.903590 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:34.903689 =====> Closing passive DATA connection...
 19:26:34.903709 Server disconnects passive DATA connection
 19:26:34.903970 Server disconnected passive DATA connection
 19:26:34.903999 DATA sockfilt for passive data channel quits (pid 95051)
 19:26:34.904291 DATA sockfilt for passive data channel quit (pid 95051)
 19:26:34.904317 =====> Closed passive DATA connection
 19:26:34.904348 > "226 File transfer complete[CR][LF]"
 19:26:34.952652 < "QUIT"
 19:26:34.952714 > "221 bye bye baby[CR][LF]"
 19:26:34.954093 MAIN sockfilt said DISC
 19:26:34.954134 ====> Client disconnected
 19:26:34.954227 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:34.475524 ====> Client connect
 19:26:34.475894 Received DATA (on stdin)
 19:26:34.475908 > 146 bytes data, server => client
 19:26:34.475919 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:34.475928 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:34.475937 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:34.485535 < 16 bytes data, client => server
 19:26:34.485570 'USER anonymous\r\n'
 19:26:34.485839 Received DATA (on stdin)
 19:26:34.485849 > 33 bytes data, server => client
 19:26:34.485858 '331 We are happy you popped in!\r\n'
 19:26:34.492204 < 22 bytes data, client => server
 19:26:34.492234 'PASS ftp@example.com\r\n'
 19:26:34.492436 Received DATA (on stdin)
 19:26:34.492447 > 30 bytes data, server => client
 19:26:34.492456 '230 Welcome you silly person\r\n'
 19:26:34.492551 < 5 bytes data, client => server
 19:26:34.492563 'PWD\r\n'
 19:26:34.492661 Received DATA (on stdin)
 19:26:34.492671 > 30 bytes data, server => client
 19:26:34.492680 '257 "/" is current directory\r\n'
 19:26:34.492739 < 6 bytes data, client => server
 19:26:34.492749 'EPSV\r\n'
 19:26:34.506157 Received DATA (on stdin)
 19:26:34.506175 > 39 bytes data, server => client
 19:26:34.506186 '229 Entering Passive Mode (|||38559|)\r\n'
 19:26:34.506405 < 8 bytes data, client => server
 19:26:34.506422 'TYPE I\r\n'
 19:26:34.506672 Received DATA (on stdin)
 19:26:34.506685 > 33 bytes data, server => client
 19:26:34.506696 '200 I modify TYPE as you wanted\r\n'
 19:26:34.506759 < 21 bytes data, client => server
 19:26:34.506772 'SIZE verifiedserver\r\n'
 19:26:34.506901 Received DATA (on stdin)
 19:26:34.506913 > 8 bytes data, server => client
 19:26:34.506923 '213 17\r\n'
 19:26:34.506983 < 21 bytes data, client => server
 19:26:34.506996 'RETR verifiedserver\r\n'
 19:26:34.507240 Received DATA (on stdin)
 19:26:34.507252 > 29 bytes data, server => client
 19:26:34.507263 '150 Binary junk (17 bytes).\r\n'
 19:26:34.507877 Received DATA (on stdin)
 19:26:34.507889 > 28 bytes data, server => client
 19:26:34.507900 '226 File transfer complete\r\n'
 19:26:34.555562 < 6 bytes data, client => server
 19:26:34.555608 'QUIT\r\n'
 19:26:34.556262 Received DATA (on stdin)
 19:26:34.556279 > 18 bytes data, server => client
 19:26:34.556289 '221 bye bye baby\r\n'
 19:26:34.557565 ====> Client disconnect
 19:26:34.557771 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:34.496717 Running IPv4 version
 19:26:34.496808 Listening on port 38559
 19:26:34.496852 Wrote pid 95051 to log/16/server/ftp_sockdata.pid
 19:26:34.502198 Received PING (on stdin)
 19:26:34.505941 Received PORT (on stdin)
 19:26:34.506446 ====> Client connect
 19:26:34.507326 Received DATA (on stdin)
 19:26:34.507342 > 17 bytes data, server => client
 19:26:34.507352 'WE ROOLZ: 84702\r\n'
 19:26:34.507385 Received DISC (on stdin)
 19:26:34.507396 ====> Client forcibly disconnected
 19:26:34.507533 Received QUIT (on stdin)
 19:26:34.507545 quits
 19:26:34.507630 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 272
=== End of file server.cmd
=== Start of file valgrind272
 ==95121== 
 ==95121== Process terminating with default action of signal 4 (SIGILL)
 ==95121==  Illegal opcode at address 0x492B75F
 ==95121==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95121==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95121==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95121==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95121==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95121==    by 0x49908EB: curl_version_info (version.c:600)
 ==95121==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95121==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95121==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95121==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind272
test 0274 [HTTP Location: following with --max-redirs 0]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind274 ../src/curl -q --output log/19/curl274.out  --include --trace-ascii log/19/trace274 --trace-time http://127.0.0.1:46497/want/274 -L --max-redirs 0 > log/19/stdout274 2> log/19/stderr274

 274: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 274
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind274 ../src/curl -q --output log/19/curl274.out  --include --trace-ascii log/19/trace274 --trace-time http://127.0.0.1:46497/want/274 -L --max-redirs 0 > log/19/stdout274 2> log/19/stderr274
=== End of file commands.log
=== Start of file http_server.log
 19:26:34.534423 ====> Client connect
 19:26:34.534457 accept_connection 3 returned 4
 19:26:34.534610 Read 93 bytes
 19:26:34.534623 Process 93 bytes request
 19:26:34.534639 Got request: GET /verifiedserver HTTP/1.1
 19:26:34.534648 Are-we-friendly question received
 19:26:34.534678 Wrote request (93 bytes) input to log/19/server.input
 19:26:34.534695 Identifying ourselves as friends
 19:26:34.534759 Response sent (56 bytes) and written to log/19/server.response
 19:26:34.534768 special request received, no persistency
 19:26:34.534777 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 47108 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 274
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind274
 ==95096== 
 ==95096== Process terminating with default action of signal 4 (SIGILL)
 ==95096==  Illegal opcode at address 0x492B75F
 ==95096==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95096==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95096==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95096==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95096==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95096==    by 0x49908EB: curl_version_info (version.c:600)
 ==95096==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95096==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95096==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95096==    by 0x4003269: maCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind263 ../src/curl -q --output log/20/curl263.out  --include --trace-ascii log/20/trace263 --trace-time -g -x "http://[::1]:32913" http://veryveryremotesite.com/263 > log/20/stdout263 2> log/20/stderr263
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind276 ../src/curl -q --output log/14/curl276.out  --include --trace-ascii log/14/trace276 --trace-time "http://127.0.0.1:45467/want?uri=http://anything/276?secondq/276" -L > log/14/stdout276 2> log/14/stderr276
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind277 ../src/curl -q --output log/4/curl277.out  --include --trace-ascii log/4/trace277 --trace-time http://127.0.0.1:35735/want/277 -F name=daniel -H "Content-Type: text/info" > log/4/stdout277 2> log/4/stderr277
in (tool_main.c:195)
=== End of file valgrind274
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/20/server/http_ipv6_server.pid" --logfile "log/20/http_ipv6_server.log" --logdir "log/20" --portfile log/20/server/http_ipv6_server.port --config log/20/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 94590 port 32913
* pid http-ipv6 => 94590 94590
test 0263 [HTTP-IPv6 GET with proxy specified using IPv6-numerical address]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind263 ../src/curl -q --output log/20/curl263.out  --include --trace-ascii log/20/trace263 --trace-time -g -x "http://[::1]:32913" http://veryveryremotesite.com/263 > log/20/stdout263 2> log/20/stderr263

 263: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 263
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind263 ../src/curl -q --output log/20/curl263.out  --include --trace-ascii log/20/trace263 --trace-time -g -x "http://[::1]:32913" http://veryveryremotesite.com/263 > log/20/stdout263 2> log/20/stderr263
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:26:33.522859 Running HTTP IPv6 version on port 32913
 19:26:33.578690 Wrote pid 94590 to log/20/server/http_ipv6_server.pid
 19:26:33.612050 Wrote port 32913 to log/20/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 263
=== End of file server.cmd
=== Start of file valgrind263
 ==95084== 
 ==95084== Process terminating with default action of signal 4 (SIGILL)
 ==95084==  Illegal opcode at address 0x492B75F
 ==95084==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95084==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95084==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95084==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95084==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95084==    by 0x49908EB: curl_version_info (version.c:600)
 ==95084==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95084==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind263
test 0276 [HTTP Location: following with multiple question marks in URLs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind276 ../src/curl -q --output log/14/curl276.out  --include --trace-ascii log/14/trace276 --trace-time "http://127.0.0.1:45467/want?uri=http://anything/276?secondq/276" -L > log/14/stdout276 2> log/14/stderr276

 276: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 276
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind276 ../src/curl -q --output log/14/curl276.out  --include --trace-ascii log/14/trace276 --trace-time "http://127.0.0.1:45467/want?uri=http://anything/276?secondq/276" -L > log/14/stdout276 2> log/14/stderr276
=== End of file commands.log
=== Start of file http_server.log
 19:26:34.875184 ====> Client connect
 19:26:34.875222 accept_connection 3 returned 4
 19:26:34.875246 Read 93 bytes
 19:26:34.875257 Process 93 bytes request
 19:26:34.875272 Got request: GET /verifiedserver HTTP/1.1
 19:26:34.875281 Are-we-friendly question received
 19:26:34.875313 Wrote request (93 bytes) input to log/14/server.input
 19:26:34.875332 Identifying ourselves as friends
 19:26:34.875404 Response sent (56 bytes) and written to log/14/server.response
 19:26:34.875416 special request received, no persistency
 19:26:34.875425 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 52984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 276
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind276
 ==95358== 
 ==95358== Process terminating with default action of signal 4 (SIGILL)
 ==95358==  Illegal opcode at address 0x492B75F
 ==95358==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95358==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95358==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95358==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95358==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95358==    by 0x49908EB: curl_version_info (version.c:600)
 ==95358==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95358==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind276
test 0277 [HTTP RFC1867-type formposting with custom Content-Type]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind277 ../src/curl -q --output log/4/curl277.out  --include --trace-ascii log/4/trace277 --trace-time http://127.0.0.1:35735/want/277 -F name=daniel -H "Content-Type: text/info" > log/4/stdout277 2> log/4/stderr277

 277: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 277
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind277 ../src/curl -q --output log/4/curl277.out  --include --trace-ascii log/4/trace277 --trace-time http://127.0.0.1:35735/want/277 -F name=daniel -H "Content-Type: text/info" > log/4/stdout277 2> log/4/stderr277
=== End of file commands.log
=== Start of file http_server.log
 19:26:35.937969 ====> Client connect
 19:26:35.938004 accept_connection 3 returned 4
 19:26:35.938026 Read 93 bytes
 19:26:35.938035 Process 93 bytes request
 19:26:35.938048 Got request: GET /verifiedserver HTTP/1.1
 19:26:35.938056 Are-we-friendly question received
 19:26:35.938081 Wrote request (93 bytes) input to log/4/server.input
 19:26:35.938096 Identifying ourselves as friends
 19:26:35.938161 Response sent (56 bytes) and written to log/4/server.response
 19:26:35.938170 special request received, no persistency
 19:26:35.938178 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 52934 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== EndCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind281 ../src/curl -q --output log/3/curl281.out  --include --trace-ascii log/3/trace281 --trace-time http://127.0.0.1:36161/we/want/281 -f -T log/3/test281.txt > log/3/stdout281 2> log/3/stderr281
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind271 ../src/curl -q --output log/13/curl271.out  --include --trace-ascii log/13/trace271 --trace-time tftp://127.0.0.1:52808//271 > log/13/stdout271 2> log/13/stderr271
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind279 ../src/curl -q --output log/6/curl279.out  --include --trace-ascii log/6/trace279 --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:33935 > log/6/stdout279 2> log/6/stderr279
 of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 277
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind277
 ==95376== 
 ==95376== Process terminating with default action of signal 4 (SIGILL)
 ==95376==  Illegal opcode at address 0x492B75F
 ==95376==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95376==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95376==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95376==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95376==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95376==    by 0x49908EB: curl_version_info (version.c:600)
 ==95376==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95376==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95376==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95376==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind277
test 0281 [HTTP PUT from file with 100 + 401 responses and -f without auth given]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind281 ../src/curl -q --output log/3/curl281.out  --include --trace-ascii log/3/trace281 --trace-time http://127.0.0.1:36161/we/want/281 -f -T log/3/test281.txt > log/3/stdout281 2> log/3/stderr281

 281: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 281
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind281 ../src/curl -q --output log/3/curl281.out  --include --trace-ascii log/3/trace281 --trace-time http://127.0.0.1:36161/we/want/281 -f -T log/3/test281.txt > log/3/stdout281 2> log/3/stderr281
=== End of file commands.log
=== Start of file http_server.log
 19:26:36.432465 ====> Client connect
 19:26:36.432502 accept_connection 3 returned 4
 19:26:36.432523 Read 93 bytes
 19:26:36.432532 Process 93 bytes request
 19:26:36.432544 Got request: GET /verifiedserver HTTP/1.1
 19:26:36.432552 Are-we-friendly question received
 19:26:36.432577 Wrote request (93 bytes) input to log/3/server.input
 19:26:36.432592 Identifying ourselves as friends
 19:26:36.432654 Response sent (56 bytes) and written to log/3/server.response
 19:26:36.432663 special request received, no persistency
 19:26:36.432671 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 43466 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 281
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file test281.txt
 Weird
      file
          to
    upload
=== End of file test281.txt
=== Start of file valgrind281
 ==95718== 
 ==95718== Process terminating with default action of signal 4 (SIGILL)
 ==95718==  Illegal opcode at address 0x492B75F
 ==95718==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95718==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95718==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95718==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95718==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95718==    by 0x49908EB: curl_version_info (version.c:600)
 ==95718==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95718==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95718==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95718==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind281
test 0300 SKIPPED: no stunnel
test 0301 SKIPPED: no stunnel
test 0302 SKIPPED: no stunnel
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/13/server/tftp_server.pid" --portfile "log/13/server/tftp_server.port" --logfile "log/13/tftp_server.log" --logdir "log/13" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 94937 port 52808
* pid tftp => 94937 94937
test 0271 [TFTP retrieve]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind271 ../src/curl -q --output log/13/curl271.out  --include --trace-ascii log/13/trace271 --trace-time tftp://127.0.0.1:52808//271 > log/13/stdout271 2> log/13/stderr271

 271: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 271
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind271 ../src/curl -q --output log/13/curl271.out  --include --trace-ascii log/13/trace271 --trace-time tftp://127.0.0.1:52808//271 > log/13/stdout271 2> log/13/stderr271
=== End of file commands.log
=== Start of file server.cmd
 Testnum 271
=== End of file server.cmd
=== Start of file tftp_server.log
 19:26:34.386214 Wrote pid 94937 to log/13/server/tftp_server.pid
 19:26:34.386290 Wrote port 52808 to log/13/server/tftp_server.port
 19:26:34.386304 Running IPv4 version on port UDP/52808
=== End of file tftp_server.log
=== Start of file valgrind271
 ==95599== 
 ==95599== Process terminating with default action of signal 4 (SIGILL)
 ==95599==  Illegal opcode at address 0x492B75F
 ==95599==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95599==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95599==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95599==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95599==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95599==    by 0x49908EB: curl_version_info (version.c:600)
 ==95599==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95599==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95599==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95599==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind271
test 0279 [HTTP with proxy string including http:// and user only]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind279 ../src/curl -q --output log/6/curl279.out  --include --trace-ascii log/6/trace279 --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:33935 > log/6/stdout279 2> log/6/stderr279

 279: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 279
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind279 ../src/curl -q --output log/6/curl279.out  --include --trace-ascii log/6/trace279 --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:33935 > log/6/stdout279 2> log/6/stderr279
=== End of file commands.log
=== Start of file http_server.log
 19:26:35.199108 ====> Client connCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind280 ../src/curl -q --output log/12/curl280.out  --include --trace-ascii log/12/trace280 --trace-time ftp://127.0.0.1:40417/280/ --ftp-alternative-to-user "USER replacement" > log/12/stdout280 2> log/12/stderr280
ect
 19:26:35.199156 accept_connection 3 returned 4
 19:26:35.199184 Read 93 bytes
 19:26:35.199194 Process 93 bytes request
 19:26:35.199207 Got request: GET /verifiedserver HTTP/1.1
 19:26:35.199215 Are-we-friendly question received
 19:26:35.199244 Wrote request (93 bytes) input to log/6/server.input
 19:26:35.199260 Identifying ourselves as friends
 19:26:35.199355 Response sent (56 bytes) and written to log/6/server.response
 19:26:35.199366 special request received, no persistency
 19:26:35.199374 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 37248 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 279
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind279
 ==95555== 
 ==95555== Process terminating with default action of signal 4 (SIGILL)
 ==95555==  Illegal opcode at address 0x492B75F
 ==95555==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95555==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95555==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95555==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95555==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95555==    by 0x49908EB: curl_version_info (version.c:600)
 ==95555==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95555==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind279
test 0280 [FTP --ftp-alternative-to-user on USER failure]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind280 ../src/curl -q --output log/12/curl280.out  --include --trace-ascii log/12/trace280 --trace-time ftp://127.0.0.1:40417/280/ --ftp-alternative-to-user "USER replacement" > log/12/stdout280 2> log/12/stderr280

 280: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 280
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind280 ../src/curl -q --output log/12/curl280.out  --include --trace-ascii log/12/trace280 --trace-time ftp://127.0.0.1:40417/280/ --ftp-alternative-to-user "USER replacement" > log/12/stdout280 2> log/12/stderr280
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:35.582042 ====> Client connect
 19:26:35.582291 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:35.582647 < "USER anonymous"
 19:26:35.582682 > "331 We are happy you popped in![CR][LF]"
 19:26:35.582854 < "PASS ftp@example.com"
 19:26:35.582881 > "230 Welcome you silly person[CR][LF]"
 19:26:35.583037 < "PWD"
 19:26:35.583072 > "257 "/" is current directory[CR][LF]"
 19:26:35.583245 < "EPSV"
 19:26:35.583270 ====> Passive DATA channel requested by client
 19:26:35.583284 DATA sockfilt for passive data channel starting...
 19:26:35.586730 DATA sockfilt for passive data channel started (pid 95551)
 19:26:35.586843 DATA sockfilt for passive data channel listens on port 46637
 19:26:35.586886 > "229 Entering Passive Mode (|||46637|)[CR][LF]"
 19:26:35.586902 Client has been notified that upcoming DATA connection is awaited on port 46637
 19:26:35.587139 Client connects to port 46637
 19:26:35.587167 ====> Client established passive DATA connection on port 46637
 19:26:35.587249 < "TYPE I"
 19:26:35.587277 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:35.587424 < "SIZE verifiedserver"
 19:26:35.587458 > "213 17[CR][LF]"
 19:26:35.587604 < "RETR verifiedserver"
 19:26:35.587636 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:35.587716 =====> Closing passive DATA connection...
 19:26:35.587733 Server disconnects passive DATA connection
 19:26:35.587933 Server disconnected passive DATA connection
 19:26:35.587957 DATA sockfilt for passive data channel quits (pid 95551)
 19:26:35.588174 DATA sockfilt for passive data channel quit (pid 95551)
 19:26:35.588195 =====> Closed passive DATA connection
 19:26:35.588220 > "226 File transfer complete[CR][LF]"
 19:26:35.632286 < "QUIT"
 19:26:35.633517 > "221 bye bye baby[CR][LF]"
 19:26:35.633555 MAIN sockfilt said DISC
 19:26:35.633622 ====> Client disconnected
 19:26:35.633719 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:36.182598 ====> Client connect
 19:26:36.185998 Received DATA (on stdin)
 19:26:36.186019 > 146 bytes data, server => client
 19:26:36.186030 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:36.186040 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:36.186049 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:36.186179 < 16 bytes data, client => server
 19:26:36.186193 'USER anonymous\r\n'
 19:26:36.186371 Received DATA (on stdin)
 19:26:36.186382 > 33 bytes data, server => client
 19:26:36.186392 '331 We are happy you popped in!\r\n'
 19:26:36.186448 < 22 bytes data, client => server
 19:26:36.186461 'PASS ftp@example.com\r\n'
 19:26:36.186567 Received DATA (on stdin)
 19:26:36.186577 > 30 bytes data, server => client
 19:26:36.186587 '230 Welcome you silly person\r\n'
 19:26:36.186637 < 5 bytes data, client => server
 19:26:36.186648 'PWD\r\n'
 19:26:36.186757 Received DATA (on stdin)
 19:26:36.186768 > 30 bytes data, server => client
 19:26:36.186778 '257 "/" is current directory\r\n'
 19:26:36.186843 < 6 bytes data, client => server
 19:26:36.186855 'EPSV\r\n'
 19:26:36.190593 Received DATA (on stdin)
 19:26:36.190608 > 39 bytes data, server => client
 19:26:36.190618 '229 Entering Passive Mode (|||46637|)\r\n'
 19:26:36.190751 < 8 bytes data, client => server
 19:26:36.190763 'TYPE I\r\n'
 19:26:36.190963 Received DATA (on stdin)
 19:26:36.190973 > 33 bytes data, server => client
 19:26:36.190982 '200 I modify TYPE as you wanted\r\n'
 19:26:36.191033 < 21 bytes data, client => server
 19:26:36.191042 'SIZE verifiedserver\r\n'
 19:26:36.191142 Received DATA (on stdin)
 19:26:36.191152 > 8 bytes data, server => client
 19:26:36.191161 '213 17\r\n'
 19:26:36.191211 < 21 bytes data, client => server
 19:26:36.191223 'RETR verifiedserver\r\n'
 19:26:36.191419 Received DATA (on stdin)
 19:26:36.191429 > 29 bytes data, server => client
 19:26:36.191439 '150 Binary junk (17 bytes).\r\n'
 19:26:36.191905 Received DATA (on stdin)
 19:26:36.191916 > 28 bytes data, server => client
 19:26:36.191926 '226 File transfer complete\r\n'
 19:26:36.235804 < 6 bytes data, client => server
 19:26:36.235833 'QUIT\r\n'
 19:26:36.236011 Received DATA (on stdin)
 19:26:36.236022 > 18 bytes data, server => client
 19:26:36.236039 '221 bye bye baby\r\n'
 19:26:36.237157 ====> Client disconnect
 19:26:36.237251 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:35.190080 Running IPv4 version
 19:26:35.190179 Listening on port 46637
 19:26:35.190214 Wrote pid 95551 to log/12/server/ftp_sockdata.pid
 19:26:35.190362 Received PING (on stdin)
 19:26:35.190442 Received PORT (on stdin)
 19:26:35.190780 ====> Client connect
 19:26:35.191463 Received DATA (on stdin)
 19:26:35.191474 > 17 bytes data, server => client
 19:26:35.191483 'WE ROOLZ: 85158\r\n'
 19:26:3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind278 ../src/curl -q --output log/23/curl278.out  --include --trace-ascii log/23/trace278 --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:44711 > log/23/stdout278 2> log/23/stderr278
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind282 ../src/curl -q --output log/5/curl282.out  --include --trace-ascii log/5/trace282 --trace-time http://127.0.0.1:37089/282 > log/5/stdout282 2> log/5/stderr282
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind287 ../src/curl -q --include --trace-ascii log/22/trace287 --trace-time http://test.remote.example.com.287:35989/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:35989 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/22/stdout287 2> log/22/stderr287
5.191503 Received DISC (on stdin)
 19:26:35.191513 ====> Client forcibly disconnected
 19:26:35.191651 Received QUIT (on stdin)
 19:26:35.191661 quits
 19:26:35.191724 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY USER 530 We don't like USER commands
 COUNT USER 1
 Testnum 280
=== End of file server.cmd
=== Start of file valgrind280
 ==95559== 
 ==95559== Process terminating with default action of signal 4 (SIGILL)
 ==95559==  Illegal opcode at address 0x492B75F
 ==95559==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95559==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95559==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95559==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95559==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95559==    by 0x49908EB: curl_version_info (version.c:600)
 ==95559==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95559==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind280
test 0278 [HTTP with proxy string including http:// and user+empty password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind278 ../src/curl -q --output log/23/curl278.out  --include --trace-ascii log/23/trace278 --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:44711 > log/23/stdout278 2> log/23/stderr278

 278: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 278
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind278 ../src/curl -q --output log/23/curl278.out  --include --trace-ascii log/23/trace278 --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:44711 > log/23/stdout278 2> log/23/stderr278
=== End of file commands.log
=== Start of file http_server.log
 19:26:34.971533 ====> Client connect
 19:26:34.971571 accept_connection 3 returned 4
 19:26:34.971594 Read 93 bytes
 19:26:34.971605 Process 93 bytes request
 19:26:34.971618 Got request: GET /verifiedserver HTTP/1.1
 19:26:34.971627 Are-we-friendly question received
 19:26:34.971655 Wrote request (93 bytes) input to log/23/server.input
 19:26:34.971672 Identifying ourselves as friends
 19:26:34.971740 Response sent (56 bytes) and written to log/23/server.response
 19:26:34.971751 special request received, no persistency
 19:26:34.971760 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 36310 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 278
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind278
 ==95400== 
 ==95400== Process terminating with default action of signal 4 (SIGILL)
 ==95400==  Illegal opcode at address 0x492B75F
 ==95400==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95400==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95400==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95400==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95400==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95400==    by 0x49908EB: curl_version_info (version.c:600)
 ==95400==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95400==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95400==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95400==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind278
test 0282 [HTTP GET with no response body or headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind282 ../src/curl -q --output log/5/curl282.out  --include --trace-ascii log/5/trace282 --trace-time http://127.0.0.1:37089/282 > log/5/stdout282 2> log/5/stderr282

 282: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 282
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind282 ../src/curl -q --output log/5/curl282.out  --include --trace-ascii log/5/trace282 --trace-time http://127.0.0.1:37089/282 > log/5/stdout282 2> log/5/stderr282
=== End of file commands.log
=== Start of file http_server.log
 19:26:35.442176 ====> Client connect
 19:26:35.442213 accept_connection 3 returned 4
 19:26:35.442236 Read 93 bytes
 19:26:35.442246 Process 93 bytes request
 19:26:35.442259 Got request: GET /verifiedserver HTTP/1.1
 19:26:35.442267 Are-we-friendly question received
 19:26:35.442293 Wrote request (93 bytes) input to log/5/server.input
 19:26:35.442310 Identifying ourselves as friends
 19:26:35.442376 Response sent (56 bytes) and written to log/5/server.response
 19:26:35.442387 special request received, no persistency
 19:26:35.442404 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 39816 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 282
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind282
 ==95742== 
 ==95742== Process terminating with default action of signal 4 (SIGILL)
 ==95742==  Illegal opcode at address 0x492B75F
 ==95742==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95742==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95742==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95742==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95742==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95742==    by 0x49908EB: curl_version_info (version.c:600)
 ==95742==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95742==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind282
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind291 ../src/curl -q --output log/2/curl291.out  --include --trace-ascii log/2/trace291 --trace-time ftp://127.0.0.1:38033/291 --max-filesize 100 > log/2/stdout291 2> log/2/stderr291
test 0287 [HTTP proxy CONNECT with custom User-Agent header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind287 ../src/curl -q --include --trace-ascii log/22/trace287 --trace-time http://test.remote.example.com.287:35989/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:35989 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/22/stdout287 2> log/22/stderr287

 287: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:26:38.625472912 +0000
+++ log/22/check-generated	2026-10-15 19:26:38.623805716 +0000
@@ -1,2 +0,0 @@
-HTTP/1.1 405 Method Not Allowed swsclose[CR][LF]
-[CR][LF]
== Contents of files in the log/22/ directory after test 287
=== Start of file check-expected
 HTTP/1.1 405 Method Not Allowed swsclose[CR][LF]
 [CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind287 ../src/curl -q --include --trace-ascii log/22/trace287 --trace-time http://test.remote.example.com.287:35989/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:35989 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/22/stdout287 2> log/22/stderr287
=== End of file commands.log
=== Start of file http_server.log
 19:26:36.039321 ====> Client connect
 19:26:36.039362 accept_connection 3 returned 4
 19:26:36.039385 Read 93 bytes
 19:26:36.039393 Process 93 bytes request
 19:26:36.039406 Got request: GET /verifiedserver HTTP/1.1
 19:26:36.039415 Are-we-friendly question received
 19:26:36.039445 Wrote request (93 bytes) input to log/22/server.input
 19:26:36.039462 Identifying ourselves as friends
 19:26:36.039538 Response sent (56 bytes) and written to log/22/server.response
 19:26:36.039551 special request received, no persistency
 19:26:36.039559 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 40870 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 287
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind287
 ==95942== 
 ==95942== Process terminating with default action of signal 4 (SIGILL)
 ==95942==  Illegal opcode at address 0x492B75F
 ==95942==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95942==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95942==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95942==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95942==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95942==    by 0x49908EB: curl_version_info (version.c:600)
 ==95942==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95942==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95942==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95942==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind287
test 0291 [FTP download maximum filesize not exceeded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind291 ../src/curl -q --output log/2/curl291.out  --include --trace-ascii log/2/trace291 --trace-time ftp://127.0.0.1:38033/291 --max-filesize 100 > log/2/stdout291 2> log/2/stderr291

 291: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 291
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind291 ../src/curl -q --output log/2/curl291.out  --include --trace-ascii log/2/trace291 --trace-time ftp://127.0.0.1:38033/291 --max-filesize 100 > log/2/stdout291 2> log/2/stderr291
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:36.859817 ====> Client connect
 19:26:36.860023 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:36.860305 < "USER anonymous"
 19:26:36.860340 > "331 We are happy you popped in![CR][LF]"
 19:26:36.860514 < "PASS ftp@example.com"
 19:26:36.860541 > "230 Welcome you silly person[CR][LF]"
 19:26:36.860704 < "PWD"
 19:26:36.860739 > "257 "/" is current directory[CR][LF]"
 19:26:36.860911 < "EPSV"
 19:26:36.860936 ====> Passive DATA channel requested by client
 19:26:36.860951 DATA sockfilt for passive data channel starting...
 19:26:36.868747 DATA sockfilt for passive data channel started (pid 96140)
 19:26:36.868882 DATA sockfilt for passive data channel listens on port 33619
 19:26:36.868925 > "229 Entering Passive Mode (|||33619|)[CR][LF]"
 19:26:36.868943 Client has been notified that upcoming DATA connection is awaited on port 33619
 19:26:36.869192 Client connects to port 33619
 19:26:36.869224 ====> Client established passive DATA connection on port 33619
 19:26:36.869344 < "TYPE I"
 19:26:36.869382 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:36.869541 < "SIZE verifiedserver"
 19:26:36.869575 > "213 17[CR][LF]"
 19:26:36.869721 < "RETR verifiedserver"
 19:26:36.869754 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:36.869841 =====> Closing passive DATA connection...
 19:26:36.869856 Server disconnects passive DATA connection
 19:26:36.869964 Server disconnected passive DATA connection
 19:26:36.869983 DATA sockfilt for passive data channel quits (pid 96140)
 19:26:36.870207 DATA sockfilt for passive data channel quit (pid 96140)
 19:26:36.870231 =====> Closed passive DATA connection
 19:26:36.870255 > "226 File transfer complete[CR][LF]"
 19:26:36.922171 < "QUIT"
 19:26:36.922238 > "221 bye bye baby[CR][LF]"
 19:26:36.923630 MAIN sockfilt said DISC
 19:26:36.923664 ====> Client disconnected
 19:26:36.923741 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:36.463668 ====> Client connect
 19:26:36.464024 Received DATA (on stdin)
 19:26:36.464039 > 146 bytes data, server => client
 19:26:36.464050 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:36.464060 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:36.464069 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:36.464143 < 16 bytes data, client => server
 19:26:36.464156 'USER anonymous\r\n'
 19:26:36.464328 Received DATA (on stdin)
 19:26:36.464339 > 33 bytes data, server => client
 19:26:36.464349 '331 We are happy you popped in!\r\n'
 19:26:36.464406 < 22 bytes data, client => server
 19:26:36.464418 'PASS ftp@example.com\r\n'
 19:26:36.464525 Received DATA (on stdin)
 19:26:36.464536 > 30 bytes data, server => client
 19:26:36.464546 '230 Welcome you silly person\r\n'
 19:26:36.464599 < 5 bytes data, client => server
 19:26:36.464611 'PWD\r\n'
 19:26:36.464723 Received DATA (on stdin)
 19:26:36.464735 > 30 bytes data, server => client
 19:26:36.464746 '257 "/" is current directory\r\n'
 19:26:36.464809 < 6 bytes data, client => server
 19:26:36.464821 'EPSV\r\n'
 19:26:36.472935 Received DATA (on stdin)
 19:26:36.472951 > 39 bytes data, server => client
 19:26:36.472961 '229 Entering Passive Mode (|||33619|)\r\n'
 19:26:36.473226 < 8 bytes data, client => server
 19:26:36.473236 'TYPE I\r\n'
 19:26:36.473367 Received DATA (on stdin)
 19:26:36.473377 > 33 byteCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind275 ../src/curl -q --output log/8/curl275.out  --include --trace-ascii log/8/trace275 --trace-time http://remotesite.com.275:44467/we/want/that/page/275 -p -x 127.0.0.1:33431 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:44467/we/want/that/page/275 > log/8/stdout275 2> log/8/stderr275
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind283 ../src/curl -q --output log/9/curl283.out  --include --trace-ascii log/9/trace283 --trace-time tftp://127.0.0.1:38065//invalid-file --tftp-blksize 1024 > log/9/stdout283 2> log/9/stderr283
s data, server => client
 19:26:36.473387 '200 I modify TYPE as you wanted\r\n'
 19:26:36.473441 < 21 bytes data, client => server
 19:26:36.473452 'SIZE verifiedserver\r\n'
 19:26:36.473560 Received DATA (on stdin)
 19:26:36.473570 > 8 bytes data, server => client
 19:26:36.473579 '213 17\r\n'
 19:26:36.473628 < 21 bytes data, client => server
 19:26:36.473638 'RETR verifiedserver\r\n'
 19:26:36.474241 Received DATA (on stdin)
 19:26:36.474252 > 29 bytes data, server => client
 19:26:36.474262 '150 Binary junk (17 bytes).\r\n'
 19:26:36.474283 Received DATA (on stdin)
 19:26:36.474291 > 28 bytes data, server => client
 19:26:36.474300 '226 File transfer complete\r\n'
 19:26:36.522827 < 6 bytes data, client => server
 19:26:36.522855 'QUIT\r\n'
 19:26:36.526267 Received DATA (on stdin)
 19:26:36.526291 > 18 bytes data, server => client
 19:26:36.526302 '221 bye bye baby\r\n'
 19:26:36.527571 ====> Client disconnect
 19:26:36.527740 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:36.466543 Running IPv4 version
 19:26:36.466615 Listening on port 33619
 19:26:36.466652 Wrote pid 96140 to log/2/server/ftp_sockdata.pid
 19:26:36.472658 Received PING (on stdin)
 19:26:36.472774 Received PORT (on stdin)
 19:26:36.473130 ====> Client connect
 19:26:36.473841 Received DATA (on stdin)
 19:26:36.473853 > 17 bytes data, server => client
 19:26:36.473862 'WE ROOLZ: 85208\r\n'
 19:26:36.473887 Received DISC (on stdin)
 19:26:36.473899 ====> Client forcibly disconnected
 19:26:36.473973 Received QUIT (on stdin)
 19:26:36.473983 quits
 19:26:36.474044 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 291
=== End of file server.cmd
=== Start of file valgrind291
 ==96187== 
 ==96187== Process terminating with default action of signal 4 (SIGILL)
 ==96187==  Illegal opcode at address 0x492B75F
 ==96187==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96187==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96187==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96187==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96187==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96187==    by 0x49908EB: curl_version_info (version.c:600)
 ==96187==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96187==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96187==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96187==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind291
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/8/server/http2_server.pid" --logfile "log/8/http2_server.log" --logdir "log/8" --portfile log/8/server/http2_server.port --config log/8/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 95309 port 33431
* pid http-proxy => 95309 95309
test 0275 [HTTP CONNECT with proxytunnel getting two URLs from the same host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind275 ../src/curl -q --output log/8/curl275.out  --include --trace-ascii log/8/trace275 --trace-time http://remotesite.com.275:44467/we/want/that/page/275 -p -x 127.0.0.1:33431 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:44467/we/want/that/page/275 > log/8/stdout275 2> log/8/stderr275

 275: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 275
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind275 ../src/curl -q --output log/8/curl275.out  --include --trace-ascii log/8/trace275 --trace-time http://remotesite.com.275:44467/we/want/that/page/275 -p -x 127.0.0.1:33431 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:44467/we/want/that/page/275 > log/8/stdout275 2> log/8/stderr275
=== End of file commands.log
=== Start of file http2_server.log
 19:26:35.839503 Run as proxy, CONNECT to host 127.0.0.1
 19:26:35.839636 Running HTTP IPv4 version on port 33431
 19:26:35.839681 Wrote pid 95309 to log/8/server/http2_server.pid
 19:26:35.839713 Wrote port 33431 to log/8/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:26:34.768982 ====> Client connect
 19:26:34.769027 accept_connection 3 returned 4
 19:26:34.769052 Read 93 bytes
 19:26:34.769061 Process 93 bytes request
 19:26:34.769074 Got request: GET /verifiedserver HTTP/1.1
 19:26:34.769083 Are-we-friendly question received
 19:26:34.769108 Wrote request (93 bytes) input to log/8/server.input
 19:26:34.769124 Identifying ourselves as friends
 19:26:34.769211 Response sent (56 bytes) and written to log/8/server.response
 19:26:34.769221 special request received, no persistency
 19:26:34.769229 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 49500 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 275
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind275
 ==95856== 
 ==95856== Process terminating with default action of signal 4 (SIGILL)
 ==95856==  Illegal opcode at address 0x492B75F
 ==95856==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95856==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95856==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95856==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95856==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95856==    by 0x49908EB: curl_version_info (version.c:600)
 ==95856==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95856==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95856==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95856==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind275
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/9/server/tftp_server.pid" --portfile "log/9/server/tftp_server.port" --logfile "log/9/tftp_server.log" --logdir "log/9" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 95851 port 38065
* pid tftp => 95851 95851
test 0283 [TFTP retrieve on invalid file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind283 ../src/curl -q --output log/9/curl283.out  --include --trace-ascii log/9/trace283 --trace-time tftp://127.0.0.1:38065//invalid-file --tftp-blksize 1024 > log/9/stdout283 2> log/9/stderr283

 283: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 283
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind283 ../src/curl -q --output log/9/curl283.out  --include --trace-ascii log/9/trace283 --trace-time tftp://127.0.0.1:38065//invalid-file --tftp-blksize 1024 > log/9/stdout283 2> log/9/stderr283
=== End of file commands.log
=== SCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind288 ../src/curl -q --output log/15/curl288.out  --trace-ascii log/15/trace288 --trace-time file://localhost/startdir/src/build-curl/tests/log/15/test288.txt > log/15/stdout288 2> log/15/stderr288
tart of file server.cmd
 Testnum 283
=== End of file server.cmd
=== Start of file tftp_server.log
 19:26:36.834569 Wrote pid 95851 to log/9/server/tftp_server.pid
 19:26:36.834730 Wrote port 38065 to log/9/server/tftp_server.port
 19:26:36.834742 Running IPv4 version on port UDP/38065
=== End of file tftp_server.log
=== Start of file valgrind283
 ==96425== 
 ==96425== Process terminating with default action of signal 4 (SIGILL)
 ==96425==  Illegal opcode at address 0x492B75F
 ==96425==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96425==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96425==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96425==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96425==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96425==    by 0x49908EB: curl_version_info (version.c:600)
 ==96425==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96425==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96425==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96425==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind283
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind284 ../src/curl -q --output log/21/curl284.out  --include --trace-ascii log/21/trace284 --trace-time tftp://127.0.0.1:56512//284 > log/21/stdout284 2> log/21/stderr284
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind295 ../src/curl -q --output log/16/curl295.out  --include --trace-ascii log/16/trace295 --trace-time ftp://127.0.0.1:40031/295/ > log/16/stdout295 2> log/16/stderr295
setenv all_proxy = http://fake:user@127.0.0.1:47/
test 0288 [file:// with (unsupported) proxy, authentication and range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind288 ../src/curl -q --output log/15/curl288.out  --trace-ascii log/15/trace288 --trace-time file://localhost/startdir/src/build-curl/tests/log/15/test288.txt > log/15/stdout288 2> log/15/stderr288

 288: data FAILED:
--- log/15/check-expected	2026-10-15 19:26:39.172830015 +0000
+++ log/15/check-generated	2026-10-15 19:26:39.170346287 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/15/ directory after test 288
=== Start of file check-expected
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind288 ../src/curl -q --output log/15/curl288.out  --trace-ascii log/15/trace288 --trace-time file://localhost/startdir/src/build-curl/tests/log/15/test288.txt > log/15/stdout288 2> log/15/stderr288
=== End of file commands.log
=== Start of file server.cmd
 Testnum 288
=== End of file server.cmd
=== Start of file test288.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test288.txt
=== Start of file valgrind288
 ==95909== 
 ==95909== Process terminating with default action of signal 4 (SIGILL)
 ==95909==  Illegal opcode at address 0x492B75F
 ==95909==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==95909==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==95909==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==95909==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==95909==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==95909==    by 0x49908EB: curl_version_info (version.c:600)
 ==95909==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==95909==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==95909==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==95909==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind288
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/21/server/tftp_server.pid" --portfile "log/21/server/tftp_server.port" --logfile "log/21/tftp_server.log" --logdir "log/21" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 95850 port 56512
* pid tftp => 95850 95850
test 0284 [TFTP retrieve of boundary case 512-byte file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind284 ../src/curl -q --output log/21/curl284.out  --include --trace-ascii log/21/trace284 --trace-time tftp://127.0.0.1:56512//284 > log/21/stdout284 2> log/21/stderr284

 284: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 284
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind284 ../src/curl -q --output log/21/curl284.out  --include --trace-ascii log/21/trace284 --trace-time tftp://127.0.0.1:56512//284 > log/21/stdout284 2> log/21/stderr284
=== End of file commands.log
=== Start of file server.cmd
 Testnum 284
=== End of file server.cmd
=== Start of file tftp_server.log
 19:26:36.828749 Wrote pid 95850 to log/21/server/tftp_server.pid
 19:26:36.828909 Wrote port 56512 to log/21/server/tftp_server.port
 19:26:36.828922 Running IPv4 version on port UDP/56512
=== End of file tftp_server.log
=== Start of file valgrind284
 ==96422== 
 ==96422== Process terminating with default action of signal 4 (SIGILL)
 ==96422==  Illegal opcode at address 0x492B75F
 ==96422==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96422==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96422==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96422==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96422==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96422==    by 0x49908EB: curl_version_info (version.c:600)
 ==96422==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96422==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96422==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96422==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind284
test 0295 [FTP ACCT request without --ftp-account]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind295 ../src/curl -q --output log/16/curl295.out  --include --trace-ascii log/16/trace295 --trace-time ftp://127.0.0.1:40031/295/ > log/16/stdout295 2> log/16/stderr295

 295: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 295
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind295 ../src/curl -q --output log/16/curl295.out  --include --trace-ascii log/16/trace295 --trace-time ftp://127.0.0.1:40031/295/ > log/16/stdout295 2> log/16/stderr295
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:37.108810 ====> Client connect
 19:26:37.109033 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:37.118927 < "USER anonymous"
 19:26:37.118990 > "331 We are happy you popped in![CR][LF]"
 19:26:37.119279 < "PASS ftp@example.com"
 19:26:37.119322 > "230 Welcome you silly person[CR][LF]"
 19:26:37.119529 < "PWD"
 19:26:37.119573 > "257 "/" is current directory[CR][LF]"
 19:26:37.119782 < "EPSV"
 19:26:37.119816 ====> Passive DATA channel requested by client
 19:26:37.119832 DATA sockfilt for passive data channel starting...
 19:26:37.132657 DATA sockfilt for passive data channel started (pid 96330)
 19:26:37.132854 DATA sockfilt for passive data channel listens on port 36669
 19:26:37.132920 > "229 Entering Passive Mode (|||36669|)[CR][LF]"
 19:26:37.132947 Client has been notified that upcoming DATA connection is awaited on port 36669
 19:26:37.133287 Client connects to port 36669
 19:26:37.133322 ====> Client established passive DATA connection on port 36669
 19:26:37.133478 < "TYPE I"
 19:26:37.133518 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:37.133707 < "SIZE verifiedserver"
 19:26:37.133754 > "213 17[CR][LF]"
 19:26:37.133939 < "RETR verifiedserver"
 19:26:37.133980 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:37.134091 =====> Closing passive DATA connection...
 19:26:37.134116 Server disconnects passive DATA connection
 19:26:37.134246 Server disconnected passive DATA connection
 19:26:37.134275 DATA sockfilt for passive data channel quits (pid 96330)
 19:26:37.134650 DATA sockfilt for passive data channel quit (pid 96330)
 19:26:37.134677 =====> Closed passive DATA connection
 19:26:37.134711 > "226 File transfer complete[CR][LF]"
 19:26:37.178978 < "QUIT"
 19:26:37.179047 > "221 bye bye baby[CR][LF]"
 19:26:37.180311 MAIN sockfilt said DISC
 19:26:37.180343 ====> Client disconnected
 19:26:37.180423 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:36.712727 ====> Client connect
 19:26:36.713106 Received DATA (on stdin)
 19:26:36.713127 > 146 bytes data, server => client
 19:26:36.713140 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:36.713150 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind290 ../src/curl -q --output log/11/curl290.out  --include --trace-ascii log/11/trace290 --trace-time ftp://127.0.0.1:37735/290 --max-filesize 30 > log/11/stdout290 2> log/11/stderr290
  _ {| |___\r\n'
 19:26:36.713159 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:36.722725 < 16 bytes data, client => server
 19:26:36.722759 'USER anonymous\r\n'
 19:26:36.723048 Received DATA (on stdin)
 19:26:36.723065 > 33 bytes data, server => client
 19:26:36.723075 '331 We are happy you popped in!\r\n'
 19:26:36.723188 < 22 bytes data, client => server
 19:26:36.723206 'PASS ftp@example.com\r\n'
 19:26:36.723373 Received DATA (on stdin)
 19:26:36.723386 > 30 bytes data, server => client
 19:26:36.723397 '230 Welcome you silly person\r\n'
 19:26:36.723465 < 5 bytes data, client => server
 19:26:36.723479 'PWD\r\n'
 19:26:36.723622 Received DATA (on stdin)
 19:26:36.723635 > 30 bytes data, server => client
 19:26:36.723645 '257 "/" is current directory\r\n'
 19:26:36.723722 < 6 bytes data, client => server
 19:26:36.723738 'EPSV\r\n'
 19:26:36.737012 Received DATA (on stdin)
 19:26:36.737032 > 39 bytes data, server => client
 19:26:36.737043 '229 Entering Passive Mode (|||36669|)\r\n'
 19:26:36.737396 < 8 bytes data, client => server
 19:26:36.737410 'TYPE I\r\n'
 19:26:36.737574 Received DATA (on stdin)
 19:26:36.737587 > 33 bytes data, server => client
 19:26:36.737598 '200 I modify TYPE as you wanted\r\n'
 19:26:36.737658 < 21 bytes data, client => server
 19:26:36.737672 'SIZE verifiedserver\r\n'
 19:26:36.737806 Received DATA (on stdin)
 19:26:36.737819 > 8 bytes data, server => client
 19:26:36.737829 '213 17\r\n'
 19:26:36.737888 < 21 bytes data, client => server
 19:26:36.737903 'RETR verifiedserver\r\n'
 19:26:36.738609 Received DATA (on stdin)
 19:26:36.738626 > 29 bytes data, server => client
 19:26:36.738638 '150 Binary junk (17 bytes).\r\n'
 19:26:36.738764 Received DATA (on stdin)
 19:26:36.738781 > 28 bytes data, server => client
 19:26:36.738791 '226 File transfer complete\r\n'
 19:26:36.782852 < 6 bytes data, client => server
 19:26:36.782880 'QUIT\r\n'
 19:26:36.783110 Received DATA (on stdin)
 19:26:36.783122 > 18 bytes data, server => client
 19:26:36.783132 '221 bye bye baby\r\n'
 19:26:36.784313 ====> Client disconnect
 19:26:36.784481 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:37.726405 Running IPv4 version
 19:26:37.726490 Listening on port 36669
 19:26:37.726538 Wrote pid 96330 to log/16/server/ftp_sockdata.pid
 19:26:37.736593 Received PING (on stdin)
 19:26:37.736777 Received PORT (on stdin)
 19:26:37.737278 ====> Client connect
 19:26:37.738171 Received DATA (on stdin)
 19:26:37.738184 > 17 bytes data, server => client
 19:26:37.738195 'WE ROOLZ: 84702\r\n'
 19:26:37.738224 Received DISC (on stdin)
 19:26:37.738239 ====> Client forcibly disconnected
 19:26:37.738333 Received QUIT (on stdin)
 19:26:37.738345 quits
 19:26:37.738432 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 332 Give me an ACCT now
 REPLY PWD 530 No ACCT, go away
 Testnum 295
=== End of file server.cmd
=== Start of file valgrind295
 ==96399== 
 ==96399== Process terminating with default action of signal 4 (SIGILL)
 ==96399==  Illegal opcode at address 0x492B75F
 ==96399==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96399==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96399==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96399==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96399==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96399==    by 0x49908EB: curl_version_info (version.c:600)
 ==96399==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96399==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96399==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96399==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind295
test 0290 [FTP download maximum filesize exceeded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind290 ../src/curl -q --output log/11/curl290.out  --include --trace-ascii log/11/trace290 --trace-time ftp://127.0.0.1:37735/290 --max-filesize 30 > log/11/stdout290 2> log/11/stderr290

 290: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 290
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind290 ../src/curl -q --output log/11/curl290.out  --include --trace-ascii log/11/trace290 --trace-time ftp://127.0.0.1:37735/290 --max-filesize 30 > log/11/stdout290 2> log/11/stderr290
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:36.785014 ====> Client connect
 19:26:36.785287 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:36.791131 < "USER anonymous"
 19:26:36.791190 > "331 We are happy you popped in![CR][LF]"
 19:26:36.792295 < "PASS ftp@example.com"
 19:26:36.792349 > "230 Welcome you silly person[CR][LF]"
 19:26:36.792547 < "PWD"
 19:26:36.792591 > "257 "/" is current directory[CR][LF]"
 19:26:36.792779 < "EPSV"
 19:26:36.792809 ====> Passive DATA channel requested by client
 19:26:36.792824 DATA sockfilt for passive data channel starting...
 19:26:36.797045 DATA sockfilt for passive data channel started (pid 96118)
 19:26:36.805441 DATA sockfilt for passive data channel listens on port 44635
 19:26:36.805515 > "229 Entering Passive Mode (|||44635|)[CR][LF]"
 19:26:36.805536 Client has been notified that upcoming DATA connection is awaited on port 44635
 19:26:36.805808 Client connects to port 44635
 19:26:36.805841 ====> Client established passive DATA connection on port 44635
 19:26:36.805931 < "TYPE I"
 19:26:36.805962 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:36.806123 < "SIZE verifiedserver"
 19:26:36.806160 > "213 17[CR][LF]"
 19:26:36.806293 < "RETR verifiedserver"
 19:26:36.806322 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:36.806408 =====> Closing passive DATA connection...
 19:26:36.806423 Server disconnects passive DATA connection
 19:26:36.806622 Server disconnected passive DATA connection
 19:26:36.806646 DATA sockfilt for passive data channel quits (pid 96118)
 19:26:36.806908 DATA sockfilt for passive data channel quit (pid 96118)
 19:26:36.806928 =====> Closed passive DATA connection
 19:26:36.806954 > "226 File transfer complete[CR][LF]"
 19:26:36.852184 < "QUIT"
 19:26:36.852249 > "221 bye bye baby[CR][LF]"
 19:26:36.853320 MAIN sockfilt said DISC
 19:26:36.853362 ====> Client disconnected
 19:26:36.853455 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:36.388842 ====> Client connect
 19:26:36.392642 Received DATA (on stdin)
 19:26:36.392679 > 146 bytes data, server => client
 19:26:36.392691 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:36.392702 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:36.392712 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:36.392804 < 16 bytes data, client => server
 19:26:36.392817 'USER anonymous\r\n'
 19:26:36.395985 Received DATA (on stdin)
 19:26:36.396007 > 33 bytes data, server => client
 19:26:36.396018 '331 We are happy you popped in!\r\n'
 19:26:36.396089 < 22 bytes data, client => server
 19:26:36.396102 'PASS ftp@example.com\r\n'
 19:26:36.396324 Received DATA (on stdin)
 19:26:36.396337 > 30 bytes data, server => client
 19:26:36.396347 '230 Welcome you silly person\r\n'
 19:26:36.396405 < 5 bytes data, client => server
 19:26:36.396418 'PWD\r\n'
 19:26:36.396563 Received DATA (on stdin)
 19:26:36.396574 > 30 bytes data, server => client
 19:26:36.396585 '257 "/" is current directory\r\n'
 19:26:36.396650 < 6 bytes data, client => server
 19:26:36.396663 'EPSV\r\n'
 19:26:36.409519 Received DATA (on stdin)
 19:26:36.409537 > 39 bytes data, server => client
 19:26:36.409547 '229 Entering Passive Mode (|||44635CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind297 ../src/curl -q --output log/20/curl297.out  --include --trace-ascii log/20/trace297 --trace-time --ftp-method singlecwd ftp://127.0.0.1:41549/first/second/third/297 > log/20/stdout297 2> log/20/stderr297
|)\r\n'
 19:26:36.409750 < 8 bytes data, client => server
 19:26:36.409767 'TYPE I\r\n'
 19:26:36.409933 Received DATA (on stdin)
 19:26:36.409945 > 33 bytes data, server => client
 19:26:36.409954 '200 I modify TYPE as you wanted\r\n'
 19:26:36.410013 < 21 bytes data, client => server
 19:26:36.410022 'SIZE verifiedserver\r\n'
 19:26:36.410127 Received DATA (on stdin)
 19:26:36.410136 > 8 bytes data, server => client
 19:26:36.410143 '213 17\r\n'
 19:26:36.410187 < 21 bytes data, client => server
 19:26:36.410196 'RETR verifiedserver\r\n'
 19:26:36.410392 Received DATA (on stdin)
 19:26:36.410401 > 29 bytes data, server => client
 19:26:36.410410 '150 Binary junk (17 bytes).\r\n'
 19:26:36.410923 Received DATA (on stdin)
 19:26:36.410934 > 28 bytes data, server => client
 19:26:36.410943 '226 File transfer complete\r\n'
 19:26:36.452839 < 6 bytes data, client => server
 19:26:36.452874 'QUIT\r\n'
 19:26:36.456241 Received DATA (on stdin)
 19:26:36.456258 > 18 bytes data, server => client
 19:26:36.456268 '221 bye bye baby\r\n'
 19:26:36.457237 ====> Client disconnect
 19:26:36.457439 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:36.400690 Running IPv4 version
 19:26:36.400772 Listening on port 44635
 19:26:36.400812 Wrote pid 96118 to log/11/server/ftp_sockdata.pid
 19:26:36.400835 Received PING (on stdin)
 19:26:36.405967 Received PORT (on stdin)
 19:26:36.409720 ====> Client connect
 19:26:36.410433 Received DATA (on stdin)
 19:26:36.410444 > 17 bytes data, server => client
 19:26:36.410452 'WE ROOLZ: 84823\r\n'
 19:26:36.410474 Received DISC (on stdin)
 19:26:36.410483 ====> Client forcibly disconnected
 19:26:36.410625 Received QUIT (on stdin)
 19:26:36.410634 quits
 19:26:36.410698 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 290
=== End of file server.cmd
=== Start of file valgrind290
 ==96143== 
 ==96143== Process terminating with default action of signal 4 (SIGILL)
 ==96143==  Illegal opcode at address 0x492B75F
 ==96143==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96143==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96143==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96143==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96143==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96143==    by 0x49908EB: curl_version_info (version.c:600)
 ==96143==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96143==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96143==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96143==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind290
test 0297 [FTP CWD with --ftp-method singlecwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind297 ../src/curl -q --output log/20/curl297.out  --include --trace-ascii log/20/trace297 --trace-time --ftp-method singlecwd ftp://127.0.0.1:41549/first/second/third/297 > log/20/stdout297 2> log/20/stderr297

 297: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 297
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind297 ../src/curl -q --output log/20/curl297.out  --include --trace-ascii log/20/trace297 --trace-time --ftp-method singlecwd ftp://127.0.0.1:41549/first/second/third/297 > log/20/stdout297 2> log/20/stderr297
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:37.305481 ====> Client connect
 19:26:37.305688 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:37.312261 < "USER anonymous"
 19:26:37.312315 > "331 We are happy you popped in![CR][LF]"
 19:26:37.318887 < "PASS ftp@example.com"
 19:26:37.318940 > "230 Welcome you silly person[CR][LF]"
 19:26:37.322795 < "PWD"
 19:26:37.322862 > "257 "/" is current directory[CR][LF]"
 19:26:37.323145 < "EPSV"
 19:26:37.323177 ====> Passive DATA channel requested by client
 19:26:37.323193 DATA sockfilt for passive data channel starting...
 19:26:37.330014 DATA sockfilt for passive data channel started (pid 96647)
 19:26:37.330169 DATA sockfilt for passive data channel listens on port 42807
 19:26:37.330228 > "229 Entering Passive Mode (|||42807|)[CR][LF]"
 19:26:37.330253 Client has been notified that upcoming DATA connection is awaited on port 42807
 19:26:37.334055 Client connects to port 42807
 19:26:37.334101 ====> Client established passive DATA connection on port 42807
 19:26:37.334209 < "TYPE I"
 19:26:37.334249 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:37.334457 < "SIZE verifiedserver"
 19:26:37.334506 > "213 17[CR][LF]"
 19:26:37.334704 < "RETR verifiedserver"
 19:26:37.334746 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:37.334859 =====> Closing passive DATA connection...
 19:26:37.334883 Server disconnects passive DATA connection
 19:26:37.338700 Server disconnected passive DATA connection
 19:26:37.338745 DATA sockfilt for passive data channel quits (pid 96647)
 19:26:37.339055 DATA sockfilt for passive data channel quit (pid 96647)
 19:26:37.339086 =====> Closed passive DATA connection
 19:26:37.339120 > "226 File transfer complete[CR][LF]"
 19:26:37.379017 < "QUIT"
 19:26:37.379082 > "221 bye bye baby[CR][LF]"
 19:26:37.380888 MAIN sockfilt said DISC
 19:26:37.380941 ====> Client disconnected
 19:26:37.381028 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:36.909438 ====> Client connect
 19:26:36.909789 Received DATA (on stdin)
 19:26:36.909806 > 146 bytes data, server => client
 19:26:36.909817 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:36.909827 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:36.909836 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:36.916099 < 16 bytes data, client => server
 19:26:36.916133 'USER anonymous\r\n'
 19:26:36.916410 Received DATA (on stdin)
 19:26:36.916423 > 33 bytes data, server => client
 19:26:36.916433 '331 We are happy you popped in!\r\n'
 19:26:36.922782 < 22 bytes data, client => server
 19:26:36.922813 'PASS ftp@example.com\r\n'
 19:26:36.923035 Received DATA (on stdin)
 19:26:36.923046 > 30 bytes data, server => client
 19:26:36.923057 '230 Welcome you silly person\r\n'
 19:26:36.926708 < 5 bytes data, client => server
 19:26:36.926736 'PWD\r\n'
 19:26:36.926965 Received DATA (on stdin)
 19:26:36.926980 > 30 bytes data, server => client
 19:26:36.926991 '257 "/" is current directory\r\n'
 19:26:36.927112 < 6 bytes data, client => server
 19:26:36.927127 'EPSV\r\n'
 19:26:36.937241 Received DATA (on stdin)
 19:26:36.937268 > 39 bytes data, server => client
 19:26:36.937281 '229 Entering Passive Mode (|||42807|)\r\n'
 19:26:36.938051 < 8 bytes data, client => server
 19:26:36.938070 'TYPE I\r\n'
 19:26:36.938346 Received DATA (on stdin)
 19:26:36.938359 > 33 bytes data, server => client
 19:26:36.938370 '200 I modify TYPE as you wanted\r\n'
 19:26:36.938438 < 21 bytes data, client => server
 19:26:36.938453 'SIZE verifiedserver\r\n'
 19:26:36.938609 Received DATA (on stdin)
 19:26:36.938622 > 8 bytes data, server => client
 19:26:36.938633 '213 17\r\n'
 19:26:36.938696 < 21 bytes data, client => server
 19:26:36.938710 'RETR verifiedserver\r\n'
 19:26:36.938983 Received DATA (on stdin)
 19:26:36.938996 > 29 bytes data, server => client
 19:26:36.939006 '150 Binary junk (17 bytes).\r\n'
 19:26:36.943222 Received DATA (on stdin)
 19:26:36.943235 > 28 bytes data, server => client
 19:26:36.943250 '226 File transfer complete\r\n'
 19:26:36.982901 < 6 bytes data, client => server
 19:26:36.982938 'QUIT\r\n'
 19:26:36.983194 Received DATA (on stdin)
 19:26:36.983207 > 18 bytes data, server => client
 19:26:36.983CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind293 ../src/curl -q --output log/24/curl293.out  --include --trace-ascii log/24/trace293 --trace-time http://127.0.0.1:38895/293 --max-filesize 2 > log/24/stdout293 2> log/24/stderr293
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind289 ../src/curl -q --output log/7/curl289.out  --include --trace-ascii log/7/trace289 --trace-time ftp://127.0.0.1:44283/289 -T log/7/illegal-nonexistent-file -C - > log/7/stdout289 2> log/7/stderr289
217 '221 bye bye baby\r\n'
 19:26:36.984921 ====> Client disconnect
 19:26:36.985143 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:37.933681 Running IPv4 version
 19:26:37.933794 Listening on port 42807
 19:26:37.933845 Wrote pid 96647 to log/20/server/ftp_sockdata.pid
 19:26:37.934034 Received PING (on stdin)
 19:26:37.934153 Received PORT (on stdin)
 19:26:37.938095 ====> Client connect
 19:26:37.939072 Received DATA (on stdin)
 19:26:37.939090 > 17 bytes data, server => client
 19:26:37.939101 'WE ROOLZ: 84833\r\n'
 19:26:37.939132 Received DISC (on stdin)
 19:26:37.939145 ====> Client forcibly disconnected
 19:26:37.942864 Received QUIT (on stdin)
 19:26:37.942881 quits
 19:26:37.942969 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 297
=== End of file server.cmd
=== Start of file valgrind297
 ==96721== 
 ==96721== Process terminating with default action of signal 4 (SIGILL)
 ==96721==  Illegal opcode at address 0x492B75F
 ==96721==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96721==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96721==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96721==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96721==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96721==    by 0x49908EB: curl_version_info (version.c:600)
 ==96721==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96721==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96721==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96721==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind297
test 0293 [HTTP GET with maximum filesize exceeded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind293 ../src/curl -q --output log/24/curl293.out  --include --trace-ascii log/24/trace293 --trace-time http://127.0.0.1:38895/293 --max-filesize 2 > log/24/stdout293 2> log/24/stderr293

 293: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 293
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind293 ../src/curl -q --output log/24/curl293.out  --include --trace-ascii log/24/trace293 --trace-time http://127.0.0.1:38895/293 --max-filesize 2 > log/24/stdout293 2> log/24/stderr293
=== End of file commands.log
=== Start of file http_server.log
 19:26:36.704442 ====> Client connect
 19:26:36.704484 accept_connection 3 returned 4
 19:26:36.704505 Read 93 bytes
 19:26:36.704514 Process 93 bytes request
 19:26:36.704526 Got request: GET /verifiedserver HTTP/1.1
 19:26:36.704533 Are-we-friendly question received
 19:26:36.704556 Wrote request (93 bytes) input to log/24/server.input
 19:26:36.704570 Identifying ourselves as friends
 19:26:36.704629 Response sent (56 bytes) and written to log/24/server.response
 19:26:36.704638 special request received, no persistency
 19:26:36.704645 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 47316 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 293
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind293
 ==96340== 
 ==96340== Process terminating with default action of signal 4 (SIGILL)
 ==96340==  Illegal opcode at address 0x492B75F
 ==96340==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96340==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96340==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96340==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96340==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96340==    by 0x49908EB: curl_version_info (version.c:600)
 ==96340==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96340==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96340==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96340==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind293
test 0289 [FTP resume upload but denied access to local file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind289 ../src/curl -q --output log/7/curl289.out  --include --trace-ascii log/7/trace289 --trace-time ftp://127.0.0.1:44283/289 -T log/7/illegal-nonexistent-file -C - > log/7/stdout289 2> log/7/stderr289

curl returned 132, when expecting 26
 289: exit FAILED
== Contents of files in the log/7/ directory after test 289
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind289 ../src/curl -q --output log/7/curl289.out  --include --trace-ascii log/7/trace289 --trace-time ftp://127.0.0.1:44283/289 -T log/7/illegal-nonexistent-file -C - > log/7/stdout289 2> log/7/stderr289
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:36.512040 ====> Client connect
 19:26:36.512275 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:36.515948 < "USER anonymous"
 19:26:36.515994 > "331 We are happy you popped in![CR][LF]"
 19:26:36.516180 < "PASS ftp@example.com"
 19:26:36.516210 > "230 Welcome you silly person[CR][LF]"
 19:26:36.516373 < "PWD"
 19:26:36.516408 > "257 "/" is current directory[CR][LF]"
 19:26:36.516579 < "EPSV"
 19:26:36.516647 ====> Passive DATA channel requested by client
 19:26:36.516663 DATA sockfilt for passive data channel starting...
 19:26:36.523341 DATA sockfilt for passive data channel started (pid 95993)
 19:26:36.523482 DATA sockfilt for passive data channel listens on port 40191
 19:26:36.523523 > "229 Entering Passive Mode (|||40191|)[CR][LF]"
 19:26:36.523540 Client has been notified that upcoming DATA connection is awaited on port 40191
 19:26:36.528752 Client connects to port 40191
 19:26:36.528807 ====> Client established passive DATA connection on port 40191
 19:26:36.528918 < "TYPE I"
 19:26:36.528957 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:36.532099 < "SIZE verifiedserver"
 19:26:36.532159 > "213 17[CR][LF]"
 19:26:36.532384 < "RETR verifiedserver"
 19:26:36.532420 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:36.532520 =====> Closing passive DATA connection...
 19:26:36.532538 Server disconnects passive DATA connection
 19:26:36.532708 Server disconnected passive DATA connection
 19:26:36.532731 DATA sockfilt for passive data channel quits (pid 95993)
 19:26:36.533024 DATA sockfilt for passive data channel quit (pid 95993)
 19:26:36.533048 =====> Closed passive DATA connection
 19:26:36.533076 > "226 File transfer complete[CR][LF]"
 19:26:36.579022 < "QUIT"
 19:26:36.579078 > "221 bye bye baby[CR][LF]"
 19:26:36.580306 MAIN sockfilt said DISC
 19:26:36.580337 ====> Client disconnected
 19:26:36.580420 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:37.115800 ====> Client connect
 19:26:37.119263 Received DATA (on stdin)
 19:26:37.119297 > 146 bytes data, server => client
 19:26:37.119310 '220-        _   _ __CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind286 ../src/curl -q --output log/10/curl286.out  --include --trace-ascii log/10/trace286 --trace-time -T log/10/test286.txt tftp://127.0.0.1:42286// > log/10/stdout286 2> log/10/stderr286
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind285 ../src/curl -q --output log/17/curl285.out  --include --trace-ascii log/17/trace285 --trace-time -T log/17/test285.txt tftp://127.0.0.1:52569// --connect-timeout 549 --max-time 599 > log/17/stdout285 2> log/17/stderr285
__  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:37.119320 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:37.119328 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:37.119671 < 16 bytes data, client => server
 19:26:37.119691 'USER anonymous\r\n'
 19:26:37.119904 Received DATA (on stdin)
 19:26:37.119916 > 33 bytes data, server => client
 19:26:37.119926 '331 We are happy you popped in!\r\n'
 19:26:37.119984 < 22 bytes data, client => server
 19:26:37.119996 'PASS ftp@example.com\r\n'
 19:26:37.120114 Received DATA (on stdin)
 19:26:37.120125 > 30 bytes data, server => client
 19:26:37.120135 '230 Welcome you silly person\r\n'
 19:26:37.120187 < 5 bytes data, client => server
 19:26:37.120199 'PWD\r\n'
 19:26:37.120313 Received DATA (on stdin)
 19:26:37.120324 > 30 bytes data, server => client
 19:26:37.120333 '257 "/" is current directory\r\n'
 19:26:37.120395 < 6 bytes data, client => server
 19:26:37.120406 'EPSV\r\n'
 19:26:37.128276 Received DATA (on stdin)
 19:26:37.128303 > 39 bytes data, server => client
 19:26:37.128315 '229 Entering Passive Mode (|||40191|)\r\n'
 19:26:37.128484 < 8 bytes data, client => server
 19:26:37.128501 'TYPE I\r\n'
 19:26:37.135084 Received DATA (on stdin)
 19:26:37.135114 > 33 bytes data, server => client
 19:26:37.135126 '200 I modify TYPE as you wanted\r\n'
 19:26:37.135210 < 21 bytes data, client => server
 19:26:37.135223 'SIZE verifiedserver\r\n'
 19:26:37.136073 Received DATA (on stdin)
 19:26:37.136093 > 8 bytes data, server => client
 19:26:37.136103 '213 17\r\n'
 19:26:37.136205 < 21 bytes data, client => server
 19:26:37.136217 'RETR verifiedserver\r\n'
 19:26:37.136448 Received DATA (on stdin)
 19:26:37.136459 > 29 bytes data, server => client
 19:26:37.136469 '150 Binary junk (17 bytes).\r\n'
 19:26:37.136984 Received DATA (on stdin)
 19:26:37.136996 > 28 bytes data, server => client
 19:26:37.137006 '226 File transfer complete\r\n'
 19:26:37.182733 < 6 bytes data, client => server
 19:26:37.182770 'QUIT\r\n'
 19:26:37.183000 Received DATA (on stdin)
 19:26:37.183010 > 18 bytes data, server => client
 19:26:37.183020 '221 bye bye baby\r\n'
 19:26:37.184174 ====> Client disconnect
 19:26:37.184336 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:36.126816 Running IPv4 version
 19:26:36.126915 Listening on port 40191
 19:26:36.126954 Wrote pid 95993 to log/7/server/ftp_sockdata.pid
 19:26:36.127184 Received PING (on stdin)
 19:26:36.127287 Received PORT (on stdin)
 19:26:36.132577 ====> Client connect
 19:26:36.136497 Received DATA (on stdin)
 19:26:36.136511 > 17 bytes data, server => client
 19:26:36.136521 'WE ROOLZ: 84721\r\n'
 19:26:36.136551 Received DISC (on stdin)
 19:26:36.136563 ====> Client forcibly disconnected
 19:26:36.136646 Received QUIT (on stdin)
 19:26:36.136655 quits
 19:26:36.136729 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 289
=== End of file server.cmd
=== Start of file valgrind289
 ==96041== 
 ==96041== Process terminating with default action of signal 4 (SIGILL)
 ==96041==  Illegal opcode at address 0x492B75F
 ==96041==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96041==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96041==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96041==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96041==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96041==    by 0x49908EB: curl_version_info (version.c:600)
 ==96041==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96041==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96041==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96041==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind289
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/10/server/tftp_server.pid" --portfile "log/10/server/tftp_server.port" --logfile "log/10/tftp_server.log" --logdir "log/10" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 95886 port 42286
* pid tftp => 95886 95886
test 0286 [TFTP send of boundary case 512-byte file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind286 ../src/curl -q --output log/10/curl286.out  --include --trace-ascii log/10/trace286 --trace-time -T log/10/test286.txt tftp://127.0.0.1:42286// > log/10/stdout286 2> log/10/stderr286

 286: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 286
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind286 ../src/curl -q --output log/10/curl286.out  --include --trace-ascii log/10/trace286 --trace-time -T log/10/test286.txt tftp://127.0.0.1:42286// > log/10/stdout286 2> log/10/stderr286
=== End of file commands.log
=== Start of file server.cmd
 Testnum 286
=== End of file server.cmd
=== Start of file test286.txt
 A chunk of data which exactly fits into
 a 512-byte TFTP block, testing a boundary
 condition in the TFTP transmit code.
 89ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
 123456789ABCDEF
=== End of file test286.txt
=== Start of file tftp_server.log
 19:26:36.976773 Wrote pid 95886 to log/10/server/tftp_server.pid
 19:26:36.976830 Wrote port 42286 to log/10/server/tftp_server.port
 19:26:36.976841 Running IPv4 version on port UDP/42286
=== End of file tftp_server.log
=== Start of file valgrind286
 ==96695== 
 ==96695== Process terminating with default action of signal 4 (SIGILL)
 ==96695==  Illegal opcode at address 0x492B75F
 ==96695==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96695==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96695==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96695==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96695==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96695==    by 0x49908EB: curl_version_info (version.c:600)
 ==96695==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96695==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind286
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/17/server/tftp_server.pid" --portfile "log/17/server/tftp_server.port" --logfile "log/17/tftp_server.log" --logdir "log/17" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 95852 port 52569
* pid tftp => 95852 95852
test 0285 [TFTP send]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind285 ../src/curl -q --output log/17/curl285.out  --include --trace-ascii log/17/trace285 --trace-time -T log/17/test285.txt tftp://127.0.0.1:52569// --connect-timeout 549 --max-time 599 > log/17/stdout285 2> log/17/stderr285

 285: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 285
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind285 ../src/curl -q --output log/17/curl285.out  --incluCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind299 ../src/curl -q --output log/4/curl299.out  --include --trace-ascii log/4/trace299 --trace-time -x http://127.0.0.1:35735 -u michal:aybabtu ftp://host.com/we/want/299 > log/4/stdout299 2> log/4/stderr299
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind294 ../src/curl -q --output log/1/curl294.out  --include --trace-ascii log/1/trace294 --trace-time ftp://127.0.0.1:40221/294/ --ftp-account "data for acct" > log/1/stdout294 2> log/1/stderr294
de --trace-ascii log/17/trace285 --trace-time -T log/17/test285.txt tftp://127.0.0.1:52569// --connect-timeout 549 --max-time 599 > log/17/stdout285 2> log/17/stderr285
=== End of file commands.log
=== Start of file server.cmd
 Testnum 285
=== End of file server.cmd
=== Start of file test285.txt
 a chunk of
 data
 sent
  to server
=== End of file test285.txt
=== Start of file tftp_server.log
 19:26:36.843118 Wrote pid 95852 to log/17/server/tftp_server.pid
 19:26:36.843178 Wrote port 52569 to log/17/server/tftp_server.port
 19:26:36.843191 Running IPv4 version on port UDP/52569
=== End of file tftp_server.log
=== Start of file valgrind285
 ==96457== 
 ==96457== Process terminating with default action of signal 4 (SIGILL)
 ==96457==  Illegal opcode at address 0x492B75F
 ==96457==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96457==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96457==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96457==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96457==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96457==    by 0x49908EB: curl_version_info (version.c:600)
 ==96457==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96457==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96457==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96457==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind285
test 0299 [FTP over HTTP proxy with user:pass not in url]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind299 ../src/curl -q --output log/4/curl299.out  --include --trace-ascii log/4/trace299 --trace-time -x http://127.0.0.1:35735 -u michal:aybabtu ftp://host.com/we/want/299 > log/4/stdout299 2> log/4/stderr299

 299: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 299
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind299 ../src/curl -q --output log/4/curl299.out  --include --trace-ascii log/4/trace299 --trace-time -x http://127.0.0.1:35735 -u michal:aybabtu ftp://host.com/we/want/299 > log/4/stdout299 2> log/4/stderr299
=== End of file commands.log
=== Start of file http_server.log
 19:26:38.325225 ====> Client connect
 19:26:38.325258 accept_connection 3 returned 4
 19:26:38.325351 Read 93 bytes
 19:26:38.325362 Process 93 bytes request
 19:26:38.325373 Got request: GET /verifiedserver HTTP/1.1
 19:26:38.325381 Are-we-friendly question received
 19:26:38.325407 Wrote request (93 bytes) input to log/4/server.input
 19:26:38.325422 Identifying ourselves as friends
 19:26:38.325472 Response sent (56 bytes) and written to log/4/server.response
 19:26:38.325482 special request received, no persistency
 19:26:38.325489 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 52940 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 299
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind299
 ==96898== 
 ==96898== Process terminating with default action of signal 4 (SIGILL)
 ==96898==  Illegal opcode at address 0x492B75F
 ==96898==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96898==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96898==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96898==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96898==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96898==    by 0x49908EB: curl_version_info (version.c:600)
 ==96898==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96898==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96898==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96898==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind299
test 0294 [FTP --ftp-account on ACCT request]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind294 ../src/curl -q --output log/1/curl294.out  --include --trace-ascii log/1/trace294 --trace-time ftp://127.0.0.1:40221/294/ --ftp-account "data for acct" > log/1/stdout294 2> log/1/stderr294

 294: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 294
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind294 ../src/curl -q --output log/1/curl294.out  --include --trace-ascii log/1/trace294 --trace-time ftp://127.0.0.1:40221/294/ --ftp-account "data for acct" > log/1/stdout294 2> log/1/stderr294
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:37.095502 ====> Client connect
 19:26:37.095747 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:37.096078 < "USER anonymous"
 19:26:37.096113 > "331 We are happy you popped in![CR][LF]"
 19:26:37.096282 < "PASS ftp@example.com"
 19:26:37.096311 > "230 Welcome you silly person[CR][LF]"
 19:26:37.096470 < "PWD"
 19:26:37.096500 > "257 "/" is current directory[CR][LF]"
 19:26:37.096666 < "EPSV"
 19:26:37.096691 ====> Passive DATA channel requested by client
 19:26:37.096705 DATA sockfilt for passive data channel starting...
 19:26:37.112052 DATA sockfilt for passive data channel started (pid 96312)
 19:26:37.112232 DATA sockfilt for passive data channel listens on port 41747
 19:26:37.112277 > "229 Entering Passive Mode (|||41747|)[CR][LF]"
 19:26:37.112294 Client has been notified that upcoming DATA connection is awaited on port 41747
 19:26:37.112581 Client connects to port 41747
 19:26:37.112613 ====> Client established passive DATA connection on port 41747
 19:26:37.112748 < "TYPE I"
 19:26:37.112781 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:37.112943 < "SIZE verifiedserver"
 19:26:37.112980 > "213 17[CR][LF]"
 19:26:37.113125 < "RETR verifiedserver"
 19:26:37.113156 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:37.113248 =====> Closing passive DATA connection...
 19:26:37.113265 Server disconnects passive DATA connection
 19:26:37.113492 Server disconnected passive DATA connection
 19:26:37.113518 DATA sockfilt for passive data channel quits (pid 96312)
 19:26:37.113787 DATA sockfilt for passive data channel quit (pid 96312)
 19:26:37.113810 =====> Closed passive DATA connection
 19:26:37.113840 > "226 File transfer complete[CR][LF]"
 19:26:37.159061 < "QUIT"
 19:26:37.159129 > "221 bye bye baby[CR][LF]"
 19:26:37.159976 MAIN sockfilt said DISC
 19:26:37.160028 ====> Client disconnected
 19:26:37.160132 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:37.699391 ====> Client connect
 19:26:37.699801 Received DATA (on stdin)
 19:26:37.699814 > 146 bytes data, server => client
 19:26:37.699825 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:37.699835 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:37.699845 '220    \___|\___/|_| \_\_____CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind296 ../src/curl -q --output log/19/curl296.out  --include --trace-ascii log/19/trace296 --trace-time --ftp-method multicwd ftp://127.0.0.1:38555/first/second/third/296 > log/19/stdout296 2> log/19/stderr296
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind316 ../src/curl -q --output log/6/curl316.out  --include --trace-ascii log/6/trace316 --trace-time http://127.0.0.1:33935/316 --compressed > log/6/stdout316 2> log/6/stderr316
|\r\n'
 19:26:37.699960 < 16 bytes data, client => server
 19:26:37.699973 'USER anonymous\r\n'
 19:26:37.700154 Received DATA (on stdin)
 19:26:37.700164 > 33 bytes data, server => client
 19:26:37.700174 '331 We are happy you popped in!\r\n'
 19:26:37.700229 < 22 bytes data, client => server
 19:26:37.700241 'PASS ftp@example.com\r\n'
 19:26:37.700351 Received DATA (on stdin)
 19:26:37.700362 > 30 bytes data, server => client
 19:26:37.700372 '230 Welcome you silly person\r\n'
 19:26:37.700423 < 5 bytes data, client => server
 19:26:37.700433 'PWD\r\n'
 19:26:37.700538 Received DATA (on stdin)
 19:26:37.700548 > 30 bytes data, server => client
 19:26:37.700558 '257 "/" is current directory\r\n'
 19:26:37.700621 < 6 bytes data, client => server
 19:26:37.700632 'EPSV\r\n'
 19:26:37.716347 Received DATA (on stdin)
 19:26:37.716370 > 39 bytes data, server => client
 19:26:37.716381 '229 Entering Passive Mode (|||41747|)\r\n'
 19:26:37.716675 < 8 bytes data, client => server
 19:26:37.716688 'TYPE I\r\n'
 19:26:37.716830 Received DATA (on stdin)
 19:26:37.716841 > 33 bytes data, server => client
 19:26:37.716851 '200 I modify TYPE as you wanted\r\n'
 19:26:37.716904 < 21 bytes data, client => server
 19:26:37.716914 'SIZE verifiedserver\r\n'
 19:26:37.717021 Received DATA (on stdin)
 19:26:37.717031 > 8 bytes data, server => client
 19:26:37.717041 '213 17\r\n'
 19:26:37.717089 < 21 bytes data, client => server
 19:26:37.717099 'RETR verifiedserver\r\n'
 19:26:37.717394 Received DATA (on stdin)
 19:26:37.717405 > 29 bytes data, server => client
 19:26:37.717415 '150 Binary junk (17 bytes).\r\n'
 19:26:37.717883 Received DATA (on stdin)
 19:26:37.717895 > 28 bytes data, server => client
 19:26:37.717905 '226 File transfer complete\r\n'
 19:26:37.762877 < 6 bytes data, client => server
 19:26:37.762909 'QUIT\r\n'
 19:26:37.763188 Received DATA (on stdin)
 19:26:37.763200 > 18 bytes data, server => client
 19:26:37.763209 '221 bye bye baby\r\n'
 19:26:37.763970 ====> Client disconnect
 19:26:37.764187 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:37.706906 Running IPv4 version
 19:26:37.706990 Listening on port 41747
 19:26:37.707030 Wrote pid 96312 to log/1/server/ftp_sockdata.pid
 19:26:37.712719 Received PING (on stdin)
 19:26:37.716162 Received PORT (on stdin)
 19:26:37.716572 ====> Client connect
 19:26:37.717309 Received DATA (on stdin)
 19:26:37.717321 > 17 bytes data, server => client
 19:26:37.717330 'WE ROOLZ: 84935\r\n'
 19:26:37.717358 Received DISC (on stdin)
 19:26:37.717368 ====> Client forcibly disconnected
 19:26:37.717566 Received QUIT (on stdin)
 19:26:37.717577 quits
 19:26:37.717642 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 332 Give me an ACCT now
 REPLY ACCT 230 Thank-you for the ACCT
 Testnum 294
=== End of file server.cmd
=== Start of file valgrind294
 ==96388== 
 ==96388== Process terminating with default action of signal 4 (SIGILL)
 ==96388==  Illegal opcode at address 0x492B75F
 ==96388==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96388==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96388==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96388==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96388==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96388==    by 0x49908EB: curl_version_info (version.c:600)
 ==96388==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96388==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96388==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96388==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind294
test 0296 [FTP CWD with --ftp-method multicwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind296 ../src/curl -q --output log/19/curl296.out  --include --trace-ascii log/19/trace296 --trace-time --ftp-method multicwd ftp://127.0.0.1:38555/first/second/third/296 > log/19/stdout296 2> log/19/stderr296

 296: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 296
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind296 ../src/curl -q --output log/19/curl296.out  --include --trace-ascii log/19/trace296 --trace-time --ftp-method multicwd ftp://127.0.0.1:38555/first/second/third/296 > log/19/stdout296 2> log/19/stderr296
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:37.175044 ====> Client connect
 19:26:37.175236 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:37.175535 < "USER anonymous"
 19:26:37.175570 > "331 We are happy you popped in![CR][LF]"
 19:26:37.175742 < "PASS ftp@example.com"
 19:26:37.175770 > "230 Welcome you silly person[CR][LF]"
 19:26:37.175932 < "PWD"
 19:26:37.175968 > "257 "/" is current directory[CR][LF]"
 19:26:37.176135 < "EPSV"
 19:26:37.176161 ====> Passive DATA channel requested by client
 19:26:37.176176 DATA sockfilt for passive data channel starting...
 19:26:37.199911 DATA sockfilt for passive data channel started (pid 96385)
 19:26:37.205496 DATA sockfilt for passive data channel listens on port 35675
 19:26:37.205568 > "229 Entering Passive Mode (|||35675|)[CR][LF]"
 19:26:37.205585 Client has been notified that upcoming DATA connection is awaited on port 35675
 19:26:37.205897 Client connects to port 35675
 19:26:37.205926 ====> Client established passive DATA connection on port 35675
 19:26:37.206017 < "TYPE I"
 19:26:37.206046 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:37.206196 < "SIZE verifiedserver"
 19:26:37.206230 > "213 17[CR][LF]"
 19:26:37.206377 < "RETR verifiedserver"
 19:26:37.206409 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:37.206830 =====> Closing passive DATA connection...
 19:26:37.206856 Server disconnects passive DATA connection
 19:26:37.206879 Fancy that; client wants to DISC, too
 19:26:37.207091 Server disconnected passive DATA connection
 19:26:37.207118 DATA sockfilt for passive data channel quits (pid 96385)
 19:26:37.207369 DATA sockfilt for passive data channel quit (pid 96385)
 19:26:37.207393 =====> Closed passive DATA connection
 19:26:37.207420 > "226 File transfer complete[CR][LF]"
 19:26:37.252293 < "QUIT"
 19:26:37.252349 > "221 bye bye baby[CR][LF]"
 19:26:37.253506 MAIN sockfilt said DISC
 19:26:37.253539 ====> Client disconnected
 19:26:37.253614 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:36.778982 ====> Client connect
 19:26:36.779303 Received DATA (on stdin)
 19:26:36.779316 > 146 bytes data, server => client
 19:26:36.779327 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:36.779337 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:36.779346 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:36.779436 < 16 bytes data, client => server
 19:26:36.779450 'USER anonymous\r\n'
 19:26:36.779629 Received DATA (on stdin)
 19:26:36.779640 > 33 bytes data, server => client
 19:26:36.779651 '331 We are happy you popped in!\r\n'
 19:26:36.779706 < 22 bytes data, client => server
 19:26:36.779718 'PASS ftp@example.com\r\n'
 19:26:36.779828 Received DATA (on stdin)
 19:26:36.779839 > 30 bytes data, server => client
 19:26:36.779849 '230 Welcome you silly person\r\n'
 19:26:36.779901 < 5 bytes data, client => server
 19:26:36.779913 'PWD\r\n'
 19:26:36.780024 Received DATA (on stdin)
 19:26:36.780035 > 30 bytes data, server => client
 19:26:36.780045 '257 "/" is current directory\r\n'
 19:26:36.780106 < 6 bytes data, client => server
 19:26:36.780117 'EPSV\r\n'
 19:26:36.809657 Received DATA (on stdin)
 19:26:36.809672 > 39 bytes data, server => client
 19:26:36.8096CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind292 ../src/curl -q --output log/18/curl292.out  --include --trace-ascii log/18/trace292 --trace-time http://127.0.0.1:43739/292 --max-filesize 1000 > log/18/stdout292 2> log/18/stderr292
82 '229 Entering Passive Mode (|||35675|)\r\n'
 19:26:36.809878 < 8 bytes data, client => server
 19:26:36.809891 'TYPE I\r\n'
 19:26:36.810108 Received DATA (on stdin)
 19:26:36.810118 > 33 bytes data, server => client
 19:26:36.810128 '200 I modify TYPE as you wanted\r\n'
 19:26:36.810179 < 21 bytes data, client => server
 19:26:36.810189 'SIZE verifiedserver\r\n'
 19:26:36.810292 Received DATA (on stdin)
 19:26:36.810302 > 8 bytes data, server => client
 19:26:36.810311 '213 17\r\n'
 19:26:36.810360 < 21 bytes data, client => server
 19:26:36.810370 'RETR verifiedserver\r\n'
 19:26:36.810648 Received DATA (on stdin)
 19:26:36.810663 > 29 bytes data, server => client
 19:26:36.810674 '150 Binary junk (17 bytes).\r\n'
 19:26:36.811486 Received DATA (on stdin)
 19:26:36.811497 > 28 bytes data, server => client
 19:26:36.811507 '226 File transfer complete\r\n'
 19:26:36.856192 < 6 bytes data, client => server
 19:26:36.856223 'QUIT\r\n'
 19:26:36.856429 Received DATA (on stdin)
 19:26:36.856441 > 18 bytes data, server => client
 19:26:36.856450 '221 bye bye baby\r\n'
 19:26:36.857529 ====> Client disconnect
 19:26:36.857687 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:37.800371 Running IPv4 version
 19:26:37.800463 Listening on port 35675
 19:26:37.800510 Wrote pid 96385 to log/19/server/ftp_sockdata.pid
 19:26:37.800533 Received PING (on stdin)
 19:26:37.809401 Received PORT (on stdin)
 19:26:37.809913 ====> Client connect
 19:26:37.810702 Received DATA (on stdin)
 19:26:37.810714 > 17 bytes data, server => client
 19:26:37.810724 'WE ROOLZ: 84587\r\n'
 19:26:37.810811 ====> Client disconnect
 19:26:37.810941 Received DISC (on stdin)
 19:26:37.810952 Crikey! Client also wants to disconnect
 19:26:37.810963 Received ACKD (on stdin)
 19:26:37.811191 Received QUIT (on stdin)
 19:26:37.811201 quits
 19:26:37.811272 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 296
=== End of file server.cmd
=== Start of file valgrind296
 ==96559== 
 ==96559== Process terminating with default action of signal 4 (SIGILL)
 ==96559==  Illegal opcode at address 0x492B75F
 ==96559==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96559==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96559==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96559==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96559==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96559==    by 0x49908EB: curl_version_info (version.c:600)
 ==96559==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96559==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind296
test 0316 [HTTP brotli compressed content of size more than CURL_MAX_WRITE_SIZE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind316 ../src/curl -q --output log/6/curl316.out  --include --trace-ascii log/6/trace316 --trace-time http://127.0.0.1:33935/316 --compressed > log/6/stdout316 2> log/6/stderr316

 316: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 316
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind316 ../src/curl -q --output log/6/curl316.out  --include --trace-ascii log/6/trace316 --trace-time http://127.0.0.1:33935/316 --compressed > log/6/stdout316 2> log/6/stderr316
=== End of file commands.log
=== Start of file http_server.log
 19:26:37.602746 ====> Client connect
 19:26:37.602777 accept_connection 3 returned 4
 19:26:37.602796 Read 93 bytes
 19:26:37.602806 Process 93 bytes request
 19:26:37.602818 Got request: GET /verifiedserver HTTP/1.1
 19:26:37.602826 Are-we-friendly question received
 19:26:37.602854 Wrote request (93 bytes) input to log/6/server.input
 19:26:37.602869 Identifying ourselves as friends
 19:26:37.602957 Response sent (56 bytes) and written to log/6/server.response
 19:26:37.602967 special request received, no persistency
 19:26:37.602975 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 37252 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 316
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind316
 ==97070== 
 ==97070== Process terminating with default action of signal 4 (SIGILL)
 ==97070==  Illegal opcode at address 0x492B75F
 ==97070==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97070==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97070==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97070==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97070==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97070==    by 0x49908EB: curl_version_info (version.c:600)
 ==97070==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97070==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97070==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97070==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind316
test 0292 [HTTP GET with maximum filesize not exceeded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind292 ../src/curl -q --output log/18/curl292.out  --include --trace-ascii log/18/trace292 --trace-time http://127.0.0.1:43739/292 --max-filesize 1000 > log/18/stdout292 2> log/18/stderr292

 292: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 292
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind292 ../src/curl -q --output log/18/curl292.out  --include --trace-ascii log/18/trace292 --trace-time http://127.0.0.1:43739/292 --max-filesize 1000 > log/18/stdout292 2> log/18/stderr292
=== End of file commands.log
=== Start of file http_server.log
 19:26:37.610388 ====> Client connect
 19:26:37.610428 accept_connection 3 returned 4
 19:26:37.610451 Read 93 bytes
 19:26:37.610462 Process 93 bytes request
 19:26:37.610474 Got request: GET /verifiedserver HTTP/1.1
 19:26:37.610483 Are-we-friendly question received
 19:26:37.610515 Wrote request (93 bytes) input to log/18/server.input
 19:26:37.610542 Identifying ourselves as friends
 19:26:37.610620 Response sent (56 bytes) and written to log/18/server.response
 19:26:37.610632 special request received, no persistency
 19:26:37.610641 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 36618 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file htCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind314 ../src/curl -q --output log/3/curl314.out  --include --trace-ascii log/3/trace314 --trace-time http://127.0.0.1:36161/314 --compressed > log/3/stdout314 2> log/3/stderr314
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind315 ../src/curl -q --output log/13/curl315.out  --include --trace-ascii log/13/trace315 --trace-time http://127.0.0.1:38821/315 --compressed > log/13/stdout315 2> log/13/stderr315
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind318 ../src/curl -q --output log/23/curl318.out  --include --trace-ascii log/23/trace318 --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:44711 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/23/stdout318 2> log/23/stderr318
tp_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 292
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind292
 ==96234== 
 ==96234== Process terminating with default action of signal 4 (SIGILL)
 ==96234==  Illegal opcode at address 0x492B75F
 ==96234==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96234==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96234==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96234==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96234==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96234==    by 0x49908EB: curl_version_info (version.c:600)
 ==96234==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96234==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96234==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96234==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind292
test 0314 [HTTP GET brotli compressed content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind314 ../src/curl -q --output log/3/curl314.out  --include --trace-ascii log/3/trace314 --trace-time http://127.0.0.1:36161/314 --compressed > log/3/stdout314 2> log/3/stderr314

 314: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 314
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind314 ../src/curl -q --output log/3/curl314.out  --include --trace-ascii log/3/trace314 --trace-time http://127.0.0.1:36161/314 --compressed > log/3/stdout314 2> log/3/stderr314
=== End of file commands.log
=== Start of file http_server.log
 19:26:38.562981 ====> Client connect
 19:26:38.563019 accept_connection 3 returned 4
 19:26:38.563042 Read 93 bytes
 19:26:38.563052 Process 93 bytes request
 19:26:38.563065 Got request: GET /verifiedserver HTTP/1.1
 19:26:38.563073 Are-we-friendly question received
 19:26:38.563101 Wrote request (93 bytes) input to log/3/server.input
 19:26:38.563117 Identifying ourselves as friends
 19:26:38.563187 Response sent (56 bytes) and written to log/3/server.response
 19:26:38.563196 special request received, no persistency
 19:26:38.563204 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 43482 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 314
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind314
 ==97051== 
 ==97051== Process terminating with default action of signal 4 (SIGILL)
 ==97051==  Illegal opcode at address 0x492B75F
 ==97051==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97051==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97051==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97051==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97051==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97051==    by 0x49908EB: curl_version_info (version.c:600)
 ==97051==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97051==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97051==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97051==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind314
test 0315 [HTTP GET brotli compressed content with broken header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind315 ../src/curl -q --output log/13/curl315.out  --include --trace-ascii log/13/trace315 --trace-time http://127.0.0.1:38821/315 --compressed > log/13/stdout315 2> log/13/stderr315

 315: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 315
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind315 ../src/curl -q --output log/13/curl315.out  --include --trace-ascii log/13/trace315 --trace-time http://127.0.0.1:38821/315 --compressed > log/13/stdout315 2> log/13/stderr315
=== End of file commands.log
=== Start of file http_server.log
 19:26:37.587689 ====> Client connect
 19:26:37.587739 accept_connection 3 returned 4
 19:26:37.587765 Read 93 bytes
 19:26:37.587774 Process 93 bytes request
 19:26:37.587785 Got request: GET /verifiedserver HTTP/1.1
 19:26:37.587793 Are-we-friendly question received
 19:26:37.587868 Wrote request (93 bytes) input to log/13/server.input
 19:26:37.587902 Identifying ourselves as friends
 19:26:37.587992 Response sent (56 bytes) and written to log/13/server.response
 19:26:37.588001 special request received, no persistency
 19:26:37.588009 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 40542 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 315
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind315
 ==97054== 
 ==97054== Process terminating with default action of signal 4 (SIGILL)
 ==97054==  Illegal opcode at address 0x492B75F
 ==97054==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97054==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97054==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97054==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97054==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97054==    by 0x49908EB: curl_version_info (version.c:600)
 ==97054==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97054==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97054==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97054==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind315
test 0318 [HTTP with custom Authorization: then trusted redirect to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind318 ../src/curl -q --output log/23/curl318.out  --include --trace-ascii log/23/trace318 --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:44711 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/23/stdout318 2> log/23/stderr318

 318: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== ConCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind317 ../src/curl -q --output log/12/curl317.out  --include --trace-ascii log/12/trace317 --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:40921 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/12/stdout317 2> log/12/stderr317
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind298 ../src/curl -q --output log/14/curl298.out  --include --trace-ascii log/14/trace298 --trace-time --ftp-method nocwd ftp://127.0.0.1:37411/first/second/th%69rd/298 > log/14/stdout298 2> log/14/stderr298
tents of files in the log/23/ directory after test 318
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind318 ../src/curl -q --output log/23/curl318.out  --include --trace-ascii log/23/trace318 --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:44711 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/23/stdout318 2> log/23/stderr318
=== End of file commands.log
=== Start of file http_server.log
 19:26:37.823036 ====> Client connect
 19:26:37.823082 accept_connection 3 returned 4
 19:26:37.823108 Read 93 bytes
 19:26:37.823119 Process 93 bytes request
 19:26:37.823133 Got request: GET /verifiedserver HTTP/1.1
 19:26:37.823141 Are-we-friendly question received
 19:26:37.823172 Wrote request (93 bytes) input to log/23/server.input
 19:26:37.823189 Identifying ourselves as friends
 19:26:37.823267 Response sent (56 bytes) and written to log/23/server.response
 19:26:37.823279 special request received, no persistency
 19:26:37.823288 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 36314 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 318
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind318
 ==97253== 
 ==97253== Process terminating with default action of signal 4 (SIGILL)
 ==97253==  Illegal opcode at address 0x492B75F
 ==97253==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97253==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97253==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97253==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97253==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97253==    by 0x49908EB: curl_version_info (version.c:600)
 ==97253==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97253==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97253==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97253==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind318
test 0317 [HTTP with custom Authorization: and redirect to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind317 ../src/curl -q --output log/12/curl317.out  --include --trace-ascii log/12/trace317 --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:40921 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/12/stdout317 2> log/12/stderr317

 317: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 317
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind317 ../src/curl -q --output log/12/curl317.out  --include --trace-ascii log/12/trace317 --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:40921 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/12/stdout317 2> log/12/stderr317
=== End of file commands.log
=== Start of file http_server.log
 19:26:37.756186 ====> Client connect
 19:26:37.756223 accept_connection 3 returned 4
 19:26:37.756380 Read 93 bytes
 19:26:37.756396 Process 93 bytes request
 19:26:37.756410 Got request: GET /verifiedserver HTTP/1.1
 19:26:37.756418 Are-we-friendly question received
 19:26:37.756487 Wrote request (93 bytes) input to log/12/server.input
 19:26:37.756507 Identifying ourselves as friends
 19:26:37.756574 Response sent (56 bytes) and written to log/12/server.response
 19:26:37.756583 special request received, no persistency
 19:26:37.756591 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 41002 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 317
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind317
 ==97205== 
 ==97205== Process terminating with default action of signal 4 (SIGILL)
 ==97205==  Illegal opcode at address 0x492B75F
 ==97205==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97205==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97205==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97205==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97205==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97205==    by 0x49908EB: curl_version_info (version.c:600)
 ==97205==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97205==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97205==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97205==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind317
test 0298 [FTP CWD with --ftp-method nocwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind298 ../src/curl -q --output log/14/curl298.out  --include --trace-ascii log/14/trace298 --trace-time --ftp-method nocwd ftp://127.0.0.1:37411/first/second/th%69rd/298 > log/14/stdout298 2> log/14/stderr298

 298: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 298
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind298 ../src/curl -q --output log/14/curl298.out  --include --trace-ascii log/14/trace298 --trace-time --ftp-method nocwd ftp://127.0.0.1:37411/first/second/th%69rd/298 > log/14/stdout298 2> log/14/stderr298
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:37.628821 ====> Client connect
 19:26:37.629024 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:37.629339 < "USER anonymous"
 19:26:37.629374 > "331 We are happy you popped in![CR][LF]"
 19:26:37.629538 < "PASS ftp@example.com"
 19:26:37.629566 > "230 Welcome you silly person[CR][LF]"
 19:26:37.629700 < "PWD"
 19:26:37.629729 > "257 "/" is current directory[CR][LF]"
 19:26:37.629867 < "EPSV"
 19:26:37.629888 ====> Passive DATA channel requested by client
 19:26:37.629900 DATA sockfilt for passive data channel starting...
 19:26:37.635537 DATA sockfilt for passive data channel started (pid 96845)
 19:26:37.635650 DATA sockfilt for passive data channel listens on port 37747
 19:26:37.635689 > "229 Entering Passive Mode (|||37747|)[CR][LF]"
 19:26:37.635705 Client has beCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind322 ../src/curl -q --output log/8/curl322.out  --include --trace-ascii log/8/trace322 --trace-time http://localhost/wont-get-this --proto +-http > log/8/stdout322 2> log/8/stderr322
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind321 ../src/curl -q --output log/2/curl321.out  --include --trace-ascii log/2/trace321 --trace-time http://127.0.0.1:34531/321 --etag-save - >> log/2/out321  2> log/2/stderr321
en notified that upcoming DATA connection is awaited on port 37747
 19:26:37.635972 Client connects to port 37747
 19:26:37.636000 ====> Client established passive DATA connection on port 37747
 19:26:37.636074 < "TYPE I"
 19:26:37.636103 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:37.636248 < "SIZE verifiedserver"
 19:26:37.636282 > "213 17[CR][LF]"
 19:26:37.636410 < "RETR verifiedserver"
 19:26:37.636439 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:37.636525 =====> Closing passive DATA connection...
 19:26:37.636538 Server disconnects passive DATA connection
 19:26:37.636739 Server disconnected passive DATA connection
 19:26:37.636761 DATA sockfilt for passive data channel quits (pid 96845)
 19:26:37.636964 DATA sockfilt for passive data channel quit (pid 96845)
 19:26:37.636987 =====> Closed passive DATA connection
 19:26:37.637012 > "226 File transfer complete[CR][LF]"
 19:26:37.686175 < "QUIT"
 19:26:37.686234 > "221 bye bye baby[CR][LF]"
 19:26:37.687532 MAIN sockfilt said DISC
 19:26:37.687577 ====> Client disconnected
 19:26:37.687662 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:38.232845 ====> Client connect
 19:26:38.233200 Received DATA (on stdin)
 19:26:38.233214 > 146 bytes data, server => client
 19:26:38.233224 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:38.233232 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:38.233240 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:38.233352 < 16 bytes data, client => server
 19:26:38.233363 'USER anonymous\r\n'
 19:26:38.233536 Received DATA (on stdin)
 19:26:38.233547 > 33 bytes data, server => client
 19:26:38.233555 '331 We are happy you popped in!\r\n'
 19:26:38.233611 < 22 bytes data, client => server
 19:26:38.233620 'PASS ftp@example.com\r\n'
 19:26:38.233725 Received DATA (on stdin)
 19:26:38.233734 > 30 bytes data, server => client
 19:26:38.233742 '230 Welcome you silly person\r\n'
 19:26:38.233788 < 5 bytes data, client => server
 19:26:38.233796 'PWD\r\n'
 19:26:38.233886 Received DATA (on stdin)
 19:26:38.233895 > 30 bytes data, server => client
 19:26:38.233903 '257 "/" is current directory\r\n'
 19:26:38.233955 < 6 bytes data, client => server
 19:26:38.233965 'EPSV\r\n'
 19:26:38.239872 Received DATA (on stdin)
 19:26:38.239885 > 39 bytes data, server => client
 19:26:38.239893 '229 Entering Passive Mode (|||37747|)\r\n'
 19:26:38.240084 < 8 bytes data, client => server
 19:26:38.240094 'TYPE I\r\n'
 19:26:38.240265 Received DATA (on stdin)
 19:26:38.240275 > 33 bytes data, server => client
 19:26:38.240284 '200 I modify TYPE as you wanted\r\n'
 19:26:38.240335 < 21 bytes data, client => server
 19:26:38.240344 'SIZE verifiedserver\r\n'
 19:26:38.240441 Received DATA (on stdin)
 19:26:38.240450 > 8 bytes data, server => client
 19:26:38.240458 '213 17\r\n'
 19:26:38.240503 < 21 bytes data, client => server
 19:26:38.240511 'RETR verifiedserver\r\n'
 19:26:38.240775 Received DATA (on stdin)
 19:26:38.240785 > 29 bytes data, server => client
 19:26:38.240793 '150 Binary junk (17 bytes).\r\n'
 19:26:38.241174 Received DATA (on stdin)
 19:26:38.241185 > 28 bytes data, server => client
 19:26:38.241193 '226 File transfer complete\r\n'
 19:26:38.290157 < 6 bytes data, client => server
 19:26:38.290189 'QUIT\r\n'
 19:26:38.290416 Received DATA (on stdin)
 19:26:38.290428 > 18 bytes data, server => client
 19:26:38.290437 '221 bye bye baby\r\n'
 19:26:38.291644 ====> Client disconnect
 19:26:38.291838 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:37.237810 Running IPv4 version
 19:26:37.237891 Listening on port 37747
 19:26:37.237934 Wrote pid 96845 to log/14/server/ftp_sockdata.pid
 19:26:37.239633 Received PING (on stdin)
 19:26:37.239727 Received PORT (on stdin)
 19:26:37.240058 ====> Client connect
 19:26:37.240700 Received DATA (on stdin)
 19:26:37.240710 > 17 bytes data, server => client
 19:26:37.240718 'WE ROOLZ: 85053\r\n'
 19:26:37.240743 Received DISC (on stdin)
 19:26:37.240752 ====> Client forcibly disconnected
 19:26:37.240931 Received QUIT (on stdin)
 19:26:37.240940 quits
 19:26:37.240995 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 298
=== End of file server.cmd
=== Start of file valgrind298
 ==96883== 
 ==96883== Process terminating with default action of signal 4 (SIGILL)
 ==96883==  Illegal opcode at address 0x492B75F
 ==96883==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==96883==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==96883==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==96883==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==96883==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==96883==    by 0x49908EB: curl_version_info (version.c:600)
 ==96883==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==96883==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==96883==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==96883==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind298
test 0321 [--etag-save to stdout append to file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind321 ../src/curl -q --output log/2/curl321.out  --include --trace-ascii log/2/trace321 --trace-time http://127.0.0.1:34531/321 --etag-save - >> log/2/out321  2> log/2/stderr321

 321: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 321
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind321 ../src/curl -q --output log/2/curl321.out  --include --trace-ascii log/2/trace321 --trace-time http://127.0.0.1:34531/321 --etag-save - >> log/2/out321  2> log/2/stderr321
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.435055 ====> Client connect
 19:26:39.435375 accept_connection 3 returned 4
 19:26:39.435433 Read 93 bytes
 19:26:39.435442 Process 93 bytes request
 19:26:39.435453 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.435461 Are-we-friendly question received
 19:26:39.435489 Wrote request (93 bytes) input to log/2/server.input
 19:26:39.435507 Identifying ourselves as friends
 19:26:39.435591 Response sent (56 bytes) and written to log/2/server.response
 19:26:39.435599 special request received, no persistency
 19:26:39.435606 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 51520 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file out321
 initial content
=== End of file out321
=== Start of file server.cmd
 Testnum 321
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind321
 ==97437== 
 ==97437== Process terminating with default action of signal 4 (SIGILL)
 ==97437==  Illegal opcode at address 0x492B75F
 ==97437==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97437==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97437==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97437==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97437==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97437==    by 0x49908EB: curl_version_info (version.c:600)
 ==97437==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97437==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97437==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97437==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind321
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind320 ../src/curl -q --output log/22/curl320.out  --include --trace-ascii log/22/trace320 --trace-time http://localhost:35989/320 -b log/22/cookies.txt --resolve localhost:35989:127.0.0.1 > log/22/stdout320 2> log/22/stderr320
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind319 ../src/curl -q --output log/5/curl319.out  --include --trace-ascii log/5/trace319 --trace-time http://127.0.0.1:37089/319 --raw > log/5/stdout319 2> log/5/stderr319
test 0322 [--proto with multiple modifiers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind322 ../src/curl -q --output log/8/curl322.out  --include --trace-ascii log/8/trace322 --trace-time http://localhost/wont-get-this --proto +-http > log/8/stdout322 2> log/8/stderr322

 322: stderr FAILED:
--- log/8/check-expected	2026-10-15 19:26:41.173892233 +0000
+++ log/8/check-generated	2026-10-15 19:26:41.169887822 +0000
@@ -1,3 +0,0 @@
-curl: unrecognized protocol '-http'[CR][LF]
-curl: option --proto: is badly used here[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/8/ directory after test 322
=== Start of file check-expected
 curl: unrecognized protocol '-http'[CR][LF]
 curl: option --proto: is badly used here[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind322 ../src/curl -q --output log/8/curl322.out  --include --trace-ascii log/8/trace322 --trace-time http://localhost/wont-get-this --proto +-http > log/8/stdout322 2> log/8/stderr322
=== End of file commands.log
=== Start of file server.cmd
 Testnum 322
=== End of file server.cmd
=== Start of file valgrind322
 ==97452== 
 ==97452== Process terminating with default action of signal 4 (SIGILL)
 ==97452==  Illegal opcode at address 0x492B75F
 ==97452==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97452==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97452==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97452==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97452==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97452==    by 0x49908EB: curl_version_info (version.c:600)
 ==97452==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97452==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97452==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97452==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind322
test 0320 [Load cookies from file for localhost]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind320 ../src/curl -q --output log/22/curl320.out  --include --trace-ascii log/22/trace320 --trace-time http://localhost:35989/320 -b log/22/cookies.txt --resolve localhost:35989:127.0.0.1 > log/22/stdout320 2> log/22/stderr320

 320: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 320
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind320 ../src/curl -q --output log/22/curl320.out  --include --trace-ascii log/22/trace320 --trace-time http://localhost:35989/320 -b log/22/cookies.txt --resolve localhost:35989:127.0.0.1 > log/22/stdout320 2> log/22/stderr320
=== End of file commands.log
=== Start of file cookies.txt
 localhost	TRUE	/	FALSE	0	good	allowed
=== End of file cookies.txt
=== Start of file http_server.log
 19:26:38.422813 ====> Client connect
 19:26:38.422861 accept_connection 3 returned 4
 19:26:38.422891 Read 93 bytes
 19:26:38.422900 Process 93 bytes request
 19:26:38.422912 Got request: GET /verifiedserver HTTP/1.1
 19:26:38.422920 Are-we-friendly question received
 19:26:38.422947 Wrote request (93 bytes) input to log/22/server.input
 19:26:38.422963 Identifying ourselves as friends
 19:26:38.423042 Response sent (56 bytes) and written to log/22/server.response
 19:26:38.423051 special request received, no persistency
 19:26:38.423058 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 40880 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 320
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind320
 ==97451== 
 ==97451== Process terminating with default action of signal 4 (SIGILL)
 ==97451==  Illegal opcode at address 0x492B75F
 ==97451==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97451==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97451==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97451==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97451==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97451==    by 0x49908EB: curl_version_info (version.c:600)
 ==97451==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97451==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97451==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97451==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind320
test 0319 [HTTP GET gobbledigook transfer-encoded data in raw mode]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind319 ../src/curl -q --output log/5/curl319.out  --include --trace-ascii log/5/trace319 --trace-time http://127.0.0.1:37089/319 --raw > log/5/stdout319 2> log/5/stderr319

 319: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 319
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind319 ../src/curl -q --output log/5/curl319.out  --include --trace-ascii log/5/trace319 --trace-time http://127.0.0.1:37089/319 --raw > log/5/stdout319 2> log/5/stderr319
=== End of file commands.log
=== Start of file http_server.log
 19:26:38.236005 ====> Client connect
 19:26:38.236045 accept_connection 3 returned 4
 19:26:38.236214 Read 93 bytes
 19:26:38.236231 Process 93 bytes request
 19:26:38.236245 Got request: GET /verifiedserver HTTP/1.1
 19:26:38.236255 Are-we-friendly question received
 19:26:38.236288 Wrote request (93 bytes) input to log/5/server.input
 19:26:38.236307 Identifying ourselves as friends
 19:26:38.236394 Response sent (56 bytes) and written to log/5/server.response
 19:26:38.236407 special request received, no persistency
 19:26:38.236416 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 39820 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 319
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind319
 ==97379== 
 ==97379== Process terminating with default action of signal 4 (SIGILL)
 ==CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind326 ../src/curl -q --output log/9/curl326.out  --trace-ascii log/9/trace326 --trace-time http://127.0.0.1:43733/326 --raw > log/9/stdout326 2> log/9/stderr326
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind327 ../src/curl -q --output log/15/curl327.out  --include --trace-ascii log/15/trace327 --trace-time http://127.0.0.1:40321/we/want/327 -b none -c log/15/cookies327 http://127.0.0.1:40321/we/want/3270002 > log/15/stdout327 2> log/15/stderr327
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind328 ../src/curl -q --output log/21/curl328.out  --include --trace-ascii log/21/trace328 --trace-time http://127.0.0.1:39881/hello/328 --compressed > log/21/stdout328 2> log/21/stderr328
97379==  Illegal opcode at address 0x492B75F
 ==97379==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97379==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97379==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97379==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97379==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97379==    by 0x49908EB: curl_version_info (version.c:600)
 ==97379==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97379==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97379==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97379==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind319
test 0326 [HTTP GET chunked data in raw mode]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind326 ../src/curl -q --output log/9/curl326.out  --trace-ascii log/9/trace326 --trace-time http://127.0.0.1:43733/326 --raw > log/9/stdout326 2> log/9/stderr326

 326: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 326
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind326 ../src/curl -q --output log/9/curl326.out  --trace-ascii log/9/trace326 --trace-time http://127.0.0.1:43733/326 --raw > log/9/stdout326 2> log/9/stderr326
=== End of file commands.log
=== Start of file http_server.log
 19:26:38.680423 ====> Client connect
 19:26:38.680460 accept_connection 3 returned 4
 19:26:38.680564 Read 93 bytes
 19:26:38.680583 Process 93 bytes request
 19:26:38.680597 Got request: GET /verifiedserver HTTP/1.1
 19:26:38.680606 Are-we-friendly question received
 19:26:38.680639 Wrote request (93 bytes) input to log/9/server.input
 19:26:38.680656 Identifying ourselves as friends
 19:26:38.680716 Response sent (56 bytes) and written to log/9/server.response
 19:26:38.680726 special request received, no persistency
 19:26:38.680735 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 39504 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 326
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind326
 ==97629== 
 ==97629== Process terminating with default action of signal 4 (SIGILL)
 ==97629==  Illegal opcode at address 0x492B75F
 ==97629==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97629==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97629==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97629==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97629==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97629==    by 0x49908EB: curl_version_info (version.c:600)
 ==97629==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97629==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97629==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97629==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind326
test 0327 [HTTP with cookiejar without cookies left]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind327 ../src/curl -q --output log/15/curl327.out  --include --trace-ascii log/15/trace327 --trace-time http://127.0.0.1:40321/we/want/327 -b none -c log/15/cookies327 http://127.0.0.1:40321/we/want/3270002 > log/15/stdout327 2> log/15/stderr327

 327: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 327
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind327 ../src/curl -q --output log/15/curl327.out  --include --trace-ascii log/15/trace327 --trace-time http://127.0.0.1:40321/we/want/327 -b none -c log/15/cookies327 http://127.0.0.1:40321/we/want/3270002 > log/15/stdout327 2> log/15/stderr327
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.869771 ====> Client connect
 19:26:39.869807 accept_connection 3 returned 4
 19:26:39.869829 Read 93 bytes
 19:26:39.869838 Process 93 bytes request
 19:26:39.869858 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.869867 Are-we-friendly question received
 19:26:39.869897 Wrote request (93 bytes) input to log/15/server.input
 19:26:39.869915 Identifying ourselves as friends
 19:26:39.869987 Response sent (56 bytes) and written to log/15/server.response
 19:26:39.870000 special request received, no persistency
 19:26:39.870008 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 52252 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 327
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind327
 ==97722== 
 ==97722== Process terminating with default action of signal 4 (SIGILL)
 ==97722==  Illegal opcode at address 0x492B75F
 ==97722==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97722==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97722==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97722==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97722==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97722==    by 0x49908EB: curl_version_info (version.c:600)
 ==97722==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97722==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97722==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97722==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind327
test 0328 [HTTP with "Content-Encoding: none]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind328 ../src/curl -q --output log/21/curl328.out  --include --trace-ascii log/21/trace328 --trace-time http://127.0.0.1:39881/hello/328 --compressed > log/21/stdout328 2> log/21/stderr328

 328: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 328
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind328 ../src/curl -q --output log/21/curl328.out  --include --trace-ascii log/21/trace328 --trace-time http://127.0.0.1:39881/hello/328 --compressed > log/21/stdout328 2> log/21/stdCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind335 ../src/curl -q --output log/17/curl335.out  --include --trace-ascii log/17/trace335 --trace-time http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:35993 --proxy-digest --digest > log/17/stdout335 2> log/17/stderr335
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind330 ../src/curl -q --output log/11/curl330.out  --include --trace-ascii log/11/trace330 --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:40989 -H "Cookie: test=yes" --location > log/11/stdout330 2> log/11/stderr330
err328
=== End of file commands.log
=== Start of file http_server.log
 19:26:38.910378 ====> Client connect
 19:26:38.910411 accept_connection 3 returned 4
 19:26:38.910432 Read 93 bytes
 19:26:38.910441 Process 93 bytes request
 19:26:38.910452 Got request: GET /verifiedserver HTTP/1.1
 19:26:38.910461 Are-we-friendly question received
 19:26:38.910486 Wrote request (93 bytes) input to log/21/server.input
 19:26:38.910503 Identifying ourselves as friends
 19:26:38.910602 Response sent (56 bytes) and written to log/21/server.response
 19:26:38.910613 special request received, no persistency
 19:26:38.910621 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 56472 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 328
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind328
 ==97735== 
 ==97735== Process terminating with default action of signal 4 (SIGILL)
 ==97735==  Illegal opcode at address 0x492B75F
 ==97735==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97735==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97735==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97735==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97735==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97735==    by 0x49908EB: curl_version_info (version.c:600)
 ==97735==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97735==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97735==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97735==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind328
test 0335 [HTTP with proxy Digest and site Digest with creds in URLs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind335 ../src/curl -q --output log/17/curl335.out  --include --trace-ascii log/17/trace335 --trace-time http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:35993 --proxy-digest --digest > log/17/stdout335 2> log/17/stderr335

 335: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 335
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind335 ../src/curl -q --output log/17/curl335.out  --include --trace-ascii log/17/trace335 --trace-time http://digest:a-lot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:35993 --proxy-digest --digest > log/17/stdout335 2> log/17/stderr335
=== End of file commands.log
=== Start of file http_server.log
 19:26:40.550082 ====> Client connect
 19:26:40.550122 accept_connection 3 returned 4
 19:26:40.550143 Read 93 bytes
 19:26:40.550153 Process 93 bytes request
 19:26:40.550164 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.550173 Are-we-friendly question received
 19:26:40.550199 Wrote request (93 bytes) input to log/17/server.input
 19:26:40.550218 Identifying ourselves as friends
 19:26:40.550296 Response sent (56 bytes) and written to log/17/server.response
 19:26:40.550304 special request received, no persistency
 19:26:40.550311 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 35502 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 335
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind335
 ==98162== 
 ==98162== Process terminating with default action of signal 4 (SIGILL)
 ==98162==  Illegal opcode at address 0x492B75F
 ==98162==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98162==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98162==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98162==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98162==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98162==    by 0x49908EB: curl_version_info (version.c:600)
 ==98162==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98162==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98162==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98162==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind335
test 0330 [HTTP with custom Cookie: and redirect to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind330 ../src/curl -q --output log/11/curl330.out  --include --trace-ascii log/11/trace330 --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:40989 -H "Cookie: test=yes" --location > log/11/stdout330 2> log/11/stderr330

 330: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 330
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind330 ../src/curl -q --output log/11/curl330.out  --include --trace-ascii log/11/trace330 --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:40989 -H "Cookie: test=yes" --location > log/11/stdout330 2> log/11/stderr330
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.150022 ====> Client connect
 19:26:39.150070 accept_connection 3 returned 4
 19:26:39.150100 Read 93 bytes
 19:26:39.150112 Process 93 bytes request
 19:26:39.150127 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.150136 Are-we-friendly question received
 19:26:39.150168 Wrote request (93 bytes) input to log/11/server.input
 19:26:39.150187 Identifying ourselves as friends
 19:26:39.150278 Response sent (56 bytes) and written to log/11/server.response
 19:26:39.150291 special request received, no persistency
 19:26:39.150300 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 38494 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 330
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind330
 ==97899== 
 =CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind331 ../src/curl -q --output log/20/curl331.out  --include --trace-ascii log/20/trace331 --trace-time -x http://127.0.0.1:33897 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/20/stdout331 2> log/20/stderr331
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind329 ../src/curl -q --output log/16/curl329.out  --include --trace-ascii log/16/trace329 --trace-time http://127.0.0.1:35903/we/want/329 -b log/16/jar329.txt -b log/16/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:35903/we/want/3290002 > log/16/stdout329 2> log/16/stderr329
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind333 ../src/curl -q --output log/7/curl333.out  --include --trace-ascii log/7/trace333 --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/7/stdout333 2> log/7/stderr333
=97899== Process terminating with default action of signal 4 (SIGILL)
 ==97899==  Illegal opcode at address 0x492B75F
 ==97899==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97899==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97899==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97899==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97899==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97899==    by 0x49908EB: curl_version_info (version.c:600)
 ==97899==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97899==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind330
test 0331 [HTTP with cookie using hostname 'moo']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind331 ../src/curl -q --output log/20/curl331.out  --include --trace-ascii log/20/trace331 --trace-time -x http://127.0.0.1:33897 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/20/stdout331 2> log/20/stderr331

 331: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 331
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind331 ../src/curl -q --output log/20/curl331.out  --include --trace-ascii log/20/trace331 --trace-time -x http://127.0.0.1:33897 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/20/stdout331 2> log/20/stderr331
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.179262 ====> Client connect
 19:26:39.179296 accept_connection 3 returned 4
 19:26:39.179319 Read 93 bytes
 19:26:39.179329 Process 93 bytes request
 19:26:39.179341 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.179349 Are-we-friendly question received
 19:26:39.179375 Wrote request (93 bytes) input to log/20/server.input
 19:26:39.179391 Identifying ourselves as friends
 19:26:39.179459 Response sent (56 bytes) and written to log/20/server.response
 19:26:39.179468 special request received, no persistency
 19:26:39.179476 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 36378 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 331
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind331
 ==97895== 
 ==97895== Process terminating with default action of signal 4 (SIGILL)
 ==97895==  Illegal opcode at address 0x492B75F
 ==97895==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97895==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97895==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97895==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97895==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97895==    by 0x49908EB: curl_version_info (version.c:600)
 ==97895==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97895==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97895==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97895==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind331
setenv TZ = GMT
test 0329 [HTTP cookie with Max-Age=0]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind329 ../src/curl -q --output log/16/curl329.out  --include --trace-ascii log/16/trace329 --trace-time http://127.0.0.1:35903/we/want/329 -b log/16/jar329.txt -b log/16/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:35903/we/want/3290002 > log/16/stdout329 2> log/16/stderr329

 329: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 329
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind329 ../src/curl -q --output log/16/curl329.out  --include --trace-ascii log/16/trace329 --trace-time http://127.0.0.1:35903/we/want/329 -b log/16/jar329.txt -b log/16/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:35903/we/want/3290002 > log/16/stdout329 2> log/16/stderr329
=== End of file commands.log
=== Start of file http_server.log
 19:26:40.143336 ====> Client connect
 19:26:40.143381 accept_connection 3 returned 4
 19:26:40.143408 Read 93 bytes
 19:26:40.143419 Process 93 bytes request
 19:26:40.143432 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.143441 Are-we-friendly question received
 19:26:40.143471 Wrote request (93 bytes) input to log/16/server.input
 19:26:40.143491 Identifying ourselves as friends
 19:26:40.143584 Response sent (56 bytes) and written to log/16/server.response
 19:26:40.143596 special request received, no persistency
 19:26:40.143605 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 59194 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file jar329.txt
 .host.foo.com	TRUE	/we/want/	FALSE	22147483647	test	no
 .host.foo.com	TRUE	/we/want/	FALSE	22147483647	tester	yes
=== End of file jar329.txt
=== Start of file server.cmd
 Testnum 329
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind329
 ==97877== 
 ==97877== Process terminating with default action of signal 4 (SIGILL)
 ==97877==  Illegal opcode at address 0x492B75F
 ==97877==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97877==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97877==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97877==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97877==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97877==    by 0x49908EB: curl_version_info (version.c:600)
 ==97877==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97877==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97877==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97877==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind329
test 0333 [Try a non-boolean command line option with --no-]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind333 ../src/curl -q --output log/7/curl333.out  --include --trace-ascii log/7/trace333 --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/7/stdout333 2> log/7/stderr333

curl returned 132, when expecting 2
 333: exit FAILED
== Contents of files in the log/7/ directory after test 333
=== StCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind339 ../src/curl -q --output log/6/curl339.out  --include --trace-ascii log/6/trace339 --trace-time http://127.0.0.1:33935/339 --etag-save log/6/etag339 > log/6/stdout339 2> log/6/stderr339
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind336 ../src/curl -q --output log/4/curl336.out  --include --trace-ascii log/4/trace336 --trace-time ftp://127.0.0.1:39739/336 --range 3-6 > log/4/stdout336 2> log/4/stderr336
art of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind333 ../src/curl -q --output log/7/curl333.out  --include --trace-ascii log/7/trace333 --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/7/stdout333 2> log/7/stderr333
=== End of file commands.log
=== Start of file server.cmd
 Testnum 333
=== End of file server.cmd
=== Start of file valgrind333
 ==97946== 
 ==97946== Process terminating with default action of signal 4 (SIGILL)
 ==97946==  Illegal opcode at address 0x492B75F
 ==97946==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==97946==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==97946==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==97946==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==97946==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==97946==    by 0x49908EB: curl_version_info (version.c:600)
 ==97946==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==97946==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==97946==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==97946==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind333
test 0339 [Check if --etag-save saved correct etag to a file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind339 ../src/curl -q --output log/6/curl339.out  --include --trace-ascii log/6/trace339 --trace-time http://127.0.0.1:33935/339 --etag-save log/6/etag339 > log/6/stdout339 2> log/6/stderr339

 339: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 339
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind339 ../src/curl -q --output log/6/curl339.out  --include --trace-ascii log/6/trace339 --trace-time http://127.0.0.1:33935/339 --etag-save log/6/etag339 > log/6/stdout339 2> log/6/stderr339
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.729210 ====> Client connect
 19:26:39.729240 accept_connection 3 returned 4
 19:26:39.729263 Read 93 bytes
 19:26:39.729272 Process 93 bytes request
 19:26:39.729285 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.729293 Are-we-friendly question received
 19:26:39.729320 Wrote request (93 bytes) input to log/6/server.input
 19:26:39.729335 Identifying ourselves as friends
 19:26:39.729397 Response sent (56 bytes) and written to log/6/server.response
 19:26:39.729407 special request received, no persistency
 19:26:39.729415 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 37256 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 339
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind339
 ==98335== 
 ==98335== Process terminating with default action of signal 4 (SIGILL)
 ==98335==  Illegal opcode at address 0x492B75F
 ==98335==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98335==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98335==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98335==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98335==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98335==    by 0x49908EB: curl_version_info (version.c:600)
 ==98335==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98335==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98335==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98335==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind339
test 0336 [FTP range download when SIZE does not work]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind336 ../src/curl -q --output log/4/curl336.out  --include --trace-ascii log/4/trace336 --trace-time ftp://127.0.0.1:39739/336 --range 3-6 > log/4/stdout336 2> log/4/stderr336

 336: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 336
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind336 ../src/curl -q --output log/4/curl336.out  --include --trace-ascii log/4/trace336 --trace-time ftp://127.0.0.1:39739/336 --range 3-6 > log/4/stdout336 2> log/4/stderr336
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:39.955387 ====> Client connect
 19:26:39.955619 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:39.958928 < "USER anonymous"
 19:26:39.958966 > "331 We are happy you popped in![CR][LF]"
 19:26:39.959128 < "PASS ftp@example.com"
 19:26:39.959153 > "230 Welcome you silly person[CR][LF]"
 19:26:39.959296 < "PWD"
 19:26:39.959324 > "257 "/" is current directory[CR][LF]"
 19:26:39.959476 < "EPSV"
 19:26:39.959502 ====> Passive DATA channel requested by client
 19:26:39.959516 DATA sockfilt for passive data channel starting...
 19:26:39.966728 DATA sockfilt for passive data channel started (pid 98154)
 19:26:39.966857 DATA sockfilt for passive data channel listens on port 39115
 19:26:39.966901 > "229 Entering Passive Mode (|||39115|)[CR][LF]"
 19:26:39.966917 Client has been notified that upcoming DATA connection is awaited on port 39115
 19:26:39.967223 Client connects to port 39115
 19:26:39.967254 ====> Client established passive DATA connection on port 39115
 19:26:39.967347 < "TYPE I"
 19:26:39.967378 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:39.967543 < "SIZE verifiedserver"
 19:26:39.967587 > "213 17[CR][LF]"
 19:26:39.967736 < "RETR verifiedserver"
 19:26:39.967771 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:39.967866 =====> Closing passive DATA connection...
 19:26:39.967882 Server disconnects passive DATA connection
 19:26:39.968100 Server disconnected passive DATA connection
 19:26:39.968126 DATA sockfilt for passive data channel quits (pid 98154)
 19:26:39.968375 DATA sockfilt for passive data channel quit (pid 98154)
 19:26:39.968397 =====> Closed passive DATA connection
 19:26:39.968425 > "226 File transfer complete[CR][LF]"
 19:26:40.015506 < "QUIT"
 19:26:40.015570 > "221 bye bye baby[CR][LF]"
 19:26:40.019826 MAIN sockfilt said DISC
 19:26:40.019876 ====> Client disconnected
 19:26:40.019959 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:39.555656 ====> Client connect
 19:26:39.560333 Received DATA (on stdin)
 19:26:39.560352 > 146 bytes data, server => client
 19:26:39.560363 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:39.560373 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:39.560383 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:39.563463 < 16 bytes data, client => server
 19:26:39.563481 'USER anonymous\r\n'
 19:26:39.563666 Received DATA (on stdin)
 19:26:39.563677 > 33 bytes data, server => client
 19:26:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind338 ../src/curl -q --output log/19/curl338.out  --include --trace-ascii log/19/trace338 --trace-time http://127.0.0.1:46497/338 --next http://127.0.0.1:46497/338 --anyauth -u foo:moo > log/19/stdout338 2> log/19/stderr338
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind332 ../src/curl -q --output log/24/curl332.out  --include --trace-ascii log/24/trace332 --trace-time tftp://127.0.0.1:36714//332 --tftp-blksize 400 > log/24/stdout332 2> log/24/stderr332
39.563689 '331 We are happy you popped in!\r\n'
 19:26:39.563743 < 22 bytes data, client => server
 19:26:39.563754 'PASS ftp@example.com\r\n'
 19:26:39.563851 Received DATA (on stdin)
 19:26:39.563861 > 30 bytes data, server => client
 19:26:39.563871 '230 Welcome you silly person\r\n'
 19:26:39.563918 < 5 bytes data, client => server
 19:26:39.563928 'PWD\r\n'
 19:26:39.564021 Received DATA (on stdin)
 19:26:39.564031 > 30 bytes data, server => client
 19:26:39.564041 '257 "/" is current directory\r\n'
 19:26:39.564099 < 6 bytes data, client => server
 19:26:39.564108 'EPSV\r\n'
 19:26:39.571626 Received DATA (on stdin)
 19:26:39.571642 > 39 bytes data, server => client
 19:26:39.571652 '229 Entering Passive Mode (|||39115|)\r\n'
 19:26:39.571844 < 8 bytes data, client => server
 19:26:39.571858 'TYPE I\r\n'
 19:26:39.572079 Received DATA (on stdin)
 19:26:39.572090 > 33 bytes data, server => client
 19:26:39.572100 '200 I modify TYPE as you wanted\r\n'
 19:26:39.572156 < 21 bytes data, client => server
 19:26:39.572166 'SIZE verifiedserver\r\n'
 19:26:39.572288 Received DATA (on stdin)
 19:26:39.572298 > 8 bytes data, server => client
 19:26:39.572307 '213 17\r\n'
 19:26:39.572357 < 21 bytes data, client => server
 19:26:39.572367 'RETR verifiedserver\r\n'
 19:26:39.572585 Received DATA (on stdin)
 19:26:39.572595 > 29 bytes data, server => client
 19:26:39.572605 '150 Binary junk (17 bytes).\r\n'
 19:26:39.573128 Received DATA (on stdin)
 19:26:39.573139 > 28 bytes data, server => client
 19:26:39.573149 '226 File transfer complete\r\n'
 19:26:39.613645 < 6 bytes data, client => server
 19:26:39.613677 'QUIT\r\n'
 19:26:39.623177 Received DATA (on stdin)
 19:26:39.623207 > 18 bytes data, server => client
 19:26:39.623218 '221 bye bye baby\r\n'
 19:26:39.624471 ====> Client disconnect
 19:26:39.624678 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:39.570900 Running IPv4 version
 19:26:39.570990 Listening on port 39115
 19:26:39.571190 Wrote pid 98154 to log/4/server/ftp_sockdata.pid
 19:26:39.571367 Received PING (on stdin)
 19:26:39.571465 Received PORT (on stdin)
 19:26:39.571877 ====> Client connect
 19:26:39.572631 Received DATA (on stdin)
 19:26:39.572642 > 17 bytes data, server => client
 19:26:39.572652 'WE ROOLZ: 85249\r\n'
 19:26:39.572675 Received DISC (on stdin)
 19:26:39.572686 ====> Client forcibly disconnected
 19:26:39.572836 Received QUIT (on stdin)
 19:26:39.572845 quits
 19:26:39.572907 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 REPLY SIZE 500 no such command
 Testnum 336
=== End of file server.cmd
=== Start of file valgrind336
 ==98200== 
 ==98200== Process terminating with default action of signal 4 (SIGILL)
 ==98200==  Illegal opcode at address 0x492B75F
 ==98200==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98200==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98200==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98200==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98200==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98200==    by 0x49908EB: curl_version_info (version.c:600)
 ==98200==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98200==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind336
test 0338 [ANYAUTH connection reuse of non-authed connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind338 ../src/curl -q --output log/19/curl338.out  --include --trace-ascii log/19/trace338 --trace-time http://127.0.0.1:46497/338 --next http://127.0.0.1:46497/338 --anyauth -u foo:moo > log/19/stdout338 2> log/19/stderr338

 338: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 338
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind338 ../src/curl -q --output log/19/curl338.out  --include --trace-ascii log/19/trace338 --trace-time http://127.0.0.1:46497/338 --next http://127.0.0.1:46497/338 --anyauth -u foo:moo > log/19/stdout338 2> log/19/stderr338
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.696772 ====> Client connect
 19:26:39.696808 accept_connection 3 returned 4
 19:26:39.696830 Read 93 bytes
 19:26:39.696839 Process 93 bytes request
 19:26:39.696851 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.696859 Are-we-friendly question received
 19:26:39.696884 Wrote request (93 bytes) input to log/19/server.input
 19:26:39.696899 Identifying ourselves as friends
 19:26:39.696962 Response sent (56 bytes) and written to log/19/server.response
 19:26:39.696971 special request received, no persistency
 19:26:39.696978 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 47122 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 338
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind338
 ==98290== 
 ==98290== Process terminating with default action of signal 4 (SIGILL)
 ==98290==  Illegal opcode at address 0x492B75F
 ==98290==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98290==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98290==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98290==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98290==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98290==    by 0x49908EB: curl_version_info (version.c:600)
 ==98290==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98290==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98290==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98290==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind338
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/24/server/tftp_server.pid" --portfile "log/24/server/tftp_server.port" --logfile "log/24/tftp_server.log" --logdir "log/24" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 97864 port 36714
* pid tftp => 97864 97864
test 0332 [TFTP retrieve with blksize 400]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind332 ../src/curl -q --output log/24/curl332.out  --include --trace-ascii log/24/trace332 --trace-time tftp://127.0.0.1:36714//332 --tftp-blksize 400 > log/24/stdout332 2> log/24/stderr332

 332: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 332
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind332 ../src/curl -q --output log/24/curl332.out  --include --trace-ascii log/24/trace332 --trace-time tftp://127.0.0.1:36714//332 --tftp-blksize 400 > log/24/stdout332 2> log/24/stderr332CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind334 ../src/curl -q --output log/10/curl334.out  --include --trace-ascii log/10/trace334 --trace-time http://127.0.0.1:40913/want/334 > log/10/stdout334 2> log/10/stderr334
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind340 ../src/curl -q --output log/18/curl340.out  --include --trace-ascii log/18/trace340 --trace-time --ftp-method singlecwd ftp://127.0.0.1:36115/%00first/second/third/340 > log/18/stdout340 2> log/18/stderr340

=== End of file commands.log
=== Start of file server.cmd
 Testnum 332
=== End of file server.cmd
=== Start of file tftp_server.log
 19:26:39.174147 Wrote pid 97864 to log/24/server/tftp_server.pid
 19:26:39.174860 Wrote port 36714 to log/24/server/tftp_server.port
 19:26:39.174873 Running IPv4 version on port UDP/36714
=== End of file tftp_server.log
=== Start of file valgrind332
 ==98541== 
 ==98541== Process terminating with default action of signal 4 (SIGILL)
 ==98541==  Illegal opcode at address 0x492B75F
 ==98541==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98541==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98541==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98541==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98541==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98541==    by 0x49908EB: curl_version_info (version.c:600)
 ==98541==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98541==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98541==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98541==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind332
test 0334 [HTTP 204 No content with chunked header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind334 ../src/curl -q --output log/10/curl334.out  --include --trace-ascii log/10/trace334 --trace-time http://127.0.0.1:40913/want/334 > log/10/stdout334 2> log/10/stderr334

 334: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 334
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind334 ../src/curl -q --output log/10/curl334.out  --include --trace-ascii log/10/trace334 --trace-time http://127.0.0.1:40913/want/334 > log/10/stdout334 2> log/10/stderr334
=== End of file commands.log
=== Start of file http_server.log
 19:26:39.462632 ====> Client connect
 19:26:39.462667 accept_connection 3 returned 4
 19:26:39.462766 Read 93 bytes
 19:26:39.462777 Process 93 bytes request
 19:26:39.462791 Got request: GET /verifiedserver HTTP/1.1
 19:26:39.462799 Are-we-friendly question received
 19:26:39.462828 Wrote request (93 bytes) input to log/10/server.input
 19:26:39.462845 Identifying ourselves as friends
 19:26:39.462899 Response sent (56 bytes) and written to log/10/server.response
 19:26:39.462908 special request received, no persistency
 19:26:39.462916 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 45880 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 334
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind334
 ==98120== 
 ==98120== Process terminating with default action of signal 4 (SIGILL)
 ==98120==  Illegal opcode at address 0x492B75F
 ==98120==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98120==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98120==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98120==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98120==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98120==    by 0x49908EB: curl_version_info (version.c:600)
 ==98120==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98120==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98120==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98120==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind334
test 0340 [FTP using %00 in path with singlecwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind340 ../src/curl -q --output log/18/curl340.out  --include --trace-ascii log/18/trace340 --trace-time --ftp-method singlecwd ftp://127.0.0.1:36115/%00first/second/third/340 > log/18/stdout340 2> log/18/stderr340

 340: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 340
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind340 ../src/curl -q --output log/18/curl340.out  --include --trace-ascii log/18/trace340 --trace-time --ftp-method singlecwd ftp://127.0.0.1:36115/%00first/second/third/340 > log/18/stdout340 2> log/18/stderr340
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:40.418754 ====> Client connect
 19:26:40.419018 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:40.419384 < "USER anonymous"
 19:26:40.419441 > "331 We are happy you popped in![CR][LF]"
 19:26:40.422183 < "PASS ftp@example.com"
 19:26:40.422229 > "230 Welcome you silly person[CR][LF]"
 19:26:40.422448 < "PWD"
 19:26:40.422494 > "257 "/" is current directory[CR][LF]"
 19:26:40.422707 < "EPSV"
 19:26:40.422738 ====> Passive DATA channel requested by client
 19:26:40.422757 DATA sockfilt for passive data channel starting...
 19:26:40.426825 DATA sockfilt for passive data channel started (pid 98509)
 19:26:40.426929 DATA sockfilt for passive data channel listens on port 36735
 19:26:40.426966 > "229 Entering Passive Mode (|||36735|)[CR][LF]"
 19:26:40.426981 Client has been notified that upcoming DATA connection is awaited on port 36735
 19:26:40.427255 Client connects to port 36735
 19:26:40.427283 ====> Client established passive DATA connection on port 36735
 19:26:40.427361 < "TYPE I"
 19:26:40.427389 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:40.427562 < "SIZE verifiedserver"
 19:26:40.427607 > "213 17[CR][LF]"
 19:26:40.427794 < "RETR verifiedserver"
 19:26:40.427840 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:40.427946 =====> Closing passive DATA connection...
 19:26:40.427971 Server disconnects passive DATA connection
 19:26:40.428222 Server disconnected passive DATA connection
 19:26:40.428252 DATA sockfilt for passive data channel quits (pid 98509)
 19:26:40.428538 DATA sockfilt for passive data channel quit (pid 98509)
 19:26:40.428568 =====> Closed passive DATA connection
 19:26:40.428634 > "226 File transfer complete[CR][LF]"
 19:26:40.475751 < "QUIT"
 19:26:40.475900 > "221 bye bye baby[CR][LF]"
 19:26:40.476002 MAIN sockfilt said DISC
 19:26:40.476037 ====> Client disconnected
 19:26:40.476128 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:40.018791 ====> Client connect
 19:26:40.023858 Received DATA (on stdin)
 19:26:40.023881 > 146 bytes data, server => client
 19:26:40.023893 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:40.023904 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:40.023913 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:40.024012 < 16 bytes data, client => server
 19:26:40.024029 'USER anonymous\r\n'
 19:26:40.024261 Received DATA (on stdin)
 19:26:40.024275 > 33 bytes data, server => client
 19:26:40.024286 '331 We are happy you popped in!\r\n'
 19:26:40.026849 < 22 bytes data, client => sCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind337 ../src/curl -q --output log/1/curl337.out  --include --trace-ascii log/1/trace337 --trace-time ftp://127.0.0.1:40221/337 --range 3-6 > log/1/stdout337 2> log/1/stderr337
erver
 19:26:40.026868 'PASS ftp@example.com\r\n'
 19:26:40.027046 Received DATA (on stdin)
 19:26:40.027060 > 30 bytes data, server => client
 19:26:40.027071 '230 Welcome you silly person\r\n'
 19:26:40.027138 < 5 bytes data, client => server
 19:26:40.027157 'PWD\r\n'
 19:26:40.027308 Received DATA (on stdin)
 19:26:40.027322 > 30 bytes data, server => client
 19:26:40.027332 '257 "/" is current directory\r\n'
 19:26:40.027407 < 6 bytes data, client => server
 19:26:40.027423 'EPSV\r\n'
 19:26:40.031791 Received DATA (on stdin)
 19:26:40.031804 > 39 bytes data, server => client
 19:26:40.031813 '229 Entering Passive Mode (|||36735|)\r\n'
 19:26:40.031982 < 8 bytes data, client => server
 19:26:40.031996 'TYPE I\r\n'
 19:26:40.032194 Received DATA (on stdin)
 19:26:40.032205 > 33 bytes data, server => client
 19:26:40.032214 '200 I modify TYPE as you wanted\r\n'
 19:26:40.032271 < 21 bytes data, client => server
 19:26:40.032283 'SIZE verifiedserver\r\n'
 19:26:40.032420 Received DATA (on stdin)
 19:26:40.032432 > 8 bytes data, server => client
 19:26:40.032441 '213 17\r\n'
 19:26:40.032503 < 21 bytes data, client => server
 19:26:40.032517 'RETR verifiedserver\r\n'
 19:26:40.032783 Received DATA (on stdin)
 19:26:40.032796 > 29 bytes data, server => client
 19:26:40.032806 '150 Binary junk (17 bytes).\r\n'
 19:26:40.033385 Received DATA (on stdin)
 19:26:40.033398 > 28 bytes data, server => client
 19:26:40.033447 '226 File transfer complete\r\n'
 19:26:40.080353 < 6 bytes data, client => server
 19:26:40.080391 'QUIT\r\n'
 19:26:40.080612 Received DATA (on stdin)
 19:26:40.080629 > 18 bytes data, server => client
 19:26:40.080650 '221 bye bye baby\r\n'
 19:26:40.080768 ====> Client disconnect
 19:26:40.080958 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:40.031300 Running IPv4 version
 19:26:40.031379 Listening on port 36735
 19:26:40.031431 Wrote pid 98509 to log/18/server/ftp_sockdata.pid
 19:26:40.031579 Received PING (on stdin)
 19:26:40.031653 Received PORT (on stdin)
 19:26:40.032015 ====> Client connect
 19:26:40.032872 Received DATA (on stdin)
 19:26:40.032889 > 17 bytes data, server => client
 19:26:40.032899 'WE ROOLZ: 85350\r\n'
 19:26:40.032934 Received DISC (on stdin)
 19:26:40.033067 ====> Client forcibly disconnected
 19:26:40.033109 Received QUIT (on stdin)
 19:26:40.033121 quits
 19:26:40.033188 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 340
=== End of file server.cmd
=== Start of file valgrind340
 ==98514== 
 ==98514== Process terminating with default action of signal 4 (SIGILL)
 ==98514==  Illegal opcode at address 0x492B75F
 ==98514==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98514==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98514==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98514==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98514==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98514==    by 0x49908EB: curl_version_info (version.c:600)
 ==98514==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98514==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98514==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98514==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind340
test 0337 [FTP range download with SIZE returning extra crap]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind337 ../src/curl -q --output log/1/curl337.out  --include --trace-ascii log/1/trace337 --trace-time ftp://127.0.0.1:40221/337 --range 3-6 > log/1/stdout337 2> log/1/stderr337

 337: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 337
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind337 ../src/curl -q --output log/1/curl337.out  --include --trace-ascii log/1/trace337 --trace-time ftp://127.0.0.1:40221/337 --range 3-6 > log/1/stdout337 2> log/1/stderr337
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:40.115369 ====> Client connect
 19:26:40.115596 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:40.115954 < "USER anonymous"
 19:26:40.115996 > "331 We are happy you popped in![CR][LF]"
 19:26:40.116198 < "PASS ftp@example.com"
 19:26:40.116233 > "230 Welcome you silly person[CR][LF]"
 19:26:40.116406 < "PWD"
 19:26:40.116443 > "257 "/" is current directory[CR][LF]"
 19:26:40.116621 < "EPSV"
 19:26:40.116648 ====> Passive DATA channel requested by client
 19:26:40.116662 DATA sockfilt for passive data channel starting...
 19:26:40.127892 DATA sockfilt for passive data channel started (pid 98284)
 19:26:40.128069 DATA sockfilt for passive data channel listens on port 42281
 19:26:40.128127 > "229 Entering Passive Mode (|||42281|)[CR][LF]"
 19:26:40.128152 Client has been notified that upcoming DATA connection is awaited on port 42281
 19:26:40.132069 Client connects to port 42281
 19:26:40.132112 ====> Client established passive DATA connection on port 42281
 19:26:40.132247 < "TYPE I"
 19:26:40.132290 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:40.132500 < "SIZE verifiedserver"
 19:26:40.132537 > "213 17[CR][LF]"
 19:26:40.132676 < "RETR verifiedserver"
 19:26:40.132708 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:40.132799 =====> Closing passive DATA connection...
 19:26:40.132815 Server disconnects passive DATA connection
 19:26:40.133002 Server disconnected passive DATA connection
 19:26:40.133023 DATA sockfilt for passive data channel quits (pid 98284)
 19:26:40.133323 DATA sockfilt for passive data channel quit (pid 98284)
 19:26:40.133348 =====> Closed passive DATA connection
 19:26:40.133377 > "226 File transfer complete[CR][LF]"
 19:26:40.178989 < "QUIT"
 19:26:40.179049 > "221 bye bye baby[CR][LF]"
 19:26:40.180279 MAIN sockfilt said DISC
 19:26:40.180312 ====> Client disconnected
 19:26:40.180399 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:40.716076 ====> Client connect
 19:26:40.720356 Received DATA (on stdin)
 19:26:40.720376 > 146 bytes data, server => client
 19:26:40.720388 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:40.720398 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:40.720407 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:40.720531 < 16 bytes data, client => server
 19:26:40.720545 'USER anonymous\r\n'
 19:26:40.720739 Received DATA (on stdin)
 19:26:40.720752 > 33 bytes data, server => client
 19:26:40.720763 '331 We are happy you popped in!\r\n'
 19:26:40.720830 < 22 bytes data, client => server
 19:26:40.720842 'PASS ftp@example.com\r\n'
 19:26:40.720970 Received DATA (on stdin)
 19:26:40.720982 > 30 bytes data, server => client
 19:26:40.720992 '230 Welcome you silly person\r\n'
 19:26:40.721048 < 5 bytes data, client => server
 19:26:40.721060 'PWD\r\n'
 19:26:40.721180 Received DATA (on stdin)
 19:26:40.721192 > 30 bytes data, server => client
 19:26:40.721202 '257 "/" is current directory\r\n'
 19:26:40.721268 < 6 bytes data, client => server
 19:26:40.721281 'EPSV\r\n'
 19:26:40.733410 Received DATA (on stdin)
 19:26:40.733441 > 39 bytes data, server => client
 19:26:40.733453 '229 Entering Passive Mode (|||42281|)\r\n'
 19:26:40.733654 < 8 bytes data, client => server
 19:26:40.733672 'TYPE I\r\n'
 19:26:40.737038 Received DATA (on stdin)
 19:26:40.737055 > 33 bytes data, server => client
 19:26:40.737066 '200 I modify TYPE as you wanted\r\n'
 19:26:40.737157 < 21 bytes data, client => server
 19:26:40.737168 'SIZE verifiedserver\r\n'
 19:26:40.737275 Received DATA (on stdin)
 19:26:40.737285 > 8 bytes data, server => client
 19:26:40.73CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind341 ../src/curl -q --output log/3/curl341.out  --include --trace-ascii log/3/trace341 --trace-time http://127.0.0.1:36161/341 --etag-compare log/3/etag341 > log/3/stdout341 2> log/3/stderr341
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind342 ../src/curl -q --output log/13/curl342.out  --include --trace-ascii log/13/trace342 --trace-time http://127.0.0.1:38821/342 --etag-compare log/13/etag342 > log/13/stdout342 2> log/13/stderr342
7294 '213 17\r\n'
 19:26:40.737342 < 21 bytes data, client => server
 19:26:40.737351 'RETR verifiedserver\r\n'
 19:26:40.737555 Received DATA (on stdin)
 19:26:40.737566 > 29 bytes data, server => client
 19:26:40.737576 '150 Binary junk (17 bytes).\r\n'
 19:26:40.738117 Received DATA (on stdin)
 19:26:40.738129 > 28 bytes data, server => client
 19:26:40.738139 '226 File transfer complete\r\n'
 19:26:40.783535 < 6 bytes data, client => server
 19:26:40.783568 'QUIT\r\n'
 19:26:40.783804 Received DATA (on stdin)
 19:26:40.783816 > 18 bytes data, server => client
 19:26:40.783826 '221 bye bye baby\r\n'
 19:26:40.784977 ====> Client disconnect
 19:26:40.785155 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:40.728028 Running IPv4 version
 19:26:40.728115 Listening on port 42281
 19:26:40.728163 Wrote pid 98284 to log/1/server/ftp_sockdata.pid
 19:26:40.732536 Received PING (on stdin)
 19:26:40.732693 Received PORT (on stdin)
 19:26:40.736745 ====> Client connect
 19:26:40.737632 Received DATA (on stdin)
 19:26:40.737644 > 17 bytes data, server => client
 19:26:40.737654 'WE ROOLZ: 84935\r\n'
 19:26:40.737680 Received DISC (on stdin)
 19:26:40.737692 ====> Client forcibly disconnected
 19:26:40.737822 Received QUIT (on stdin)
 19:26:40.737833 quits
 19:26:40.737901 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 REPLY SIZE 213 file: 213, Size =51
 Testnum 337
=== End of file server.cmd
=== Start of file valgrind337
 ==98368== 
 ==98368== Process terminating with default action of signal 4 (SIGILL)
 ==98368==  Illegal opcode at address 0x492B75F
 ==98368==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98368==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98368==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98368==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98368==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98368==    by 0x49908EB: curl_version_info (version.c:600)
 ==98368==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98368==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98368==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98368==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind337
test 0341 [A non existing file with --etag-compare is a blank]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind341 ../src/curl -q --output log/3/curl341.out  --include --trace-ascii log/3/trace341 --trace-time http://127.0.0.1:36161/341 --etag-compare log/3/etag341 > log/3/stdout341 2> log/3/stderr341

 341: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 341
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind341 ../src/curl -q --output log/3/curl341.out  --include --trace-ascii log/3/trace341 --trace-time http://127.0.0.1:36161/341 --etag-compare log/3/etag341 > log/3/stdout341 2> log/3/stderr341
=== End of file commands.log
=== Start of file http_server.log
 19:26:41.197690 ====> Client connect
 19:26:41.197735 accept_connection 3 returned 4
 19:26:41.197930 Read 93 bytes
 19:26:41.197947 Process 93 bytes request
 19:26:41.197961 Got request: GET /verifiedserver HTTP/1.1
 19:26:41.197970 Are-we-friendly question received
 19:26:41.198007 Wrote request (93 bytes) input to log/3/server.input
 19:26:41.198027 Identifying ourselves as friends
 19:26:41.198108 Response sent (56 bytes) and written to log/3/server.response
 19:26:41.198120 special request received, no persistency
 19:26:41.198129 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 43498 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 341
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind341
 ==98591== 
 ==98591== Process terminating with default action of signal 4 (SIGILL)
 ==98591==  Illegal opcode at address 0x492B75F
 ==98591==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98591==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98591==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98591==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98591==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98591==    by 0x49908EB: curl_version_info (version.c:600)
 ==98591==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98591==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98591==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98591==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind341
test 0342 [Check if --etag-compare set correct etag in header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind342 ../src/curl -q --output log/13/curl342.out  --include --trace-ascii log/13/trace342 --trace-time http://127.0.0.1:38821/342 --etag-compare log/13/etag342 > log/13/stdout342 2> log/13/stderr342

 342: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 342
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind342 ../src/curl -q --output log/13/curl342.out  --include --trace-ascii log/13/trace342 --trace-time http://127.0.0.1:38821/342 --etag-compare log/13/etag342 > log/13/stdout342 2> log/13/stderr342
=== End of file commands.log
=== Start of file etag342
 "21025-dc7-39462498"
=== End of file etag342
=== Start of file http_server.log
 19:26:40.373248 ====> Client connect
 19:26:40.373283 accept_connection 3 returned 4
 19:26:40.373304 Read 93 bytes
 19:26:40.373314 Process 93 bytes request
 19:26:40.373327 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.373336 Are-we-friendly question received
 19:26:40.373392 Wrote request (93 bytes) input to log/13/server.input
 19:26:40.373409 Identifying ourselves as friends
 19:26:40.373471 Response sent (56 bytes) and written to log/13/server.response
 19:26:40.373481 special request received, no persistency
 19:26:40.373489 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 40544 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 342
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind342
 ==98690== 
 ==98690== Process terminating with default action ofCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind344 ../src/curl -q --output log/12/curl344.out  --include --trace-ascii log/12/trace344 --trace-time http://127.0.0.1:40921/344 --etag-compare log/12/etag344 --etag-save log/12/etag344 > log/12/stdout344 2> log/12/stderr344
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind343 ../src/curl -q --output log/23/curl343.out  --include --trace-ascii log/23/trace343 --trace-time http://127.0.0.1:44711/343 --etag-compare log/23/etag343 --etag-save log/23/out343 > log/23/stdout343 2> log/23/stderr343
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind349 ../src/curl -q --output log/5/curl349.out  --include --trace-ascii log/5/trace349 --trace-time http://127.0.0.1:37089/349 --fail-with-body > log/5/stdout349 2> log/5/stderr349
 signal 4 (SIGILL)
 ==98690==  Illegal opcode at address 0x492B75F
 ==98690==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98690==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98690==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98690==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98690==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98690==    by 0x49908EB: curl_version_info (version.c:600)
 ==98690==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98690==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98690==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98690==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind342
test 0344 [Both --etag-compare and -save store new Etag using non-existing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind344 ../src/curl -q --output log/12/curl344.out  --include --trace-ascii log/12/trace344 --trace-time http://127.0.0.1:40921/344 --etag-compare log/12/etag344 --etag-save log/12/etag344 > log/12/stdout344 2> log/12/stderr344

 344: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 344
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind344 ../src/curl -q --output log/12/curl344.out  --include --trace-ascii log/12/trace344 --trace-time http://127.0.0.1:40921/344 --etag-compare log/12/etag344 --etag-save log/12/etag344 > log/12/stdout344 2> log/12/stderr344
=== End of file commands.log
=== Start of file http_server.log
 19:26:40.563668 ====> Client connect
 19:26:40.563715 accept_connection 3 returned 4
 19:26:40.563746 Read 93 bytes
 19:26:40.563759 Process 93 bytes request
 19:26:40.563772 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.563782 Are-we-friendly question received
 19:26:40.563817 Wrote request (93 bytes) input to log/12/server.input
 19:26:40.563837 Identifying ourselves as friends
 19:26:40.563934 Response sent (56 bytes) and written to log/12/server.response
 19:26:40.563944 special request received, no persistency
 19:26:40.563953 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 41006 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 344
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind344
 ==98806== 
 ==98806== Process terminating with default action of signal 4 (SIGILL)
 ==98806==  Illegal opcode at address 0x492B75F
 ==98806==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98806==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98806==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98806==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98806==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98806==    by 0x49908EB: curl_version_info (version.c:600)
 ==98806==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98806==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98806==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98806==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind344
test 0343 [Both --etag-compare and --etag-save to save new Etag]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind343 ../src/curl -q --output log/23/curl343.out  --include --trace-ascii log/23/trace343 --trace-time http://127.0.0.1:44711/343 --etag-compare log/23/etag343 --etag-save log/23/out343 > log/23/stdout343 2> log/23/stderr343

 343: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 343
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind343 ../src/curl -q --output log/23/curl343.out  --include --trace-ascii log/23/trace343 --trace-time http://127.0.0.1:44711/343 --etag-compare log/23/etag343 --etag-save log/23/out343 > log/23/stdout343 2> log/23/stderr343
=== End of file commands.log
=== Start of file etag343
 "21025-dc7-39462498"
=== End of file etag343
=== Start of file http_server.log
 19:26:40.532604 ====> Client connect
 19:26:40.532639 accept_connection 3 returned 4
 19:26:40.532660 Read 93 bytes
 19:26:40.532670 Process 93 bytes request
 19:26:40.532683 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.532692 Are-we-friendly question received
 19:26:40.532718 Wrote request (93 bytes) input to log/23/server.input
 19:26:40.532735 Identifying ourselves as friends
 19:26:40.532798 Response sent (56 bytes) and written to log/23/server.response
 19:26:40.532809 special request received, no persistency
 19:26:40.532817 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 36330 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 343
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind343
 ==98782== 
 ==98782== Process terminating with default action of signal 4 (SIGILL)
 ==98782==  Illegal opcode at address 0x492B75F
 ==98782==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98782==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98782==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98782==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98782==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98782==    by 0x49908EB: curl_version_info (version.c:600)
 ==98782==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98782==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98782==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98782==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind343
test 0349 [HTTP GET --fail-with-body on HTTP error return]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind349 ../src/curl -q --output log/5/curl349.out  --include --trace-ascii log/5/trace349 --trace-time http://127.0.0.1:37089/349 --fail-with-body > log/5/stdout349 2> log/5/stderr349

 349: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 349
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind345 ../src/curl -q --output log/14/curl345.out  --include --trace-ascii log/14/trace345 --trace-time http://127.0.0.1:45467/345 --etag-compare log/14/etag345 --etag-save log/14/etag345 > log/14/stdout345 2> log/14/stderr345
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind348 ../src/curl -q --output log/22/curl348.out  --include --trace-ascii log/22/trace348 --trace-time ftp://127.0.0.1:33255/348 -T log/22/test348.txt > log/22/stdout348 2> log/22/stderr348
ests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind349 ../src/curl -q --output log/5/curl349.out  --include --trace-ascii log/5/trace349 --trace-time http://127.0.0.1:37089/349 --fail-with-body > log/5/stdout349 2> log/5/stderr349
=== End of file commands.log
=== Start of file http_server.log
 19:26:40.947067 ====> Client connect
 19:26:40.947102 accept_connection 3 returned 4
 19:26:40.947124 Read 93 bytes
 19:26:40.947134 Process 93 bytes request
 19:26:40.947146 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.947155 Are-we-friendly question received
 19:26:40.947179 Wrote request (93 bytes) input to log/5/server.input
 19:26:40.947194 Identifying ourselves as friends
 19:26:40.947258 Response sent (56 bytes) and written to log/5/server.response
 19:26:40.947267 special request received, no persistency
 19:26:40.947275 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 39826 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 349
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind349
 ==99086== 
 ==99086== Process terminating with default action of signal 4 (SIGILL)
 ==99086==  Illegal opcode at address 0x492B75F
 ==99086==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99086==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99086==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99086==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99086==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99086==    by 0x49908EB: curl_version_info (version.c:600)
 ==99086==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99086==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99086==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99086==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind349
test 0345 [Both --etag-compare and -save store new Etag in pre-existing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind345 ../src/curl -q --output log/14/curl345.out  --include --trace-ascii log/14/trace345 --trace-time http://127.0.0.1:45467/345 --etag-compare log/14/etag345 --etag-save log/14/etag345 > log/14/stdout345 2> log/14/stderr345

 345: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 345
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind345 ../src/curl -q --output log/14/curl345.out  --include --trace-ascii log/14/trace345 --trace-time http://127.0.0.1:45467/345 --etag-compare log/14/etag345 --etag-save log/14/etag345 > log/14/stdout345 2> log/14/stderr345
=== End of file commands.log
=== Start of file etag345
 "21025-dc7-39462498"
=== End of file etag345
=== Start of file http_server.log
 19:26:40.766051 ====> Client connect
 19:26:40.766092 accept_connection 3 returned 4
 19:26:40.766116 Read 93 bytes
 19:26:40.766127 Process 93 bytes request
 19:26:40.766139 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.766148 Are-we-friendly question received
 19:26:40.766181 Wrote request (93 bytes) input to log/14/server.input
 19:26:40.766201 Identifying ourselves as friends
 19:26:40.766274 Response sent (56 bytes) and written to log/14/server.response
 19:26:40.766286 special request received, no persistency
 19:26:40.766295 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 52990 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 345
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind345
 ==98942== 
 ==98942== Process terminating with default action of signal 4 (SIGILL)
 ==98942==  Illegal opcode at address 0x492B75F
 ==98942==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98942==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98942==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98942==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98942==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98942==    by 0x49908EB: curl_version_info (version.c:600)
 ==98942==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98942==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98942==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98942==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind345
test 0348 [FTP upload file with 552 disk full response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind348 ../src/curl -q --output log/22/curl348.out  --include --trace-ascii log/22/trace348 --trace-time ftp://127.0.0.1:33255/348 -T log/22/test348.txt > log/22/stdout348 2> log/22/stderr348

 348: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 348
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind348 ../src/curl -q --output log/22/curl348.out  --include --trace-ascii log/22/trace348 --trace-time ftp://127.0.0.1:33255/348 -T log/22/test348.txt > log/22/stdout348 2> log/22/stderr348
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:41.293225 ====> Client connect
 19:26:41.293428 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:41.293703 < "USER anonymous"
 19:26:41.293740 > "331 We are happy you popped in![CR][LF]"
 19:26:41.295498 < "PASS ftp@example.com"
 19:26:41.295533 > "230 Welcome you silly person[CR][LF]"
 19:26:41.302720 < "PWD"
 19:26:41.302776 > "257 "/" is current directory[CR][LF]"
 19:26:41.302937 < "EPSV"
 19:26:41.302960 ====> Passive DATA channel requested by client
 19:26:41.302973 DATA sockfilt for passive data channel starting...
 19:26:41.308212 DATA sockfilt for passive data channel started (pid 99006)
 19:26:41.308350 DATA sockfilt for passive data channel listens on port 33759
 19:26:41.308397 > "229 Entering Passive Mode (|||33759|)[CR][LF]"
 19:26:41.308416 Client has been notified that upcoming DATA connection is awaited on port 33759
 19:26:41.308727 Client connects to port 33759
 19:26:41.308759 ====> Client established passive DATA connection on port 33759
 19:26:41.312027 < "TYPE I"
 19:26:41.312159 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:41.312368 < "SIZE verifiedserver"
 19:26:41.312406CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind347 ../src/curl -q --output log/8/curl347.out  --include --trace-ascii log/8/trace347 --trace-time http://127.0.0.1:44467/347 --etag-save log/8/etag347 > log/8/stdout347 2> log/8/stderr347
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind346 ../src/curl -q --output log/2/curl346.out  --include --trace-ascii log/2/trace346 --trace-time -x http://127.0.0.1:34531/346 -U puser: -u suser: http://remote.example/346 > log/2/stdout346 2> log/2/stderr346
 > "213 17[CR][LF]"
 19:26:41.312558 < "RETR verifiedserver"
 19:26:41.312592 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:41.312681 =====> Closing passive DATA connection...
 19:26:41.312698 Server disconnects passive DATA connection
 19:26:41.312855 Server disconnected passive DATA connection
 19:26:41.312876 DATA sockfilt for passive data channel quits (pid 99006)
 19:26:41.313116 DATA sockfilt for passive data channel quit (pid 99006)
 19:26:41.313140 =====> Closed passive DATA connection
 19:26:41.313165 > "226 File transfer complete[CR][LF]"
 19:26:41.356137 < "QUIT"
 19:26:41.356204 > "221 bye bye baby[CR][LF]"
 19:26:41.357459 MAIN sockfilt said DISC
 19:26:41.357499 ====> Client disconnected
 19:26:41.357575 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:41.898122 ====> Client connect
 19:26:41.898444 Received DATA (on stdin)
 19:26:41.898458 > 146 bytes data, server => client
 19:26:41.898469 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:41.898479 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:41.898488 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:41.898562 < 16 bytes data, client => server
 19:26:41.898574 'USER anonymous\r\n'
 19:26:41.898749 Received DATA (on stdin)
 19:26:41.898760 > 33 bytes data, server => client
 19:26:41.898770 '331 We are happy you popped in!\r\n'
 19:26:41.900380 < 22 bytes data, client => server
 19:26:41.900397 'PASS ftp@example.com\r\n'
 19:26:41.900540 Received DATA (on stdin)
 19:26:41.900552 > 30 bytes data, server => client
 19:26:41.900562 '230 Welcome you silly person\r\n'
 19:26:41.907563 < 5 bytes data, client => server
 19:26:41.907587 'PWD\r\n'
 19:26:41.907783 Received DATA (on stdin)
 19:26:41.907793 > 30 bytes data, server => client
 19:26:41.907803 '257 "/" is current directory\r\n'
 19:26:41.907866 < 6 bytes data, client => server
 19:26:41.907876 'EPSV\r\n'
 19:26:41.913432 Received DATA (on stdin)
 19:26:41.913448 > 39 bytes data, server => client
 19:26:41.913458 '229 Entering Passive Mode (|||33759|)\r\n'
 19:26:41.913644 < 8 bytes data, client => server
 19:26:41.913668 'TYPE I\r\n'
 19:26:41.917174 Received DATA (on stdin)
 19:26:41.917187 > 33 bytes data, server => client
 19:26:41.917197 '200 I modify TYPE as you wanted\r\n'
 19:26:41.917279 < 21 bytes data, client => server
 19:26:41.917290 'SIZE verifiedserver\r\n'
 19:26:41.917414 Received DATA (on stdin)
 19:26:41.917424 > 8 bytes data, server => client
 19:26:41.917434 '213 17\r\n'
 19:26:41.917485 < 21 bytes data, client => server
 19:26:41.917496 'RETR verifiedserver\r\n'
 19:26:41.917707 Received DATA (on stdin)
 19:26:41.917718 > 29 bytes data, server => client
 19:26:41.917728 '150 Binary junk (17 bytes).\r\n'
 19:26:41.918173 Received DATA (on stdin)
 19:26:41.918183 > 28 bytes data, server => client
 19:26:41.918192 '226 File transfer complete\r\n'
 19:26:41.960955 < 6 bytes data, client => server
 19:26:41.960987 'QUIT\r\n'
 19:26:41.961236 Received DATA (on stdin)
 19:26:41.961251 > 18 bytes data, server => client
 19:26:41.961261 '221 bye bye baby\r\n'
 19:26:41.962195 ====> Client disconnect
 19:26:41.962592 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:41.911775 Running IPv4 version
 19:26:41.911887 Listening on port 33759
 19:26:41.911934 Wrote pid 99006 to log/22/server/ftp_sockdata.pid
 19:26:41.913145 Received PING (on stdin)
 19:26:41.913257 Received PORT (on stdin)
 19:26:41.913688 ====> Client connect
 19:26:41.917755 Received DATA (on stdin)
 19:26:41.917768 > 17 bytes data, server => client
 19:26:41.917778 'WE ROOLZ: 84714\r\n'
 19:26:41.917803 Received DISC (on stdin)
 19:26:41.917814 ====> Client forcibly disconnected
 19:26:41.917890 Received QUIT (on stdin)
 19:26:41.917899 quits
 19:26:41.917973 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 STOR 552 disk full
 Testnum 348
=== End of file server.cmd
=== Start of file test348.txt
 data
     to
       see
 that FTP
 works
   so does it?
=== End of file test348.txt
=== Start of file valgrind348
 ==99085== 
 ==99085== Process terminating with default action of signal 4 (SIGILL)
 ==99085==  Illegal opcode at address 0x492B75F
 ==99085==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99085==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99085==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99085==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99085==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99085==    by 0x49908EB: curl_version_info (version.c:600)
 ==99085==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99085==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99085==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99085==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind348
test 0347 [--etag-save with blank incoming header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind347 ../src/curl -q --output log/8/curl347.out  --include --trace-ascii log/8/trace347 --trace-time http://127.0.0.1:44467/347 --etag-save log/8/etag347 > log/8/stdout347 2> log/8/stderr347

 347: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 347
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind347 ../src/curl -q --output log/8/curl347.out  --include --trace-ascii log/8/trace347 --trace-time http://127.0.0.1:44467/347 --etag-save log/8/etag347 > log/8/stdout347 2> log/8/stderr347
=== End of file commands.log
=== Start of file http_server.log
 19:26:40.903758 ====> Client connect
 19:26:40.903799 accept_connection 3 returned 4
 19:26:40.903840 Read 93 bytes
 19:26:40.903851 Process 93 bytes request
 19:26:40.903864 Got request: GET /verifiedserver HTTP/1.1
 19:26:40.903874 Are-we-friendly question received
 19:26:40.903904 Wrote request (93 bytes) input to log/8/server.input
 19:26:40.903924 Identifying ourselves as friends
 19:26:40.904048 Response sent (56 bytes) and written to log/8/server.response
 19:26:40.904063 special request received, no persistency
 19:26:40.904073 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 49506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 347
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind347
 ==99026== 
 ==99026== Process terminating with default action of signal 4 (SIGILL)
 ==99026==  Illegal opcode at address 0x492B75F
 ==99026==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99026==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99026==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99026==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99026==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99026==    by 0x49908EB: curl_version_info (version.c:600)
 ==99026==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99026==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99026==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99026==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind347
test 0346 [HTTP GET over proxy with credentiaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind351 ../src/curl -q --output log/15/curl351.out  --include --trace-ascii log/15/trace351 --trace-time ftp://127.0.0.1:44883// --ftp-method nocwd > log/15/stdout351 2> log/15/stderr351
ls using blank passwords]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind346 ../src/curl -q --output log/2/curl346.out  --include --trace-ascii log/2/trace346 --trace-time -x http://127.0.0.1:34531/346 -U puser: -u suser: http://remote.example/346 > log/2/stdout346 2> log/2/stderr346

 346: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 346
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind346 ../src/curl -q --output log/2/curl346.out  --include --trace-ascii log/2/trace346 --trace-time -x http://127.0.0.1:34531/346 -U puser: -u suser: http://remote.example/346 > log/2/stdout346 2> log/2/stderr346
=== End of file commands.log
=== Start of file http_server.log
 19:26:41.851156 ====> Client connect
 19:26:41.851196 accept_connection 3 returned 4
 19:26:41.851305 Read 93 bytes
 19:26:41.851319 Process 93 bytes request
 19:26:41.851333 Got request: GET /verifiedserver HTTP/1.1
 19:26:41.851341 Are-we-friendly question received
 19:26:41.851411 Wrote request (93 bytes) input to log/2/server.input
 19:26:41.851435 Identifying ourselves as friends
 19:26:41.851505 Response sent (56 bytes) and written to log/2/server.response
 19:26:41.851516 special request received, no persistency
 19:26:41.851524 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 51524 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 346
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind346
 ==98979== 
 ==98979== Process terminating with default action of signal 4 (SIGILL)
 ==98979==  Illegal opcode at address 0x492B75F
 ==98979==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==98979==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==98979==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==98979==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==98979==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==98979==    by 0x49908EB: curl_version_info (version.c:600)
 ==98979==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==98979==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==98979==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==98979==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind346
test 0351 [FTP root dir list nocwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind351 ../src/curl -q --output log/15/curl351.out  --include --trace-ascii log/15/trace351 --trace-time ftp://127.0.0.1:44883// --ftp-method nocwd > log/15/stdout351 2> log/15/stderr351

 351: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 351
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind351 ../src/curl -q --output log/15/curl351.out  --include --trace-ascii log/15/trace351 --trace-time ftp://127.0.0.1:44883// --ftp-method nocwd > log/15/stdout351 2> log/15/stderr351
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:41.793857 ====> Client connect
 19:26:41.794046 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:41.794319 < "USER anonymous"
 19:26:41.794356 > "331 We are happy you popped in![CR][LF]"
 19:26:41.794517 < "PASS ftp@example.com"
 19:26:41.794545 > "230 Welcome you silly person[CR][LF]"
 19:26:41.794683 < "PWD"
 19:26:41.794718 > "257 "/" is current directory[CR][LF]"
 19:26:41.794880 < "EPSV"
 19:26:41.794905 ====> Passive DATA channel requested by client
 19:26:41.794918 DATA sockfilt for passive data channel starting...
 19:26:41.796985 DATA sockfilt for passive data channel started (pid 99352)
 19:26:41.797095 DATA sockfilt for passive data channel listens on port 42411
 19:26:41.797136 > "229 Entering Passive Mode (|||42411|)[CR][LF]"
 19:26:41.797155 Client has been notified that upcoming DATA connection is awaited on port 42411
 19:26:41.797387 Client connects to port 42411
 19:26:41.797417 ====> Client established passive DATA connection on port 42411
 19:26:41.797493 < "TYPE I"
 19:26:41.797522 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:41.797685 < "SIZE verifiedserver"
 19:26:41.797724 > "213 17[CR][LF]"
 19:26:41.797886 < "RETR verifiedserver"
 19:26:41.797920 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:41.798012 =====> Closing passive DATA connection...
 19:26:41.798032 Server disconnects passive DATA connection
 19:26:41.798253 Server disconnected passive DATA connection
 19:26:41.798284 DATA sockfilt for passive data channel quits (pid 99352)
 19:26:41.798513 DATA sockfilt for passive data channel quit (pid 99352)
 19:26:41.798539 =====> Closed passive DATA connection
 19:26:41.798569 > "226 File transfer complete[CR][LF]"
 19:26:41.845525 < "QUIT"
 19:26:41.845579 > "221 bye bye baby[CR][LF]"
 19:26:41.848697 MAIN sockfilt said DISC
 19:26:41.848743 ====> Client disconnected
 19:26:41.848834 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:41.398856 ====> Client connect
 19:26:41.399176 Received DATA (on stdin)
 19:26:41.399189 > 146 bytes data, server => client
 19:26:41.399199 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:41.399208 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:41.399215 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:41.399292 < 16 bytes data, client => server
 19:26:41.399302 'USER anonymous\r\n'
 19:26:41.399474 Received DATA (on stdin)
 19:26:41.399484 > 33 bytes data, server => client
 19:26:41.399493 '331 We are happy you popped in!\r\n'
 19:26:41.399544 < 22 bytes data, client => server
 19:26:41.399553 'PASS ftp@example.com\r\n'
 19:26:41.399660 Received DATA (on stdin)
 19:26:41.399669 > 30 bytes data, server => client
 19:26:41.399677 '230 Welcome you silly person\r\n'
 19:26:41.399720 < 5 bytes data, client => server
 19:26:41.399729 'PWD\r\n'
 19:26:41.399834 Received DATA (on stdin)
 19:26:41.399844 > 30 bytes data, server => client
 19:26:41.399854 '257 "/" is current directory\r\n'
 19:26:41.399914 < 6 bytes data, client => server
 19:26:41.399926 'EPSV\r\n'
 19:26:41.402279 Received DATA (on stdin)
 19:26:41.402291 > 39 bytes data, server => client
 19:26:41.402302 '229 Entering Passive Mode (|||42411|)\r\n'
 19:26:41.402426 < 8 bytes data, client => server
 19:26:41.402441 'TYPE I\r\n'
 19:26:41.402641 Received DATA (on stdin)
 19:26:41.402653 > 33 bytes data, server => client
 19:26:41.402663 '200 I modify TYPE as you wanted\r\n'
 19:26:41.402717 < 21 bytes data, client => server
 19:26:41.402729 'SIZE verifiedserver\r\n'
 19:26:41.402844 Received DATA (on stdin)
 19:26:41.402855 > 8 bytes data, server => client
 19:26:41.402864 '213 17\r\n'
 19:26:41.402918 < 21 bytes data, client => server
 19:26:41.402930 'RETR verifiedserver\r\n'
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind350 ../src/curl -q --output log/9/curl350.out  --include --trace-ascii log/9/trace350 --trace-time ftp://127.0.0.1:36605// --ftp-method multicwd > log/9/stdout350 2> log/9/stderr350
19:26:41.403152 Received DATA (on stdin)
 19:26:41.403164 > 29 bytes data, server => client
 19:26:41.403174 '150 Binary junk (17 bytes).\r\n'
 19:26:41.403690 Received DATA (on stdin)
 19:26:41.403703 > 28 bytes data, server => client
 19:26:41.403713 '226 File transfer complete\r\n'
 19:26:41.450478 < 6 bytes data, client => server
 19:26:41.450500 'QUIT\r\n'
 19:26:41.450713 Received DATA (on stdin)
 19:26:41.450725 > 18 bytes data, server => client
 19:26:41.450735 '221 bye bye baby\r\n'
 19:26:41.451845 ====> Client disconnect
 19:26:41.453970 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:41.401774 Running IPv4 version
 19:26:41.401843 Listening on port 42411
 19:26:41.401889 Wrote pid 99352 to log/15/server/ftp_sockdata.pid
 19:26:41.402047 Received PING (on stdin)
 19:26:41.402130 Received PORT (on stdin)
 19:26:41.402461 ====> Client connect
 19:26:41.403202 Received DATA (on stdin)
 19:26:41.403213 > 17 bytes data, server => client
 19:26:41.403223 'WE ROOLZ: 84744\r\n'
 19:26:41.403247 Received DISC (on stdin)
 19:26:41.403258 ====> Client forcibly disconnected
 19:26:41.403414 Received QUIT (on stdin)
 19:26:41.403425 quits
 19:26:41.403487 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 351
=== End of file server.cmd
=== Start of file valgrind351
 ==99364== 
 ==99364== Process terminating with default action of signal 4 (SIGILL)
 ==99364==  Illegal opcode at address 0x492B75F
 ==99364==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99364==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99364==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99364==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99364==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99364==    by 0x49908EB: curl_version_info (version.c:600)
 ==99364==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99364==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99364==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99364==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind351
test 0350 [FTP root dir list multicwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind350 ../src/curl -q --output log/9/curl350.out  --include --trace-ascii log/9/trace350 --trace-time ftp://127.0.0.1:36605// --ftp-method multicwd > log/9/stdout350 2> log/9/stderr350

 350: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 350
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind350 ../src/curl -q --output log/9/curl350.out  --include --trace-ascii log/9/trace350 --trace-time ftp://127.0.0.1:36605// --ftp-method multicwd > log/9/stdout350 2> log/9/stderr350
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:41.372490 ====> Client connect
 19:26:41.372690 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:41.372946 < "USER anonymous"
 19:26:41.372980 > "331 We are happy you popped in![CR][LF]"
 19:26:41.373128 < "PASS ftp@example.com"
 19:26:41.373150 > "230 Welcome you silly person[CR][LF]"
 19:26:41.373281 < "PWD"
 19:26:41.373309 > "257 "/" is current directory[CR][LF]"
 19:26:41.373448 < "EPSV"
 19:26:41.373471 ====> Passive DATA channel requested by client
 19:26:41.373484 DATA sockfilt for passive data channel starting...
 19:26:41.379029 DATA sockfilt for passive data channel started (pid 99084)
 19:26:41.379157 DATA sockfilt for passive data channel listens on port 37549
 19:26:41.379199 > "229 Entering Passive Mode (|||37549|)[CR][LF]"
 19:26:41.379215 Client has been notified that upcoming DATA connection is awaited on port 37549
 19:26:41.385429 Client connects to port 37549
 19:26:41.385498 ====> Client established passive DATA connection on port 37549
 19:26:41.389168 < "TYPE I"
 19:26:41.389217 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:41.389422 < "SIZE verifiedserver"
 19:26:41.389457 > "213 17[CR][LF]"
 19:26:41.389604 < "RETR verifiedserver"
 19:26:41.389637 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:41.389724 =====> Closing passive DATA connection...
 19:26:41.389740 Server disconnects passive DATA connection
 19:26:41.397331 Server disconnected passive DATA connection
 19:26:41.397393 DATA sockfilt for passive data channel quits (pid 99084)
 19:26:41.397779 DATA sockfilt for passive data channel quit (pid 99084)
 19:26:41.397805 =====> Closed passive DATA connection
 19:26:41.397847 > "226 File transfer complete[CR][LF]"
 19:26:41.438893 < "QUIT"
 19:26:41.438955 > "221 bye bye baby[CR][LF]"
 19:26:41.440236 MAIN sockfilt said DISC
 19:26:41.440273 ====> Client disconnected
 19:26:41.440361 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:40.977388 ====> Client connect
 19:26:40.977722 Received DATA (on stdin)
 19:26:40.977734 > 146 bytes data, server => client
 19:26:40.977745 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:40.977755 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:40.977764 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:40.977835 < 16 bytes data, client => server
 19:26:40.977845 'USER anonymous\r\n'
 19:26:40.978004 Received DATA (on stdin)
 19:26:40.978014 > 33 bytes data, server => client
 19:26:40.978023 '331 We are happy you popped in!\r\n'
 19:26:40.978071 < 22 bytes data, client => server
 19:26:40.978080 'PASS ftp@example.com\r\n'
 19:26:40.978170 Received DATA (on stdin)
 19:26:40.978180 > 30 bytes data, server => client
 19:26:40.978189 '230 Welcome you silly person\r\n'
 19:26:40.978232 < 5 bytes data, client => server
 19:26:40.978240 'PWD\r\n'
 19:26:40.978327 Received DATA (on stdin)
 19:26:40.978337 > 30 bytes data, server => client
 19:26:40.978346 '257 "/" is current directory\r\n'
 19:26:40.978398 < 6 bytes data, client => server
 19:26:40.978407 'EPSV\r\n'
 19:26:40.984813 Received DATA (on stdin)
 19:26:40.984862 > 39 bytes data, server => client
 19:26:40.984873 '229 Entering Passive Mode (|||37549|)\r\n'
 19:26:40.994022 < 8 bytes data, client => server
 19:26:40.994044 'TYPE I\r\n'
 19:26:40.994246 Received DATA (on stdin)
 19:26:40.994257 > 33 bytes data, server => client
 19:26:40.994267 '200 I modify TYPE as you wanted\r\n'
 19:26:40.994364 < 21 bytes data, client => server
 19:26:40.994375 'SIZE verifiedserver\r\n'
 19:26:40.994482 Received DATA (on stdin)
 19:26:40.994491 > 8 bytes data, server => client
 19:26:40.994500 '213 17\r\n'
 19:26:40.994549 < 21 bytes data, client => server
 19:26:40.994560 'RETR verifiedserver\r\n'
 19:26:40.994769 Received DATA (on stdin)
 19:26:40.994779 > 29 bytes data, server => client
 19:26:40.994789 '150 Binary junk (17 bytes).\r\n'
 19:26:41.002889 Received DATA (on stdin)
 19:26:41.002905 > 28 bytes data, server => client
 19:26:41.002915 '226 File transfer complete\r\n'
 19:26:41.043727 < 6 bytes data, client => server
 19:26:41.043760 'QUIT\r\n'
 19:26:41.044003 Received DATA (on stdin)
 19:26:41.044016 > 18 bytes data, server => client
 19:26:41.044027 '221 bye bye baby\r\n'
 19:26:41.045217 ====> Client disconnect
 19:26:41.045410 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:41.982093 Running IPv4 version
 19:26:41.982271 Listening on port 37549
 19:26:41.982310 Wrote pid 99084 to log/9/server/ftp_sockdata.pid
 19:26:41.983989 Received PING (on stdin)
 19:26:41.984088 Received PORT (on stdin)
 19:26:41.990371 ====> Client connect
 19:26:42.000353 Received DATA (on stdin)
 19:26:42.000388 > 17 bytes data, server => client
 19:26:42.000399 'WE ROOLZ: 84695\r\n'
 19:26:42.000442 Received DISC (on CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind352 ../src/curl -q --output log/21/curl352.out  --include --trace-ascii log/21/trace352 --trace-time ftp://127.0.0.1:35787// --ftp-method singlecwd > log/21/stdout352 2> log/21/stderr352
stdin)
 19:26:42.000454 ====> Client forcibly disconnected
 19:26:42.002522 Received QUIT (on stdin)
 19:26:42.002538 quits
 19:26:42.002616 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 350
=== End of file server.cmd
=== Start of file valgrind350
 ==99213== 
 ==99213== Process terminating with default action of signal 4 (SIGILL)
 ==99213==  Illegal opcode at address 0x492B75F
 ==99213==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99213==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99213==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99213==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99213==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99213==    by 0x49908EB: curl_version_info (version.c:600)
 ==99213==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99213==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99213==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99213==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind350
test 0352 [FTP root dir list singlecwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind352 ../src/curl -q --output log/21/curl352.out  --include --trace-ascii log/21/trace352 --trace-time ftp://127.0.0.1:35787// --ftp-method singlecwd > log/21/stdout352 2> log/21/stderr352

 352: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 352
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind352 ../src/curl -q --output log/21/curl352.out  --include --trace-ascii log/21/trace352 --trace-time ftp://127.0.0.1:35787// --ftp-method singlecwd > log/21/stdout352 2> log/21/stderr352
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:41.818705 ====> Client connect
 19:26:41.818954 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:41.825548 < "USER anonymous"
 19:26:41.825596 > "331 We are happy you popped in![CR][LF]"
 19:26:41.828881 < "PASS ftp@example.com"
 19:26:41.828926 > "230 Welcome you silly person[CR][LF]"
 19:26:41.829098 < "PWD"
 19:26:41.829135 > "257 "/" is current directory[CR][LF]"
 19:26:41.829310 < "EPSV"
 19:26:41.829337 ====> Passive DATA channel requested by client
 19:26:41.829351 DATA sockfilt for passive data channel starting...
 19:26:41.839934 DATA sockfilt for passive data channel started (pid 99356)
 19:26:41.840075 DATA sockfilt for passive data channel listens on port 46865
 19:26:41.840124 > "229 Entering Passive Mode (|||46865|)[CR][LF]"
 19:26:41.840141 Client has been notified that upcoming DATA connection is awaited on port 46865
 19:26:41.840442 Client connects to port 46865
 19:26:41.840473 ====> Client established passive DATA connection on port 46865
 19:26:41.840561 < "TYPE I"
 19:26:41.840593 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:41.840762 < "SIZE verifiedserver"
 19:26:41.840803 > "213 17[CR][LF]"
 19:26:41.840967 < "RETR verifiedserver"
 19:26:41.841004 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:41.841092 =====> Closing passive DATA connection...
 19:26:41.841110 Server disconnects passive DATA connection
 19:26:41.841350 Server disconnected passive DATA connection
 19:26:41.841381 DATA sockfilt for passive data channel quits (pid 99356)
 19:26:41.841616 DATA sockfilt for passive data channel quit (pid 99356)
 19:26:41.841642 =====> Closed passive DATA connection
 19:26:41.841671 > "226 File transfer complete[CR][LF]"
 19:26:41.888889 < "QUIT"
 19:26:41.888951 > "221 bye bye baby[CR][LF]"
 19:26:41.890758 MAIN sockfilt said DISC
 19:26:41.890798 ====> Client disconnected
 19:26:41.890879 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:41.420065 ====> Client connect
 19:26:41.424098 Received DATA (on stdin)
 19:26:41.424116 > 146 bytes data, server => client
 19:26:41.424127 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:41.424137 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:41.424146 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:41.430471 < 16 bytes data, client => server
 19:26:41.430500 'USER anonymous\r\n'
 19:26:41.430723 Received DATA (on stdin)
 19:26:41.430734 > 33 bytes data, server => client
 19:26:41.430744 '331 We are happy you popped in!\r\n'
 19:26:41.433857 < 22 bytes data, client => server
 19:26:41.433877 'PASS ftp@example.com\r\n'
 19:26:41.434057 Received DATA (on stdin)
 19:26:41.434069 > 30 bytes data, server => client
 19:26:41.434079 '230 Welcome you silly person\r\n'
 19:26:41.434136 < 5 bytes data, client => server
 19:26:41.434147 'PWD\r\n'
 19:26:41.434261 Received DATA (on stdin)
 19:26:41.434273 > 30 bytes data, server => client
 19:26:41.434283 '257 "/" is current directory\r\n'
 19:26:41.434352 < 6 bytes data, client => server
 19:26:41.434363 'EPSV\r\n'
 19:26:41.445281 Received DATA (on stdin)
 19:26:41.445298 > 39 bytes data, server => client
 19:26:41.445308 '229 Entering Passive Mode (|||46865|)\r\n'
 19:26:41.445517 < 8 bytes data, client => server
 19:26:41.445528 'TYPE I\r\n'
 19:26:41.445725 Received DATA (on stdin)
 19:26:41.445737 > 33 bytes data, server => client
 19:26:41.445747 '200 I modify TYPE as you wanted\r\n'
 19:26:41.445803 < 21 bytes data, client => server
 19:26:41.445815 'SIZE verifiedserver\r\n'
 19:26:41.445933 Received DATA (on stdin)
 19:26:41.445944 > 8 bytes data, server => client
 19:26:41.445954 '213 17\r\n'
 19:26:41.446009 < 21 bytes data, client => server
 19:26:41.446021 'RETR verifiedserver\r\n'
 19:26:41.446332 Received DATA (on stdin)
 19:26:41.446345 > 29 bytes data, server => client
 19:26:41.446355 '150 Binary junk (17 bytes).\r\n'
 19:26:41.446802 Received DATA (on stdin)
 19:26:41.446814 > 28 bytes data, server => client
 19:26:41.446824 '226 File transfer complete\r\n'
 19:26:41.493825 < 6 bytes data, client => server
 19:26:41.493857 'QUIT\r\n'
 19:26:41.494095 Received DATA (on stdin)
 19:26:41.494106 > 18 bytes data, server => client
 19:26:41.494116 '221 bye bye baby\r\n'
 19:26:41.495648 ====> Client disconnect
 19:26:41.496019 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:41.444678 Running IPv4 version
 19:26:41.444775 Listening on port 46865
 19:26:41.444819 Wrote pid 99356 to log/21/server/ftp_sockdata.pid
 19:26:41.445002 Received PING (on stdin)
 19:26:41.445104 Received PORT (on stdin)
 19:26:41.445489 ====> Client connect
 19:26:41.446242 Received DATA (on stdin)
 19:26:41.446254 > 17 bytes data, server => client
 19:26:41.446267 'WE ROOLZ: 84694\r\n'
 19:26:41.446295 Received DISC (on stdin)
 19:26:41.446307 ====> Client forcibly disconnected
 19:26:41.446521 Received QUIT (on stdin)
 19:26:41.446532 quits
 19:26:41.446594 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 352
=== End of file server.cmd
=== Start of file valgrind352
 ==99391== 
 ==99391== Process terminating with default action of signal 4 (SIGILL)
 ==99391==  Illegal opcode at address 0x492B75F
 ==99391==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99391==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99391==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99391==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99391==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99391==    by 0x49908EB: curl_version_info (version.c:600)
 ==99391==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99391==    by 0x4003269: main (tool_main.c:195)
=== End of fileCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind354 ../src/curl -q --output log/11/curl354.out  --include --trace-ascii log/11/trace354 --trace-time ftp://127.0.0.1:37735/354 > log/11/stdout354 2> log/11/stderr354
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind353 ../src/curl -q --output log/17/curl353.out  --include --trace-ascii log/17/trace353 --trace-time ftp://127.0.0.1:46137/ --ftp-method singlecwd > log/17/stdout353 2> log/17/stderr353
 valgrind352
test 0354 [FTP without password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind354 ../src/curl -q --output log/11/curl354.out  --include --trace-ascii log/11/trace354 --trace-time ftp://127.0.0.1:37735/354 > log/11/stdout354 2> log/11/stderr354

 354: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 354
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind354 ../src/curl -q --output log/11/curl354.out  --include --trace-ascii log/11/trace354 --trace-time ftp://127.0.0.1:37735/354 > log/11/stdout354 2> log/11/stderr354
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:42.085479 ====> Client connect
 19:26:42.085716 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:42.092340 < "USER anonymous"
 19:26:42.092402 > "331 We are happy you popped in![CR][LF]"
 19:26:42.092631 < "PASS ftp@example.com"
 19:26:42.092668 > "230 Welcome you silly person[CR][LF]"
 19:26:42.092862 < "PWD"
 19:26:42.092908 > "257 "/" is current directory[CR][LF]"
 19:26:42.093114 < "EPSV"
 19:26:42.093145 ====> Passive DATA channel requested by client
 19:26:42.093161 DATA sockfilt for passive data channel starting...
 19:26:42.105441 DATA sockfilt for passive data channel started (pid 99481)
 19:26:42.105601 DATA sockfilt for passive data channel listens on port 43353
 19:26:42.105655 > "229 Entering Passive Mode (|||43353|)[CR][LF]"
 19:26:42.105674 Client has been notified that upcoming DATA connection is awaited on port 43353
 19:26:42.105933 Client connects to port 43353
 19:26:42.105967 ====> Client established passive DATA connection on port 43353
 19:26:42.106166 < "TYPE I"
 19:26:42.106210 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:42.106386 < "SIZE verifiedserver"
 19:26:42.106432 > "213 17[CR][LF]"
 19:26:42.106613 < "RETR verifiedserver"
 19:26:42.106653 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:42.106760 =====> Closing passive DATA connection...
 19:26:42.106785 Server disconnects passive DATA connection
 19:26:42.106912 Server disconnected passive DATA connection
 19:26:42.106941 DATA sockfilt for passive data channel quits (pid 99481)
 19:26:42.107203 DATA sockfilt for passive data channel quit (pid 99481)
 19:26:42.107237 =====> Closed passive DATA connection
 19:26:42.107267 > "226 File transfer complete[CR][LF]"
 19:26:42.158900 < "QUIT"
 19:26:42.158964 > "221 bye bye baby[CR][LF]"
 19:26:42.172029 MAIN sockfilt said DISC
 19:26:42.172112 ====> Client disconnected
 19:26:42.172207 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:41.690534 ====> Client connect
 19:26:41.690928 Received DATA (on stdin)
 19:26:41.690946 > 146 bytes data, server => client
 19:26:41.690959 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:41.690969 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:41.690979 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:41.697292 < 16 bytes data, client => server
 19:26:41.697324 'USER anonymous\r\n'
 19:26:41.697603 Received DATA (on stdin)
 19:26:41.697619 > 33 bytes data, server => client
 19:26:41.697629 '331 We are happy you popped in!\r\n'
 19:26:41.697700 < 22 bytes data, client => server
 19:26:41.697716 'PASS ftp@example.com\r\n'
 19:26:41.697860 Received DATA (on stdin)
 19:26:41.697873 > 30 bytes data, server => client
 19:26:41.697883 '230 Welcome you silly person\r\n'
 19:26:41.697944 < 5 bytes data, client => server
 19:26:41.697958 'PWD\r\n'
 19:26:41.698102 Received DATA (on stdin)
 19:26:41.698114 > 30 bytes data, server => client
 19:26:41.698125 '257 "/" is current directory\r\n'
 19:26:41.698200 < 6 bytes data, client => server
 19:26:41.698215 'EPSV\r\n'
 19:26:41.710874 Received DATA (on stdin)
 19:26:41.710892 > 39 bytes data, server => client
 19:26:41.710904 '229 Entering Passive Mode (|||43353|)\r\n'
 19:26:41.711224 < 8 bytes data, client => server
 19:26:41.711241 'TYPE I\r\n'
 19:26:41.711405 Received DATA (on stdin)
 19:26:41.711418 > 33 bytes data, server => client
 19:26:41.711429 '200 I modify TYPE as you wanted\r\n'
 19:26:41.711479 < 21 bytes data, client => server
 19:26:41.711493 'SIZE verifiedserver\r\n'
 19:26:41.711630 Received DATA (on stdin)
 19:26:41.711643 > 8 bytes data, server => client
 19:26:41.711652 '213 17\r\n'
 19:26:41.711707 < 21 bytes data, client => server
 19:26:41.711721 'RETR verifiedserver\r\n'
 19:26:41.712462 Received DATA (on stdin)
 19:26:41.712475 > 29 bytes data, server => client
 19:26:41.712486 '150 Binary junk (17 bytes).\r\n'
 19:26:41.712508 Received DATA (on stdin)
 19:26:41.712518 > 28 bytes data, server => client
 19:26:41.712528 '226 File transfer complete\r\n'
 19:26:41.763893 < 6 bytes data, client => server
 19:26:41.763924 'QUIT\r\n'
 19:26:41.773880 Received DATA (on stdin)
 19:26:41.773918 > 18 bytes data, server => client
 19:26:41.773928 '221 bye bye baby\r\n'
 19:26:41.775092 ====> Client disconnect
 19:26:41.777423 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:42.704604 Running IPv4 version
 19:26:42.704689 Listening on port 43353
 19:26:42.704732 Wrote pid 99481 to log/11/server/ftp_sockdata.pid
 19:26:42.710528 Received PING (on stdin)
 19:26:42.710682 Received PORT (on stdin)
 19:26:42.711067 ====> Client connect
 19:26:42.711980 Received DATA (on stdin)
 19:26:42.711993 > 17 bytes data, server => client
 19:26:42.712004 'WE ROOLZ: 84823\r\n'
 19:26:42.712032 Received DISC (on stdin)
 19:26:42.712048 ====> Client forcibly disconnected
 19:26:42.712144 Received QUIT (on stdin)
 19:26:42.712156 quits
 19:26:42.712232 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY USER 200 fine, proceed without password
 Testnum 354
=== End of file server.cmd
=== Start of file valgrind354
 ==99528== 
 ==99528== Process terminating with default action of signal 4 (SIGILL)
 ==99528==  Illegal opcode at address 0x492B75F
 ==99528==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99528==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99528==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99528==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99528==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99528==    by 0x49908EB: curl_version_info (version.c:600)
 ==99528==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99528==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99528==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99528==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind354
test 0353 [FTP home dir list singlecwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind353 ../src/curl -q --output log/17/curl353.out  --include --trace-ascii log/17/trace353 --trace-time ftp://127.0.0.1:46137/ --ftp-method singlecwd > log/17/stdout353 2> log/17/stderr353

 353: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 353
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind353 ../src/curl -q --output log/17/curl353.out  --include --trace-ascii log/17/trace353 --trace-time ftp://127.0.0.1:46137/ --ftp-method singlecwd > log/17/stdout353 2> log/17/stderr353
=== End of file commands.log
=== Start of file ftp_CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind360 ../src/curl -q --output log/16/curl360.out  --include --trace-ascii log/16/trace360 --trace-time http://127.0.0.1:35903/360 --fail-with-body --fail --no-progress-meter > log/16/stdout360 2> log/16/stderr360
server.log
 19:26:42.059368 ====> Client connect
 19:26:42.059599 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:42.059943 < "USER anonymous"
 19:26:42.059983 > "331 We are happy you popped in![CR][LF]"
 19:26:42.060156 < "PASS ftp@example.com"
 19:26:42.060186 > "230 Welcome you silly person[CR][LF]"
 19:26:42.060336 < "PWD"
 19:26:42.060366 > "257 "/" is current directory[CR][LF]"
 19:26:42.060519 < "EPSV"
 19:26:42.060544 ====> Passive DATA channel requested by client
 19:26:42.060557 DATA sockfilt for passive data channel starting...
 19:26:42.069025 DATA sockfilt for passive data channel started (pid 99466)
 19:26:42.069212 DATA sockfilt for passive data channel listens on port 45485
 19:26:42.069260 > "229 Entering Passive Mode (|||45485|)[CR][LF]"
 19:26:42.069278 Client has been notified that upcoming DATA connection is awaited on port 45485
 19:26:42.069575 Client connects to port 45485
 19:26:42.069604 ====> Client established passive DATA connection on port 45485
 19:26:42.069699 < "TYPE I"
 19:26:42.069731 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:42.069885 < "SIZE verifiedserver"
 19:26:42.069920 > "213 17[CR][LF]"
 19:26:42.070060 < "RETR verifiedserver"
 19:26:42.070088 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:42.070178 =====> Closing passive DATA connection...
 19:26:42.070193 Server disconnects passive DATA connection
 19:26:42.070402 Server disconnected passive DATA connection
 19:26:42.070427 DATA sockfilt for passive data channel quits (pid 99466)
 19:26:42.070686 DATA sockfilt for passive data channel quit (pid 99466)
 19:26:42.070709 =====> Closed passive DATA connection
 19:26:42.070734 > "226 File transfer complete[CR][LF]"
 19:26:42.115628 < "QUIT"
 19:26:42.115683 > "221 bye bye baby[CR][LF]"
 19:26:42.116638 MAIN sockfilt said DISC
 19:26:42.116672 ====> Client disconnected
 19:26:42.116751 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:41.664407 ====> Client connect
 19:26:41.664846 Received DATA (on stdin)
 19:26:41.664863 > 146 bytes data, server => client
 19:26:41.664874 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:41.664884 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:41.664893 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:41.664973 < 16 bytes data, client => server
 19:26:41.664984 'USER anonymous\r\n'
 19:26:41.665165 Received DATA (on stdin)
 19:26:41.665176 > 33 bytes data, server => client
 19:26:41.665185 '331 We are happy you popped in!\r\n'
 19:26:41.665239 < 22 bytes data, client => server
 19:26:41.665250 'PASS ftp@example.com\r\n'
 19:26:41.665364 Received DATA (on stdin)
 19:26:41.665374 > 30 bytes data, server => client
 19:26:41.665384 '230 Welcome you silly person\r\n'
 19:26:41.665434 < 5 bytes data, client => server
 19:26:41.665443 'PWD\r\n'
 19:26:41.665543 Received DATA (on stdin)
 19:26:41.665553 > 30 bytes data, server => client
 19:26:41.665563 '257 "/" is current directory\r\n'
 19:26:41.665618 < 6 bytes data, client => server
 19:26:41.665628 'EPSV\r\n'
 19:26:41.674468 Received DATA (on stdin)
 19:26:41.674485 > 39 bytes data, server => client
 19:26:41.674495 '229 Entering Passive Mode (|||45485|)\r\n'
 19:26:41.674671 < 8 bytes data, client => server
 19:26:41.674684 'TYPE I\r\n'
 19:26:41.674913 Received DATA (on stdin)
 19:26:41.674923 > 33 bytes data, server => client
 19:26:41.674933 '200 I modify TYPE as you wanted\r\n'
 19:26:41.674987 < 21 bytes data, client => server
 19:26:41.674996 'SIZE verifiedserver\r\n'
 19:26:41.675098 Received DATA (on stdin)
 19:26:41.675107 > 8 bytes data, server => client
 19:26:41.675116 '213 17\r\n'
 19:26:41.675164 < 21 bytes data, client => server
 19:26:41.675174 'RETR verifiedserver\r\n'
 19:26:41.675374 Received DATA (on stdin)
 19:26:41.675384 > 29 bytes data, server => client
 19:26:41.675393 '150 Binary junk (17 bytes).\r\n'
 19:26:41.675916 Received DATA (on stdin)
 19:26:41.675928 > 28 bytes data, server => client
 19:26:41.675938 '226 File transfer complete\r\n'
 19:26:41.720628 < 6 bytes data, client => server
 19:26:41.720659 'QUIT\r\n'
 19:26:41.720881 Received DATA (on stdin)
 19:26:41.720893 > 18 bytes data, server => client
 19:26:41.720902 '221 bye bye baby\r\n'
 19:26:41.721776 ====> Client disconnect
 19:26:41.721942 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:42.671279 Running IPv4 version
 19:26:42.671374 Listening on port 45485
 19:26:42.671411 Wrote pid 99466 to log/17/server/ftp_sockdata.pid
 19:26:42.671432 Received PING (on stdin)
 19:26:42.674276 Received PORT (on stdin)
 19:26:42.674704 ====> Client connect
 19:26:42.675418 Received DATA (on stdin)
 19:26:42.675431 > 17 bytes data, server => client
 19:26:42.675440 'WE ROOLZ: 84749\r\n'
 19:26:42.675463 Received DISC (on stdin)
 19:26:42.675473 ====> Client forcibly disconnected
 19:26:42.675615 Received QUIT (on stdin)
 19:26:42.675625 quits
 19:26:42.675691 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 353
=== End of file server.cmd
=== Start of file valgrind353
 ==99506== 
 ==99506== Process terminating with default action of signal 4 (SIGILL)
 ==99506==  Illegal opcode at address 0x492B75F
 ==99506==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99506==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99506==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99506==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99506==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99506==    by 0x49908EB: curl_version_info (version.c:600)
 ==99506==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99506==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind353
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind361 ../src/curl -q --output log/7/curl361.out  --include --trace-ascii log/7/trace361 --trace-time http://127.0.0.1:40859/361 http://127.0.0.1:40859/361 --fail-with-body > log/7/stdout361 2> log/7/stderr361
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind357 ../src/curl -q --output log/20/curl357.out  --include --trace-ascii log/20/trace357 --trace-time http://127.0.0.1:33897/we/want/357 -T log/20/test357.txt --expect100-timeout 99 > log/20/stdout357 2> log/20/stderr357
test 0360 [Error on both --fail-with-body and --fail]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind360 ../src/curl -q --output log/16/curl360.out  --include --trace-ascii log/16/trace360 --trace-time http://127.0.0.1:35903/360 --fail-with-body --fail --no-progress-meter > log/16/stdout360 2> log/16/stderr360

 360: stderr FAILED:
--- log/16/check-expected	2026-10-15 19:26:44.512663259 +0000
+++ log/16/check-generated	2026-10-15 19:26:44.509131308 +0000
@@ -1 +0,0 @@
-Warning: --fail deselects --fail-with-body here[CR][LF]
== Contents of files in the log/16/ directory after test 360
=== Start of file check-expected
 Warning: --fail deselects --fail-with-body here[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind360 ../src/curl -q --output log/16/curl360.out  --include --trace-ascii log/16/trace360 --trace-time http://127.0.0.1:35903/360 --fail-with-body --fail --no-progress-meter > log/16/stdout360 2> log/16/stderr360
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.908531 ====> Client connect
 19:26:42.908566 accept_connection 3 returned 4
 19:26:42.908591 Read 93 bytes
 19:26:42.908603 Process 93 bytes request
 19:26:42.908616 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.908626 Are-we-friendly question received
 19:26:42.908656 Wrote request (93 bytes) input to log/16/server.input
 19:26:42.908675 Identifying ourselves as friends
 19:26:42.908750 Response sent (56 bytes) and written to log/16/server.response
 19:26:42.908762 special request received, no persistency
 19:26:42.908771 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43532 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 360
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind360
 ==99628== 
 ==99628== Process terminating with default action of signal 4 (SIGILL)
 ==99628==  Illegal opcode at address 0x492B75F
 ==99628==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99628==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99628==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99628==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99628==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99628==    by 0x49908EB: curl_version_info (version.c:600)
 ==99628==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99628==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99628==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99628==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind360
test 0361 [HTTP GET --fail-with-body on HTTP error return - twice]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind361 ../src/curl -q --output log/7/curl361.out  --include --trace-ascii log/7/trace361 --trace-time http://127.0.0.1:40859/361 http://127.0.0.1:40859/361 --fail-with-body > log/7/stdout361 2> log/7/stderr361

 361: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 361
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind361 ../src/curl -q --output log/7/curl361.out  --include --trace-ascii log/7/trace361 --trace-time http://127.0.0.1:40859/361 http://127.0.0.1:40859/361 --fail-with-body > log/7/stdout361 2> log/7/stderr361
=== End of file commands.log
=== Start of file http_server.log
 19:26:41.953611 ====> Client connect
 19:26:41.953646 accept_connection 3 returned 4
 19:26:41.953668 Read 93 bytes
 19:26:41.953678 Process 93 bytes request
 19:26:41.953691 Got request: GET /verifiedserver HTTP/1.1
 19:26:41.953700 Are-we-friendly question received
 19:26:41.953729 Wrote request (93 bytes) input to log/7/server.input
 19:26:41.953746 Identifying ourselves as friends
 19:26:41.953807 Response sent (56 bytes) and written to log/7/server.response
 19:26:41.953817 special request received, no persistency
 19:26:41.953825 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39316 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 361
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind361
 ==99677== 
 ==99677== Process terminating with default action of signal 4 (SIGILL)
 ==99677==  Illegal opcode at address 0x492B75F
 ==99677==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99677==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99677==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99677==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99677==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99677==    by 0x49908EB: curl_version_info (version.c:600)
 ==99677==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99677==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99677==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99677==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind361
test 0357 [HTTP PUT with Expect: 100-continue and 417 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind357 ../src/curl -q --output log/20/curl357.out  --include --trace-ascii log/20/trace357 --trace-time http://127.0.0.1:33897/we/want/357 -T log/20/test357.txt --expect100-timeout 99 > log/20/stdout357 2> log/20/stderr357

 357: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 357
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind357 ../src/curl -q --output log/20/curl357.out  --include --trace-ascii log/20/trace357 --trace-time http://127.0.0.1:33897/we/want/357 -T log/20/test357.txt --expect100-timeout 99 > log/20/stdout357 2> log/20/stderr357
=== End of file commands.log
=== Start of file http_server.log
 19:26:41.790255 ====> Client connect
 19:26:41.790294 accept_connection 3 returned 4
 19:26:41.790318 Read 93 bytes
 19:26:41.790329 Process 93 bytes request
 19:26:41.790343 Got request: GET /verifiedserver HTTP/1.1
 19:26:41.790351 Are-we-friendly question received
 19:26:41.790381 Wrote request (93 bytes) input to log/20/server.input
 19:26:41.790398 Identifying ourselves as friends
 19:26:41.790466 Response sent (56 bytes) and written to log/20/server.response
 19:26:41.790478 special request received, no persistency
 19:26:41.790486 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 40080 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 no-expect
 Testnum 357
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file test357.txt
 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind369 ../src/curl -q --output log/18/curl369.out  --include --trace-ascii log/18/trace369 --trace-time http://127.0.0.1:43739/369 --etag-save log/18/nowhere/etag369 --next http://127.0.0.1:43739/369 --include --output log/18/curl369.out > log/18/stdout369 2> log/18/stderr369
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
=== End of file test357.txt
=== Start of file valgrind357
 ==99596== 
 ==99596== Process terminating with default action of signal 4 (SIGILL)
 ==99596==  Illegal opcode at address 0x492B75F
 ==99596==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99596==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99596==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99596==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99596==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99596==    by 0x49908EB: curl_version_info (version.c:600)
 ==99596==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99596==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind357
test 0369 [--etag-save with bad path then working transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind369 ../src/curl -q --output log/18/curl369.out  --include --trace-ascii log/18/trace369 --trace-time http://127.0.0.1:43739/369 --etag-save log/18/nowhere/etag369 --next http://127.0.0.1:43739/369 --include --output log/18/curl369.out > log/18/stdout369 2> log/18/stderr369

 369: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 369
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind369 ../src/curl -q --output log/18/curl369.out  --include --trace-ascii log/18/trace369 --trace-time http://127.0.0.1:43739/369 --etag-save log/18/nowhere/etag369 --next http://127.0.0.1:43739/369 --include --oCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind367 ../src/curl -q --output log/24/curl367.out  --include --trace-ascii log/24/trace367 --trace-time http://:example@127.0.0.1:38895/367 > log/24/stdout367 2> log/24/stderr367
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind362 ../src/curl -q --output log/6/curl362.out  --include --trace-ascii log/6/trace362 --trace-time ftp://127.0.0.1:33989/362 -T log/6/test362.txt --continue-at - > log/6/stdout362 2> log/6/stderr362
utput log/18/curl369.out > log/18/stdout369 2> log/18/stderr369
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.490359 ====> Client connect
 19:26:43.490398 accept_connection 3 returned 4
 19:26:43.490420 Read 93 bytes
 19:26:43.490430 Process 93 bytes request
 19:26:43.490443 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.490452 Are-we-friendly question received
 19:26:43.490479 Wrote request (93 bytes) input to log/18/server.input
 19:26:43.490496 Identifying ourselves as friends
 19:26:43.490565 Response sent (56 bytes) and written to log/18/server.response
 19:26:43.490576 special request received, no persistency
 19:26:43.490584 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45900 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 369
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind369
 ==99992== 
 ==99992== Process terminating with default action of signal 4 (SIGILL)
 ==99992==  Illegal opcode at address 0x492B75F
 ==99992==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99992==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99992==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99992==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99992==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99992==    by 0x49908EB: curl_version_info (version.c:600)
 ==99992==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99992==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99992==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99992==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind369
test 0367 [Empty username provided in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind367 ../src/curl -q --output log/24/curl367.out  --include --trace-ascii log/24/trace367 --trace-time http://:example@127.0.0.1:38895/367 > log/24/stdout367 2> log/24/stderr367

 367: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 367
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind367 ../src/curl -q --output log/24/curl367.out  --include --trace-ascii log/24/trace367 --trace-time http://:example@127.0.0.1:38895/367 > log/24/stdout367 2> log/24/stderr367
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.448480 ====> Client connect
 19:26:42.448516 accept_connection 3 returned 4
 19:26:42.448541 Read 93 bytes
 19:26:42.448552 Process 93 bytes request
 19:26:42.448566 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.448576 Are-we-friendly question received
 19:26:42.448606 Wrote request (93 bytes) input to log/24/server.input
 19:26:42.448625 Identifying ourselves as friends
 19:26:42.448696 Response sent (56 bytes) and written to log/24/server.response
 19:26:42.448708 special request received, no persistency
 19:26:42.448717 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 58640 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 367
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind367
 ==99960== 
 ==99960== Process terminating with default action of signal 4 (SIGILL)
 ==99960==  Illegal opcode at address 0x492B75F
 ==99960==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99960==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99960==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99960==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99960==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99960==    by 0x49908EB: curl_version_info (version.c:600)
 ==99960==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99960==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99960==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99960==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind367
test 0362 [FTP resume upload file with nothing to start from]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind362 ../src/curl -q --output log/6/curl362.out  --include --trace-ascii log/6/trace362 --trace-time ftp://127.0.0.1:33989/362 -T log/6/test362.txt --continue-at - > log/6/stdout362 2> log/6/stderr362

 362: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 362
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind362 ../src/curl -q --output log/6/curl362.out  --include --trace-ascii log/6/trace362 --trace-time ftp://127.0.0.1:33989/362 -T log/6/test362.txt --continue-at - > log/6/stdout362 2> log/6/stderr362
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:42.612146 ====> Client connect
 19:26:42.612347 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:42.612622 < "USER anonymous"
 19:26:42.612658 > "331 We are happy you popped in![CR][LF]"
 19:26:42.612858 < "PASS ftp@example.com"
 19:26:42.612885 > "230 Welcome you silly person[CR][LF]"
 19:26:42.613028 < "PWD"
 19:26:42.613057 > "257 "/" is current directory[CR][LF]"
 19:26:42.613202 < "EPSV"
 19:26:42.613225 ====> Passive DATA channel requested by client
 19:26:42.613238 DATA sockfilt for passive data channel starting...
 19:26:42.638725 DATA sockfilt for passive data channel started (pid 99841)
 19:26:42.638952 DATA sockfilt for passive data channel listens on port 46421
 19:26:42.638999 > "229 Entering Passive Mode (|||46421|)[CR][LF]"
 19:26:42.639016 Client has been notified that upcoming DATA connection is awaited on port 46421
 19:26:42.639311 Client connects to port 46421
 19:26:42.639341 ====> Client established passive DATA connection on port 46421
 19:26:42.639423 < "TYPE I"
 19:26:42.645285 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:42.645629 < "SIZE verifiedserver"
 19:26:42.645677 > "213 17[CR][LF]"
 19:26:42.645818 < "RETR verifiedserver"
 19:26:42.645852 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:42.645945 =====> Closing passive DATA connection...
 19:26:42.645960 Server disconnects passive DATA connection
 19:26:42.652048 Server disconnected passive DATA connection
 19:26:42.652105 DATA sockfilt for passive data channel CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind373 ../src/curl -q --output log/12/curl373.out  --include --trace-ascii log/12/trace373 --trace-time http://127.0.0.1:40921/chunked-transfer-encoding/373 > log/12/stdout373 2> log/12/stderr373
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind368 ../src/curl -q --output log/10/curl368.out  --include --trace-ascii log/10/trace368 --trace-time http://127.0.0.1:40913/368 -r 4 > log/10/stdout368 2> log/10/stderr368
quits (pid 99841)
 19:26:42.682044 DATA sockfilt for passive data channel quit (pid 99841)
 19:26:42.682120 =====> Closed passive DATA connection
 19:26:42.682166 > "226 File transfer complete[CR][LF]"
 19:26:42.698906 < "QUIT"
 19:26:42.698981 > "221 bye bye baby[CR][LF]"
 19:26:42.700700 MAIN sockfilt said DISC
 19:26:42.700738 ====> Client disconnected
 19:26:42.700824 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:43.217333 ====> Client connect
 19:26:43.217660 Received DATA (on stdin)
 19:26:43.217673 > 146 bytes data, server => client
 19:26:43.217684 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:43.217693 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:43.217702 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:43.217782 < 16 bytes data, client => server
 19:26:43.217792 'USER anonymous\r\n'
 19:26:43.217965 Received DATA (on stdin)
 19:26:43.217997 > 33 bytes data, server => client
 19:26:43.218008 '331 We are happy you popped in!\r\n'
 19:26:43.218064 < 22 bytes data, client => server
 19:26:43.218083 'PASS ftp@example.com\r\n'
 19:26:43.218187 Received DATA (on stdin)
 19:26:43.218197 > 30 bytes data, server => client
 19:26:43.218207 '230 Welcome you silly person\r\n'
 19:26:43.218254 < 5 bytes data, client => server
 19:26:43.218265 'PWD\r\n'
 19:26:43.218359 Received DATA (on stdin)
 19:26:43.218368 > 30 bytes data, server => client
 19:26:43.218378 '257 "/" is current directory\r\n'
 19:26:43.218433 < 6 bytes data, client => server
 19:26:43.218442 'EPSV\r\n'
 19:26:43.244335 Received DATA (on stdin)
 19:26:43.244351 > 39 bytes data, server => client
 19:26:43.244361 '229 Entering Passive Mode (|||46421|)\r\n'
 19:26:43.244550 < 8 bytes data, client => server
 19:26:43.244562 'TYPE I\r\n'
 19:26:43.250683 Received DATA (on stdin)
 19:26:43.250706 > 33 bytes data, server => client
 19:26:43.250717 '200 I modify TYPE as you wanted\r\n'
 19:26:43.250814 < 21 bytes data, client => server
 19:26:43.250825 'SIZE verifiedserver\r\n'
 19:26:43.250987 Received DATA (on stdin)
 19:26:43.250997 > 8 bytes data, server => client
 19:26:43.251005 '213 17\r\n'
 19:26:43.251052 < 21 bytes data, client => server
 19:26:43.251061 'RETR verifiedserver\r\n'
 19:26:43.251271 Received DATA (on stdin)
 19:26:43.251280 > 29 bytes data, server => client
 19:26:43.251289 '150 Binary junk (17 bytes).\r\n'
 19:26:43.287507 Received DATA (on stdin)
 19:26:43.287529 > 28 bytes data, server => client
 19:26:43.287541 '226 File transfer complete\r\n'
 19:26:43.304003 < 6 bytes data, client => server
 19:26:43.304045 'QUIT\r\n'
 19:26:43.304314 Received DATA (on stdin)
 19:26:43.304324 > 18 bytes data, server => client
 19:26:43.304334 '221 bye bye baby\r\n'
 19:26:43.305969 ====> Client disconnect
 19:26:43.306147 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:42.231580 Running IPv4 version
 19:26:42.231671 Listening on port 46421
 19:26:42.237399 Wrote pid 99841 to log/6/server/ftp_sockdata.pid
 19:26:42.237479 Received PING (on stdin)
 19:26:42.244131 Received PORT (on stdin)
 19:26:42.244581 ====> Client connect
 19:26:42.253970 Received DATA (on stdin)
 19:26:42.254060 > 17 bytes data, server => client
 19:26:42.254071 'WE ROOLZ: 85558\r\n'
 19:26:42.254110 Received DISC (on stdin)
 19:26:42.254125 ====> Client forcibly disconnected
 19:26:42.257441 Received QUIT (on stdin)
 19:26:42.257456 quits
 19:26:42.284061 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 362
=== End of file server.cmd
=== Start of file test362.txt
 data
     to
       see
 that FTP
 works
   so does it?
=== End of file test362.txt
=== Start of file valgrind362
 ==99862== 
 ==99862== Process terminating with default action of signal 4 (SIGILL)
 ==99862==  Illegal opcode at address 0x492B75F
 ==99862==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99862==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99862==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99862==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99862==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99862==    by 0x49908EB: curl_version_info (version.c:600)
 ==99862==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99862==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99862==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99862==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind362
test 0373 [Chunked transfer encoding - Multiple valid chunks with binary zeros.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind373 ../src/curl -q --output log/12/curl373.out  --include --trace-ascii log/12/trace373 --trace-time http://127.0.0.1:40921/chunked-transfer-encoding/373 > log/12/stdout373 2> log/12/stderr373

 373: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 373
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind373 ../src/curl -q --output log/12/curl373.out  --include --trace-ascii log/12/trace373 --trace-time http://127.0.0.1:40921/chunked-transfer-encoding/373 > log/12/stdout373 2> log/12/stderr373
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.834171 ====> Client connect
 19:26:42.834212 accept_connection 3 returned 4
 19:26:42.834238 Read 93 bytes
 19:26:42.834249 Process 93 bytes request
 19:26:42.834263 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.834272 Are-we-friendly question received
 19:26:42.834306 Wrote request (93 bytes) input to log/12/server.input
 19:26:42.834324 Identifying ourselves as friends
 19:26:42.834404 Response sent (56 bytes) and written to log/12/server.response
 19:26:42.834417 special request received, no persistency
 19:26:42.834426 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38212 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 373
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind373
 ==100365== 
 ==100365== Process terminating with default action of signal 4 (SIGILL)
 ==100365==  Illegal opcode at address 0x492B75F
 ==100365==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100365==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100365==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100365==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100365==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100365==    by 0x49908EB: curl_version_info (version.c:600)
 ==100365==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100365==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100365==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100365==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind373
test 0368 [Append dash if -r range specified without one]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind368 ../src/curl -q --output log/10/curl368.out  --include --trace-ascii log/10/trace368 --trace-time http://127.0.0.1:40913CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind366 ../src/curl -q --output log/19/curl366.out  --include --trace-ascii log/19/trace366 --trace-time http://127.0.0.1:46497/366 --retry 2 --retry-max-time 10 > log/19/stdout366 2> log/19/stderr366
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind365 ../src/curl -q --output log/4/curl365.out  --include --trace-ascii log/4/trace365 --trace-time http://127.0.0.1:35735/365 > log/4/stdout365 2> log/4/stderr365
/368 -r 4 > log/10/stdout368 2> log/10/stderr368

 368: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 368
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind368 ../src/curl -q --output log/10/curl368.out  --include --trace-ascii log/10/trace368 --trace-time http://127.0.0.1:40913/368 -r 4 > log/10/stdout368 2> log/10/stderr368
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.484094 ====> Client connect
 19:26:42.484138 accept_connection 3 returned 4
 19:26:42.484167 Read 93 bytes
 19:26:42.484179 Process 93 bytes request
 19:26:42.484194 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.484203 Are-we-friendly question received
 19:26:42.484238 Wrote request (93 bytes) input to log/10/server.input
 19:26:42.484258 Identifying ourselves as friends
 19:26:42.484356 Response sent (56 bytes) and written to log/10/server.response
 19:26:42.484369 special request received, no persistency
 19:26:42.484378 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56080 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 368
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind368
 ==100029== 
 ==100029== Process terminating with default action of signal 4 (SIGILL)
 ==100029==  Illegal opcode at address 0x492B75F
 ==100029==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100029==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100029==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100029==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100029==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100029==    by 0x49908EB: curl_version_info (version.c:600)
 ==100029==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100029==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind368
test 0366 [HTTP --retry-max-time with too long Retry-After]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind366 ../src/curl -q --output log/19/curl366.out  --include --trace-ascii log/19/trace366 --trace-time http://127.0.0.1:46497/366 --retry 2 --retry-max-time 10 > log/19/stdout366 2> log/19/stderr366

 366: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 366
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind366 ../src/curl -q --output log/19/curl366.out  --include --trace-ascii log/19/trace366 --trace-time http://127.0.0.1:46497/366 --retry 2 --retry-max-time 10 > log/19/stdout366 2> log/19/stderr366
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.434081 ====> Client connect
 19:26:42.434130 accept_connection 3 returned 4
 19:26:42.434157 Read 93 bytes
 19:26:42.434169 Process 93 bytes request
 19:26:42.434183 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.434191 Are-we-friendly question received
 19:26:42.434221 Wrote request (93 bytes) input to log/19/server.input
 19:26:42.434240 Identifying ourselves as friends
 19:26:42.434328 Response sent (56 bytes) and written to log/19/server.response
 19:26:42.434341 special request received, no persistency
 19:26:42.434349 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 46940 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 366
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind366
 ==99952== 
 ==99952== Process terminating with default action of signal 4 (SIGILL)
 ==99952==  Illegal opcode at address 0x492B75F
 ==99952==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99952==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99952==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99952==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99952==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99952==    by 0x49908EB: curl_version_info (version.c:600)
 ==99952==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99952==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99952==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99952==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind366
test 0365 [HTTP/1.1 with chunked AND Content-Length headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind365 ../src/curl -q --output log/4/curl365.out  --include --trace-ascii log/4/trace365 --trace-time http://127.0.0.1:35735/365 > log/4/stdout365 2> log/4/stderr365

 365: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 365
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind365 ../src/curl -q --output log/4/curl365.out  --include --trace-ascii log/4/trace365 --trace-time http://127.0.0.1:35735/365 > log/4/stdout365 2> log/4/stderr365
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.217374 ====> Client connect
 19:26:43.217406 accept_connection 3 returned 4
 19:26:43.217429 Read 93 bytes
 19:26:43.217438 Process 93 bytes request
 19:26:43.217450 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.217457 Are-we-friendly question received
 19:26:43.217485 Wrote request (93 bytes) input to log/4/server.input
 19:26:43.217500 Identifying ourselves as friends
 19:26:43.217572 Response sent (56 bytes) and written to log/4/server.response
 19:26:43.217581 special request received, no persistency
 19:26:43.217589 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 56024 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verifyCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind374 ../src/curl -q --output log/23/curl374.out  --include --trace-ascii log/23/trace374 --trace-time http://127.0.0.1:44711/gif/374 > log/23/stdout374 2> log/23/stderr374
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind370 ../src/curl -q --output log/1/curl370.out  --include --trace-ascii log/1/trace370 --trace-time http://127.0.0.1:47/370 --etag-save log/1/nowhere/etag370 > log/1/stdout370 2> log/1/stderr370
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind371 ../src/curl -q --output log/3/curl371.out  --include --trace-ascii log/3/trace371 --trace-time http://127.0.0.1:36161/371 -o log/3/dump -o log/3/dump2 --no-progress-meter > log/3/stdout371 2> log/3/stderr371
.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 365
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind365
 ==99865== 
 ==99865== Process terminating with default action of signal 4 (SIGILL)
 ==99865==  Illegal opcode at address 0x492B75F
 ==99865==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==99865==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==99865==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==99865==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==99865==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==99865==    by 0x49908EB: curl_version_info (version.c:600)
 ==99865==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==99865==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==99865==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==99865==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind365
test 0374 [Valid gif with two frames. No new line in data section.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind374 ../src/curl -q --output log/23/curl374.out  --include --trace-ascii log/23/trace374 --trace-time http://127.0.0.1:44711/gif/374 > log/23/stdout374 2> log/23/stderr374

 374: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 374
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind374 ../src/curl -q --output log/23/curl374.out  --include --trace-ascii log/23/trace374 --trace-time http://127.0.0.1:44711/gif/374 > log/23/stdout374 2> log/23/stderr374
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.977698 ====> Client connect
 19:26:42.977742 accept_connection 3 returned 4
 19:26:42.977763 Read 93 bytes
 19:26:42.977773 Process 93 bytes request
 19:26:42.977786 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.977794 Are-we-friendly question received
 19:26:42.977819 Wrote request (93 bytes) input to log/23/server.input
 19:26:42.977835 Identifying ourselves as friends
 19:26:42.977895 Response sent (56 bytes) and written to log/23/server.response
 19:26:42.977904 special request received, no persistency
 19:26:42.977912 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 374
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind374
 ==100450== 
 ==100450== Process terminating with default action of signal 4 (SIGILL)
 ==100450==  Illegal opcode at address 0x492B75F
 ==100450==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100450==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100450==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100450==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100450==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100450==    by 0x49908EB: curl_version_info (version.c:600)
 ==100450==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100450==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100450==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100450==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind374
test 0370 [--etag-save with bad path - no transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind370 ../src/curl -q --output log/1/curl370.out  --include --trace-ascii log/1/trace370 --trace-time http://127.0.0.1:47/370 --etag-save log/1/nowhere/etag370 > log/1/stdout370 2> log/1/stderr370

curl returned 132, when expecting 26
 370: exit FAILED
== Contents of files in the log/1/ directory after test 370
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind370 ../src/curl -q --output log/1/curl370.out  --include --trace-ascii log/1/trace370 --trace-time http://127.0.0.1:47/370 --etag-save log/1/nowhere/etag370 > log/1/stdout370 2> log/1/stderr370
=== End of file commands.log
=== Start of file server.cmd
 Testnum 370
=== End of file server.cmd
=== Start of file valgrind370
 ==100012== 
 ==100012== Process terminating with default action of signal 4 (SIGILL)
 ==100012==  Illegal opcode at address 0x492B75F
 ==100012==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100012==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100012==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100012==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100012==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100012==    by 0x49908EB: curl_version_info (version.c:600)
 ==100012==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100012==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100012==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100012==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind370
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind378 ../src/curl -q --output log/14/curl378.out  --include --trace-ascii log/14/trace378 --trace-time -T log/14/378 -d input http://never-accessed > log/14/stdout378 2> log/14/stderr378
test 0371 [using more -o than URLs in the command line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind371 ../src/curl -q --output log/3/curl371.out  --include --trace-ascii log/3/trace371 --trace-time http://127.0.0.1:36161/371 -o log/3/dump -o log/3/dump2 --no-progress-meter > log/3/stdout371 2> log/3/stderr371

 371: stderr FAILED:
--- log/3/check-expected	2026-10-15 19:26:45.687166086 +0000
+++ log/3/check-generated	2026-10-15 19:26:45.682201449 +0000
@@ -1 +0,0 @@
-Warning: Got more output options than URLs[CR][LF]
== Contents of files in the log/3/ directory after test 371
=== Start of file check-expected
 Warning: Got more output options than URLs[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind371 ../src/curl -q --output log/3/curl371.out  --include --trace-ascii log/3/trace371 --trace-time http://127.0.0.1:36161/371 -o log/3/dump -o log/3/dump2 --no-progress-meter > log/3/stdout371 2> log/3/stderr371
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.719527 ====> Client connect
 19:26:43.719561 accept_connection 3 returned 4
 19:26:43.719581 Read 93 bytes
 19:26:43.719590 Process 93 bytes request
 19:26:43.719602 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.719611 Are-we-friendly question received
 19:26:43.719637 Wrote request (93 bytes) input to log/3/server.input
 19:26:43.719653 Identifying ourselves as friends
 19:26:43.719715 Response sent (56 bytes) and written to log/3/server.response
 19:26:43.719724 special request received, no persistency
 19:26:43.719732 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 56880 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 371
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind371
 ==100271== 
 ==100271== Process terminating with default action of signal 4 (SIGILL)
 ==100271==  Illegal opcode at address 0x492B75F
 ==100271==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100271==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100271==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100271==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100271==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100271==    by 0x49908EB: curl_version_info (version.c:600)
 ==100271==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100271==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100271==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100271==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind371
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind372 ../src/curl -q --output log/13/curl372.out  --include --trace-ascii log/13/trace372 --trace-time --raw http://127.0.0.1:38821/binary-zero-in-data-section/372 > log/13/stdout372 2> log/13/stderr372
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind379 ../src/curl -q --include --trace-ascii log/22/trace379 --trace-time http://127.0.0.1:35989/379 -o log/22/save --remove-on-error --no-clobber > log/22/stdout379 2> log/22/stderr379
test 0378 [Reject using -T and -d at once]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind378 ../src/curl -q --output log/14/curl378.out  --include --trace-ascii log/14/trace378 --trace-time -T log/14/378 -d input http://never-accessed > log/14/stdout378 2> log/14/stderr378

 378: stderr FAILED:
--- log/14/check-expected	2026-10-15 19:26:45.906177731 +0000
+++ log/14/check-generated	2026-10-15 19:26:45.902152190 +0000
@@ -1,2 +0,0 @@
-Warning: You can only select one HTTP request method! You asked for both PUT [CR][LF]
-Warning: (-T, --upload-file) and POST (-d, --data).[CR][LF]
== Contents of files in the log/14/ directory after test 378
=== Start of file check-expected
 Warning: You can only select one HTTP request method! You asked for both PUT [CR][LF]
 Warning: (-T, --upload-file) and POST (-d, --data).[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind378 ../src/curl -q --output log/14/curl378.out  --include --trace-ascii log/14/trace378 --trace-time -T log/14/378 -d input http://never-accessed > log/14/stdout378 2> log/14/stderr378
=== End of file commands.log
=== Start of file server.cmd
 Testnum 378
=== End of file server.cmd
=== Start of file valgrind378
 ==100550== 
 ==100550== Process terminating with default action of signal 4 (SIGILL)
 ==100550==  Illegal opcode at address 0x492B75F
 ==100550==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100550==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100550==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100550==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100550==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100550==    by 0x49908EB: curl_version_info (version.c:600)
 ==100550==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100550==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100550==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100550==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind378
test 0372 [Binary zero in data element.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind372 ../src/curl -q --output log/13/curl372.out  --include --trace-ascii log/13/trace372 --trace-time --raw http://127.0.0.1:38821/binary-zero-in-data-section/372 > log/13/stdout372 2> log/13/stderr372

 372: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 372
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind372 ../src/curl -q --output log/13/curl372.out  --include --trace-ascii log/13/trace372 --trace-time --raw http://127.0.0.1:38821/binary-zero-in-data-section/372 > log/13/stdout372 2> log/13/stderr372
=== End of file commands.log
=== Start of file http_server.log
 19:26:42.777507 ====> Client connect
 19:26:42.777549 accept_connection 3 returned 4
 19:26:42.777734 Read 93 bytes
 19:26:42.777748 Process 93 bytes request
 19:26:42.777761 Got request: GET /verifiedserver HTTP/1.1
 19:26:42.777770 Are-we-friendly question received
 19:26:42.777806 Wrote request (93 bytes) input to log/13/server.input
 19:26:42.777822 Identifying ourselves as friends
 19:26:42.777882 Response sent (56 bytes) and written to log/13/server.response
 19:26:42.777891 special request received, no persistency
 19:26:42.777899 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 50700 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 372
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind372
 ==100327== 
 ==100327== Process terminating with default action of signal 4 (SIGILL)
 ==100327==  Illegal opcode at address 0x492B75F
 ==100327==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100327==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100327==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100327==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100327==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100327==    by 0x49908EB: curl_version_info (version.c:600)
 ==100327==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100327==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100327==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100327==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind372
test 0379 [--remove-on-error with --no-clobber and an added number]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind379 ../src/curl -q --include --trace-ascii log/22/trace379 --trace-time http://127.0.0.1:35989/379 -o log/22/save --remove-on-error --no-clobber > log/22/stdout379 2> log/22/stderr379

 379: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 379
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind379 ../src/curl -q --include --trace-ascii log/22/trace379 --trace-time http://127.0.0.1:35989/379 -o log/22/save --remove-on-error --no-clobber > log/22/stdout379 2> log/22/stderr379
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.450985 ====> Client connect
 19:26:43.451111 accept_connection 3 returned 4
 19:26:43.451171 Read 93 bytes
 19:26:43.451182 Process 93 bytes request
 19:26:43.451221 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.451275 Are-we-friendly question received
 19:26:43.451345 Wrote request (93 bytes) input to log/22/server.input
 19:26:43.451378 Identifying ourselves as friends
 19:26:43.451525 Response sent (56 bytes) and written to log/22/server.response
 19:26:43.451539 special request received, no persistency
 19:26:43.451551 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 56574 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file save
 exists before command runs
=== End of file save
=== Start of file server.cmd
 Testnum 379
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind379
 ==100605== 
 ==100605== Process terminating with default action of signal 4 (SIGILL)
 ==100605== CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind380 ../src/curl -q --output log/8/curl380.out  --include --trace-ascii log/8/trace380 --trace-time --netrc --netrc-file log/8/netrc380 ftp://mary@127.0.0.1:41879/ > log/8/stdout380 2> log/8/stderr380
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind385 ../src/curl -q --output log/21/curl385.out  --include --trace-ascii log/21/trace385 --trace-time --json '{ "drink": "coffee",' --json ' "crunch": "cookie" }' http://127.0.0.1:39881/385 -H "Content-Type: drinks/hot" > log/21/stdout385 2> log/21/stderr385
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind383 ../src/curl -q --output log/15/curl383.out  --include --trace-ascii log/15/trace383 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40321/383 > log/15/stdout383 2> log/15/stderr383
 Illegal opcode at address 0x492B75F
 ==100605==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100605==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100605==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100605==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100605==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100605==    by 0x49908EB: curl_version_info (version.c:600)
 ==100605==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100605==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100605==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100605==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind379
test 0380 [pick netrc password based on username in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind380 ../src/curl -q --output log/8/curl380.out  --include --trace-ascii log/8/trace380 --trace-time --netrc --netrc-file log/8/netrc380 ftp://mary@127.0.0.1:41879/ > log/8/stdout380 2> log/8/stderr380

 380: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 380
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind380 ../src/curl -q --output log/8/curl380.out  --include --trace-ascii log/8/trace380 --trace-time --netrc --netrc-file log/8/netrc380 ftp://mary@127.0.0.1:41879/ > log/8/stdout380 2> log/8/stderr380
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:43.915374 ====> Client connect
 19:26:43.915614 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:43.922290 < "USER anonymous"
 19:26:43.922348 > "331 We are happy you popped in![CR][LF]"
 19:26:43.922566 < "PASS ftp@example.com"
 19:26:43.922601 > "230 Welcome you silly person[CR][LF]"
 19:26:43.922782 < "PWD"
 19:26:43.922820 > "257 "/" is current directory[CR][LF]"
 19:26:43.923009 < "EPSV"
 19:26:43.923039 ====> Passive DATA channel requested by client
 19:26:43.923056 DATA sockfilt for passive data channel starting...
 19:26:43.926822 DATA sockfilt for passive data channel started (pid 100662)
 19:26:43.926958 DATA sockfilt for passive data channel listens on port 35737
 19:26:43.927010 > "229 Entering Passive Mode (|||35737|)[CR][LF]"
 19:26:43.927028 Client has been notified that upcoming DATA connection is awaited on port 35737
 19:26:43.927327 Client connects to port 35737
 19:26:43.927361 ====> Client established passive DATA connection on port 35737
 19:26:43.927458 < "TYPE I"
 19:26:43.927492 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:43.927669 < "SIZE verifiedserver"
 19:26:43.927707 > "213 17[CR][LF]"
 19:26:43.927870 < "RETR verifiedserver"
 19:26:43.927906 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:43.927997 =====> Closing passive DATA connection...
 19:26:43.928016 Server disconnects passive DATA connection
 19:26:43.928259 Server disconnected passive DATA connection
 19:26:43.928291 DATA sockfilt for passive data channel quits (pid 100662)
 19:26:43.928508 DATA sockfilt for passive data channel quit (pid 100662)
 19:26:43.928532 =====> Closed passive DATA connection
 19:26:43.928560 > "226 File transfer complete[CR][LF]"
 19:26:43.972341 < "QUIT"
 19:26:43.972397 > "221 bye bye baby[CR][LF]"
 19:26:43.974184 MAIN sockfilt said DISC
 19:26:43.974229 ====> Client disconnected
 19:26:43.974300 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:43.517620 ====> Client connect
 19:26:43.521231 Received DATA (on stdin)
 19:26:43.521249 > 146 bytes data, server => client
 19:26:43.521261 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:43.521271 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:43.521280 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:43.527613 < 16 bytes data, client => server
 19:26:43.527646 'USER anonymous\r\n'
 19:26:43.527955 Received DATA (on stdin)
 19:26:43.527968 > 33 bytes data, server => client
 19:26:43.527979 '331 We are happy you popped in!\r\n'
 19:26:43.528062 < 22 bytes data, client => server
 19:26:43.528077 'PASS ftp@example.com\r\n'
 19:26:43.528207 Received DATA (on stdin)
 19:26:43.528219 > 30 bytes data, server => client
 19:26:43.528230 '230 Welcome you silly person\r\n'
 19:26:43.528288 < 5 bytes data, client => server
 19:26:43.528302 'PWD\r\n'
 19:26:43.528424 Received DATA (on stdin)
 19:26:43.528436 > 30 bytes data, server => client
 19:26:43.528447 '257 "/" is current directory\r\n'
 19:26:43.528515 < 6 bytes data, client => server
 19:26:43.528529 'EPSV\r\n'
 19:26:43.532639 Received DATA (on stdin)
 19:26:43.532656 > 39 bytes data, server => client
 19:26:43.532666 '229 Entering Passive Mode (|||35737|)\r\n'
 19:26:43.532843 < 8 bytes data, client => server
 19:26:43.532860 'TYPE I\r\n'
 19:26:43.533097 Received DATA (on stdin)
 19:26:43.533109 > 33 bytes data, server => client
 19:26:43.533120 '200 I modify TYPE as you wanted\r\n'
 19:26:43.533179 < 21 bytes data, client => server
 19:26:43.533191 'SIZE verifiedserver\r\n'
 19:26:43.533310 Received DATA (on stdin)
 19:26:43.533322 > 8 bytes data, server => client
 19:26:43.533331 '213 17\r\n'
 19:26:43.533385 < 21 bytes data, client => server
 19:26:43.533397 'RETR verifiedserver\r\n'
 19:26:43.533618 Received DATA (on stdin)
 19:26:43.533630 > 29 bytes data, server => client
 19:26:43.533640 '150 Binary junk (17 bytes).\r\n'
 19:26:43.534162 Received DATA (on stdin)
 19:26:43.534173 > 28 bytes data, server => client
 19:26:43.534183 '226 File transfer complete\r\n'
 19:26:43.577755 < 6 bytes data, client => server
 19:26:43.577788 'QUIT\r\n'
 19:26:43.578015 Received DATA (on stdin)
 19:26:43.578028 > 18 bytes data, server => client
 19:26:43.578038 '221 bye bye baby\r\n'
 19:26:43.579230 ====> Client disconnect
 19:26:43.579920 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:43.532058 Running IPv4 version
 19:26:43.532144 Listening on port 35737
 19:26:43.532184 Wrote pid 100662 to log/8/server/ftp_sockdata.pid
 19:26:43.532363 Received PING (on stdin)
 19:26:43.532462 Received PORT (on stdin)
 19:26:43.532880 ====> Client connect
 19:26:43.533700 Received DATA (on stdin)
 19:26:43.533715 > 17 bytes data, server => client
 19:26:43.533724 'WE ROOLZ: 84824\r\n'
 19:26:43.533752 Received DISC (on stdin)
 19:26:43.533763 ====> Client forcibly disconnected
 19:26:43.533905 Received QUIT (on stdin)
 19:26:43.533915 quits
 19:26:43.533981 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc380
 # the following two lines were created while testing curl
 machine 127.0.0.1 login frankenstein password wrongone
 machine 127.0.0.1 login mary password yram
=== End of file netrc380
=== Start of file server.cmd
 Testnum 380
=== End of file server.cmd
=== Start of file valgrind380
 ==100742== 
 ==100742== Process terminating with default action of signal 4 (SIGILL)
 ==100742==  Illegal opcode at address 0x492B75F
 ==100742==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100742==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100742==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100742==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100742==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100742==    by 0x49908EB: curl_version_info (version.c:600)
 ==100742==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100742==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind380
test 0383 [HTTP with --json]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind381 ../src/curl -q --output log/2/curl381.out  --include --trace-ascii log/2/trace381 --trace-time --netrc-optional --netrc-file log/2/netrc381 ftp://mary:drfrank@127.0.0.1:38033/ > log/2/stdout381 2> log/2/stderr381
check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind383 ../src/curl -q --output log/15/curl383.out  --include --trace-ascii log/15/trace383 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40321/383 > log/15/stdout383 2> log/15/stderr383

 383: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 383
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind383 ../src/curl -q --output log/15/curl383.out  --include --trace-ascii log/15/trace383 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40321/383 > log/15/stdout383 2> log/15/stderr383
=== End of file commands.log
=== Start of file http_server.log
 19:26:44.767703 ====> Client connect
 19:26:44.767740 accept_connection 3 returned 4
 19:26:44.767764 Read 93 bytes
 19:26:44.767773 Process 93 bytes request
 19:26:44.767785 Got request: GET /verifiedserver HTTP/1.1
 19:26:44.767794 Are-we-friendly question received
 19:26:44.767819 Wrote request (93 bytes) input to log/15/server.input
 19:26:44.767833 Identifying ourselves as friends
 19:26:44.767894 Response sent (56 bytes) and written to log/15/server.response
 19:26:44.767902 special request received, no persistency
 19:26:44.767910 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 42148 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 383
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind383
 ==100905== 
 ==100905== Process terminating with default action of signal 4 (SIGILL)
 ==100905==  Illegal opcode at address 0x492B75F
 ==100905==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100905==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100905==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100905==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100905==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100905==    by 0x49908EB: curl_version_info (version.c:600)
 ==100905==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100905==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100905==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100905==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind383
test 0385 [HTTP with --json x 2]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind385 ../src/curl -q --output log/21/curl385.out  --include --trace-ascii log/21/trace385 --trace-time --json '{ "drink": "coffee",' --json ' "crunch": "cookie" }' http://127.0.0.1:39881/385 -H "Content-Type: drinks/hot" > log/21/stdout385 2> log/21/stderr385

 385: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 385
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind385 ../src/curl -q --output log/21/curl385.out  --include --trace-ascii log/21/trace385 --trace-time --json '{ "drink": "coffee",' --json ' "crunch": "cookie" }' http://127.0.0.1:39881/385 -H "Content-Type: drinks/hot" > log/21/stdout385 2> log/21/stderr385
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.880047 ====> Client connect
 19:26:43.880080 accept_connection 3 returned 4
 19:26:43.880100 Read 93 bytes
 19:26:43.880109 Process 93 bytes request
 19:26:43.880122 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.880130 Are-we-friendly question received
 19:26:43.880155 Wrote request (93 bytes) input to log/21/server.input
 19:26:43.880170 Identifying ourselves as friends
 19:26:43.880225 Response sent (56 bytes) and written to log/21/server.response
 19:26:43.880233 special request received, no persistency
 19:26:43.880242 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 44040 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 385
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind385
 ==100989== 
 ==100989== Process terminating with default action of signal 4 (SIGILL)
 ==100989==  Illegal opcode at address 0x492B75F
 ==100989==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100989==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100989==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100989==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100989==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100989==    by 0x49908EB: curl_version_info (version.c:600)
 ==100989==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100989==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100989==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100989==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind385
test 0381 [netrc-optional lets URL creds override netrc]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind381 ../src/curl -q --output log/2/curl381.out  --include --trace-ascii log/2/trace381 --trace-time --netrc-optional --netrc-file log/2/netrc381 ftp://mary:drfrank@127.0.0.1:38033/ > log/2/stdout381 2> log/2/stderr381

 381: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 381
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind381 ../src/curl -q --output log/2/curl381.out  --include --trace-ascii log/2/trace381 --trace-time --netrc-optional --netrc-file log/2/netrc381 ftp://mary:drfrank@127.0.0.1:38033/ > log/2/stdout381 2> log/2/stderr381
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:43.972658 ====> Client connect
 19:26:43.972822 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:43.978925 < "USER anonymous"
 19:26:43.978980 > "331 We are happy you popped in![CR][LF]"
 19:26:43.979181 < "PASS ftp@example.com"
 19:26:43.979217 > "230 Welcome you silly person[CR][LF]"
 19:26:43.979410 < "PWD"
 19:26:43.979452 > "257 "/" is current directory[CR][LF]"
 19:26:43.979644 < "EPSV"
 19:26:43.979670CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind386 ../src/curl -q --output log/11/curl386.out  --include --trace-ascii log/11/trace386 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40989/386 --next http://127.0.0.1:40989/3860002 > log/11/stdout386 2> log/11/stderr386
 ====> Passive DATA channel requested by client
 19:26:43.979685 DATA sockfilt for passive data channel starting...
 19:26:43.983439 DATA sockfilt for passive data channel started (pid 100706)
 19:26:43.983564 DATA sockfilt for passive data channel listens on port 34185
 19:26:43.983607 > "229 Entering Passive Mode (|||34185|)[CR][LF]"
 19:26:43.983624 Client has been notified that upcoming DATA connection is awaited on port 34185
 19:26:43.983928 Client connects to port 34185
 19:26:43.983962 ====> Client established passive DATA connection on port 34185
 19:26:43.984054 < "TYPE I"
 19:26:43.984088 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:43.984247 < "SIZE verifiedserver"
 19:26:43.984279 > "213 17[CR][LF]"
 19:26:43.984419 < "RETR verifiedserver"
 19:26:43.984451 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:43.984537 =====> Closing passive DATA connection...
 19:26:43.984552 Server disconnects passive DATA connection
 19:26:43.984775 Server disconnected passive DATA connection
 19:26:43.984799 DATA sockfilt for passive data channel quits (pid 100706)
 19:26:43.985025 DATA sockfilt for passive data channel quit (pid 100706)
 19:26:43.985048 =====> Closed passive DATA connection
 19:26:43.985074 > "226 File transfer complete[CR][LF]"
 19:26:44.028882 < "QUIT"
 19:26:44.028940 > "221 bye bye baby[CR][LF]"
 19:26:44.030200 MAIN sockfilt said DISC
 19:26:44.030243 ====> Client disconnected
 19:26:44.030328 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:43.578160 ====> Client connect
 19:26:43.578444 Received DATA (on stdin)
 19:26:43.578457 > 146 bytes data, server => client
 19:26:43.578466 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:43.578474 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:43.578481 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:43.584343 < 16 bytes data, client => server
 19:26:43.584367 'USER anonymous\r\n'
 19:26:43.584600 Received DATA (on stdin)
 19:26:43.584613 > 33 bytes data, server => client
 19:26:43.584622 '331 We are happy you popped in!\r\n'
 19:26:43.584683 < 22 bytes data, client => server
 19:26:43.584696 'PASS ftp@example.com\r\n'
 19:26:43.584836 Received DATA (on stdin)
 19:26:43.584848 > 30 bytes data, server => client
 19:26:43.584858 '230 Welcome you silly person\r\n'
 19:26:43.584921 < 5 bytes data, client => server
 19:26:43.584936 'PWD\r\n'
 19:26:43.585069 Received DATA (on stdin)
 19:26:43.585082 > 30 bytes data, server => client
 19:26:43.585092 '257 "/" is current directory\r\n'
 19:26:43.585160 < 6 bytes data, client => server
 19:26:43.585175 'EPSV\r\n'
 19:26:43.589248 Received DATA (on stdin)
 19:26:43.589264 > 39 bytes data, server => client
 19:26:43.589274 '229 Entering Passive Mode (|||34185|)\r\n'
 19:26:43.589461 < 8 bytes data, client => server
 19:26:43.589474 'TYPE I\r\n'
 19:26:43.589702 Received DATA (on stdin)
 19:26:43.589713 > 33 bytes data, server => client
 19:26:43.589723 '200 I modify TYPE as you wanted\r\n'
 19:26:43.589779 < 21 bytes data, client => server
 19:26:43.589789 'SIZE verifiedserver\r\n'
 19:26:43.589891 Received DATA (on stdin)
 19:26:43.589900 > 8 bytes data, server => client
 19:26:43.589909 '213 17\r\n'
 19:26:43.589957 < 21 bytes data, client => server
 19:26:43.589967 'RETR verifiedserver\r\n'
 19:26:43.590165 Received DATA (on stdin)
 19:26:43.590175 > 29 bytes data, server => client
 19:26:43.590185 '150 Binary junk (17 bytes).\r\n'
 19:26:43.590690 Received DATA (on stdin)
 19:26:43.590701 > 28 bytes data, server => client
 19:26:43.590711 '226 File transfer complete\r\n'
 19:26:43.634310 < 6 bytes data, client => server
 19:26:43.634347 'QUIT\r\n'
 19:26:43.634570 Received DATA (on stdin)
 19:26:43.634582 > 18 bytes data, server => client
 19:26:43.634592 '221 bye bye baby\r\n'
 19:26:43.635767 ====> Client disconnect
 19:26:43.635954 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:43.588704 Running IPv4 version
 19:26:43.588790 Listening on port 34185
 19:26:43.588827 Wrote pid 100706 to log/2/server/ftp_sockdata.pid
 19:26:43.588995 Received PING (on stdin)
 19:26:43.589084 Received PORT (on stdin)
 19:26:43.589495 ====> Client connect
 19:26:43.590240 Received DATA (on stdin)
 19:26:43.590252 > 17 bytes data, server => client
 19:26:43.590262 'WE ROOLZ: 85208\r\n'
 19:26:43.590287 Received DISC (on stdin)
 19:26:43.590298 ====> Client forcibly disconnected
 19:26:43.590421 Received QUIT (on stdin)
 19:26:43.590431 quits
 19:26:43.590501 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc381
 # the following two lines were created while testing curl
 machine 127.0.0.1 login frankenstein password wrongone
 machine 127.0.0.1 login mary password yram
=== End of file netrc381
=== Start of file server.cmd
 Testnum 381
=== End of file server.cmd
=== Start of file valgrind381
 ==100768== 
 ==100768== Process terminating with default action of signal 4 (SIGILL)
 ==100768==  Illegal opcode at address 0x492B75F
 ==100768==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100768==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100768==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100768==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100768==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100768==    by 0x49908EB: curl_version_info (version.c:600)
 ==100768==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100768==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind381
test 0386 [HTTP with --json + --next]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind386 ../src/curl -q --output log/11/curl386.out  --include --trace-ascii log/11/trace386 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40989/386 --next http://127.0.0.1:40989/3860002 > log/11/stdout386 2> log/11/stderr386

 386: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 386
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind386 ../src/curl -q --output log/11/curl386.out  --include --trace-ascii log/11/trace386 --trace-time --json '{ "drink": "coffee" }' http://127.0.0.1:40989/386 --next http://127.0.0.1:40989/3860002 > log/11/stdout386 2> log/11/stderr386
=== End of file commands.log
=== Start of file http_server.log
 19:26:44.051144 ====> Client connect
 19:26:44.051190 accept_connection 3 returned 4
 19:26:44.051217 Read 93 bytes
 19:26:44.051229 Process 93 bytes request
 19:26:44.051243 Got request: GET /verifiedserver HTTP/1.1
 19:26:44.051253 Are-we-friendly question received
 19:26:44.051316 Wrote request (93 bytes) input to log/11/server.input
 19:26:44.051337 Identifying ourselves as friends
 19:26:44.051415 Response sent (56 bytes) and written to log/11/server.response
 19:26:44.051426 special request received, no persistency
 19:26:44.051436 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 53282 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 386
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
===CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind376 ../src/curl -q --include --trace-ascii log/5/trace376 --trace-time http://127.0.0.1:37089/376 -o log/5/save-376 --remove-on-error > log/5/stdout376 2> log/5/stderr376
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind387 ../src/curl -q --output log/17/curl387.out  --include --trace-ascii log/17/trace387 --trace-time http://127.0.0.1:35993/387 -sS --tr-encoding > log/17/stdout387 2> log/17/stderr387
 End of file server.response
=== Start of file valgrind386
 ==101102== 
 ==101102== Process terminating with default action of signal 4 (SIGILL)
 ==101102==  Illegal opcode at address 0x492B75F
 ==101102==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101102==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101102==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101102==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101102==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101102==    by 0x49908EB: curl_version_info (version.c:600)
 ==101102==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101102==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101102==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101102==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind386
test 0376 [--remove-on-error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind376 ../src/curl -q --include --trace-ascii log/5/trace376 --trace-time http://127.0.0.1:37089/376 -o log/5/save-376 --remove-on-error > log/5/stdout376 2> log/5/stderr376

 376: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 376
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind376 ../src/curl -q --include --trace-ascii log/5/trace376 --trace-time http://127.0.0.1:37089/376 -o log/5/save-376 --remove-on-error > log/5/stdout376 2> log/5/stderr376
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.478101 ====> Client connect
 19:26:43.478135 accept_connection 3 returned 4
 19:26:43.478155 Read 93 bytes
 19:26:43.478165 Process 93 bytes request
 19:26:43.478176 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.478185 Are-we-friendly question received
 19:26:43.478209 Wrote request (93 bytes) input to log/5/server.input
 19:26:43.478224 Identifying ourselves as friends
 19:26:43.478283 Response sent (56 bytes) and written to log/5/server.response
 19:26:43.478292 special request received, no persistency
 19:26:43.478300 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 35774 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 376
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind376
 ==100623== 
 ==100623== Process terminating with default action of signal 4 (SIGILL)
 ==100623==  Illegal opcode at address 0x492B75F
 ==100623==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100623==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100623==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100623==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100623==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100623==    by 0x49908EB: curl_version_info (version.c:600)
 ==100623==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100623==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100623==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100623==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind376
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind389 ../src/curl -q --output log/7/curl389.out  --include --trace-ascii log/7/trace389 --trace-time -4 http://curlmachine.localhost:40859/389 > log/7/stdout389 2> log/7/stderr389
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind384 ../src/curl -q --output log/9/curl384.out  --include --trace-ascii log/9/trace384 --trace-time --json @- http://127.0.0.1:43733/384 -H "Accept: foobar/*" <log/9/stdin-for-384 > log/9/stdout384 2> log/9/stderr384
test 0387 [Response with overly long compression chain]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind387 ../src/curl -q --output log/17/curl387.out  --include --trace-ascii log/17/trace387 --trace-time http://127.0.0.1:35993/387 -sS --tr-encoding > log/17/stdout387 2> log/17/stderr387

 387: stderr FAILED:
--- log/17/check-expected	2026-10-15 19:26:47.086137063 +0000
+++ log/17/check-generated	2026-10-15 19:26:47.085221676 +0000
@@ -1 +0,0 @@
-curl: (61) Reject response exceeding limit of 5 transfer encodings[CR][LF]
== Contents of files in the log/17/ directory after test 387
=== Start of file check-expected
 curl: (61) Reject response exceeding limit of 5 transfer encodings[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind387 ../src/curl -q --output log/17/curl387.out  --include --trace-ascii log/17/trace387 --trace-time http://127.0.0.1:35993/387 -sS --tr-encoding > log/17/stdout387 2> log/17/stderr387
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.072294 ====> Client connect
 19:26:45.072334 accept_connection 3 returned 4
 19:26:45.072357 Read 93 bytes
 19:26:45.072367 Process 93 bytes request
 19:26:45.072380 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.072389 Are-we-friendly question received
 19:26:45.072418 Wrote request (93 bytes) input to log/17/server.input
 19:26:45.072436 Identifying ourselves as friends
 19:26:45.072504 Response sent (56 bytes) and written to log/17/server.response
 19:26:45.072514 special request received, no persistency
 19:26:45.072523 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 34416 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 387
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind387
 ==101110== 
 ==101110== Process terminating with default action of signal 4 (SIGILL)
 ==101110==  Illegal opcode at address 0x492B75F
 ==101110==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101110==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101110==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101110==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101110==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101110==    by 0x49908EB: curl_version_info (version.c:600)
 ==101110==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101110==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101110==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101110==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind387
test 0389 [*.localhost is a local host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind389 ../src/curl -q --output log/7/curl389.out  --include --trace-ascii log/7/trace389 --trace-time -4 http://curlmachine.localhost:40859/389 > log/7/stdout389 2> log/7/stderr389

 389: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 389
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind389 ../src/curl -q --output log/7/curl389.out  --include --trace-ascii log/7/trace389 --trace-time -4 http://curlmachine.localhost:40859/389 > log/7/stdout389 2> log/7/stderr389
=== End of file commands.log
=== Start of file http_server.log
 19:26:44.497882 ====> Client connect
 19:26:44.497929 accept_connection 3 returned 4
 19:26:44.497955 Read 93 bytes
 19:26:44.497964 Process 93 bytes request
 19:26:44.497976 Got request: GET /verifiedserver HTTP/1.1
 19:26:44.497984 Are-we-friendly question received
 19:26:44.498010 Wrote request (93 bytes) input to log/7/server.input
 19:26:44.498025 Identifying ourselves as friends
 19:26:44.498112 Response sent (56 bytes) and written to log/7/server.response
 19:26:44.498121 special request received, no persistency
 19:26:44.498129 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39330 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 389
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind389
 ==101308== 
 ==101308== Process terminating with default action of signal 4 (SIGILL)
 ==101308==  Illegal opcode at address 0x492B75F
 ==101308==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101308==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101308==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101308==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101308==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101308==    by 0x49908EB: curl_version_info (version.c:600)
 ==101308==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101308==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101308==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101308==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind389
test 0384 [HTTP with --json from stdin]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind384 ../src/curl -q --output log/9/curl384.out  --include --trace-ascii log/9/trace384 --trace-time --json @- http://127.0.0.1:43733/384 -H "Accept: foobar/*" <log/9/stdin-for-384 > log/9/stdout384 2> log/9/stderr384

 384: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 384
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind384 ../src/curl -q --output log/9/curl384.out  --include --trace-ascii log/9/trace384 --trace-time --json @- http://127.0.0.1:43733/384 -H "Accept: foobar/*" <log/9/stdin-for-384 > log/9/stdout384 2> log/9/stderr384
=== End of file commands.log
=== Start of file http_server.log
 19:26:43.759997 ====> Client connect
 19:26:43.760035 accept_connection 3 returned 4
 19:26:43.760058 Read 93 bytes
 19:26:43.760068 Process 93 bytes request
 19:26:43.760081 Got request: GET /verifiedserver HTTP/1.1
 19:26:43.760090 Are-we-friendly question received
 19:26:43.760123 Wrote request (93 bytes) input to log/9/server.input
 19:26:43.760139 Identifying ourselves as friends
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind388 ../src/curl -q --include --trace-ascii log/16/trace388 --trace-time http://127.0.0.1:35903/3880001 -u testuser:testpass --digest http://127.0.0.1:35903/3880002 > log/16/stdout388 2> log/16/stderr388
 19:26:43.760206 Response sent (56 bytes) and written to log/9/server.response
 19:26:43.760215 special request received, no persistency
 19:26:43.760224 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34982 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 384
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file stdin-for-384
 { "drink": "coffee" }
=== End of file stdin-for-384
=== Start of file valgrind384
 ==100876== 
 ==100876== Process terminating with default action of signal 4 (SIGILL)
 ==100876==  Illegal opcode at address 0x492B75F
 ==100876==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==100876==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==100876==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==100876==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==100876==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==100876==    by 0x49908EB: curl_version_info (version.c:600)
 ==100876==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==100876==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==100876==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==100876==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind384
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind390 ../src/curl -q --include --trace-ascii log/20/trace390 --trace-time http://127.0.0.1:33897/390 file://localhost/startdir/src/build-curl/tests/log/20/test390.txt ftp://127.0.0.1:41549/3900002 --parallel -o log/20/390.a -o log/20/390.b -o log/20/390.c > log/20/stdout390 2> log/20/stderr390
test 0388 [HTTP with Digest and multiple qop values with leading space]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind388 ../src/curl -q --include --trace-ascii log/16/trace388 --trace-time http://127.0.0.1:35903/3880001 -u testuser:testpass --digest http://127.0.0.1:35903/3880002 > log/16/stdout388 2> log/16/stderr388

 388: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:26:47.423639187 +0000
+++ log/16/check-generated	2026-10-15 19:26:47.421813596 +0000
@@ -1,30 +0,0 @@
-HTTP/1.1 401 Authorization Required swsclose[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 23[CR][LF]
-[CR][LF]
-This IS the real page![LF]
-HTTP/1.1 401 Authorization Required swsclose[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 26[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 30[CR][LF]
-[CR][LF]
-This IS the second real page![LF]
== Contents of files in the log/16/ directory after test 388
=== Start of file check-expected
 HTTP/1.1 401 Authorization Required swsclose[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 23[CR][LF]
 [CR][LF]
 This IS the real page![LF]
 HTTP/1.1 401 Authorization Required swsclose[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 26[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 30[CR][LF]
 [CR][LF]
 This IS the second real page![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind388 ../src/curl -q --include --trace-ascii log/16/trace388 --trace-time http://127.0.0.1:35903/3880001 -u testuser:testpass --digest http://127.0.0.1:35903/3880002 > log/16/stdout388 2> log/16/stderr388
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.206819 ====> Client connect
 19:26:45.206853 accept_connection 3 returned 4
 19:26:45.206874 Read 93 bytes
 19:26:45.206884 Process 93 bytes request
 19:26:45.206896 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.206904 Are-we-friendly question received
 19:26:45.206931 Wrote request (93 bytes) input to log/16/server.input
 19:26:45.206946 Identifying ourselves as friends
 19:26:45.207007 Response sent (56 bytes) and written to log/16/server.response
 19:26:45.207017 special request received, no persistency
 19:26:45.207025 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43548 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 388
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind388
 ==101229== 
 ==101229== Process terminating with default action of signal 4 (SIGILL)
 ==101229==  Illegal opcode at address 0x492B75F
 ==101229==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101229==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101229==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101229==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101229==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101229==    by 0x49908EB: curl_version_info (version.c:600)
 ==101229==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101229==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101229==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101229==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind388
test 0390 [curl HTTP, FILE and FTP in parallel]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind390 ../src/curl -q --include --trace-ascii log/20/trace390 --trace-time http://127.0.0.1:33897/390 file://localhost/startdir/src/build-curl/tests/log/20/test390.txt ftp://127.0.0.1:41549/3900002 --parallel -o log/20/390.a -o log/20/390.b -o log/20/390.c > log/20/stdout390 2> log/20/stderr390

curl returned 132, when expecting 0
 390: exit FAILED
== Contents of files in the log/20/ directory after test 390
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind390 ../src/curl -q --include --trace-ascii log/20/trace390 --trace-time http://127.0.0.1:33897/390 file://localhost/startdir/src/build-curl/tests/log/20/test390.txt ftp://127.0.0.1:41549/3900002 --parallel -o log/20/390.a -o log/20/390.b -o log/20/390.c > log/20/stdout390 2> log/20/stderr390
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:45.057804 ====> Client connect
 19:26:45.058015 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:45.058261 < "USER anonymous"
 19:26:45.058292 > "331 We are happy you popped in![CR][LF]"
 19:26:45.058442 < "PASS ftp@example.com"
 19:26:45.058466 > "230 Welcome you silly person[CR][LF]"
 19:26:45.058605 < "PWD"
 19:26:45.058634 > "257 "/" is current directory[CR][LF]"
 19:26:45.058792 < "EPSV"
 19:26:45.058813 ====> Passive DATA channel requested by client
 19:26:45.058825 DATA sockfilt for passive data channel starting...
 19:26:45.068743 DATA sockfilt for passive data channel started (pid 101378)
 19:26:45.068878 DATA sockfilt for passive data channel listens on port 38133
 19:26:45.068919 > "229 Entering Passive Mode (|||38133|)[CR][LF]"
 19:26:45.068937 Client has been notified that upcoming DATA connection is awaited on port 38133
 19:26:45.071079 Client connects to port 38133
 19:26:45.071129 ====> Client established passive DATA connection on port 38133
 19:26:45.071224 < "TYPE I"
 19:26:45.071255 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:45.071423 < "SIZE verifiedserver"
 19:26:45.071456 > "213 17[CR][LF]"
 19:26:45.071594 < "RETR verifiedserver"
 19:26:45.071623 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:45.071711 =====> Closing passive DATA connection...
 19:26:45.071726 Server disconnects passive DATA connection
 19:26:45.071834 Server disconnected passive DATA connection
 19:26:45.071852 DATA sockfilt for passive data channel quits (pid 101378)
 19:26:45.072108 DATA sockfilt for passive data channel quit (pid 101378)
 19:26:45.072138 =====> Closed passive DATA connection
 19:26:45.072167 > "226 File transfer complete[CR][LF]"
 19:26:45.125492 < "QUIT"
 19:26:45.125559 > "221 bye bye baby[CR][LF]"
 19:26:45.148717 MAIN sockfilt said DISC
 19:26:45.152038 ====> Client disconnected
 19:26:45.152175 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:44.663456 ====> Client connect
 19:26:44.663882 Received DATA (on stdin)
 19:26:44.663895 > 146 bytes data, server => client
 19:26:44.663906 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:44.663916 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:44.663925 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:44.663996 < 16 bytes data, client => server
 19:26:44.664007 'USER anonymous\r\n'
 19:26:44.664148 Received DATA (on stdin)
 19:26:44.664160 > 33 bytes data, server => client
 19:26:44.664170 '331 We are happy you popped in!\r\n'
 19:26:44.664219 < 22 bytes data, client => server
 19:26:44.664229 'PASS ftp@example.com\r\n'
 19:26:44.664319 Received DATA (on stdin)
 19:26:44.664329 > 30 bytes data, server => client
 19:26:44.664339 '230 Welcome you silly person\r\n'
 19:26:44.664384 < 5 bytes data, client => server
 19:26:44.664393 'PWD\r\n'
 19:26:44.664488 Received DATA (on stdin)
 19:26:44.664499 > 30 bytes data, server => client
 19:26:44.664520 '257 "/" is current directory\r\n'
 19:26:44.664574 < 6 bytes data, client => server
 19:26:44.664583 'EPSV\r\n'
 19:26:44.675170 Received DATA (on stdin)
 19:26:44.675207 > 39 bytes data, server => client
 19:26:44.675217 '229 Entering Passive Mode (|||38133|)\r\n'
 19:26:44.675411 < 8 bytes data, client => server
 19:26:44.675420 'TYPE I\r\n'
 19:26:44.677114 Received DATA (on stdin)
 19:26:44.677126 > 33 bytes data, server => client
 19:26:44.677136 '200 I modify TYPE as you wanted\r\n'
 19:26:44.677200 < 21 bytes data, client => server
 19:26:44.677210 'SIZE verifiedserver\r\n'
 19:26:44.677313 Received DATA (on stdin)
 19:26:44.677322 > 8 bytes data, server => client
 19:26:44.677332 '213 17\r\n'
 19:26:44.677378 < 21 bytes data, client => server
 19:26:44.677388 'RETR verifiedserver\r\n'
 19:26:44.678031 Received DATA (on stdin)
 19:26:44.678044 > 29 bytes data, server => client
 19:26:44.678054 '150 Binary junk (17 bytes).\r\n'
 19:26:44.678081 Received DATA (on stdin)
 19:26:44.678092 > 28 bytes data, server => client
 19:26:44.678103 '226 File transfer complete\r\n'
 19:26:44.728012 < 6 bytes data, client => server
 19:26:44.728045 'QUIT\r\n'
 19:26:44.741218 Received DATA (on stdin)
 19:26:44.741254 > 18 bytes data, server => client
 19:26:44.741265 '221 bye bye baby\r\n'
 19:26:44.747890 ====> Client disconnect
 19:26:44.758070 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:45.668651 Running IPv4 version
 19:26:45.668732 Listening on port 38133
 19:26:45.668783 Wrote pid 101378 to log/20/server/ftp_sockdata.pid
 19:26:45.674528 Received PING (on stdin)
 19:26:45.674641 Received PORT (on stdin)
 19:26:45.675384 ====> Client connect
 19:26:45.677586 Received DATA (on stdin)
 19:26:45.677597 > 17 bytes data, server => client
 19:26:45.677606 'WE ROOLZ: 84833\r\n'
 19:26:45.677632 Received DISC (on stdin)
 19:26:45.677643 ====> Client forcibly disconnected
 19:26:45.677715 Received QUIT (on stdin)
 19:26:45.677724 quits
 19:26:45.677792 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:26:44.597903 ====> Client connect
 19:26:44.597945 accept_connection 3 returned 4
 19:26:44.597968 Read 93 bytes
 19:26:44.597978 Process 93 bytes request
 19:26:44.597991 Got request: GET /verifiedserver HTTP/1.1
 19:26:44.598000 Are-we-friendly question received
 19:26:44.598027 Wrote request (93 bytes) input to log/20/server.input
 19:26:44.598044 Identifying ourselves as friends
 19:26:44.598121 Response sent (56 bytes) and written to log/20/server.response
 19:26:44.598132 special request received, no persistency
 19:26:44.598140 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 40096 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 390
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file test390.txt
 hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind396 ../src/curl -q --output log/19/curl396.out  --include --trace-ascii log/19/trace396 --trace-time http://127.0.0.1:46497/396 --compressed > log/19/stdout396 2> log/19/stderr396
le!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile
=== End of file test390.txt
=== Start of file valgrind390
 ==101431== 
 ==101431== Process terminating with default action of signal 4 (SIGILL)
 ==101431==  Illegal opcode at address 0x492B75F
 ==101431==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101431==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101431==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101431==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101431==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101431==    by 0x49908EB: curl_version_info (version.c:600)
 ==101431==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101431==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101431==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101431==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind390
test 0396 [HTTP GET zstd compressed content]
../libtool CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind393 ../src/curl -q --output log/6/curl393.out  --include --trace-ascii log/6/trace393 --trace-time http://127.0.0.1:33935/393 --max-filesize 2000000 > log/6/stdout393 2> log/6/stderr393
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind394 ../src/curl -q --output log/12/curl394.out  --include --trace-ascii log/12/trace394 --trace-time http://127.0.0.1:40921/394 > log/12/stdout394 2> log/12/stderr394
--mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind396 ../src/curl -q --output log/19/curl396.out  --include --trace-ascii log/19/trace396 --trace-time http://127.0.0.1:46497/396 --compressed > log/19/stdout396 2> log/19/stderr396

 396: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 396
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind396 ../src/curl -q --output log/19/curl396.out  --include --trace-ascii log/19/trace396 --trace-time http://127.0.0.1:46497/396 --compressed > log/19/stdout396 2> log/19/stderr396
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.123429 ====> Client connect
 19:26:45.123466 accept_connection 3 returned 4
 19:26:45.123488 Read 93 bytes
 19:26:45.123498 Process 93 bytes request
 19:26:45.123510 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.123519 Are-we-friendly question received
 19:26:45.123547 Wrote request (93 bytes) input to log/19/server.input
 19:26:45.123564 Identifying ourselves as friends
 19:26:45.123630 Response sent (56 bytes) and written to log/19/server.response
 19:26:45.123640 special request received, no persistency
 19:26:45.123648 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 46946 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 396
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind396
 ==101716== 
 ==101716== Process terminating with default action of signal 4 (SIGILL)
 ==101716==  Illegal opcode at address 0x492B75F
 ==101716==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101716==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101716==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101716==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101716==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101716==    by 0x49908EB: curl_version_info (version.c:600)
 ==101716==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101716==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101716==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101716==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind396
test 0393 [HTTP max-filesize and out-of-range Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind393 ../src/curl -q --output log/6/curl393.out  --include --trace-ascii log/6/trace393 --trace-time http://127.0.0.1:33935/393 --max-filesize 2000000 > log/6/stdout393 2> log/6/stderr393

 393: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 393
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind393 ../src/curl -q --output log/6/curl393.out  --include --trace-ascii log/6/trace393 --trace-time http://127.0.0.1:33935/393 --max-filesize 2000000 > log/6/stdout393 2> log/6/stderr393
=== End of file commands.log
=== Start of file http_server.log
 19:26:44.977701 ====> Client connect
 19:26:44.977733 accept_connection 3 returned 4
 19:26:44.977881 Read 93 bytes
 19:26:44.977894 Process 93 bytes request
 19:26:44.977907 Got request: GET /verifiedserver HTTP/1.1
 19:26:44.977922 Are-we-friendly question received
 19:26:44.977956 Wrote request (93 bytes) input to log/6/server.input
 19:26:44.977973 Identifying ourselves as friends
 19:26:44.978031 Response sent (56 bytes) and written to log/6/server.response
 19:26:44.978040 special request received, no persistency
 19:26:44.978048 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 46242 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 393
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind393
 ==101577== 
 ==101577== Process terminating with default action of signal 4 (SIGILL)
 ==101577==  Illegal opcode at address 0x492B75F
 ==101577==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101577==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101577==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101577==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101577==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101577==    by 0x49908EB: curl_version_info (version.c:600)
 ==101577==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101577==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101577==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101577==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind393
test 0394 [HTTP with rubbish in Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind394 ../src/curl -q --output log/12/curl394.out  --include --trace-ascii log/12/trace394 --trace-time http://127.0.0.1:40921/394 > log/12/stdout394 2> log/12/stderr394

 394: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 394
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind394 ../src/curl -q --output log/12/curl394.out  --include --trace-ascii log/12/trace394 --trace-time http://127.0.0.1:40921/394 > log/12/stdout394 2> log/12/stderr394
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.046817 ====> Client connect
 19:26:45.046877 accept_connection 3 returned 4
 19:26:45.046898 Read 93 bytes
 19:26:45.046908 Process 93 bytes request
 19:26:45.046920 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.046929 Are-we-friendly question received
 19:26:45.046963 Wrote request (93 bytes) input to log/12/server.input
 19:26:45.046982 Identifying ourselves as friends
 19:26:45.047044 Response sent (56 bytes) and written to log/12/server.response
 19:26:45.047054 special request received, no persistency
 19:26:45.047062 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38216CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind392 ../src/curl -q --output log/24/curl392.out  --include --trace-ascii log/24/trace392 --trace-time -4 http://localhost:38895/392 -b none http://localhost:38895/392 > log/24/stdout392 2> log/24/stderr392
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind409 ../src/curl -q --output log/13/curl409.out  --include --trace-ascii log/13/trace409 --trace-time http://foo.co.uk:38821/409 -b log/13/cookies.txt --resolve foo.co.uk:38821:127.0.0.1 > log/13/stdout409 2> log/13/stderr409
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind397 ../src/curl -q --output log/4/curl397.out  --include --trace-ascii log/4/trace397 --trace-time http://127.0.0.1:35735/397 --compressed > log/4/stdout397 2> log/4/stderr397
 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 394
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind394
 ==101640== 
 ==101640== Process terminating with default action of signal 4 (SIGILL)
 ==101640==  Illegal opcode at address 0x492B75F
 ==101640==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101640==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101640==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101640==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101640==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101640==    by 0x49908EB: curl_version_info (version.c:600)
 ==101640==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101640==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101640==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101640==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind394
setenv TZ = GMT
test 0392 [HTTP secure cookies over localhost]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind392 ../src/curl -q --output log/24/curl392.out  --include --trace-ascii log/24/trace392 --trace-time -4 http://localhost:38895/392 -b none http://localhost:38895/392 > log/24/stdout392 2> log/24/stderr392

 392: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 392
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind392 ../src/curl -q --output log/24/curl392.out  --include --trace-ascii log/24/trace392 --trace-time -4 http://localhost:38895/392 -b none http://localhost:38895/392 > log/24/stdout392 2> log/24/stderr392
=== End of file commands.log
=== Start of file http_server.log
 19:26:44.824623 ====> Client connect
 19:26:44.824664 accept_connection 3 returned 4
 19:26:44.824690 Read 93 bytes
 19:26:44.824702 Process 93 bytes request
 19:26:44.824716 Got request: GET /verifiedserver HTTP/1.1
 19:26:44.824726 Are-we-friendly question received
 19:26:44.824756 Wrote request (93 bytes) input to log/24/server.input
 19:26:44.824775 Identifying ourselves as friends
 19:26:44.824869 Response sent (56 bytes) and written to log/24/server.response
 19:26:44.824882 special request received, no persistency
 19:26:44.824891 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 58646 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 392
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind392
 ==101445== 
 ==101445== Process terminating with default action of signal 4 (SIGILL)
 ==101445==  Illegal opcode at address 0x492B75F
 ==101445==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101445==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101445==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101445==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101445==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101445==    by 0x49908EB: curl_version_info (version.c:600)
 ==101445==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101445==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101445==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101445==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind392
test 0409 [Load cookies from file where some are PSL domains]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind409 ../src/curl -q --output log/13/curl409.out  --include --trace-ascii log/13/trace409 --trace-time http://foo.co.uk:38821/409 -b log/13/cookies.txt --resolve foo.co.uk:38821:127.0.0.1 > log/13/stdout409 2> log/13/stderr409

 409: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 409
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind409 ../src/curl -q --output log/13/curl409.out  --include --trace-ascii log/13/trace409 --trace-time http://foo.co.uk:38821/409 -b log/13/cookies.txt --resolve foo.co.uk:38821:127.0.0.1 > log/13/stdout409 2> log/13/stderr409
=== End of file commands.log
=== Start of file cookies.txt
 .co.uk	TRUE	/	FALSE	0	bad	not-allowed
 foo.co.uk	TRUE	/	FALSE	0	good	allowed
=== End of file cookies.txt
=== Start of file http_server.log
 19:26:45.698164 ====> Client connect
 19:26:45.698207 accept_connection 3 returned 4
 19:26:45.698232 Read 93 bytes
 19:26:45.698241 Process 93 bytes request
 19:26:45.698252 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.698259 Are-we-friendly question received
 19:26:45.698281 Wrote request (93 bytes) input to log/13/server.input
 19:26:45.698294 Identifying ourselves as friends
 19:26:45.698355 Response sent (56 bytes) and written to log/13/server.response
 19:26:45.698362 special request received, no persistency
 19:26:45.698369 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 50714 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 409
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind409
 ==102156== 
 ==102156== Process terminating with default action of signal 4 (SIGILL)
 ==102156==  Illegal opcode at address 0x492B75F
 ==102156==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102156==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102156==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102156==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102156==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102156==    by 0x49908EB: curl_version_info (version.c:600)
 ==102156==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102156==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102156==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102156==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind409
test 0397 [HTTP GET zstd compressed content of siCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind391 ../src/curl -q --output log/18/curl391.out  --include --trace-ascii log/18/trace391 --trace-time http://127.0.0.1:43739/../../391 --path-as-is -L > log/18/stdout391 2> log/18/stderr391
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind395 ../src/curl -q --output log/10/curl395.out  --include --trace-ascii log/10/trace395 --trace-time http://127.0.0.1:40913/395 > log/10/stdout395 2> log/10/stderr395
ze more than CURL_MAX_WRITE_SIZE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind397 ../src/curl -q --output log/4/curl397.out  --include --trace-ascii log/4/trace397 --trace-time http://127.0.0.1:35735/397 --compressed > log/4/stdout397 2> log/4/stderr397

 397: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 397
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind397 ../src/curl -q --output log/4/curl397.out  --include --trace-ascii log/4/trace397 --trace-time http://127.0.0.1:35735/397 --compressed > log/4/stdout397 2> log/4/stderr397
=== End of file commands.log
=== Start of file http_server.log
 19:26:46.331428 ====> Client connect
 19:26:46.331478 accept_connection 3 returned 4
 19:26:46.331504 Read 93 bytes
 19:26:46.331515 Process 93 bytes request
 19:26:46.331529 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.331539 Are-we-friendly question received
 19:26:46.331567 Wrote request (93 bytes) input to log/4/server.input
 19:26:46.331584 Identifying ourselves as friends
 19:26:46.331663 Response sent (56 bytes) and written to log/4/server.response
 19:26:46.331676 special request received, no persistency
 19:26:46.331685 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 56034 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 397
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind397
 ==101910== 
 ==101910== Process terminating with default action of signal 4 (SIGILL)
 ==101910==  Illegal opcode at address 0x492B75F
 ==101910==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101910==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101910==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101910==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101910==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101910==    by 0x49908EB: curl_version_info (version.c:600)
 ==101910==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101910==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101910==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101910==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind397
test 0391 [--path-as-is with redirect, keeping dotdots]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind391 ../src/curl -q --output log/18/curl391.out  --include --trace-ascii log/18/trace391 --trace-time http://127.0.0.1:43739/../../391 --path-as-is -L > log/18/stdout391 2> log/18/stderr391

 391: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 391
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind391 ../src/curl -q --output log/18/curl391.out  --include --trace-ascii log/18/trace391 --trace-time http://127.0.0.1:43739/../../391 --path-as-is -L > log/18/stdout391 2> log/18/stderr391
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.807958 ====> Client connect
 19:26:45.808003 accept_connection 3 returned 4
 19:26:45.808028 Read 93 bytes
 19:26:45.808038 Process 93 bytes request
 19:26:45.808052 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.808060 Are-we-friendly question received
 19:26:45.808092 Wrote request (93 bytes) input to log/18/server.input
 19:26:45.808111 Identifying ourselves as friends
 19:26:45.808194 Response sent (56 bytes) and written to log/18/server.response
 19:26:45.808206 special request received, no persistency
 19:26:45.808214 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45906 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 391
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind391
 ==101433== 
 ==101433== Process terminating with default action of signal 4 (SIGILL)
 ==101433==  Illegal opcode at address 0x492B75F
 ==101433==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101433==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101433==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101433==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101433==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101433==    by 0x49908EB: curl_version_info (version.c:600)
 ==101433==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101433==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101433==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101433==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind391
test 0395 [HTTP and out-of-range Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind395 ../src/curl -q --output log/10/curl395.out  --include --trace-ascii log/10/trace395 --trace-time http://127.0.0.1:40913/395 > log/10/stdout395 2> log/10/stderr395

 395: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 395
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind395 ../src/curl -q --output log/10/curl395.out  --include --trace-ascii log/10/trace395 --trace-time http://127.0.0.1:40913/395 > log/10/stdout395 2> log/10/stderr395
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.100922 ====> Client connect
 19:26:45.100966 accept_connection 3 returned 4
 19:26:45.101137 Read 93 bytes
 19:26:45.101153 Process 93 bytes request
 19:26:45.101167 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.101176 Are-we-friendly question received
 19:26:45.101212 Wrote request (93 bytes) input to log/10/server.input
 19:26:45.101231 Identifying ourselves as friends
 19:26:45.101323 Response sent (56 bytes) and written to log/10/server.response
 19:26:45.101336 special request received, no persistency
 19:26:45.101345 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind398 ../src/curl -q --output log/23/curl398.out  --include --trace-ascii log/23/trace398 --trace-time http://127.0.0.1:44711/398 > log/23/stdout398 2> log/23/stderr398
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind402 ../src/curl -q --output log/1/curl402.out  --include --trace-ascii log/1/trace402 --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:40221/402 > log/1/stdout402 2> log/1/stderr402
 port 40913) from 127.0.0.1 port 56082 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 395
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind395
 ==101695== 
 ==101695== Process terminating with default action of signal 4 (SIGILL)
 ==101695==  Illegal opcode at address 0x492B75F
 ==101695==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101695==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101695==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101695==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101695==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101695==    by 0x49908EB: curl_version_info (version.c:600)
 ==101695==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101695==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind395
test 0398 [Reject HTTP/1.1 response with colon-less header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind398 ../src/curl -q --output log/23/curl398.out  --include --trace-ascii log/23/trace398 --trace-time http://127.0.0.1:44711/398 > log/23/stdout398 2> log/23/stderr398

 398: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 398
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind398 ../src/curl -q --output log/23/curl398.out  --include --trace-ascii log/23/trace398 --trace-time http://127.0.0.1:44711/398 > log/23/stdout398 2> log/23/stderr398
=== End of file commands.log
=== Start of file http_server.log
 19:26:45.340221 ====> Client connect
 19:26:45.340254 accept_connection 3 returned 4
 19:26:45.340274 Read 93 bytes
 19:26:45.340284 Process 93 bytes request
 19:26:45.340296 Got request: GET /verifiedserver HTTP/1.1
 19:26:45.340304 Are-we-friendly question received
 19:26:45.340329 Wrote request (93 bytes) input to log/23/server.input
 19:26:45.340344 Identifying ourselves as friends
 19:26:45.340399 Response sent (56 bytes) and written to log/23/server.response
 19:26:45.340408 special request received, no persistency
 19:26:45.340415 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48988 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 398
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind398
 ==101909== 
 ==101909== Process terminating with default action of signal 4 (SIGILL)
 ==101909==  Illegal opcode at address 0x492B75F
 ==101909==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101909==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101909==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101909==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101909==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101909==    by 0x49908EB: curl_version_info (version.c:600)
 ==101909==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101909==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101909==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101909==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind398
test 0402 [FTP SSL required on non-SSL server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind402 ../src/curl -q --output log/1/curl402.out  --include --trace-ascii log/1/trace402 --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:40221/402 > log/1/stdout402 2> log/1/stderr402

 402: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 402
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind402 ../src/curl -q --output log/1/curl402.out  --include --trace-ascii log/1/trace402 --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:40221/402 > log/1/stdout402 2> log/1/stderr402
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:45.825787 ====> Client connect
 19:26:45.826040 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:45.826358 < "USER anonymous"
 19:26:45.826402 > "331 We are happy you popped in![CR][LF]"
 19:26:45.826608 < "PASS ftp@example.com"
 19:26:45.826644 > "230 Welcome you silly person[CR][LF]"
 19:26:45.826816 < "PWD"
 19:26:45.826854 > "257 "/" is current directory[CR][LF]"
 19:26:45.827030 < "EPSV"
 19:26:45.827054 ====> Passive DATA channel requested by client
 19:26:45.827069 DATA sockfilt for passive data channel starting...
 19:26:45.829544 DATA sockfilt for passive data channel started (pid 101964)
 19:26:45.829673 DATA sockfilt for passive data channel listens on port 39439
 19:26:45.829942 > "229 Entering Passive Mode (|||39439|)[CR][LF]"
 19:26:45.829973 Client has been notified that upcoming DATA connection is awaited on port 39439
 19:26:45.830043 Client connects to port 39439
 19:26:45.830075 ====> Client established passive DATA connection on port 39439
 19:26:45.830164 < "TYPE I"
 19:26:45.830203 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:45.830395 < "SIZE verifiedserver"
 19:26:45.830441 > "213 17[CR][LF]"
 19:26:45.830634 < "RETR verifiedserver"
 19:26:45.830673 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:45.830772 =====> Closing passive DATA connection...
 19:26:45.830795 Server disconnects passive DATA connection
 19:26:45.831057 Server disconnected passive DATA connection
 19:26:45.831087 DATA sockfilt for passive data channel quits (pid 101964)
 19:26:45.831335 DATA sockfilt for passive data channel quit (pid 101964)
 19:26:45.831365 =====> Closed passive DATA connection
 19:26:45.831396 > "226 File transfer complete[CR][LF]"
 19:26:45.882326 < "QUIT"
 19:26:45.882390 > "221 bye bye baby[CR][LF]"
 19:26:45.883707 MAIN sockfilt said DISC
 19:26:45.883747 ====> Client disconnected
 19:26:45.883839 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:46.431675 ====> Client connect
 19:26:46.432089 Received DATA (on stdin)
 19:26:46.432105 > 146 bytes data, server => client
 19:26:46.432116 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:46.432126 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:46.432135 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:46.432220 < 16 bytes data, client => serveCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind405 ../src/curl -q --output log/14/curl405.out  --include --trace-ascii log/14/trace405 --trace-time -m 5 --insecure ftps://127.0.0.1:37411/path/to/file/405 > log/14/stdout405 2> log/14/stderr405
r
 19:26:46.432235 'USER anonymous\r\n'
 19:26:46.432437 Received DATA (on stdin)
 19:26:46.432450 > 33 bytes data, server => client
 19:26:46.432460 '331 We are happy you popped in!\r\n'
 19:26:46.432524 < 22 bytes data, client => server
 19:26:46.432536 'PASS ftp@example.com\r\n'
 19:26:46.432675 Received DATA (on stdin)
 19:26:46.432686 > 30 bytes data, server => client
 19:26:46.432696 '230 Welcome you silly person\r\n'
 19:26:46.432750 < 5 bytes data, client => server
 19:26:46.432761 'PWD\r\n'
 19:26:46.432882 Received DATA (on stdin)
 19:26:46.432893 > 30 bytes data, server => client
 19:26:46.432903 '257 "/" is current directory\r\n'
 19:26:46.432966 < 6 bytes data, client => server
 19:26:46.432978 'EPSV\r\n'
 19:26:46.435726 Received DATA (on stdin)
 19:26:46.435742 > 39 bytes data, server => client
 19:26:46.435762 '229 Entering Passive Mode (|||39439|)\r\n'
 19:26:46.435897 < 8 bytes data, client => server
 19:26:46.435913 'TYPE I\r\n'
 19:26:46.436238 Received DATA (on stdin)
 19:26:46.436251 > 33 bytes data, server => client
 19:26:46.436261 '200 I modify TYPE as you wanted\r\n'
 19:26:46.436322 < 21 bytes data, client => server
 19:26:46.436337 'SIZE verifiedserver\r\n'
 19:26:46.436477 Received DATA (on stdin)
 19:26:46.436490 > 8 bytes data, server => client
 19:26:46.436504 '213 17\r\n'
 19:26:46.436564 < 21 bytes data, client => server
 19:26:46.436579 'RETR verifiedserver\r\n'
 19:26:46.436829 Received DATA (on stdin)
 19:26:46.436841 > 29 bytes data, server => client
 19:26:46.436852 '150 Binary junk (17 bytes).\r\n'
 19:26:46.437430 Received DATA (on stdin)
 19:26:46.437443 > 28 bytes data, server => client
 19:26:46.437453 '226 File transfer complete\r\n'
 19:26:46.488165 < 6 bytes data, client => server
 19:26:46.488197 'QUIT\r\n'
 19:26:46.488439 Received DATA (on stdin)
 19:26:46.488453 > 18 bytes data, server => client
 19:26:46.488463 '221 bye bye baby\r\n'
 19:26:46.489690 ====> Client disconnect
 19:26:46.494722 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:45.435267 Running IPv4 version
 19:26:45.435447 Listening on port 39439
 19:26:45.435491 Wrote pid 101964 to log/1/server/ftp_sockdata.pid
 19:26:45.435517 Received PING (on stdin)
 19:26:45.435604 Received PORT (on stdin)
 19:26:45.436023 ====> Client connect
 19:26:45.436916 Received DATA (on stdin)
 19:26:45.436930 > 17 bytes data, server => client
 19:26:45.436940 'WE ROOLZ: 84935\r\n'
 19:26:45.436970 Received DISC (on stdin)
 19:26:45.436982 ====> Client forcibly disconnected
 19:26:45.437128 Received QUIT (on stdin)
 19:26:45.437140 quits
 19:26:45.437212 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 402
=== End of file server.cmd
=== Start of file valgrind402
 ==102022== 
 ==102022== Process terminating with default action of signal 4 (SIGILL)
 ==102022==  Illegal opcode at address 0x492B75F
 ==102022==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102022==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102022==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102022==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102022==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102022==    by 0x49908EB: curl_version_info (version.c:600)
 ==102022==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102022==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102022==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102022==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind402
test 0405 [FTPS operation to FTP port]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind405 ../src/curl -q --output log/14/curl405.out  --include --trace-ascii log/14/trace405 --trace-time -m 5 --insecure ftps://127.0.0.1:37411/path/to/file/405 > log/14/stdout405 2> log/14/stderr405

curl returned 132, when expecting 35,28
 405: exit FAILED
== Contents of files in the log/14/ directory after test 405
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind405 ../src/curl -q --output log/14/curl405.out  --include --trace-ascii log/14/trace405 --trace-time -m 5 --insecure ftps://127.0.0.1:37411/path/to/file/405 > log/14/stdout405 2> log/14/stderr405
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:46.012144 ====> Client connect
 19:26:46.012366 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:46.019007 < "USER anonymous"
 19:26:46.019078 > "331 We are happy you popped in![CR][LF]"
 19:26:46.019302 < "PASS ftp@example.com"
 19:26:46.019341 > "230 Welcome you silly person[CR][LF]"
 19:26:46.019532 < "PWD"
 19:26:46.019572 > "257 "/" is current directory[CR][LF]"
 19:26:46.019773 < "EPSV"
 19:26:46.019803 ====> Passive DATA channel requested by client
 19:26:46.019819 DATA sockfilt for passive data channel starting...
 19:26:46.033924 DATA sockfilt for passive data channel started (pid 102119)
 19:26:46.035424 DATA sockfilt for passive data channel listens on port 34987
 19:26:46.035489 > "229 Entering Passive Mode (|||34987|)[CR][LF]"
 19:26:46.035510 Client has been notified that upcoming DATA connection is awaited on port 34987
 19:26:46.035790 Client connects to port 34987
 19:26:46.035818 ====> Client established passive DATA connection on port 34987
 19:26:46.035909 < "TYPE I"
 19:26:46.035939 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:46.036087 < "SIZE verifiedserver"
 19:26:46.036121 > "213 17[CR][LF]"
 19:26:46.036258 < "RETR verifiedserver"
 19:26:46.036289 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:46.036388 =====> Closing passive DATA connection...
 19:26:46.036403 Server disconnects passive DATA connection
 19:26:46.042299 Server disconnected passive DATA connection
 19:26:46.042366 DATA sockfilt for passive data channel quits (pid 102119)
 19:26:46.042697 DATA sockfilt for passive data channel quit (pid 102119)
 19:26:46.042729 =====> Closed passive DATA connection
 19:26:46.042774 > "226 File transfer complete[CR][LF]"
 19:26:46.082393 < "QUIT"
 19:26:46.082456 > "221 bye bye baby[CR][LF]"
 19:26:46.083708 MAIN sockfilt said DISC
 19:26:46.083742 ====> Client disconnected
 19:26:46.083841 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:46.618093 ====> Client connect
 19:26:46.618456 Received DATA (on stdin)
 19:26:46.618472 > 146 bytes data, server => client
 19:26:46.618483 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:46.618494 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:46.618503 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:46.624806 < 16 bytes data, client => server
 19:26:46.624842 'USER anonymous\r\n'
 19:26:46.625164 Received DATA (on stdin)
 19:26:46.625179 > 33 bytes data, server => client
 19:26:46.625190 '331 We are happy you popped in!\r\n'
 19:26:46.625266 < 22 bytes data, client => server
 19:26:46.625283 'PASS ftp@example.com\r\n'
 19:26:46.625419 Received DATA (on stdin)
 19:26:46.625432 > 30 bytes data, server => client
 19:26:46.625443 '230 Welcome you silly person\r\n'
 19:26:46.625504 < 5 bytes data, client => server
 19:26:46.625519 'PWD\r\n'
 19:26:46.625649 Received DATA (on stdin)
 19:26:46.625662 > 30 bytes data, server => client
 19:26:46.625673 '257 "/" is current directory\r\n'
 19:26:46.625747 < 6 bytes data, client => server
 19:26:46.625763 'EPSV\r\n'
 19:26:46.641598 Received DATA (on stdin)
 19:26:46.641618 > 39 bytes data, server => client
 19:26:46.641629 '229 Entering Passive Mode (|||34987|)\r\n'
 19:26:46.641808 < 8 bytes data, client => server
 19:26:46.641821 'TYPE I\r\n'
 19:26:46.642015 Received DATA (on stdin)
 19:26:46.642025 > 33 bytes data, server => client
 19:26:46.642035 '200 I modify TYPE as you wanted\r\n'
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind399 ../src/curl -q --output log/3/curl399.out  --include --trace-ascii log/3/trace399 --trace-time -K log/3/input%TESTNUM > log/3/stdout399 2> log/3/stderr399
19:26:46.642085 < 21 bytes data, client => server
 19:26:46.642095 'SIZE verifiedserver\r\n'
 19:26:46.642193 Received DATA (on stdin)
 19:26:46.642203 > 8 bytes data, server => client
 19:26:46.642212 '213 17\r\n'
 19:26:46.642258 < 21 bytes data, client => server
 19:26:46.642267 'RETR verifiedserver\r\n'
 19:26:46.642477 Received DATA (on stdin)
 19:26:46.642487 > 29 bytes data, server => client
 19:26:46.642496 '150 Binary junk (17 bytes).\r\n'
 19:26:46.651425 Received DATA (on stdin)
 19:26:46.651471 > 28 bytes data, server => client
 19:26:46.651484 '226 File transfer complete\r\n'
 19:26:46.688268 < 6 bytes data, client => server
 19:26:46.688305 'QUIT\r\n'
 19:26:46.688553 Received DATA (on stdin)
 19:26:46.688567 > 18 bytes data, server => client
 19:26:46.688578 '221 bye bye baby\r\n'
 19:26:46.689740 ====> Client disconnect
 19:26:46.689937 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:46.632260 Running IPv4 version
 19:26:46.632357 Listening on port 34987
 19:26:46.632397 Wrote pid 102119 to log/14/server/ftp_sockdata.pid
 19:26:46.638087 Received PING (on stdin)
 19:26:46.640081 Received PORT (on stdin)
 19:26:46.641785 ====> Client connect
 19:26:46.648074 Received DATA (on stdin)
 19:26:46.648109 > 17 bytes data, server => client
 19:26:46.648120 'WE ROOLZ: 85053\r\n'
 19:26:46.648186 Received DISC (on stdin)
 19:26:46.648206 ====> Client forcibly disconnected
 19:26:46.648464 Received QUIT (on stdin)
 19:26:46.648477 quits
 19:26:46.648568 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 405
=== End of file server.cmd
=== Start of file valgrind405
 ==102153== 
 ==102153== Process terminating with default action of signal 4 (SIGILL)
 ==102153==  Illegal opcode at address 0x492B75F
 ==102153==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102153==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102153==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102153==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102153==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102153==    by 0x49908EB: curl_version_info (version.c:600)
 ==102153==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102153==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102153==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102153==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind405
test 0399 [65536-byte-long hostname in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind399 ../src/curl -q --output log/3/curl399.out  --include --trace-ascii log/3/trace399 --trace-time -K log/3/input%TESTNUM > log/3/stdout399 2> log/3/stderr399

curl returned 132, when expecting 3
 399: exit FAILED
== Contents of files in the log/3/ directory after test 399
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind399 ../src/curl -q --output log/3/curl399.out  --include --trace-ascii log/3/trace399 --trace-time -K log/3/input%TESTNUM > log/3/stdout399 2> log/3/stderr399
=== End of file commands.log
=== Start of file http_server.log
 19:26:46.338094 ====> Client connect
 19:26:46.338127 accept_connection 3 returned 4
 19:26:46.338146 Read 93 bytes
 19:26:46.338155 Process 93 bytes request
 19:26:46.338166 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.338174 Are-we-friendly question received
 19:26:46.338198 Wrote request (93 bytes) input to log/3/server.input
 19:26:46.338213 Identifying ourselves as friends
 19:26:46.338269 Response sent (56 bytes) and written to log/3/server.response
 19:26:46.338277 special request received, no persistency
 19:26:46.338284 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 56884 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file input%TESTNUM
 url = http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind419 ../src/curl -q --output log/15/curl419.out  --include --trace-ascii log/15/trace419 --trace-time http://127.0.0.1:40321/419 -D loggg/save-here/fails > log/15/stdout419 2> log/15/stderr419
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/399
=== End of file input%TESTNUM
=== Start of file server.cmd
 Testnum 399
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind399
 ==101899== 
 ==101899== Process terminating with default action of signal 4 (SIGILL)
 ==101899==  Illegal opcode at address 0x492B75F
 ==101899==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==101899==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==101899==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==101899==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==101899==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==101899==    by 0x49908EB: curl_version_info (version.c:600)
 ==101899==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==101899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==101899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==101899==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind399
test 0419 [--dump-header to file that cannot be created]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind419 ../src/curl -q --output log/15/curl419.out  --include --trace-ascii log/15/trace419 --trace-time http://127.0.0.1:40321/419 -D loggg/save-here/fails > log/15/stdout419 2> log/15/stderr419

curl returned 132, when expecting 23
 419: exit FAILED
== Contents of files in the log/15/ directory after test 419
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind419 ../src/curl -q --output log/15/curl419.out  --include --trace-ascii log/15/trace419 --trace-time http://127.0.0.1:40321/419 -D loggg/save-here/fails > log/15/stdout419 2> log/15/stderr419
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.547523 ====> Client connect
 19:26:47.547559 accept_connection 3 returned 4
 19:26:47.547581 Read 93 bytes
 19:26:47.547591 Process 93 bytes request
 19:26:47.547603 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.547612 Are-we-friendly question received
 19:26:47.547638 Wrote request (93 bytes) input to log/15/server.input
 19:26:47.547659 Identifying ourselves as friends
 19:26:47.547727 Response sent (56 bytes) and written to log/15/server.response
 19:26:47.547737 special request received, no persistency
 19:26:47.547745 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 42158 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 419
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind419
 ==102535== 
 ==102535== Process terminating with default action of signal 4 (SIGILL)
 ==102535==  Illegal opcode at address 0x492B75F
 ==102535==    at 0x492B7CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind411 ../src/curl -q --output log/22/curl411.out  --include --trace-ascii log/22/trace411 --trace-time -K log/22/missing http://localhost > log/22/stdout411 2> log/22/stderr411
5F: formatf.constprop.2 (mprintf.c:1115)
 ==102535==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102535==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102535==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102535==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102535==    by 0x49908EB: curl_version_info (version.c:600)
 ==102535==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102535==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102535==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102535==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind419
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind418 ../src/curl -q --output log/2/curl418.out  --include --trace-ascii log/2/trace418 --trace-time http://127.0.0.1:34531/418 -sS --tr-encoding > log/2/stdout418 2> log/2/stderr418
test 0411 [-K with missing file causes error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind411 ../src/curl -q --output log/22/curl411.out  --include --trace-ascii log/22/trace411 --trace-time -K log/22/missing http://localhost > log/22/stdout411 2> log/22/stderr411

 411: stderr FAILED:
--- log/22/check-expected	2026-10-15 19:26:49.020507264 +0000
+++ log/22/check-generated	2026-10-15 19:26:49.018126722 +0000
@@ -1,3 +0,0 @@
-curl: cannot read config from 'log/22/missing'[CR][LF]
-curl: option -K: error encountered when reading a file[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/22/ directory after test 411
=== Start of file check-expected
 curl: cannot read config from 'log/22/missing'[CR][LF]
 curl: option -K: error encountered when reading a file[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind411 ../src/curl -q --output log/22/curl411.out  --include --trace-ascii log/22/trace411 --trace-time -K log/22/missing http://localhost > log/22/stdout411 2> log/22/stderr411
=== End of file commands.log
=== Start of file server.cmd
 Testnum 411
=== End of file server.cmd
=== Start of file valgrind411
 ==102162== 
 ==102162== Process terminating with default action of signal 4 (SIGILL)
 ==102162==  Illegal opcode at address 0x492B75F
 ==102162==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102162==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102162==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102162==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102162==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102162==    by 0x49908EB: curl_version_info (version.c:600)
 ==102162==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102162==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102162==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102162==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind411
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind415 ../src/curl -q --output log/8/curl415.out  --include --trace-ascii log/8/trace415 --trace-time http://127.0.0.1:44467/415 > log/8/stdout415 2> log/8/stderr415
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind421 ../src/curl -q --output log/5/curl421.out  --include --trace-ascii log/5/trace421 --trace-time http://127.0.0.1:37089/421 -w '%{stderr}%{header_json}\n' -s > log/5/stdout421 2> log/5/stderr421
test 0418 [Response with multiple Transfer-Encoding headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind418 ../src/curl -q --output log/2/curl418.out  --include --trace-ascii log/2/trace418 --trace-time http://127.0.0.1:34531/418 -sS --tr-encoding > log/2/stdout418 2> log/2/stderr418

 418: stderr FAILED:
--- log/2/check-expected	2026-10-15 19:26:49.113417013 +0000
+++ log/2/check-generated	2026-10-15 19:26:49.111439505 +0000
@@ -1 +0,0 @@
-curl: (61) Reject response exceeding limit of 5 transfer encodings[CR][LF]
== Contents of files in the log/2/ directory after test 418
=== Start of file check-expected
 curl: (61) Reject response exceeding limit of 5 transfer encodings[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind418 ../src/curl -q --output log/2/curl418.out  --include --trace-ascii log/2/trace418 --trace-time http://127.0.0.1:34531/418 -sS --tr-encoding > log/2/stdout418 2> log/2/stderr418
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.454993 ====> Client connect
 19:26:47.455039 accept_connection 3 returned 4
 19:26:47.455064 Read 93 bytes
 19:26:47.455074 Process 93 bytes request
 19:26:47.455087 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.455096 Are-we-friendly question received
 19:26:47.455126 Wrote request (93 bytes) input to log/2/server.input
 19:26:47.455142 Identifying ourselves as friends
 19:26:47.455239 Response sent (56 bytes) and written to log/2/server.response
 19:26:47.455250 special request received, no persistency
 19:26:47.455259 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 35508 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 418
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind418
 ==102484== 
 ==102484== Process terminating with default action of signal 4 (SIGILL)
 ==102484==  Illegal opcode at address 0x492B75F
 ==102484==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102484==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102484==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102484==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102484==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102484==    by 0x49908EB: curl_version_info (version.c:600)
 ==102484==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102484==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102484==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102484==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind418
test 0415 [HTTP response with control code then negative Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind415 ../src/curl -q --output log/8/curl415.out  --include --trace-ascii log/8/trace415 --trace-time http://127.0.0.1:44467/415 > log/8/stdout415 2> log/8/stderr415

 415: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 415
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind415 ../src/curl -q --output log/8/curl415.out  --include --trace-ascii log/8/trace415 --trace-time http://127.0.0.1:44467/415 > log/8/stdout415 2> log/8/stderr415
=== End of file commands.log
=== Start of file http_server.log
 19:26:46.098273 ====> Client connect
 19:26:46.098312 accept_connection 3 returned 4
 19:26:46.098335 Read 93 bytes
 19:26:46.098346 Process 93 bytes request
 19:26:46.098360 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.098368 Are-we-friendly question received
 19:26:46.098397 Wrote request (93 bytes) input to log/8/server.input
 19:26:46.098414 Identifying ourselves as friends
 19:26:46.098479 Response sent (56 bytes) and written to log/8/server.response
 19:26:46.098488 special request received, no persistency
 19:26:46.098497 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 35786 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 415
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind415
 ==102344== 
 ==102344== Process terminating with default action of signal 4 (SIGILL)
 ==102344==  Illegal opcode at address 0x492B75F
 ==102344==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102344==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102344==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102344==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102344==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102344==    by 0x49908EB: curl_version_info (version.c:600)
 ==102344==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102344==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102344==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102344==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind415
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind416 ../src/curl -q --output log/21/curl416.out  --include --trace-ascii log/21/trace416 --trace-time --ignore-content-length ftp://127.0.0.1:35787/416 > log/21/stdout416 2> log/21/stderr416
test 0421 [HTTP GET multiple headers and %{header_json}]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind421 ../src/curl -q --output log/5/curl421.out  --include --trace-ascii log/5/trace421 --trace-time http://127.0.0.1:37089/421 -w '%{stderr}%{header_json}\n' -s > log/5/stdout421 2> log/5/stderr421

 421: stderr FAILED:
--- log/5/check-expected	2026-10-15 19:26:49.237100927 +0000
+++ log/5/check-generated	2026-10-15 19:26:49.234745680 +0000
@@ -1,19 +0,0 @@
-{"server":["nginx"],[CR][LF]
-"date":["Tue, 07 Mar 2023 15:14:41 GMT"],[CR][LF]
-"content-type":["application/json"],[CR][LF]
-"content-length":["6"],[CR][LF]
-"vary":["Accept-Encoding","Accept-Encoding","Accept"],[CR][LF]
-"access-control-allow-origin":["*"],[CR][LF]
-"referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"],[CR][LF]
-"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],[CR][LF]
-"access-control-max-age":["1728000"],[CR][LF]
-"access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"],[CR][LF]
-"access-control-expose-headers":[""],[CR][LF]
-"etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""],[CR][LF]
-"cache-control":["max-age=0, private, must-revalidate"],[CR][LF]
-"x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"],[CR][LF]
-"strict-transport-security":["max-age=31536000; includeSubDomains"],[CR][LF]
-"x-content-type-options":["nosniff"],[CR][LF]
-"x-xss-protection":["1; mode=block"],[CR][LF]
-"feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"][CR][LF]
-}[CR][LF]
== Contents of files in the log/5/ directory after test 421
=== Start of file check-expected
 {"server":["nginx"],[CR][LF]
 "date":["Tue, 07 Mar 2023 15:14:41 GMT"],[CR][LF]
 "content-type":["application/json"],[CR][LF]
 "content-length":["6"],[CR][LF]
 "vary":["Accept-Encoding","Accept-Encoding","Accept"],[CR][LF]
 "access-control-allow-origin":["*"],[CR][LF]
 "referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"],[CR][LF]
 "access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],[CR][LF]
 "access-control-max-age":["1728000"],[CR][LF]
 "access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"],[CR][LF]
 "access-control-expose-headers":[""],[CR][LF]
 "etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""],[CR][LF]
 "cache-control":["max-age=0, private, must-revalidate"],[CR][LF]
 "x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"],[CR][LF]
 "strict-transport-security":["max-age=31536000; includeSubDomains"],[CR][LF]
 "x-content-type-options":["nosniff"],[CR][LF]
 "x-xss-protection":["1; mode=block"],[CR][LF]
 "feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"][CR][LF]
 }[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind421 ../src/curl -q --output log/5/curl421.out  --include --trace-ascii log/5/trace421 --trace-time http://127.0.0.1:37089/421 -w '%{stderr}%{header_json}\n' -s > log/5/stdout421 2> log/5/stderr421
=== End of file commands.log
=== Start of file http_server.log
 19:26:46.561742 ====> Client connect
 19:26:46.561779 accept_connection 3 returned 4
 19:26:46.561803 Read 93 bytes
 19:26:46.561814 Process 93 bytes request
 19:26:46.561827 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.561835 Are-we-friendly question received
 19:26:46.561864 Wrote request (93 bytes) input to log/5/server.input
 19:26:46.561883 Identifying ourselves as friends
 19:26:46.561962 Response sent (56 bytes) and written to log/5/server.response
 19:26:46.561976 special request received, no persistency
 19:26:46.561986 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 35790 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 421
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind421
 ==102562== 
 ==102562== Process terminating with default action of signal 4 (SIGILL)
 ==102562==  Illegal opcode at address 0x492B75F
 ==102562==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102562==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102562==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102562==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102562==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102562==    by 0x49908EB: curl_version_info (version.c:600)
 ==102562==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102562==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102562==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102562==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind421
test 0416 [FTP growing file support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind416 ../src/curl -q --output log/21/curl416.out  --include --trace-ascii log/21/trace416 --trace-time --ignore-content-length ftp://127.0.0.1:35787/416 > log/21/stdout416 2> log/21/stderr416

 416: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 416
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind416 ../src/curl -q --output log/21/curl416.out  --include --trace-ascii log/21/trace416 --trace-time --ignore-content-length ftp://127.0.0.1:35787/416 > log/21/stdout416 2> log/21/stderr416
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:46.745463 ====> Client connect
 19:26:46.745671 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:46.745972 < "USER anonymous"
 19:26:46.746008 > "331 We are happy you popped in![CR][LF]"
 19:26:46.746175 < "PASS ftp@example.com"
 19:26:46.746201 > "230 Welcome you silly person[CR][LF]"
 19:26:46.746348 < "PWD"
 19:26:46.746376 > "257 "/" is current directory[CR][LF]"
 19:26:46.746530 < "EPSV"
 19:26:46.746555 ====> Passive DATA channel requested by client
 19:26:46.746569 DATA sockfilt for passive data channel starting...
 19:26:46.762269 DATA sockfilt for passive data channel started (pid 102431)
 19:26:46.762420 DATA sockfilt for passive data channel listens on port 35003
 19:26:46.762469 > "229 Entering Passive Mode (|||35003|)[CR][LF]"
 19:26:46.762485 Client has been notified that upcoming DATA connection is awaited on port 35003
 19:26:46.762802 Client connects to port 35003
 19:26:46.762831 ====> Client established passive DATA connection on port 35003
 19:26:46.762920 < "TYPE I"
 19:26:46.762950 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:46.763100 < "SIZE verifiedserver"
 19:26:46.763138 > "213 17[CR][LF]"
 19:26:46.763285 < "RETR verifiedserver"
 19:26:46.763319 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind424 ../src/curl -q --trace-ascii log/9/trace424 --trace-time "http://uuuu:pppp@127.0.0.1:43733/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:43733/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:43733/ -L > log/9/stdout424 2> log/9/stderr424
46.763408 =====> Closing passive DATA connection...
 19:26:46.763424 Server disconnects passive DATA connection
 19:26:46.763644 Server disconnected passive DATA connection
 19:26:46.763671 DATA sockfilt for passive data channel quits (pid 102431)
 19:26:46.763967 DATA sockfilt for passive data channel quit (pid 102431)
 19:26:46.763990 =====> Closed passive DATA connection
 19:26:46.764017 > "226 File transfer complete[CR][LF]"
 19:26:46.828834 < "QUIT"
 19:26:46.828895 > "221 bye bye baby[CR][LF]"
 19:26:46.833267 MAIN sockfilt said DISC
 19:26:46.833316 ====> Client disconnected
 19:26:46.833398 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:46.351581 ====> Client connect
 19:26:46.351916 Received DATA (on stdin)
 19:26:46.351931 > 146 bytes data, server => client
 19:26:46.351942 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:46.351953 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:46.351962 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:46.352065 < 16 bytes data, client => server
 19:26:46.352076 'USER anonymous\r\n'
 19:26:46.352243 Received DATA (on stdin)
 19:26:46.352258 > 33 bytes data, server => client
 19:26:46.352269 '331 We are happy you popped in!\r\n'
 19:26:46.352322 < 22 bytes data, client => server
 19:26:46.352332 'PASS ftp@example.com\r\n'
 19:26:46.352432 Received DATA (on stdin)
 19:26:46.352442 > 30 bytes data, server => client
 19:26:46.352452 '230 Welcome you silly person\r\n'
 19:26:46.352502 < 5 bytes data, client => server
 19:26:46.352512 'PWD\r\n'
 19:26:46.352607 Received DATA (on stdin)
 19:26:46.352617 > 30 bytes data, server => client
 19:26:46.352627 '257 "/" is current directory\r\n'
 19:26:46.352685 < 6 bytes data, client => server
 19:26:46.352694 'EPSV\r\n'
 19:26:46.368730 Received DATA (on stdin)
 19:26:46.368748 > 39 bytes data, server => client
 19:26:46.368759 '229 Entering Passive Mode (|||35003|)\r\n'
 19:26:46.368959 < 8 bytes data, client => server
 19:26:46.368972 'TYPE I\r\n'
 19:26:46.369187 Received DATA (on stdin)
 19:26:46.369197 > 33 bytes data, server => client
 19:26:46.369208 '200 I modify TYPE as you wanted\r\n'
 19:26:46.369257 < 21 bytes data, client => server
 19:26:46.369268 'SIZE verifiedserver\r\n'
 19:26:46.369374 Received DATA (on stdin)
 19:26:46.369384 > 8 bytes data, server => client
 19:26:46.369393 '213 17\r\n'
 19:26:46.369444 < 21 bytes data, client => server
 19:26:46.369454 'RETR verifiedserver\r\n'
 19:26:46.369662 Received DATA (on stdin)
 19:26:46.369672 > 29 bytes data, server => client
 19:26:46.369682 '150 Binary junk (17 bytes).\r\n'
 19:26:46.370254 Received DATA (on stdin)
 19:26:46.370266 > 28 bytes data, server => client
 19:26:46.370276 '226 File transfer complete\r\n'
 19:26:46.431606 < 6 bytes data, client => server
 19:26:46.431648 'QUIT\r\n'
 19:26:46.435154 Received DATA (on stdin)
 19:26:46.435169 > 18 bytes data, server => client
 19:26:46.435179 '221 bye bye baby\r\n'
 19:26:46.439446 ====> Client disconnect
 19:26:46.439650 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:46.362347 Running IPv4 version
 19:26:46.362449 Listening on port 35003
 19:26:46.362586 Wrote pid 102431 to log/21/server/ftp_sockdata.pid
 19:26:46.368427 Received PING (on stdin)
 19:26:46.368556 Received PORT (on stdin)
 19:26:46.368993 ====> Client connect
 19:26:46.369707 Received DATA (on stdin)
 19:26:46.369719 > 17 bytes data, server => client
 19:26:46.369729 'WE ROOLZ: 84694\r\n'
 19:26:46.369752 Received DISC (on stdin)
 19:26:46.369764 ====> Client forcibly disconnected
 19:26:46.369917 Received QUIT (on stdin)
 19:26:46.369927 quits
 19:26:46.370001 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 RETRSIZE 7
 Testnum 416
=== End of file server.cmd
=== Start of file valgrind416
 ==102474== 
 ==102474== Process terminating with default action of signal 4 (SIGILL)
 ==102474==  Illegal opcode at address 0x492B75F
 ==102474==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102474==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102474==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102474==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102474==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102474==    by 0x49908EB: curl_version_info (version.c:600)
 ==102474==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102474==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102474==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102474==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind416
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind422 ../src/curl -q --output log/17/curl422.out  --include --trace-ascii log/17/trace422 --trace-time -O -I --next http://127.0.0.1:35993/422 > log/17/stdout422 2> log/17/stderr422
test 0424 [-w with urle.* variables]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind424 ../src/curl -q --trace-ascii log/9/trace424 --trace-time "http://uuuu:pppp@127.0.0.1:43733/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:43733/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:43733/ -L > log/9/stdout424 2> log/9/stderr424

 424: stdout FAILED:
--- log/9/check-expected	2026-10-15 19:26:49.417261672 +0000
+++ log/9/check-generated	2026-10-15 19:26:49.414706046 +0000
@@ -1,4 +0,0 @@
-anotherhost.example+/4240002+http+++2023+moo.html+[LF]
-hello2000+/424+h55p+++1+qqqq+ffff[LF]
-+++++++[LF]
-anotherhost.example+/4240002+http+++2023+moo.html+[LF]
== Contents of files in the log/9/ directory after test 424
=== Start of file check-expected
 anotherhost.example+/4240002+http+++2023+moo.html+[LF]
 hello2000+/424+h55p+++1+qqqq+ffff[LF]
 +++++++[LF]
 anotherhost.example+/4240002+http+++2023+moo.html+[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind424 ../src/curl -q --trace-ascii log/9/trace424 --trace-time "http://uuuu:pppp@127.0.0.1:43733/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:43733/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:43733/ -L > log/9/stdout424 2> log/9/stderr424
=== End of file commands.log
=== Start of file http_server.log
 19:26:46.941759 ====> Client connect
 19:26:46.941798 accept_connection 3 returned 4
 19:26:46.941823 Read 93 bytes
 19:26:46.941832 Process 93 bytes request
 19:26:46.941845 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.941853 Are-we-friendly question received
 19:26:46.941878 Wrote request (93 bytes) input to log/9/server.input
 19:26:46.941893 Identifying ourselves as friends
 19:26:46.941977 Response sent (56 bytes) and written to log/9/server.response
 19:26:46.941986 special request received, no persistency
 19:26:46.941993 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 424
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind424
 ==102860== 
 ==102860== Process terminating with default action of signal 4 (SIGILL)
 ==102860==  Illegal opcode at address 0x492B75F
 ==102860==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102860==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102860==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102860==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102860==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102860==    by 0x49908EB: curl_version_info (version.c:600)
 ==102860==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102860==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102860==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102860==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind424
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind420 ../src/curl -q --output log/11/curl420.out  --include --trace-ascii log/11/trace420 --trace-time http://127.0.0.1:40989/func_test/del_cookie -b log/11/cookie420 -c log/11/save420 > log/11/stdout420 2> log/11/stderr420
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind425 ../src/curl -q --output log/16/curl425.out  --include --trace-ascii log/16/trace425 --trace-time -T log/16/up425 http://127.0.0.1:35903/425/?fullpath > log/16/stdout425 2> log/16/stderr425
test 0422 [use --next with missing URL before it]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind422 ../src/curl -q --output log/17/curl422.out  --include --trace-ascii log/17/trace422 --trace-time -O -I --next http://127.0.0.1:35993/422 > log/17/stdout422 2> log/17/stderr422

 422: stderr FAILED:
--- log/17/check-expected	2026-10-15 19:26:49.433934395 +0000
+++ log/17/check-generated	2026-10-15 19:26:49.431369043 +0000
@@ -1,3 +0,0 @@
-curl: missing URL before --next[CR][LF]
-curl: option --next: is badly used here[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/17/ directory after test 422
=== Start of file check-expected
 curl: missing URL before --next[CR][LF]
 curl: option --next: is badly used here[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind422 ../src/curl -q --output log/17/curl422.out  --include --trace-ascii log/17/trace422 --trace-time -O -I --next http://127.0.0.1:35993/422 > log/17/stdout422 2> log/17/stderr422
=== End of file commands.log
=== Start of file server.cmd
 Testnum 422
=== End of file server.cmd
=== Start of file valgrind422
 ==102739== 
 ==102739== Process terminating with default action of signal 4 (SIGILL)
 ==102739==  Illegal opcode at address 0x492B75F
 ==102739==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102739==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102739==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102739==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102739==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102739==    by 0x49908EB: curl_version_info (version.c:600)
 ==102739==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102739==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102739==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102739==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind422
test 0420 [Setting cookies set with expired dates that were loaded from jar]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind420 ../src/curl -q --output log/11/curl420.out  --include --trace-ascii log/11/trace420 --trace-time http://127.0.0.1:40989/func_test/del_cookie -b log/11/cookie420 -c log/11/save420 > log/11/stdout420 2> log/11/stderr420

 420: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 420
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind420 ../src/curl -q --output log/11/curl420.out  --include --trace-ascii log/11/trace420 --trace-time http://127.0.0.1:40989/func_test/del_cookie -b log/11/cookie420 -c log/11/save420 > log/11/stdout420 2> log/11/stderr420
=== End of file commands.log
=== Start of file cookie420
 127.0.0.1	FALSE	/func_test	FALSE	21709598616	mycookie6	991
 #HttpOnly_127.0.0.1	FALSE	/func_test	FALSE	21709598616	mycookie5	990
 #HttpOnly_127.0.0.1	FALSE	/func_test	FALSE	21709598616	mycookie4	950
 #HttpOnly_127.0.0.1	FALSE	/func_test	FALSE	21709598616	mycookie3	900
 #HttpOnly_127.0.0.1	FALSE	/func_test	FALSE	21709598616	mycookie2	5900
 #HttpOnly_127.0.0.1	FALSE	/	FALSE	21709598616	mycookie1	4900
 #HttpOnly_127.0.0.1	FALSE	/func_test	FALSE	0	mycookie	1200
=== End of file cookie420
=== Start of file http_server.log
 19:26:46.534998 ====> Client connect
 19:26:46.535034 accept_connection 3 returned 4
 19:26:46.535056 Read 93 bytes
 19:26:46.535066 Process 93 bytes request
 19:26:46.535078 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.535086 Are-we-friendly question received
 19:26:46.535112 Wrote request (93 bytes) input to log/11/server.input
 19:26:46.535128 Identifying ourselves as friends
 19:26:46.535198 Response sent (56 bytes) and written to log/11/server.response
 19:26:46.535208 special request received, no persistency
 19:26:46.535217 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 53292 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 420
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind420
 ==102534== 
 ==102534== Process terminating with default action of signal 4 (SIGILL)
 ==102534==  Illegal opcode at address 0x492B75F
 ==102534==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102534==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102534==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102534==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102534==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102534==    by 0x49908EB: curl_version_info (version.c:600)
 ==102534==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102534==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102534==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102534==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind420
test 0425 [HTTP PUT with path ending with slash + query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind425 ../src/curl -q --output log/16/curl425.out  --include --trace-ascii log/16/trace425 --trace-time -T log/16/up425 http://127.0.0.1:35903/425/?fullpath > log/16/stdout425 2> log/16/stderr425

 425: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 425
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind425 ../src/curl -q --output log/16/curl425.out  --include --trace-ascii log/16/trace425 --trace-time -T log/16/up425 http://127.0.0.1:35903/425/?fullpath > log/16/stdout425 2> log/16/stderr425
=== End of file commands.log
=== Start of file http_server.log
 19:26:48.105689 ====> Client connect
 19:26:48.105726 accept_connection 3 returned 4
 19:26:48.105747 Read 93 bytes
 19:26:48.105756 Process 93 bytes request
 19:26:48.105767 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.105775 Are-we-friendly question received
 19:26:48.105801 Wrote request (93 bytes) input to log/16/server.input
 19:26:48.105817 Identifying ourselves as friends
 19:26:48.105874 Response sent (56 bytes) and written to log/16/server.response
 19:26:48.105882 special request received, no persistency
 19:26:48.105890 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43550 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind423 ../src/curl -q --trace-ascii log/7/trace423 --trace-time "http://uuuu:pppp@127.0.0.1:40859/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:40859/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/7/stdout423 2> log/7/stderr423
Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 425
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file up425
 content
=== End of file up425
=== Start of file valgrind425
 ==102937== 
 ==102937== Process terminating with default action of signal 4 (SIGILL)
 ==102937==  Illegal opcode at address 0x492B75F
 ==102937==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102937==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102937==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102937==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102937==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102937==    by 0x49908EB: curl_version_info (version.c:600)
 ==102937==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102937==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102937==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102937==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind425
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind426 ../src/curl -q --output log/20/curl426.out  --include --trace-ascii log/20/trace426 --trace-time http://127.0.0.1:33897/426 -d foobar -C 3 > log/20/stdout426 2> log/20/stderr426
test 0423 [-w with url.* variables]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind423 ../src/curl -q --trace-ascii log/7/trace423 --trace-time "http://uuuu:pppp@127.0.0.1:40859/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:40859/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/7/stdout423 2> log/7/stderr423

 423: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:26:49.926825075 +0000
+++ log/7/check-generated	2026-10-15 19:26:49.924593748 +0000
@@ -1,4 +0,0 @@
-127.0.0.1+/423+http+uuuu+pppp+40859+qqqq+ffff[LF]
-hello2000+/423+h55p+++1+qqqq+ffff[LF]
-+++++++[LF]
-127.0.0.1+/423+http+u22u+p22p+40859+qqqq+ffff[LF]
== Contents of files in the log/7/ directory after test 423
=== Start of file check-expected
 127.0.0.1+/423+http+uuuu+pppp+40859+qqqq+ffff[LF]
 hello2000+/423+h55p+++1+qqqq+ffff[LF]
 +++++++[LF]
 127.0.0.1+/423+http+u22u+p22p+40859+qqqq+ffff[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind423 ../src/curl -q --trace-ascii log/7/trace423 --trace-time "http://uuuu:pppp@127.0.0.1:40859/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:40859/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/7/stdout423 2> log/7/stderr423
=== End of file commands.log
=== Start of file http_server.log
 19:26:46.871709 ====> Client connect
 19:26:46.871766 accept_connection 3 returned 4
 19:26:46.871799 Read 93 bytes
 19:26:46.871810 Process 93 bytes request
 19:26:46.871823 Got request: GET /verifiedserver HTTP/1.1
 19:26:46.871832 Are-we-friendly question received
 19:26:46.871905 Wrote request (93 bytes) input to log/7/server.input
 19:26:46.871929 Identifying ourselves as friends
 19:26:46.872025 Response sent (56 bytes) and written to log/7/server.response
 19:26:46.872036 special request received, no persistency
 19:26:46.872045 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39332 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 423
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind423
 ==102830== 
 ==102830== Process terminating with default action of signal 4 (SIGILL)
 ==102830==  Illegal opcode at address 0x492B75F
 ==102830==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==102830==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==102830==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==102830==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==102830==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==102830==    by 0x49908EB: curl_version_info (version.c:600)
 ==102830==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==102830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==102830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==102830==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind423
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind430 ../src/curl -q --output log/24/curl430.out  --include --trace-ascii log/24/trace430 --trace-time -K log/24/config430-a -K log/24/config430-b -K log/24/config430-c > log/24/stdout430 2> log/24/stderr430
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind434 ../src/curl -q --output log/18/curl434.out  --include --trace-ascii log/18/trace434 --trace-time -K log/18/config434 > log/18/stdout434 2> log/18/stderr434
test 0426 [try --data with --continue-at]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind426 ../src/curl -q --output log/20/curl426.out  --include --trace-ascii log/20/trace426 --trace-time http://127.0.0.1:33897/426 -d foobar -C 3 > log/20/stdout426 2> log/20/stderr426

 426: stderr FAILED:
--- log/20/check-expected	2026-10-15 19:26:50.030599072 +0000
+++ log/20/check-generated	2026-10-15 19:26:50.027904352 +0000
@@ -1 +0,0 @@
-curl: (43) HTTP upload cannot be resumed[CR][LF]
== Contents of files in the log/20/ directory after test 426
=== Start of file check-expected
 curl: (43) HTTP upload cannot be resumed[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind426 ../src/curl -q --output log/20/curl426.out  --include --trace-ascii log/20/trace426 --trace-time http://127.0.0.1:33897/426 -d foobar -C 3 > log/20/stdout426 2> log/20/stderr426
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.244845 ====> Client connect
 19:26:47.244883 accept_connection 3 returned 4
 19:26:47.244905 Read 93 bytes
 19:26:47.244915 Process 93 bytes request
 19:26:47.244929 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.244938 Are-we-friendly question received
 19:26:47.244969 Wrote request (93 bytes) input to log/20/server.input
 19:26:47.244986 Identifying ourselves as friends
 19:26:47.245057 Response sent (56 bytes) and written to log/20/server.response
 19:26:47.245067 special request received, no persistency
 19:26:47.245078 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 40104 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 426
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind426
 ==103043== 
 ==103043== Process terminating with default action of signal 4 (SIGILL)
 ==103043==  Illegal opcode at address 0x492B75F
 ==103043==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103043==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103043==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103043==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103043==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103043==    by 0x49908EB: curl_version_info (version.c:600)
 ==103043==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103043==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103043==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103043==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind426
test 0430 [Three -K uses with --next and --data in each]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind430 ../src/curl -q --output log/24/curl430.out  --include --trace-ascii log/24/trace430 --trace-time -K log/24/config430-a -K log/24/config430-b -K log/24/config430-c > log/24/stdout430 2> log/24/stderr430

 430: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 430
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind430 ../src/curl -q --output log/24/curl430.out  --include --trace-ascii log/24/trace430 --trace-time -K log/24/config430-a -K log/24/config430-b -K log/24/config430-c > log/24/stdout430 2> log/24/stderr430
=== End of file commands.log
=== Start of file config430-a
 --next
 url = 127.0.0.1:38895/4300001
 header = "a: a"
 data = "a"
=== End of file config430-a
=== Start of file config430-b
 --next
 url = 127.0.0.1:38895/4300002
 header = "b: b"
 data = "b"
=== End of file config430-b
=== Start of file config430-c
 --next
 url = 127.0.0.1:38895/4300003
 header = "c: c"
 data = "c"
=== End of file config430-c
=== Start of file http_server.log
 19:26:47.527993 ====> Client connect
 19:26:47.528024 accept_connection 3 returned 4
 19:26:47.528173 Read 93 bytes
 19:26:47.528187 Process 93 bytes request
 19:26:47.528199 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.528208 Are-we-friendly question received
 19:26:47.528238 Wrote request (93 bytes) input to log/24/server.input
 19:26:47.528256 Identifying ourselves as friends
 19:26:47.528315 Response sent (56 bytes) and written to log/24/server.response
 19:26:47.528325 special request received, no persistency
 19:26:47.528333 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 58652 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 430
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind430
 ==103241== 
 ==103241== Process terminating with default action of signal 4 (SIGILL)
 ==103241==  Illegal opcode at address 0x492B75F
 ==103241==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103241==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103241==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103241==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103241==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103241==    by 0x49908EB: curl_version_info (version.c:600)
 ==103241==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103241==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103241==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103241==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind430
test 0434 [-K with a single line without newline]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind434 ../src/curl -q --output log/18/curl434.out  --include --trace-ascii log/18/trace434 --trace-time -K log/18/config434 > log/18/stdout434 2> log/18/stderr434

 434: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 434
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind434 ../src/curl -q --output log/18/curl434.out  --include --trace-ascii log/18/trace434 --trace-time -K log/18/config434 > log/18/stdout434 2> log/18/stderr434
=== End of file commands.log
=== Start of file config434
 url = 127.0.0.1:43739/434
=== End of file config434
=== Start of file http_server.log
 19:26:48.763089 ====CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind427 ../src/curl -q --output log/19/curl427.out  --include --trace-ascii log/19/trace427 --trace-time http://127.0.0.1:46497/427 -c log/19/cookies427 -L > log/19/stdout427 2> log/19/stderr427
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind428 ../src/curl -q --output log/6/curl428.out  --include --trace-ascii log/6/trace428 --trace-time http://127.0.0.1:33935/428 -K log/6/cmd > log/6/stdout428 2> log/6/stderr428
> Client connect
 19:26:48.763126 accept_connection 3 returned 4
 19:26:48.763148 Read 93 bytes
 19:26:48.763157 Process 93 bytes request
 19:26:48.763169 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.763178 Are-we-friendly question received
 19:26:48.763206 Wrote request (93 bytes) input to log/18/server.input
 19:26:48.763223 Identifying ourselves as friends
 19:26:48.763292 Response sent (56 bytes) and written to log/18/server.response
 19:26:48.763302 special request received, no persistency
 19:26:48.763310 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45908 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 434
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind434
 ==103425== 
 ==103425== Process terminating with default action of signal 4 (SIGILL)
 ==103425==  Illegal opcode at address 0x492B75F
 ==103425==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103425==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103425==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103425==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103425==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103425==    by 0x49908EB: curl_version_info (version.c:600)
 ==103425==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103425==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103425==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103425==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind434
test 0427 [Keep Cookie: header within 8190 bytes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind427 ../src/curl -q --output log/19/curl427.out  --include --trace-ascii log/19/trace427 --trace-time http://127.0.0.1:46497/427 -c log/19/cookies427 -L > log/19/stdout427 2> log/19/stderr427

 427: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 427
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind427 ../src/curl -q --output log/19/curl427.out  --include --trace-ascii log/19/trace427 --trace-time http://127.0.0.1:46497/427 -c log/19/cookies427 -L > log/19/stdout427 2> log/19/stderr427
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.248717 ====> Client connect
 19:26:47.248752 accept_connection 3 returned 4
 19:26:47.248910 Read 93 bytes
 19:26:47.248927 Process 93 bytes request
 19:26:47.248939 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.248948 Are-we-friendly question received
 19:26:47.248981 Wrote request (93 bytes) input to log/19/server.input
 19:26:47.249003 Identifying ourselves as friends
 19:26:47.249071 Response sent (56 bytes) and written to log/19/server.response
 19:26:47.249082 special request received, no persistency
 19:26:47.249092 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 46962 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 427
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind427
 ==103068== 
 ==103068== Process terminating with default action of signal 4 (SIGILL)
 ==103068==  Illegal opcode at address 0x492B75F
 ==103068==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103068==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103068==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103068==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103068==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103068==    by 0x49908EB: curl_version_info (version.c:600)
 ==103068==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103068==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103068==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103068==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind427
setenv FUNVALUE = contents
setenv VALUE2 = curl
setenv BLANK = 
test 0428 [Expand environment variables within config file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind428 ../src/curl -q --output log/6/curl428.out  --include --trace-ascii log/6/trace428 --trace-time http://127.0.0.1:33935/428 -K log/6/cmd > log/6/stdout428 2> log/6/stderr428

 428: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 428
=== Start of file cmd
 --variable %FUNVALUE
 --variable %VALUE2
 --variable %BLANK
 --variable %curl_NOT_SET=default
 --expand-data 1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}}
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind428 ../src/curl -q --output log/6/curl428.out  --include --trace-ascii log/6/trace428 --trace-time http://127.0.0.1:33935/428 -K log/6/cmd > log/6/stdout428 2> log/6/stderr428
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.405229 ====> Client connect
 19:26:47.405276 accept_connection 3 returned 4
 19:26:47.405302 Read 93 bytes
 19:26:47.405312 Process 93 bytes request
 19:26:47.405327 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.405336 Are-we-friendly question received
 19:26:47.405369 Wrote request (93 bytes) input to log/6/server.input
 19:26:47.405389 Identifying ourselves as friends
 19:26:47.405573 Response sent (56 bytes) and written to log/6/server.response
 19:26:47.405587 special request received, no persistency
 19:26:47.405596 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 46248 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 428
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind428
 ==103204== 
 ==103204== Process terminating with default action of signal 4 (SIGILL)
 ==1032CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind429 ../src/curl -q --output log/12/curl429.out  --include --trace-ascii log/12/trace429 --trace-time http://127.0.0.1:40921/429 -K log/12/cmd > log/12/stdout429 2> log/12/stderr429
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind435 ../src/curl -q --include --trace-ascii log/10/trace435 --trace-time http://127.0.0.1:40913/435 http://127.0.0.1:40913/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/10/stdout435 2> log/10/stderr435
04==  Illegal opcode at address 0x492B75F
 ==103204==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103204==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103204==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103204==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103204==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103204==    by 0x49908EB: curl_version_info (version.c:600)
 ==103204==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103204==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103204==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103204==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind428
setenv FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF = contents2023
test 0429 [Expand environment variable in config file - too long name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind429 ../src/curl -q --output log/12/curl429.out  --include --trace-ascii log/12/trace429 --trace-time http://127.0.0.1:40921/429 -K log/12/cmd > log/12/stdout429 2> log/12/stderr429

 429: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 429
=== Start of file cmd
 --expand-data {{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}}
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind429 ../src/curl -q --output log/12/curl429.out  --include --trace-ascii log/12/trace429 --trace-time http://127.0.0.1:40921/429 -K log/12/cmd > log/12/stdout429 2> log/12/stderr429
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.528192 ====> Client connect
 19:26:47.528242 accept_connection 3 returned 4
 19:26:47.528276 Read 93 bytes
 19:26:47.528289 Process 93 bytes request
 19:26:47.528303 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.528313 Are-we-friendly question received
 19:26:47.528354 Wrote request (93 bytes) input to log/12/server.input
 19:26:47.528376 Identifying ourselves as friends
 19:26:47.528498 Response sent (56 bytes) and written to log/12/server.response
 19:26:47.528516 special request received, no persistency
 19:26:47.528524 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38224 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 429
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind429
 ==103229== 
 ==103229== Process terminating with default action of signal 4 (SIGILL)
 ==103229==  Illegal opcode at address 0x492B75F
 ==103229==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103229==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103229==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103229==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103229==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103229==    by 0x49908EB: curl_version_info (version.c:600)
 ==103229==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103229==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103229==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103229==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind429
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind431 ../src/curl -q --output log/13/curl431.out  --include --trace-ascii log/13/trace431 --trace-time -K log/13/config431-a -K log/13/config431-b --next -d c 127.0.0.1:38821/4310003 -H "c: c" > log/13/stdout431 2> log/13/stderr431
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind440 ../src/curl -q --include --trace-ascii log/1/trace440 --trace-time -x http://127.0.0.1:38815 http://this.hsts.example./440 --hsts log/1/input440 -w '%{url_effective}\n' > log/1/stdout440 2> log/1/stderr440
test 0435 [verify -w local/remote port+ip after connection reuse]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind435 ../src/curl -q --include --trace-ascii log/10/trace435 --trace-time http://127.0.0.1:40913/435 http://127.0.0.1:40913/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/10/stdout435 2> log/10/stderr435

 435: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:26:50.525069619 +0000
+++ log/10/check-generated	2026-10-15 19:26:50.521129497 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Content-Length: 0[CR][LF]
-[CR][LF]
-local port == [digits][LF]
-local ip == 127.0.0.1[LF]
-remote_ip == 127.0.0.1[LF]
-remote_port == 40913[LF]
-HTTP/1.1 200 OK[CR][LF]
-Content-Length: 0[CR][LF]
-[CR][LF]
-local port == [digits][LF]
-local ip == 127.0.0.1[LF]
-remote_ip == 127.0.0.1[LF]
-remote_port == 40913[LF]
== Contents of files in the log/10/ directory after test 435
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Content-Length: 0[CR][LF]
 [CR][LF]
 local port == [digits][LF]
 local ip == 127.0.0.1[LF]
 remote_ip == 127.0.0.1[LF]
 remote_port == 40913[LF]
 HTTP/1.1 200 OK[CR][LF]
 Content-Length: 0[CR][LF]
 [CR][LF]
 local port == [digits][LF]
 local ip == 127.0.0.1[LF]
 remote_ip == 127.0.0.1[LF]
 remote_port == 40913[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind435 ../src/curl -q --include --trace-ascii log/10/trace435 --trace-time http://127.0.0.1:40913/435 http://127.0.0.1:40913/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/10/stdout435 2> log/10/stderr435
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.922801 ====> Client connect
 19:26:47.922843 accept_connection 3 returned 4
 19:26:47.922869 Read 93 bytes
 19:26:47.922880 Process 93 bytes request
 19:26:47.922894 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.922903 Are-we-friendly question received
 19:26:47.922968 Wrote request (93 bytes) input to log/10/server.input
 19:26:47.922990 Identifying ourselves as friends
 19:26:47.923067 Response sent (56 bytes) and written to log/10/server.response
 19:26:47.923078 special request received, no persistency
 19:26:47.923086 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56094 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 435
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind435
 ==103580== 
 ==103580== Process terminating with default action of signal 4 (SIGILL)
 ==103580==  Illegal opcode at address 0x492B75F
 ==103580==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103580==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103580==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103580==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103580==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103580==    by 0x49908EB: curl_version_info (version.c:600)
 ==103580==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103580==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103580==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103580==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind435
test 0431 [Two -K uses with --next and then one on cmdline]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind431 ../src/curl -q --output log/13/curl431.out  --include --trace-ascii log/13/trace431 --trace-time -K log/13/config431-a -K log/13/config431-b --next -d c 127.0.0.1:38821/4310003 -H "c: c" > log/13/stdout431 2> log/13/stderr431

 431: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 431
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind431 ../src/curl -q --output log/13/curl431.out  --include --trace-ascii log/13/trace431 --trace-time -K log/13/config431-a -K log/13/config431-b --next -d c 127.0.0.1:38821/4310003 -H "c: c" > log/13/stdout431 2> log/13/stderr431
=== End of file commands.log
=== Start of file config431-a
 --next
 url = 127.0.0.1:38821/4310001
 header = "a: a"
 data = "a"
=== End of file config431-a
=== Start of file config431-b
 --next
 url = 127.0.0.1:38821/4310002
 header = "b: b"
 data = "b"
=== End of file config431-b
=== Start of file http_server.log
 19:26:47.708596 ====> Client connect
 19:26:47.708635 accept_connection 3 returned 4
 19:26:47.708660 Read 93 bytes
 19:26:47.708671 Process 93 bytes request
 19:26:47.708684 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.708693 Are-we-friendly question received
 19:26:47.708737 Wrote request (93 bytes) input to log/13/server.input
 19:26:47.708756 Identifying ourselves as friends
 19:26:47.708832 Response sent (56 bytes) and written to log/13/server.response
 19:26:47.708842 special request received, no persistency
 19:26:47.708850 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 50718 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 431
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind431
 ==103417== 
 ==103417== Process terminating with default action of signal 4 (SIGILL)
 ==103417==  Illegal opcode at address 0x492B75F
 ==103417==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103417==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103417==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103417==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103417==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103417==    by 0x49908EB: curl_version_info (version.c:600)
 ==103417==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103417==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103417==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103417==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind431
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind432 ../src/curl -q --output log/4/curl432.out  --include --trace-ascii log/4/trace432 --trace-time -K log/4/config432 > log/4/stdout432 2> log/4/stderr432
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind436 ../src/curl --output log/23/curl436.out  --include --trace-ascii log/23/trace436 --trace-time 127.0.0.1:44711/436 > log/23/stdout436 2> log/23/stderr436
test 0440 [HSTS with trailing-dot hostname in URL but none in hsts file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind440 ../src/curl -q --include --trace-ascii log/1/trace440 --trace-time -x http://127.0.0.1:38815 http://this.hsts.example./440 --hsts log/1/input440 -w '%{url_effective}\n' > log/1/stdout440 2> log/1/stderr440

 440: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:26:50.739330909 +0000
+++ log/1/check-generated	2026-10-15 19:26:50.737748648 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 403 not OK at all[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Funny-head: yesyes[CR][LF]
-[CR][LF]
-https://this.hsts.example./440[LF]
== Contents of files in the log/1/ directory after test 440
=== Start of file check-expected
 HTTP/1.1 403 not OK at all[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Funny-head: yesyes[CR][LF]
 [CR][LF]
 https://this.hsts.example./440[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind440 ../src/curl -q --include --trace-ascii log/1/trace440 --trace-time -x http://127.0.0.1:38815 http://this.hsts.example./440 --hsts log/1/input440 -w '%{url_effective}\n' > log/1/stdout440 2> log/1/stderr440
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.057484 ====> Client connect
 19:26:49.057520 accept_connection 3 returned 4
 19:26:49.057618 Read 93 bytes
 19:26:49.057630 Process 93 bytes request
 19:26:49.057642 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.057650 Are-we-friendly question received
 19:26:49.057681 Wrote request (93 bytes) input to log/1/server.input
 19:26:49.057697 Identifying ourselves as friends
 19:26:49.057753 Response sent (56 bytes) and written to log/1/server.response
 19:26:49.057762 special request received, no persistency
 19:26:49.057770 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 44290 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file input440
 this.hsts.example "99991001 04:47:41"
=== End of file input440
=== Start of file server.cmd
 Testnum 440
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind440
 ==103704== 
 ==103704== Process terminating with default action of signal 4 (SIGILL)
 ==103704==  Illegal opcode at address 0x492B75F
 ==103704==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103704==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103704==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103704==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103704==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103704==    by 0x49908EB: curl_version_info (version.c:600)
 ==103704==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103704==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103704==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103704==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind440
test 0432 [Use -K with --next and --config from within]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind432 ../src/curl -q --output log/4/curl432.out  --include --trace-ascii log/4/trace432 --trace-time -K log/4/config432 > log/4/stdout432 2> log/4/stderr432

 432: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 432
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind432 ../src/curl -q --output log/4/curl432.out  --include --trace-ascii log/4/trace432 --trace-time -K log/4/config432 > log/4/stdout432 2> log/4/stderr432
=== End of file commands.log
=== Start of file config432
 --next
 url = 127.0.0.1:35735/4320001
 header = "a: a"
 data = "a"
 --next
 url = 127.0.0.1:35735/4320002
 header = "b: b"
 data = "b"
 config = "log/4/config432-c"
=== End of file config432
=== Start of file config432-c
 --next
 url = 127.0.0.1:35735/4320003
 header = "c: c"
 data = "c"
=== End of file config432-c
=== Start of file http_server.log
 19:26:48.774844 ====> Client connect
 19:26:48.774880 accept_connection 3 returned 4
 19:26:48.774902 Read 93 bytes
 19:26:48.774911 Process 93 bytes request
 19:26:48.774924 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.774933 Are-we-friendly question received
 19:26:48.774959 Wrote request (93 bytes) input to log/4/server.input
 19:26:48.774976 Identifying ourselves as friends
 19:26:48.775037 Response sent (56 bytes) and written to log/4/server.response
 19:26:48.775046 special request received, no persistency
 19:26:48.775054 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 56050 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 432
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind432
 ==103473== 
 ==103473== Process terminating with default action of signal 4 (SIGILL)
 ==103473==  Illegal opcode at address 0x492B75F
 ==103473==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103473==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103473==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103473==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103473==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103473==    by 0x49908EB: curl_version_info (version.c:600)
 ==103473==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103473==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103473==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103473==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind432
setenv CURL_HOME = /startdir/src/build-curl/tests/log/23
test 0436 [Find .curlrc in .config/curlrc via CURL_HOME]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind436 ../src/curl --output log/23/curl436.out  --include --trace-ascii log/23/trace436 --trace-time 127.0.0.1:44711/436 > log/23/stdout436 2> log/23/stderr436

 436: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 436
=== Start of file commands.log
 ../libtool --mode=execute /uCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind441 ../src/curl -q --include --trace-ascii log/14/trace441 --trace-time -x http://127.0.0.1:45467 http://this.hsts.example/441 --hsts log/14/input441 -w '%{url_effective}\n' > log/14/stdout441 2> log/14/stderr441
sr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind436 ../src/curl --output log/23/curl436.out  --include --trace-ascii log/23/trace436 --trace-time 127.0.0.1:44711/436 > log/23/stdout436 2> log/23/stderr436
=== End of file commands.log
=== Start of file http_server.log
 19:26:47.975340 ====> Client connect
 19:26:47.975387 accept_connection 3 returned 4
 19:26:47.975415 Read 93 bytes
 19:26:47.975427 Process 93 bytes request
 19:26:47.975441 Got request: GET /verifiedserver HTTP/1.1
 19:26:47.975450 Are-we-friendly question received
 19:26:47.975481 Wrote request (93 bytes) input to log/23/server.input
 19:26:47.975499 Identifying ourselves as friends
 19:26:47.975584 Response sent (56 bytes) and written to log/23/server.response
 19:26:47.975596 special request received, no persistency
 19:26:47.975604 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48998 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 436
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind436
 ==103648== 
 ==103648== Process terminating with default action of signal 4 (SIGILL)
 ==103648==  Illegal opcode at address 0x492B75F
 ==103648==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103648==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103648==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103648==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103648==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103648==    by 0x49908EB: curl_version_info (version.c:600)
 ==103648==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103648==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103648==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103648==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind436
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind444 ../src/curl -q --output log/22/curl444.out  --include --trace-ascii log/22/trace444 --trace-time http://attack.invalid:35989/a/b/444 -c log/22/cookie444 --resolve attack.invalid:35989:127.0.0.1 > log/22/stdout444 2> log/22/stderr444
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind442 ../src/curl -q --output log/3/curl442.out  --include --trace-ascii log/3/trace442 --trace-time http://attack.invalid:36161/a/b/442 -b log/3/cookie442 --resolve attack.invalid:36161:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442
test 0441 [HSTS with no t-dot hostname in URL but t-dot in file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind441 ../src/curl -q --include --trace-ascii log/14/trace441 --trace-time -x http://127.0.0.1:45467 http://this.hsts.example/441 --hsts log/14/input441 -w '%{url_effective}\n' > log/14/stdout441 2> log/14/stderr441

 441: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:26:51.313990713 +0000
+++ log/14/check-generated	2026-10-15 19:26:51.310956520 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 403 not OK at all[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Funny-head: yesyes[CR][LF]
-[CR][LF]
-https://this.hsts.example/441[LF]
== Contents of files in the log/14/ directory after test 441
=== Start of file check-expected
 HTTP/1.1 403 not OK at all[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Funny-head: yesyes[CR][LF]
 [CR][LF]
 https://this.hsts.example/441[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind441 ../src/curl -q --include --trace-ascii log/14/trace441 --trace-time -x http://127.0.0.1:45467 http://this.hsts.example/441 --hsts log/14/input441 -w '%{url_effective}\n' > log/14/stdout441 2> log/14/stderr441
=== End of file commands.log
=== Start of file http_server.log
 19:26:48.222197 ====> Client connect
 19:26:48.222236 accept_connection 3 returned 4
 19:26:48.222260 Read 93 bytes
 19:26:48.222270 Process 93 bytes request
 19:26:48.222281 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.222290 Are-we-friendly question received
 19:26:48.222321 Wrote request (93 bytes) input to log/14/server.input
 19:26:48.222338 Identifying ourselves as friends
 19:26:48.222406 Response sent (56 bytes) and written to log/14/server.response
 19:26:48.222416 special request received, no persistency
 19:26:48.222425 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 48670 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file input441
 this.hsts.example. "99991001 04:47:41"
=== End of file input441
=== Start of file server.cmd
 Testnum 441
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind441
 ==103813== 
 ==103813== Process terminating with default action of signal 4 (SIGILL)
 ==103813==  Illegal opcode at address 0x492B75F
 ==103813==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103813==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103813==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103813==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103813==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103813==    by 0x49908EB: curl_version_info (version.c:600)
 ==103813==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103813==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103813==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103813==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind441
test 0444 [Many Set-Cookie response headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind444 ../src/curl -q --output log/22/curl444.out  --include --trace-ascii log/22/trace444 --trace-time http://attack.invalid:35989/a/b/444 -c log/22/cookie444 --resolve attack.invalid:35989:127.0.0.1 > log/22/stdout444 2> log/22/stderr444

 444: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 444
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind444 ../src/curl -q --output log/22/curl444.out  --include --trace-ascii log/22/trace444 --trace-time http://attack.invalid:35989/a/b/444 -c log/22/cookie444 --resolve attack.invalid:35989:127.0.0.1 > log/22/stdout444 2> log/22/stderr444
=== End of file commands.log
=== Start of file http_server.log
 19:26:48.737397 ====> Client connect
 19:26:48.737434 accept_connection 3 returned 4
 19:26:48.737457 Read 93 bytes
 19:26:48.737467 Process 93 bytes request
 19:26:48.737481 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.737489 Are-we-friendly question received
 19:26:48.737519 Wrote request (93 bytes) input to log/22/server.input
 19:26:48.737535 Identifying ourselves as friends
 19:26:48.737605 Response sent (56 bytes) and written to log/22/server.response
 19:26:48.737615 special request received, no persistency
 19:26:48.737623 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 56590 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 444
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind444
 ==104027== 
 ==104027== Process terminating with default action of signal 4 (SIGILL)
 ==104027==  Illegal opcode at address 0x492B75F
 ==104027==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104027==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104027==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104027==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104027==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104027==    by 0x49908EB: curl_version_info (version.c:600)
 ==104027==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104027==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind444
test 0442 [Send capped huge number of matching cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind442 ../src/curl -q --output log/3/curl442.out  --include --trace-ascii log/3/trace442 --trace-time http://attack.invalid:36161/a/b/442 -b log/3/cookie442 --resolve attack.invalid:36161:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442

 442: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 442
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind442 ../src/curl -q --output log/3/curl442.out  --include --trace-ascii log/3/trace442 --trace-time http://attack.invalid:36161/a/b/442 -b log/3/cookie442 --resolve attack.invalid:36161:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442
=== End of file commands.log
=== Start of file cookie442
 attack.invalid	TRUE	/	FALSE	0	name1	could-be-large-1
 attack.invalid	TRUE	/	FALSE	0	name2	could-be-large-2
 attack.invalid	TRUE	/	FALSE	0	name3	could-be-large-3
 attack.invalid	TRUE	/	FALSE	0	name4	could-be-large-4
 attack.invalid	TRUE	/	FALSE	0	name5	could-be-large-5
 attack.invalid	TRUE	/	FALSE	0	name6	could-be-large-6
 attack.invalid	TRUE	/	FALSE	0	name7	could-be-large-7
 attack.invalid	TRUE	/	FALSE	0	name8	could-be-large-8
 attack.invalid	TRUE	/	FALSE	0	name9	could-be-large-9
 attack.invalid	TRUE	/	FALSE	0	name10	could-be-large-10
 attack.invalid	TRUE	/	FALSE	0	name11	could-be-large-11
 attack.invalid	TRUE	/	FALSE	0	name12	could-be-large-12
 attack.invalid	TRUE	/	FALSE	0	name13	could-be-large-13
 attack.invalid	TRUE	/	FALSE	0	name14	could-be-large-14
 attack.invalid	TRUE	/	FALSE	0	name15	could-be-large-15
 attack.invalid	TRUE	/	FALSE	0	name16	could-be-large-16
 attack.invalid	TRUE	/	FALSE	0	name17	could-be-large-17
 attack.invalid	TRUE	/	FALSE	0	name18	could-be-large-18
 attack.invalid	TRUE	/	FALSE	0	name19	could-be-large-19
 attack.invalid	TRUE	/	FALSE	0	name20	could-be-large-20
 attack.invalid	TRUE	/	FALSE	0	name21	could-be-large-21
 attack.invalid	TRUE	/	FALSE	0	name22	could-be-large-22
 attack.invalid	TRUE	/	FALSE	0	name23	could-be-large-23
 attack.invalid	TRUE	/	FALSE	0	name24	could-be-large-24
 attack.invalid	TRUE	/	FALSE	0	name25	could-be-large-25
 attack.invalid	TRUE	/	FALSE	0	name26	could-be-large-26
 attack.invalid	TRUE	/	FALSE	0	name27	could-be-large-27
 attack.invalid	TRUE	/	FALSE	0	name28	could-be-large-28
 attack.invalid	TRUE	/	FALSE	0	name29	could-be-large-29
 attack.invalid	TRUE	/	FALSE	0	name30	could-be-large-30
 attack.invalid	TRUE	/	FALSE	0	name31	could-be-large-31
 attack.invalid	TRUE	/	FALSE	0	name32	could-be-large-32
 attack.invalid	TRUE	/	FALSE	0	name33	could-be-large-33
 attack.invalid	TRUE	/	FALSE	0	name34	could-be-large-34
 attack.invalid	TRUE	/	FALSE	0	name35	could-be-large-35
 attack.invalid	TRUE	/	FALSE	0	name36	could-be-large-36
 attack.invalid	TRUE	/	FALSE	0	name37	could-be-large-37
 attack.invalid	TRUE	/	FALSE	0	name38	could-be-large-38
 attack.invalid	TRUE	/	FALSE	0	name39	could-be-large-39
 attack.invalid	TRUE	/	FALSE	0	name40	could-be-large-40
 attack.invalid	TRUE	/	FALSE	0	name41	could-be-large-41
 attack.invalid	TRUE	/	FALSE	0	name42	could-be-large-42
 attack.invalid	TRUE	/	FALSE	0	name43	could-be-large-43
 attack.invalid	TRUE	/	FALSE	0	name44	could-be-large-44
 attack.invalid	TRUE	/	FALSE	0	name45	could-be-large-45
 attack.invalid	TRUE	/	FALSE	0	name46	could-be-large-46
 attack.invalid	TRUE	/	FALSE	0	name47	could-be-large-47
 attack.invalid	TRUE	/	FALSE	0	name48	could-be-large-48
 attack.invalid	TRUE	/	FALSE	0	name49	could-be-large-49
 attack.invalid	TRUE	/	FALSE	0	name50	could-be-large-50
 attack.invalid	TRUE	/	FALSE	0	name51	could-be-large-51
 attack.invalid	TRUE	/	FALSE	0	name52	could-be-large-52
 attack.invalid	TRUE	/	FALSE	0	name53	could-be-large-53
 attack.invalid	TRUE	/	FALSE	0	name54	could-be-large-54
 attack.invalid	TRUE	/	FALSE	0	name55	could-be-large-55
 attack.invalid	TRUE	/	FALSE	0	name56	could-be-large-56
 attack.invalid	TRUE	/	FALSE	0	name57	could-be-large-57
 attack.invalid	TRUE	/	FALSE	0	name58	could-be-large-58
 attack.invalid	TRUE	/	FALSE	0	name59	could-be-large-59
 attack.invalid	TRUE	/	FALSE	0	name60	could-be-large-60
 attack.invalid	TRUE	/	FALSE	0	name61	could-be-large-61
 attack.invalid	TRUE	/	FALSE	0	name62	could-be-large-62
 attack.invalid	TRUE	/	FALSE	0	name63	could-be-large-63
 attack.invalid	TRUE	/	FALSE	0	name64	could-be-large-64
 attack.invalid	TRUE	/	FALSE	0	name65	could-be-large-65
 attack.invalid	TRUE	/	FALSE	0	name66	could-be-large-66
 attack.invalid	TRUE	/	FALSE	0	name67	could-be-large-67
 attack.invalid	TRUE	/	FALSE	0	name68	could-be-large-68
 attack.invalid	TRUE	/	FALSE	0	name69	could-be-large-69
 attack.invalid	TRUE	/	FALSE	0	name70	could-be-large-70
 attack.invalid	TRUE	/	FALSE	0	name71	could-be-large-71
 attack.invalid	TRUE	/	FALSE	0	name72	could-be-large-72
 attack.invalid	TRUE	/	FALSE	0	name73	could-be-large-73
 attack.invalid	TRUE	/	FALSE	0	name74	could-be-large-74
 attack.invalid	TRUE	/	FALSE	0	name75	could-be-large-75
 attack.invalid	TRUE	/	FALSE	0	name76	could-be-large-76
 attack.invalid	TRUE	/	FALSE	0	name77	could-be-large-77
 attack.invalid	TRUE	/	FALSE	0	name78	could-be-large-78
 attack.invalid	TRUE	/	FALSE	0	name79	could-be-large-79
 attack.invalid	TRUE	/	FALSE	0	name80	could-be-large-80
 attack.invalid	TRUE	/	FALSE	0	name81	could-be-large-81
 attack.invalid	TRUE	/	FALSE	0	name82	could-be-large-82
 attack.invalid	TRUE	/	FALSE	0	name83	could-be-large-83
 attack.invalid	TRUE	/	FALSE	0	name84	could-be-large-84
 attack.invalid	TRUE	/	FALSE	0	name85	could-be-large-85
 attack.invalid	TRUE	/	FALSE	0	name86	could-be-large-86
 attack.invalid	TRUE	/	FALSE	0	name87	could-be-large-87
 attack.invalid	TRUE	/	FALSE	0	name88	could-be-large-88
 attack.invalid	TRUE	/	FALSE	0	name89	could-be-large-89
 attack.invalid	TRUE	/	FALSE	0	name90	could-be-large-90
 attack.invalid	TRUE	/	FALSE	0	name91	could-be-large-91
 attack.invalid	TRUE	/	FALSE	0	name92	could-be-large-92
 attack.invalid	TRUE	/	FALSE	0	name93	could-be-large-93
 attack.invalid	TRUE	/	FALSE	0	name94	could-be-large-94
 attack.invalid	TRUE	/	FALSE	0	name95	could-be-large-95
 attack.invalid	TRUE	/	FALSE	0	name96	could-be-large-96
 attack.invalid	TRUE	/	FALSE	0	name97	could-be-large-97
 attack.invalid	TRUE	/	FALSE	0	name98	could-be-large-98
 attack.invalid	TRUE	/	FALSE	0	name99	could-be-large-99
 attack.invalid	TRUE	/	FALSE	0	name100	could-be-large-100
 attack.invalid	TRUE	/	FALSE	0	name101	could-be-large-101
 attack.invalid	TRUE	/	FALSE	0	name102	could-be-large-102
 attack.invalid	TRUE	/	FALSE	0	name103	could-be-large-103
 attack.invalid	TRUE	/	FALSE	0	name104	could-be-large-104
 attack.invalid	TRUE	/	FALSE	0	name105	could-be-large-105
 attack.invalid	TRUE	/	FALSE	0	name106	could-be-large-106
 attack.invalid	TRUE	/	FALSE	0	name107	could-be-large-107
 attack.invalid	TRUE	/	FALSE	0	name108	could-be-large-108
 attack.invalid	TRUE	/	FALSE	0	name109	could-be-large-109
 attack.invalid	TRUE	/	FALSE	0	name110	could-be-large-110
 attack.invalid	TRUE	/	FALSE	0	name111	could-be-large-111
 attack.invalid	TRUE	/	FALSE	0	name112	could-be-large-112
 attack.invalid	TRUE	/	FALSE	0	name113	could-be-large-113
 attack.invalid	TRUE	/	FALSE	0	name114	could-be-large-114
 attack.invalid	TRUE	/	FALSE	0	name115	could-be-large-115
 attack.invalid	TRUE	/	FALSE	0	name116	could-be-large-116
 attack.invalid	TRUE	/	FALSE	0	name117	could-be-large-117
 attack.invalid	TRUE	/	FALSE	0	name118	could-be-large-118
 attack.invalid	TRUE	/	FALSE	0	name119	could-be-large-119
 attack.invalid	TRUE	/	FALSE	0	name120	could-be-large-120
 attack.invalid	TRUE	/	FALSE	0	name121	could-be-large-121
 attack.invalid	TRUE	/	FALSE	0	name122	could-be-large-122
 attack.invalid	TRUE	/	FALSE	0	name123	could-be-large-123
 attack.invalid	TRUE	/	FALSE	0	name124	could-be-large-124
 attack.invalid	TRUE	/	FALSE	0	name125	could-be-large-125
 attack.invalid	TRUE	/	FALSE	0	name126	could-be-large-126
 attack.invalid	TRUE	/	FALSE	0	name127	could-be-large-127
 attack.invalid	TRUE	/	FALSE	0	name128	could-be-large-128
 attack.invalid	TRUE	/	FALSE	0	name129	could-be-large-129
 attack.invalid	TRUE	/	FALSE	0	name130	could-be-large-130
 attack.invalid	TRUE	/	FALSE	0	name131	could-be-large-131
 attack.invalid	TRUE	/	FALSE	0	name132	could-be-large-132
 attack.invalid	TRUE	/	FALSE	0	name133	could-be-large-133
 attack.invalid	TRUE	/	FALSE	0	name134	could-be-large-134
 attack.invalid	TRUE	/	FALSE	0	name135	could-be-large-135
 attack.invalid	TRUE	/	FALSE	0	name136	could-be-large-136
 attack.invalid	TRUE	/	FALSE	0	name137	could-be-large-137
 attack.invalid	TRUE	/	FALSE	0	name138	could-be-large-138
 attack.invalid	TRUE	/	FALSE	0	name139	could-be-large-139
 attack.invalid	TRUE	/	FALSE	0	name140	could-be-large-140
 attack.iCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind450 ../src/curl -q --output log/5/curl450.out  --include --trace-ascii log/5/trace450 --trace-time http://127.0.0.1:37089/450 --variable what@log/5/junk --expand-data "{{what:trim:url}}" > log/5/stdout450 2> log/5/stderr450
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind443 ../src/curl -q --output log/15/curl443.out  --include --trace-ascii log/15/trace443 --trace-time http://attack.invalid:40321/a/b/443 -b log/15/cookie443 --resolve attack.invalid:40321:127.0.0.1 -L > log/15/stdout443 2> log/15/stderr443
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind451 ../src/curl -q --output log/21/curl451.out  --include --trace-ascii log/21/trace451 --trace-time http://127.0.0.1:39881/451 --variable what@log/21/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/21/stdout451 2> log/21/stderr451
nvalid	TRUE	/	FALSE	0	name141	could-be-large-141
 attack.invalid	TRUE	/	FALSE	0	name142	could-be-large-142
 attack.invalid	TRUE	/	FALSE	0	name143	could-be-large-143
 attack.invalid	TRUE	/	FALSE	0	name144	could-be-large-144
 attack.invalid	TRUE	/	FALSE	0	name145	could-be-large-145
 attack.invalid	TRUE	/	FALSE	0	name146	could-be-large-146
 attack.invalid	TRUE	/	FALSE	0	name147	could-be-large-147
 attack.invalid	TRUE	/	FALSE	0	name148	could-be-large-148
 attack.invalid	TRUE	/	FALSE	0	name149	could-be-large-149
 attack.invalid	TRUE	/	FALSE	0	name150	could-be-large-150
 attack.invalid	TRUE	/	FALSE	0	name151	could-be-large-151
=== End of file cookie442
=== Start of file http_server.log
 19:26:49.468927 ====> Client connect
 19:26:49.468970 accept_connection 3 returned 4
 19:26:49.468996 Read 93 bytes
 19:26:49.469007 Process 93 bytes request
 19:26:49.469021 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.469030 Are-we-friendly question received
 19:26:49.469064 Wrote request (93 bytes) input to log/3/server.input
 19:26:49.469084 Identifying ourselves as friends
 19:26:49.469159 Response sent (56 bytes) and written to log/3/server.response
 19:26:49.469171 special request received, no persistency
 19:26:49.469180 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 56888 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 442
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind442
 ==103896== 
 ==103896== Process terminating with default action of signal 4 (SIGILL)
 ==103896==  Illegal opcode at address 0x492B75F
 ==103896==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103896==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103896==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103896==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103896==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103896==    by 0x49908EB: curl_version_info (version.c:600)
 ==103896==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103896==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103896==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103896==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind442
test 0450 [Variable from file that is trimmed and URL encoded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind450 ../src/curl -q --output log/5/curl450.out  --include --trace-ascii log/5/trace450 --trace-time http://127.0.0.1:37089/450 --variable what@log/5/junk --expand-data "{{what:trim:url}}" > log/5/stdout450 2> log/5/stderr450

 450: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 450
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind450 ../src/curl -q --output log/5/curl450.out  --include --trace-ascii log/5/trace450 --trace-time http://127.0.0.1:37089/450 --variable what@log/5/junk --expand-data "{{what:trim:url}}" > log/5/stdout450 2> log/5/stderr450
=== End of file commands.log
=== Start of file http_server.log
 19:26:48.973970 ====> Client connect
 19:26:48.974018 accept_connection 3 returned 4
 19:26:48.974170 Read 93 bytes
 19:26:48.974185 Process 93 bytes request
 19:26:48.974199 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.974207 Are-we-friendly question received
 19:26:48.974241 Wrote request (93 bytes) input to log/5/server.input
 19:26:48.974258 Identifying ourselves as friends
 19:26:48.974351 Response sent (56 bytes) and written to log/5/server.response
 19:26:48.974361 special request received, no persistency
 19:26:48.974369 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 35802 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file junk
         space with space
=== End of file junk
=== Start of file server.cmd
 Testnum 450
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind450
 ==104166== 
 ==104166== Process terminating with default action of signal 4 (SIGILL)
 ==104166==  Illegal opcode at address 0x492B75F
 ==104166==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104166==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104166==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104166==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104166==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104166==    by 0x49908EB: curl_version_info (version.c:600)
 ==104166==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104166==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind450
test 0443 [Cookie header in request no longer than 8K]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind443 ../src/curl -q --output log/15/curl443.out  --include --trace-ascii log/15/trace443 --trace-time http://attack.invalid:40321/a/b/443 -b log/15/cookie443 --resolve attack.invalid:40321:127.0.0.1 -L > log/15/stdout443 2> log/15/stderr443

 443: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 443
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind443 ../src/curl -q --output log/15/curl443.out  --include --trace-ascii log/15/trace443 --trace-time http://attack.invalid:40321/a/b/443 -b log/15/cookie443 --resolve attack.invalid:40321:127.0.0.1 -L > log/15/stdout443 2> log/15/stderr443
=== End of file commands.log
=== Start of file cookie443
 attack.invalid	TRUE	/	FALSE	0	huge-1	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1
 attack.invalid	TRUE	/	FALSE	0	huge-2	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-2
 attack.invalid	TRUE	/	FALSE	0	huge-3	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3
 attack.invalid	TRUE	/	FALSE	0	huge-4	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4
 attack.invalid	TRUE	/	FALSE	0	huge-5	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5
 attack.invalid	TRUE	/	FALSE	0	huge-6	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6
 attack.invalid	TRUE	/	FALSE	0	huge-7	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7
 attack.invalid	TRUE	/	FALSE	0	huge-8	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8
 attack.invalid	TRUE	/	FALSE	0	huge-9	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9
 attack.invalid	TRUE	/	FALSE	0	huge-10	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10
 attack.invalid	TRUE	/	FALSE	0	huge-11	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11
 attack.invalid	TRUE	/	FALSE	0	huge-12	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12
 attack.invalid	TRUE	/	FALSE	0	huge-13	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13
 attack.invalid	TRUE	/	FALSE	0	huge-14	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14
 attack.invalid	TRUE	/	FALSE	0	huge-15	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15
 attack.invalid	TRUE	/	FALSE	0	huge-16	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16
 attack.invalid	TRUE	/	FALSE	0	huge-17	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind449 ../src/curl -q --output log/8/curl449.out  --include --trace-ascii log/8/trace449 --trace-time http://127.0.0.1:44467/449 -K log/8/cmd > log/8/stdout449 2> log/8/stderr449
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17
 attack.invalid	TRUE	/	FALSE	0	huge-18	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18
 attack.invalid	TRUE	/	FALSE	0	huge-19	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19
 attack.invalid	TRUE	/	FALSE	0	huge-20	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20
=== End of file cookie443
=== Start of file http_server.log
 19:26:49.636278 ====> Client connect
 19:26:49.636318 accept_connection 3 returned 4
 19:26:49.636341 Read 93 bytes
 19:26:49.636350 Process 93 bytes request
 19:26:49.636363 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.636371 Are-we-friendly question received
 19:26:49.636396 Wrote request (93 bytes) input to log/15/server.input
 19:26:49.636411 Identifying ourselves as friends
 19:26:49.636485 Response sent (56 bytes) and written to log/15/server.response
 19:26:49.636493 special request received, no persistency
 19:26:49.636501 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 42172 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 443
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind443
 ==103961== 
 ==103961== Process terminating with default action of signal 4 (SIGILL)
 ==103961==  Illegal opcode at address 0x492B75F
 ==103961==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==103961==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==103961==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==103961==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==103961==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==103961==    by 0x49908EB: curl_version_info (version.c:600)
 ==103961==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==103961==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==103961==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==103961==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind443
test 0451 [Variable from file that is JSON and URL encoded (with NUL byte)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind451 ../src/curl -q --output log/21/curl451.out  --include --trace-ascii log/21/trace451 --trace-time http://127.0.0.1:39881/451 --variable what@log/21/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/21/stdout451 2> log/21/stderr451

 451: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 451
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind451 ../src/curl -q --output log/21/curl451.out  --include --trace-ascii log/21/trace451 --trace-time http://127.0.0.1:39881/451 --variable what@log/21/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/21/stdout451 2> log/21/stderr451
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.062220 ====> Client connect
 19:26:49.062261 accept_connection 3 returned 4
 19:26:49.062289 Read 93 bytes
 19:26:49.062301 Process 93 bytes request
 19:26:49.062324 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.062333 Are-we-friendly question received
 19:26:49.062363 Wrote request (93 bytes) input to log/21/server.input
 19:26:49.062381 Identifying ourselves as friends
 19:26:49.062478 Response sent (56 bytes) and written to log/21/server.response
 19:26:49.062492 special request received, no persistency
 19:26:49.062501 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 44050 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file junk
  
=== End of file junk
=== Start of file server.cmd
 Testnum 451
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind451
 ==104279== 
 ==104279== Process terminating with default action of signal 4 (SIGILL)
 ==104279==  Illegal opcode at address 0x492B75F
 ==104279==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104279==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104279==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104279==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104279==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104279==    by 0x49908EB: curl_version_info (version.c:600)
 ==104279==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104279==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104279==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104279==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind451
setenv FUNVALUE = contents
setenv VALUE2 = curl
setenv BLANK = 
test 0449 [Environment variables in config file w/o [expand]]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind449 ../src/curl -q --output log/8/curl449.out  --include --trace-ascii log/8/trace449 --trace-time http://127.0.0.1:44467/449 -K log/8/cmd > log/8/stdout449 2> log/8/stderr449

 449: protocol FAILED!
 There was no contentCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind454 ../src/curl -q --output log/11/curl454.out  --include --trace-ascii log/11/trace454 --trace-time http://127.0.0.1:40989/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/11/stdout454 2> log/11/stderr454
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind448 ../src/curl -q --output log/2/curl448.out  --include --trace-ascii log/2/trace448 --trace-time http://127.0.0.1:34531/448 -K log/2/cmd > log/2/stdout448 2> log/2/stderr448
 at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 449
=== Start of file cmd
 -d 1{{FUNVALUE}}2{{VALUE2}}3{{CURL_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}}
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind449 ../src/curl -q --output log/8/curl449.out  --include --trace-ascii log/8/trace449 --trace-time http://127.0.0.1:44467/449 -K log/8/cmd > log/8/stdout449 2> log/8/stderr449
=== End of file commands.log
=== Start of file http_server.log
 19:26:48.898900 ====> Client connect
 19:26:48.932181 accept_connection 3 returned 4
 19:26:48.932224 Read 93 bytes
 19:26:48.932234 Process 93 bytes request
 19:26:48.932247 Got request: GET /verifiedserver HTTP/1.1
 19:26:48.932255 Are-we-friendly question received
 19:26:48.932290 Wrote request (93 bytes) input to log/8/server.input
 19:26:48.932306 Identifying ourselves as friends
 19:26:48.932400 Response sent (56 bytes) and written to log/8/server.response
 19:26:48.932409 special request received, no persistency
 19:26:48.932417 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 35792 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 449
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind449
 ==104147== 
 ==104147== Process terminating with default action of signal 4 (SIGILL)
 ==104147==  Illegal opcode at address 0x492B75F
 ==104147==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104147==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104147==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104147==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104147==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104147==    by 0x49908EB: curl_version_info (version.c:600)
 ==104147==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104147==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104147==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104147==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind449
test 0454 [Variable using illegal function separator]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind454 ../src/curl -q --output log/11/curl454.out  --include --trace-ascii log/11/trace454 --trace-time http://127.0.0.1:40989/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/11/stdout454 2> log/11/stderr454

curl returned 132, when expecting 2
 454: exit FAILED
== Contents of files in the log/11/ directory after test 454
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind454 ../src/curl -q --output log/11/curl454.out  --include --trace-ascii log/11/trace454 --trace-time http://127.0.0.1:40989/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/11/stdout454 2> log/11/stderr454
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.262309 ====> Client connect
 19:26:49.262362 accept_connection 3 returned 4
 19:26:49.262392 Read 93 bytes
 19:26:49.262403 Process 93 bytes request
 19:26:49.262417 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.262426 Are-we-friendly question received
 19:26:49.262454 Wrote request (93 bytes) input to log/11/server.input
 19:26:49.262472 Identifying ourselves as friends
 19:26:49.262568 Response sent (56 bytes) and written to log/11/server.response
 19:26:49.262579 special request received, no persistency
 19:26:49.262587 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 53298 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 454
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind454
 ==104498== 
 ==104498== Process terminating with default action of signal 4 (SIGILL)
 ==104498==  Illegal opcode at address 0x492B75F
 ==104498==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104498==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104498==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104498==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104498==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104498==    by 0x49908EB: curl_version_info (version.c:600)
 ==104498==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104498==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104498==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104498==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind454
setenv FUNVALUE = contents
setenv VALUE2 = curl
test 0448 [Environment variables within config file, unbalanced braces]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind448 ../src/curl -q --output log/2/curl448.out  --include --trace-ascii log/2/trace448 --trace-time http://127.0.0.1:34531/448 -K log/2/cmd > log/2/stdout448 2> log/2/stderr448

 448: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 448
=== Start of file cmd
 --variable %FUNVALUE
 --variable %VALUE2
 --expand-data 1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}}5{{broken
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind448 ../src/curl -q --output log/2/curl448.out  --include --trace-ascii log/2/trace448 --trace-time http://127.0.0.1:34531/448 -K log/2/cmd > log/2/stdout448 2> log/2/stderr448
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.838852 ====> Client connect
 19:26:49.838893 accept_connection 3 returned 4
 19:26:49.838918 Read 93 bytes
 19:26:49.838928 Process 93 bytes request
 19:26:49.838942 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.838951 Are-we-friendly question received
 19:26:49.838979 Wrote request (93 bytes) input to log/2/server.input
 19:26:49.838996 Identifying ourselves as friends
 19:26:49.839097 Response sent (56 bytes) and written to log/2/server.response
 19:26:49.839110 special request received, no persistency
 19:26:49.839119 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind453 ../src/curl -q --output log/17/curl453.out  --include --trace-ascii log/17/trace453 --trace-time http://127.0.0.1:35993/453 --variable what@log/17/junk --expand-data "{{what}}" > log/17/stdout453 2> log/17/stderr453
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind455 ../src/curl -q --output log/16/curl455.out  --include --trace-ascii log/16/trace455 --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:35903/{{moby:b64}}/{{what:64dec}}/455" > log/16/stdout455 2> log/16/stderr455
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind452 ../src/curl -q --output log/9/curl452.out  --include --trace-ascii log/9/trace452 --trace-time http://127.0.0.1:43733/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/9/stdout452 2> log/9/stderr452
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 35522 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 448
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind448
 ==104148== 
 ==104148== Process terminating with default action of signal 4 (SIGILL)
 ==104148==  Illegal opcode at address 0x492B75F
 ==104148==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104148==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104148==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104148==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104148==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104148==    by 0x49908EB: curl_version_info (version.c:600)
 ==104148==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104148==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104148==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104148==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind448
test 0455 [Variable using base64]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind455 ../src/curl -q --output log/16/curl455.out  --include --trace-ascii log/16/trace455 --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:35903/{{moby:b64}}/{{what:64dec}}/455" > log/16/stdout455 2> log/16/stderr455

 455: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 455
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind455 ../src/curl -q --output log/16/curl455.out  --include --trace-ascii log/16/trace455 --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:35903/{{moby:b64}}/{{what:64dec}}/455" > log/16/stdout455 2> log/16/stderr455
=== End of file commands.log
=== Start of file http_server.log
 19:26:50.415643 ====> Client connect
 19:26:50.415680 accept_connection 3 returned 4
 19:26:50.415703 Read 93 bytes
 19:26:50.415713 Process 93 bytes request
 19:26:50.415726 Got request: GET /verifiedserver HTTP/1.1
 19:26:50.415734 Are-we-friendly question received
 19:26:50.415760 Wrote request (93 bytes) input to log/16/server.input
 19:26:50.415777 Identifying ourselves as friends
 19:26:50.415852 Response sent (56 bytes) and written to log/16/server.response
 19:26:50.415861 special request received, no persistency
 19:26:50.415869 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43562 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 455
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind455
 ==104593== 
 ==104593== Process terminating with default action of signal 4 (SIGILL)
 ==104593==  Illegal opcode at address 0x492B75F
 ==104593==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104593==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104593==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104593==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104593==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104593==    by 0x49908EB: curl_version_info (version.c:600)
 ==104593==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104593==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104593==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104593==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind455
test 0453 [Variable output containing NUL byte]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind453 ../src/curl -q --output log/17/curl453.out  --include --trace-ascii log/17/trace453 --trace-time http://127.0.0.1:35993/453 --variable what@log/17/junk --expand-data "{{what}}" > log/17/stdout453 2> log/17/stderr453

curl returned 132, when expecting 2
 453: exit FAILED
== Contents of files in the log/17/ directory after test 453
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind453 ../src/curl -q --output log/17/curl453.out  --include --trace-ascii log/17/trace453 --trace-time http://127.0.0.1:35993/453 --variable what@log/17/junk --expand-data "{{what}}" > log/17/stdout453 2> log/17/stderr453
=== End of file commands.log
=== Start of file http_server.log
 19:26:50.148928 ====> Client connect
 19:26:50.148967 accept_connection 3 returned 4
 19:26:50.149155 Read 93 bytes
 19:26:50.149169 Process 93 bytes request
 19:26:50.149181 Got request: GET /verifiedserver HTTP/1.1
 19:26:50.149189 Are-we-friendly question received
 19:26:50.149220 Wrote request (93 bytes) input to log/17/server.input
 19:26:50.149236 Identifying ourselves as friends
 19:26:50.149293 Response sent (56 bytes) and written to log/17/server.response
 19:26:50.149302 special request received, no persistency
 19:26:50.149310 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 34426 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file junk
  
=== End of file junk
=== Start of file server.cmd
 Testnum 453
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind453
 ==104395== 
 ==104395== Process terminating with default action of signal 4 (SIGILL)
 ==104395==  Illegal opcode at address 0x492B75F
 ==104395==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104395==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104395==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104395==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104395==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104395==    by 0x49908EB: curl_version_info (version.c:600)
 ==104395==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104395==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104395==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104395==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind453
test 0452 [Variable using illegal fCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind456 ../src/curl -q --output log/7/curl456.out  --include --trace-ascii log/7/trace456 --trace-time http://127.0.0.1:40859/456 --variable what@log/7/junk --expand-data "{{what}}" > log/7/stdout456 2> log/7/stderr456
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind457 ../src/curl -q --output log/20/curl457.out  --include --trace-ascii log/20/trace457 --trace-time http://127.0.0.1:33897/457 --max-filesize 143 > log/20/stdout457 2> log/20/stderr457
unction in expansion]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind452 ../src/curl -q --output log/9/curl452.out  --include --trace-ascii log/9/trace452 --trace-time http://127.0.0.1:43733/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/9/stdout452 2> log/9/stderr452

curl returned 132, when expecting 2
 452: exit FAILED
== Contents of files in the log/9/ directory after test 452
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind452 ../src/curl -q --output log/9/curl452.out  --include --trace-ascii log/9/trace452 --trace-time http://127.0.0.1:43733/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/9/stdout452 2> log/9/stderr452
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.114104 ====> Client connect
 19:26:49.114140 accept_connection 3 returned 4
 19:26:49.114163 Read 93 bytes
 19:26:49.114173 Process 93 bytes request
 19:26:49.114185 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.114194 Are-we-friendly question received
 19:26:49.114222 Wrote request (93 bytes) input to log/9/server.input
 19:26:49.114237 Identifying ourselves as friends
 19:26:49.114299 Response sent (56 bytes) and written to log/9/server.response
 19:26:49.114308 special request received, no persistency
 19:26:49.114316 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34990 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 452
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind452
 ==104344== 
 ==104344== Process terminating with default action of signal 4 (SIGILL)
 ==104344==  Illegal opcode at address 0x492B75F
 ==104344==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104344==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104344==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104344==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104344==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104344==    by 0x49908EB: curl_version_info (version.c:600)
 ==104344==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104344==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104344==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104344==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind452
test 0456 [Variable output starting with NUL byte]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind456 ../src/curl -q --output log/7/curl456.out  --include --trace-ascii log/7/trace456 --trace-time http://127.0.0.1:40859/456 --variable what@log/7/junk --expand-data "{{what}}" > log/7/stdout456 2> log/7/stderr456

curl returned 132, when expecting 2
 456: exit FAILED
== Contents of files in the log/7/ directory after test 456
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind456 ../src/curl -q --output log/7/curl456.out  --include --trace-ascii log/7/trace456 --trace-time http://127.0.0.1:40859/456 --variable what@log/7/junk --expand-data "{{what}}" > log/7/stdout456 2> log/7/stderr456
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.652080 ====> Client connect
 19:26:49.652120 accept_connection 3 returned 4
 19:26:49.652145 Read 93 bytes
 19:26:49.652155 Process 93 bytes request
 19:26:49.652169 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.652177 Are-we-friendly question received
 19:26:49.652205 Wrote request (93 bytes) input to log/7/server.input
 19:26:49.652222 Identifying ourselves as friends
 19:26:49.652302 Response sent (56 bytes) and written to log/7/server.response
 19:26:49.652312 special request received, no persistency
 19:26:49.652320 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39340 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file junk
  hello
=== End of file junk
=== Start of file server.cmd
 Testnum 456
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind456
 ==104681== 
 ==104681== Process terminating with default action of signal 4 (SIGILL)
 ==104681==  Illegal opcode at address 0x492B75F
 ==104681==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104681==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104681==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104681==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104681==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104681==    by 0x49908EB: curl_version_info (version.c:600)
 ==104681==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104681==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104681==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104681==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind456
test 0457 [chunked Transfer-Encoding with --max-filesize]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind457 ../src/curl -q --output log/20/curl457.out  --include --trace-ascii log/20/trace457 --trace-time http://127.0.0.1:33897/457 --max-filesize 143 > log/20/stdout457 2> log/20/stderr457

 457: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 457
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind457 ../src/curl -q --output log/20/curl457.out  --include --trace-ascii log/20/trace457 --trace-time http://127.0.0.1:33897/457 --max-filesize 143 > log/20/stdout457 2> log/20/stderr457
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.741840 ====> Client connect
 19:26:49.741880 accept_connection 3 returned 4
 19:26:49.741903 Read 93 bytes
 19:26:49.741913 Process 93 bytes request
 19:26:49.741927 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.741935 Are-we-friendly question received
 19:26:49.741963 Wrote request (93 bytes) input to log/20/server.input
 19:26:49.741980 Identifying ourselves as friends
 19:26:49.742043 Response sent (56 bytes) and written to log/20/server.response
 19:26:49.742053 special request received, no persistency
 19:26:49.742061 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind462 ../src/curl -q --output log/12/curl462.out  --include --trace-ascii log/12/trace462 --trace-time http://127.0.0.1:40921/462 -K log/12/cmd > log/12/stdout462 2> log/12/stderr462
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind459 ../src/curl -q --output log/18/curl459.out  --include --trace-ascii log/18/trace459 --trace-time http://127.0.0.1:43739/459 --config log/18/config --silent > log/18/stdout459 2> log/18/stderr459
.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 40118 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 457
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind457
 ==104720== 
 ==104720== Process terminating with default action of signal 4 (SIGILL)
 ==104720==  Illegal opcode at address 0x492B75F
 ==104720==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104720==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104720==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104720==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104720==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104720==    by 0x49908EB: curl_version_info (version.c:600)
 ==104720==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104720==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104720==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104720==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind457
test 0462 [Missing environment variables in config file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind462 ../src/curl -q --output log/12/curl462.out  --include --trace-ascii log/12/trace462 --trace-time http://127.0.0.1:40921/462 -K log/12/cmd > log/12/stdout462 2> log/12/stderr462

curl returned 132, when expecting 2
 462: exit FAILED
== Contents of files in the log/12/ directory after test 462
=== Start of file cmd
 variable %MISSING
 expand-data {{MISSING}}
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind462 ../src/curl -q --output log/12/curl462.out  --include --trace-ascii log/12/trace462 --trace-time http://127.0.0.1:40921/462 -K log/12/cmd > log/12/stdout462 2> log/12/stderr462
=== End of file commands.log
=== Start of file server.cmd
 Testnum 462
=== End of file server.cmd
=== Start of file valgrind462
 ==104872== 
 ==104872== Process terminating with default action of signal 4 (SIGILL)
 ==104872==  Illegal opcode at address 0x492B75F
 ==104872==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104872==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104872==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104872==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104872==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104872==    by 0x49908EB: curl_version_info (version.c:600)
 ==104872==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104872==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104872==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104872==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind462
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind460 ../src/curl -q --output log/19/curl460.out  --include --trace-ascii log/19/trace460 --trace-time --expand-url > log/19/stdout460 2> log/19/stderr460
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind458 ../src/curl -q --include --trace-ascii log/24/trace458 --trace-time http://127.0.0.1:38895/458 -K log/24/cmd > log/24/stdout458 2> log/24/stderr458
setenv COLUMNS = 10000
test 0459 [config file with argument using whitespace missing quotes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind459 ../src/curl -q --output log/18/curl459.out  --include --trace-ascii log/18/trace459 --trace-time http://127.0.0.1:43739/459 --config log/18/config --silent > log/18/stdout459 2> log/18/stderr459

 459: stderr FAILED:
--- log/18/check-expected	2026-10-15 19:26:52.872687389 +0000
+++ log/18/check-generated	2026-10-15 19:26:52.870616530 +0000
@@ -1 +0,0 @@
-log/18/config:1 Option 'data' uses argument with unquoted whitespace. This may cause side-effects. Consider double quotes. 
== Contents of files in the log/18/ directory after test 459
=== Start of file check-expected
 log/18/config:1 Option 'data' uses argument with unquoted whitespace. This may cause side-effects. Consider double quotes. 
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind459 ../src/curl -q --output log/18/curl459.out  --include --trace-ascii log/18/trace459 --trace-time http://127.0.0.1:43739/459 --config log/18/config --silent > log/18/stdout459 2> log/18/stderr459
=== End of file commands.log
=== Start of file config
 data = arg with space
=== End of file config
=== Start of file http_server.log
 19:26:50.935767 ====> Client connect
 19:26:50.935817 accept_connection 3 returned 4
 19:26:50.935846 Read 93 bytes
 19:26:50.935857 Process 93 bytes request
 19:26:50.935962 Got request: GET /verifiedserver HTTP/1.1
 19:26:50.935976 Are-we-friendly question received
 19:26:50.936020 Wrote request (93 bytes) input to log/18/server.input
 19:26:50.936039 Identifying ourselves as friends
 19:26:50.936130 Response sent (56 bytes) and written to log/18/server.response
 19:26:50.936142 special request received, no persistency
 19:26:50.936151 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45924 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 459
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind459
 ==104873== 
 ==104873== Process terminating with default action of signal 4 (SIGILL)
 ==104873==  Illegal opcode at address 0x492B75F
 ==104873==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104873==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104873==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104873==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104873==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104873==    by 0x49908EB: curl_version_info (version.c:600)
 ==104873==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104873==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104873==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104873==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind459
test 0460 [try --expand without an argument]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind460 ../src/curl -q --output log/19/curl460.out  --include --trace-ascii log/19/trace460 --trace-time --expand-url > log/19/stdout460 2> log/19/stderr460

curl returned 132, when expecting 2
 460: exit FAILED
== Contents of files in the log/19/ directory after test 460
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind460 ../src/curl -q --output log/19/curl460.out  --include --trace-ascii log/19/trace460 --trace-time --expand-url > log/19/stdout460 2> log/19/stderr460
=== End of file commands.log
=== Start of file server.cmd
 Testnum 460
=== End of file server.cmd
=== Start of file valgrind460
 ==104858== 
 ==104858== Process terminating with default action of signal 4 (SIGILL)
 ==104858==  Illegal opcode at address 0x492B75F
 ==104858==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104858==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104858==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104858==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104858==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104858==    by 0x49908EB: curl_version_info (version.c:600)
 ==104858==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104858==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104858==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104858==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind460
setenv FUNVALUE = contents458
setenv VALUE2 = curl
test 0458 [variable expand the filename with --expand-output]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind458 ../src/curl -q --include --trace-ascii log/24/trace458 --trace-time http://127.0.0.1:38895/458 -K log/24/cmd > log/24/stdout458 2> log/24/stderr458

 458: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 458
=== Start of file cmd
 --variable %FUNVALUE
 --expand-output log/24/{{FUNVALUE}}
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind458 ../src/curl -q --include --trace-ascii log/24/trace458 --trace-time http://127.0.0.1:38895/458 -K log/24/cmd > log/24/stdout458 2> log/24/stderr458
=== End of file commands.log
=== Start of file http_server.log
 19:26:49.865267 ====> Client connect
 19:26:49.865298 accept_connection 3 returned 4
 19:26:49.865318 Read 93 bytes
 19:26:49.865327 Process 93 bytes request
 19:26:49.865339 Got request: GET /verifiedserver HTTP/1.1
 19:26:49.865347 Are-we-friendly question received
 19:26:49.865370 Wrote request (93 bytes) input to log/24/server.input
 19:26:49.865385 Identifying ourselves as friends
 19:26:49.865441 Response sent (56 bytes) and written to log/24/server.response
 19:26:49.865449 special request received, no persistency
 19:26:49.865457 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 58662 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 458
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind458
 ==104800== 
 ==104800== Process terminating with default action of signal 4 (SIGILL)
 ==104800==  Illegal opcode at address 0x492B75F
 ==104800==    at 0x492B7CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind463 ../src/curl -q --output log/10/curl463.out  --include --trace-ascii log/10/trace463 --trace-time -d @log/10/input463 http://127.0.0.1:40913/463 > log/10/stdout463 2> log/10/stderr463
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind461 ../src/curl -q --output log/6/curl461.out  --include --trace-ascii log/6/trace461 --trace-time http://127.0.0.1:33935/461 -H host: > log/6/stdout461 2> log/6/stderr461
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind467 ../src/curl -q --output log/13/curl467.out  --include --trace-ascii log/13/trace467 --trace-time curl -v http://example.com > log/13/stdout467 2> log/13/stderr467
5F: formatf.constprop.2 (mprintf.c:1115)
 ==104800==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104800==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104800==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104800==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104800==    by 0x49908EB: curl_version_info (version.c:600)
 ==104800==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104800==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104800==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104800==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind458
test 0463 [HTTP with -d @file with file containing CR, LF and NUL byte]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind463 ../src/curl -q --output log/10/curl463.out  --include --trace-ascii log/10/trace463 --trace-time -d @log/10/input463 http://127.0.0.1:40913/463 > log/10/stdout463 2> log/10/stderr463

 463: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 463
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind463 ../src/curl -q --output log/10/curl463.out  --include --trace-ascii log/10/trace463 --trace-time -d @log/10/input463 http://127.0.0.1:40913/463 > log/10/stdout463 2> log/10/stderr463
=== End of file commands.log
=== Start of file http_server.log
 19:26:50.223949 ====> Client connect
 19:26:50.223985 accept_connection 3 returned 4
 19:26:50.224006 Read 93 bytes
 19:26:50.224015 Process 93 bytes request
 19:26:50.224028 Got request: GET /verifiedserver HTTP/1.1
 19:26:50.224036 Are-we-friendly question received
 19:26:50.224063 Wrote request (93 bytes) input to log/10/server.input
 19:26:50.224079 Identifying ourselves as friends
 19:26:50.224142 Response sent (56 bytes) and written to log/10/server.response
 19:26:50.224151 special request received, no persistency
 19:26:50.224160 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56102 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file input463
 one
 two
 three
 four five
=== End of file input463
=== Start of file server.cmd
 Testnum 463
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind463
 ==105106== 
 ==105106== Process terminating with default action of signal 4 (SIGILL)
 ==105106==  Illegal opcode at address 0x492B75F
 ==105106==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105106==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105106==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105106==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105106==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105106==    by 0x49908EB: curl_version_info (version.c:600)
 ==105106==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105106==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105106==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105106==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind463
test 0461 [disable Host: when specified as lower case]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind461 ../src/curl -q --output log/6/curl461.out  --include --trace-ascii log/6/trace461 --trace-time http://127.0.0.1:33935/461 -H host: > log/6/stdout461 2> log/6/stderr461

 461: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 461
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind461 ../src/curl -q --output log/6/curl461.out  --include --trace-ascii log/6/trace461 --trace-time http://127.0.0.1:33935/461 -H host: > log/6/stdout461 2> log/6/stderr461
=== End of file commands.log
=== Start of file http_server.log
 19:26:50.052086 ====> Client connect
 19:26:50.052125 accept_connection 3 returned 4
 19:26:50.052150 Read 93 bytes
 19:26:50.052161 Process 93 bytes request
 19:26:50.052174 Got request: GET /verifiedserver HTTP/1.1
 19:26:50.052183 Are-we-friendly question received
 19:26:50.052215 Wrote request (93 bytes) input to log/6/server.input
 19:26:50.052235 Identifying ourselves as friends
 19:26:50.052314 Response sent (56 bytes) and written to log/6/server.response
 19:26:50.052327 special request received, no persistency
 19:26:50.052336 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 46260 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 461
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind461
 ==104981== 
 ==104981== Process terminating with default action of signal 4 (SIGILL)
 ==104981==  Illegal opcode at address 0x492B75F
 ==104981==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==104981==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==104981==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==104981==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==104981==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==104981==    by 0x49908EB: curl_version_info (version.c:600)
 ==104981==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==104981==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==104981==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==104981==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind461
test 0467 [non-existing short option letter (after one that exists)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind467 ../src/curl -q --output log/13/curl467.out  --include --trace-ascii log/13/trace467 --trace-time curl -v http://example.com > log/13/stdout467 2> log/13/stderr467

curl returned 132, when expecting 2
 467: exit FAILED
== Contents of files in the log/13/ directory after test 467
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind467 ../src/curl -q --output log/13/curl467.out  --include --trace-ascii log/13/trace467 --trace-time curl -v http://example.com > log/13/stdout467 2> log/13/stderr467
=== End of file commands.log
=== Start of file server.cmd
 Testnum 467
=== End of file server.cmd
=CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind468 ../src/curl -q --trace-ascii log/1/trace468 --trace-time http://127.0.0.1:38815/468 -K log/1/cmd468 -w "" > log/1/stdout468 2> log/1/stderr468
== Start of file valgrind467
 ==105159== 
 ==105159== Process terminating with default action of signal 4 (SIGILL)
 ==105159==  Illegal opcode at address 0x492B75F
 ==105159==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105159==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105159==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105159==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105159==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105159==    by 0x49908EB: curl_version_info (version.c:600)
 ==105159==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105159==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105159==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105159==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind467
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind470 ../src/curl -q --output log/23/curl470.out  --include --trace-ascii log/23/trace470 --trace-time 127.0.0.1:44711 --no-progress-meter -K "log/23/input470" > log/23/stdout470 2> log/23/stderr470
test 0468 [set -w in config, then reset -w to blank on cmdline]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind468 ../src/curl -q --trace-ascii log/1/trace468 --trace-time http://127.0.0.1:38815/468 -K log/1/cmd468 -w "" > log/1/stdout468 2> log/1/stderr468

 468: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:26:53.379990824 +0000
+++ log/1/check-generated	2026-10-15 19:26:53.377173287 +0000
@@ -1 +0,0 @@
--foo-[LF]
== Contents of files in the log/1/ directory after test 468
=== Start of file check-expected
 -foo-[LF]
=== End of file check-expected
=== Start of file cmd468
 -w "output\n"
=== End of file cmd468
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind468 ../src/curl -q --trace-ascii log/1/trace468 --trace-time http://127.0.0.1:38815/468 -K log/1/cmd468 -w "" > log/1/stdout468 2> log/1/stderr468
=== End of file commands.log
=== Start of file http_server.log
 19:26:51.409334 ====> Client connect
 19:26:51.409366 accept_connection 3 returned 4
 19:26:51.409385 Read 93 bytes
 19:26:51.409394 Process 93 bytes request
 19:26:51.409407 Got request: GET /verifiedserver HTTP/1.1
 19:26:51.409415 Are-we-friendly question received
 19:26:51.409440 Wrote request (93 bytes) input to log/1/server.input
 19:26:51.409454 Identifying ourselves as friends
 19:26:51.409510 Response sent (56 bytes) and written to log/1/server.response
 19:26:51.409519 special request received, no persistency
 19:26:51.409526 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 44294 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 468
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind468
 ==105212== 
 ==105212== Process terminating with default action of signal 4 (SIGILL)
 ==105212==  Illegal opcode at address 0x492B75F
 ==105212==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105212==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105212==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105212==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105212==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105212==    by 0x49908EB: curl_version_info (version.c:600)
 ==105212==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105212==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105212==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105212==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind468
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind469 ../src/curl -q --output log/4/curl469.out  --include --trace-ascii log/4/trace469 --trace-time -H “host: 127.0.0.1:35735/“ -s > log/4/stdout469 2> log/4/stderr469
test 0470 [warn about Unicode quote character read from config file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind470 ../src/curl -q --output log/23/curl470.out  --include --trace-ascii log/23/trace470 --trace-time 127.0.0.1:44711 --no-progress-meter -K "log/23/input470" > log/23/stdout470 2> log/23/stderr470

 470: stderr FAILED:
--- log/23/check-expected	2026-10-15 19:26:53.423856924 +0000
+++ log/23/check-generated	2026-10-15 19:26:53.420497230 +0000
@@ -1,2 +0,0 @@
-Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode character. Maybe [CR][LF]
-Warning: ASCII was intended?[CR][LF]
== Contents of files in the log/23/ directory after test 470
=== Start of file check-expected
 Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode character. Maybe [CR][LF]
 Warning: ASCII was intended?[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind470 ../src/curl -q --output log/23/curl470.out  --include --trace-ascii log/23/trace470 --trace-time 127.0.0.1:44711 --no-progress-meter -K "log/23/input470" > log/23/stdout470 2> log/23/stderr470
=== End of file commands.log
=== Start of file http_server.log
 19:26:50.595542 ====> Client connect
 19:26:50.595581 accept_connection 3 returned 4
 19:26:50.595606 Read 93 bytes
 19:26:50.595618 Process 93 bytes request
 19:26:50.595634 Got request: GET /verifiedserver HTTP/1.1
 19:26:50.595644 Are-we-friendly question received
 19:26:50.595675 Wrote request (93 bytes) input to log/23/server.input
 19:26:50.595694 Identifying ourselves as friends
 19:26:50.595763 Response sent (56 bytes) and written to log/23/server.response
 19:26:50.595775 special request received, no persistency
 19:26:50.595783 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 49002 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file input470
 -H “host:fake”
=== End of file input470
=== Start of file server.cmd
 Testnum 470
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind470
 ==105329== 
 ==105329== Process terminating with default action of signal 4 (SIGILL)
 ==105329==  Illegal opcode at address 0x492B75F
 ==105329==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105329==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105329==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105329==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105329==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105329==    by 0x49908EB: curl_version_info (version.c:600)
 ==105329==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105329==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105329==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105329==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind470
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind471 ../src/curl -q --include --trace-ascii log/14/trace471 --trace-time "http://127.0.0.1:45467/{471,4710001}" -o "log/14/dumpit#1.dump" > log/14/stdout471 2> log/14/stderr471
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind475 ../src/curl -q --output log/3/curl475.out  --include --trace-ascii log/3/trace475 --trace-time "ftp://127.0.0.1:42249/475;type=a" -T log/3/test475.txt > log/3/stdout475 2> log/3/stderr475
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind477 ../src/curl -q --output log/21/curl477.out  --include --trace-ascii log/21/trace477 --trace-time http://127.0.0.1:39881/477 --max-filesize 5 -L > log/21/stdout477 2> log/21/stderr477
test 0469 [warn about Unicode quote character]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind469 ../src/curl -q --output log/4/curl469.out  --include --trace-ascii log/4/trace469 --trace-time -H “host: 127.0.0.1:35735/“ -s > log/4/stdout469 2> log/4/stderr469

 469: stderr FAILED:
--- log/4/check-expected	2026-10-15 19:26:53.670271060 +0000
+++ log/4/check-generated	2026-10-15 19:26:53.667110441 +0000
@@ -1,2 +0,0 @@
-Warning: The argument '%e2%80%9chost:' starts with a Unicode character. Maybe ASCII [LF]
-Warning: was intended?[LF]
== Contents of files in the log/4/ directory after test 469
=== Start of file check-expected
 Warning: The argument '%e2%80%9chost:' starts with a Unicode character. Maybe ASCII [LF]
 Warning: was intended?[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind469 ../src/curl -q --output log/4/curl469.out  --include --trace-ascii log/4/trace469 --trace-time -H “host: 127.0.0.1:35735/“ -s > log/4/stdout469 2> log/4/stderr469
=== End of file commands.log
=== Start of file http_server.log
 19:26:51.602982 ====> Client connect
 19:26:51.603017 accept_connection 3 returned 4
 19:26:51.603038 Read 93 bytes
 19:26:51.603047 Process 93 bytes request
 19:26:51.603060 Got request: GET /verifiedserver HTTP/1.1
 19:26:51.603069 Are-we-friendly question received
 19:26:51.603097 Wrote request (93 bytes) input to log/4/server.input
 19:26:51.603113 Identifying ourselves as friends
 19:26:51.603173 Response sent (56 bytes) and written to log/4/server.response
 19:26:51.603182 special request received, no persistency
 19:26:51.603191 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 56062 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 469
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind469
 ==105327== 
 ==105327== Process terminating with default action of signal 4 (SIGILL)
 ==105327==  Illegal opcode at address 0x492B75F
 ==105327==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105327==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105327==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105327==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105327==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105327==    by 0x49908EB: curl_version_info (version.c:600)
 ==105327==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105327==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105327==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105327==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind469
test 0471 [Reject HTTP/1.1 to HTTP/2 switch on the same connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind471 ../src/curl -q --include --trace-ascii log/14/trace471 --trace-time "http://127.0.0.1:45467/{471,4710001}" -o "log/14/dumpit#1.dump" > log/14/stdout471 2> log/14/stderr471

 471: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 471
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind471 ../src/curl -q --include --trace-ascii log/14/trace471 --trace-time "http://127.0.0.1:45467/{471,4710001}" -o "log/14/dumpit#1.dump" > log/14/stdout471 2> log/14/stderr471
=== End of file commands.log
=== Start of file http_server.log
 19:26:51.039594 ====> Client connect
 19:26:51.039640 accept_connection 3 returned 4
 19:26:51.039666 Read 93 bytes
 19:26:51.039676 Process 93 bytes request
 19:26:51.039689 Got request: GET /verifiedserver HTTP/1.1
 19:26:51.039699 Are-we-friendly question received
 19:26:51.039728 Wrote request (93 bytes) input to log/14/server.input
 19:26:51.039745 Identifying ourselves as friends
 19:26:51.039832 Response sent (56 bytes) and written to log/14/server.response
 19:26:51.039843 special request received, no persistency
 19:26:51.039851 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 48686 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 471
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind471
 ==105470== 
 ==105470== Process terminating with default action of signal 4 (SIGILL)
 ==105470==  Illegal opcode at address 0x492B75F
 ==105470==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105470==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105470==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105470==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105470==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105470==    by 0x49908EB: curl_version_info (version.c:600)
 ==105470==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105470==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105470==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105470==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind471
test 0477 [HTTP GET with maximum filesize with a redirect sending data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind477 ../src/curl -q --output log/21/curl477.out  --include --trace-ascii log/21/trace477 --trace-time http://127.0.0.1:39881/477 --max-filesize 5 -L > log/21/stdout477 2> log/21/stderr477

 477: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 477
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind477 ../src/curl -q --output log/21/curl477.out  --include --trace-ascii log/21/trace477 --trace-time http://127.0.0.1:39881/477 --max-filesize 5 -L > log/21/stdout477 2> log/21/stderr477
=== End of file commands.log
=== Start of file http_server.log
 19:26:51.572783 ====> Client connect
 19:26:51.572820 accept_connection 3 returned 4
 19:26:51.572843 Read 93 bytes
 19:26:51.572854 Process 93 bytes request
 19:26:51.572869 Got request: GET /verifiedserver HTTP/1.1
 19:26:51.572878 Are-we-friendly question received
 19:26:51.572932 Wrote request (93 bytes) input to log/21/server.input
 19:26:51.572950 Identifying ourselves as friends
 19:26:51.573018 Response sent (56 bytes) and written to log/21/server.response
 19:26:51.573030 special request received, no persistency
 19:26:51.573039 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 51946 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 477
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind477
 ==105684== 
 ==105684== Process terminating with default action of signal 4 (SIGILL)
 ==105684==  Illegal opcode at address 0x492B75F
 ==105684==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105684==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105684==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105684==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105684==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105684==    by 0x49908EB: curl_version_info (version.c:600)
 ==105684==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105684==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105684==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105684==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind477
test 0475 [FTP PASV upload ASCII file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind475 ../src/curl -q --output log/3/curl475.out  --include --trace-ascii log/3/trace475 --trace-time "ftp://127.0.0.1:42249/475;type=a" -T log/3/test475.txt > log/3/stdout475 2> log/3/stderr475

 475: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 475
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind475 ../src/curl -q --output log/3/curl475.out  --include --trace-ascii log/3/trace475 --trace-time "ftp://127.0.0.1:42249/475;type=a" -T log/3/test475.txt > log/3/stdout475 2> log/3/stderr475
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:51.778834 ====> Client connect
 19:26:51.779045 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:51.779352 < "USER anonymous"
 19:26:51.779390 > "331 We are happy you popped in![CR][LF]"
 19:26:51.779573 < "PASS ftp@example.com"
 19:26:51.779602 > "230 Welcome you silly person[CR][LF]"
 19:26:51.779767 < "PWD"
 19:26:51.779802 > "257 "/" is current directory[CR][LF]"
 19:26:51.779974 < "EPSV"
 19:26:51.780002 ====> Passive DATA channel requested by client
 19:26:51.780017 DATA sockfilt for passive data channel starting...
 19:26:51.783593 DATA sockfilt for passive data channel started (pid 105610)
 19:26:51.783724 DATA sockfilt for passive data channel listens on port 39691
 19:26:51.783774 > "229 Entering Passive Mode (|||39691|)[CR][LF]"
 19:26:51.783793 Client has been notified that upcoming DATA connection is awaited on port 39691
 19:26:51.784106 Client connects to port 39691
 19:26:51.784143 ====> Client established passive DATA connection on port 39691
 19:26:51.784232 < "TYPE I"
 19:26:51.784266 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:51.784441 < "SIZE verifiedserver"
 19:26:51.784481 > "213 17[CR][LF]"
 19:26:51.784643 < "RETR verifiedserver"
 19:26:51.784680 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:51.784767 =====> Closing passive DATA connection...
 19:26:51.784783 Server disconnects passive DATA connection
 19:26:51.785024 Server disconnected passive DATA connection
 19:26:51.785051 DATA sockfilt for passive data channel quits (pid 105610)
 19:26:51.785414 DATA sockfilt for passive data channel quit (pid 105610)
 19:26:51.785439 =====> Closed passive DATA connection
 19:26:51.785469 > "226 File transfer complete[CR][LF]"
 19:26:51.826765 < "QUIT"
 19:26:51.826823 > "221 bye bye baby[CR][LF]"
 19:26:51.827932 MAIN sockfilt said DISC
 19:26:51.827974 ====> Client disconnected
 19:26:51.828056 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:52.386037 ====> Client connect
 19:26:52.386407 Received DATA (on stdin)
 19:26:52.386423 > 146 bytes data, server => client
 19:26:52.386435 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:52.386445 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:52.386454 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:52.386546 < 16 bytes data, client => server
 19:26:52.386559 'USER anonymous\r\n'
 19:26:52.386736 Received DATA (on stdin)
 19:26:52.386747 > 33 bytes data, server => client
 19:26:52.386757 '331 We are happy you popped in!\r\n'
 19:26:52.386815 < 22 bytes data, client => server
 19:26:52.386827 'PASS ftp@example.com\r\n'
 19:26:52.386946 Received DATA (on stdin)
 19:26:52.386956 > 30 bytes data, server => client
 19:26:52.386966 '230 Welcome you silly person\r\n'
 19:26:52.387019 < 5 bytes data, client => server
 19:26:52.387030 'PWD\r\n'
 19:26:52.387145 Received DATA (on stdin)
 19:26:52.387156 > 30 bytes data, server => client
 19:26:52.387166 '257 "/" is current directory\r\n'
 19:26:52.387229 < 6 bytes data, client => server
 19:26:52.387241 'EPSV\r\n'
 19:26:52.391149 Received DATA (on stdin)
 19:26:52.391165 > 39 bytes data, server => client
 19:26:52.391176 '229 Entering Passive Mode (|||39691|)\r\n'
 19:26:52.391364 < 8 bytes data, client => server
 19:26:52.391380 'TYPE I\r\n'
 19:26:52.391610 Received DATA (on stdin)
 19:26:52.391622 > 33 bytes data, server => client
 19:26:52.391632 '200 I modify TYPE as you wanted\r\n'
 19:26:52.391690 < 21 bytes data, client => server
 19:26:52.391702 'SIZE verifiedserver\r\n'
 19:26:52.391823 Received DATA (on stdin)
 19:26:52.391833 > 8 bytes data, server => client
 19:26:52.391843 '213 17\r\n'
 19:26:52.391898 < 21 bytes data, client => server
 19:26:52.391913 'RETR verifiedserver\r\n'
 19:26:52.392128 Received DATA (on stdin)
 19:26:52.392139 > 29 bytes data, server => client
 19:26:52.392148 '150 Binary junk (17 bytes).\r\n'
 19:26:52.392812 Received DATA (on stdin)
 19:26:52.392824 > 28 bytes data, server => client
 19:26:52.392834 '226 File transfer complete\r\n'
 19:26:52.433918 < 6 bytes data, client => server
 19:26:52.433952 'QUIT\r\n'
 19:26:52.434181 Received DATA (on stdin)
 19:26:52.434194 > 18 bytes data, server => client
 19:26:52.434204 '221 bye bye baby\r\n'
 19:26:52.435226 ====> Client disconnect
 19:26:52.435409 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:51.390563 Running IPv4 version
 19:26:51.390659 Listening on port 39691
 19:26:51.390704 Wrote pid 105610 to log/3/server/ftp_sockdata.pid
 19:26:51.390874 Received PING (on stdin)
 19:26:51.390970 Received PORT (on stdin)
 19:26:51.391401 ====> Client connect
 19:26:51.392207 Received DATA (on stdin)
 19:26:51.392222 > 17 bytes data, server => client
 19:26:51.392231 'WE ROOLZ: 84710\r\n'
 19:26:51.392295 Received DISC (on stdin)
 19:26:51.392308 ====> Client forcibly disconnected
 19:26:51.392401 Received QUIT (on stdin)
 19:26:51.392411 quits
 19:26:51.392526 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 475
=== End of file server.cmd
=== Start of file test475.txt
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
=== File too long: 349 lines omitted here
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind473 ../src/curl -q --output log/22/curl473.out  --include --trace-ascii log/22/trace473 --trace-time http://127.0.0.1:35989/473 --etag-save log/22/etag473 > log/22/stdout473 2> log/22/stderr473
used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
=== End of file test475.txt
=== Start of file valgrind475
 ==105659== 
 ==105659== Process terminating with default action of signal 4 (SIGILL)
 ==105659==  Illegal opcode at address 0x492B75F
 ==105659==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105659==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105659==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105659==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105659==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105659==    by 0x49908EB: curl_version_info (version.c:600)
 ==105659==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105659==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind475
test 0473 [Check if --etag-save saved correct etag to a file on 301]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind473 ../src/curl -q --output log/22/curl473.out  --include --trace-ascii log/22/trace473 --trace-time http://127.0.0.1:35989/473 --etag-save log/22/etag473 > log/22/stdout473 2> log/22/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind484 ../src/curl -q --output log/9/curl484.out  --include --trace-ascii log/9/trace484 --trace-time http://example.com/484 --etag-compare log/9/etag484 --etag-save log/9/etag484 --url http://example.net/fooo > log/9/stdout484 2> log/9/stderr484
stderr473

 473: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 473
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind473 ../src/curl -q --output log/22/curl473.out  --include --trace-ascii log/22/trace473 --trace-time http://127.0.0.1:35989/473 --etag-save log/22/etag473 > log/22/stdout473 2> log/22/stderr473
=== End of file commands.log
=== Start of file http_server.log
 19:26:51.194986 ====> Client connect
 19:26:51.195019 accept_connection 3 returned 4
 19:26:51.195040 Read 93 bytes
 19:26:51.195049 Process 93 bytes request
 19:26:51.195061 Got request: GET /verifiedserver HTTP/1.1
 19:26:51.195069 Are-we-friendly question received
 19:26:51.195094 Wrote request (93 bytes) input to log/22/server.input
 19:26:51.195108 Identifying ourselves as friends
 19:26:51.195164 Response sent (56 bytes) and written to log/22/server.response
 19:26:51.195173 special request received, no persistency
 19:26:51.195180 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 56604 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 473
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind473
 ==105525== 
 ==105525== Process terminating with default action of signal 4 (SIGILL)
 ==105525==  Illegal opcode at address 0x492B75F
 ==105525==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105525==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105525==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105525==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105525==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105525==    by 0x49908EB: curl_version_info (version.c:600)
 ==105525==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105525==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105525==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105525==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind473
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind483 ../src/curl -q --output log/16/curl483.out  --include --trace-ascii log/16/trace483 --trace-time http://127.0.0.1:35903/483 -c log/16/c483 > log/16/stdout483 2> log/16/stderr483
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind478 ../src/curl -q --output log/8/curl478.out  --include --trace-ascii log/8/trace478 --trace-time --netrc --netrc-file log/8/netrc478 -x http://127.0.0.1:44467/ http://debbie@github.com/ > log/8/stdout478 2> log/8/stderr478
test 0484 [Use --etag-compare and -save with more than one URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind484 ../src/curl -q --output log/9/curl484.out  --include --trace-ascii log/9/trace484 --trace-time http://example.com/484 --etag-compare log/9/etag484 --etag-save log/9/etag484 --url http://example.net/fooo > log/9/stdout484 2> log/9/stderr484

 484: stderr FAILED:
--- log/9/check-expected	2026-10-15 19:26:54.477943020 +0000
+++ log/9/check-generated	2026-10-15 19:26:54.473602691 +0000
@@ -1,3 +0,0 @@
-curl: The etag options only work on a single URL[CR][LF]
-curl: option --url: is badly used here[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/9/ directory after test 484
=== Start of file check-expected
 curl: The etag options only work on a single URL[CR][LF]
 curl: option --url: is badly used here[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind484 ../src/curl -q --output log/9/curl484.out  --include --trace-ascii log/9/trace484 --trace-time http://example.com/484 --etag-compare log/9/etag484 --etag-save log/9/etag484 --url http://example.net/fooo > log/9/stdout484 2> log/9/stderr484
=== End of file commands.log
=== Start of file server.cmd
 Testnum 484
=== End of file server.cmd
=== Start of file valgrind484
 ==105977== 
 ==105977== Process terminating with default action of signal 4 (SIGILL)
 ==105977==  Illegal opcode at address 0x492B75F
 ==105977==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105977==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105977==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105977==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105977==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105977==    by 0x49908EB: curl_version_info (version.c:600)
 ==105977==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105977==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105977==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105977==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind484
test 0483 [HTTP cookies with long expire dates]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind483 ../src/curl -q --output log/16/curl483.out  --include --trace-ascii log/16/trace483 --trace-time http://127.0.0.1:35903/483 -c log/16/c483 > log/16/stdout483 2> log/16/stderr483

 483: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 483
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind483 ../src/curl -q --output log/16/curl483.out  --include --trace-ascii log/16/trace483 --trace-time http://127.0.0.1:35903/483 -c log/16/c483 > log/16/stdout483 2> log/16/stderr483
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.902119 ====> Client connect
 19:26:52.902179 accept_connection 3 returned 4
 19:26:52.902203 Read 93 bytes
 19:26:52.902213 Process 93 bytes request
 19:26:52.902226 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.902235 Are-we-friendly question received
 19:26:52.902261 Wrote request (93 bytes) input to log/16/server.input
 19:26:52.902278 Identifying ourselves as friends
 19:26:52.902340 Response sent (56 bytes) and written to log/16/server.response
 19:26:52.902350 special request received, no persistency
 19:26:52.902358 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 40914 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 483
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind483
 ==106052== 
 ==106052== Process terminating with default action of signal 4 (SIGILL)
 ==106052==  Illegal opcode at address 0x492B75F
 ==106052==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106052==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106052==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106052==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106052==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106052==    by 0x49908EB: curl_version_info (version.c:600)
 ==106052==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106052==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106052==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106052==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind483
test 0478 [.netrc with multiple accounts for same host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind478 ../src/curl -q --output log/8/curl478.out  --include --trace-ascii log/8/trace478 --trace-time --netrc --netrc-file log/8/netrc478 -x http://127.0.0.1:44467/ http://debbie@github.com/ > log/8/stdout478 2> log/8/stderr478

 478: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 478
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind478 ../src/curl -q --output log/8/curl478.out  --include --trace-ascii log/8/trace478 --trace-time --netrc --netrc-file log/8/netrc478 -x http://127.0.0.1:44467/ http://debbie@github.com/ > log/8/stdout478 2> log/8/stderr478
=== End of file commands.log
=== Start of file http_server.log
 19:26:51.660986 ====> Client connect
 19:26:51.661027 accept_connection 3 returned 4
 19:26:51.661051 Read 93 bytes
 19:26:51.661061 Process 93 bytes request
 19:26:51.661074 Got request: GET /verifiedserver HTTP/1.1
 19:26:51.661083 Are-we-friendly question received
 19:26:51.661115 Wrote request (93 bytes) input to log/8/server.input
 19:26:51.661132 Identifying ourselves as friends
 19:26:51.661205 Response sent (56 bytes) and written to log/8/server.response
 19:26:51.661217 special request received, no persistency
 19:26:51.661226 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 51296 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file netrc478
 machine github.com
 password weird
 password firstone
 login daniel
 machine github.com
 machine github.com
 login debbie
 machine github.com
 password weird
 password "sCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind476 ../src/curl -q --output log/5/curl476.out  --include --trace-ascii log/5/trace476 --trace-time "ftp://127.0.0.1:39641/476;type=a" -T log/5/test476.txt > log/5/stdout476 2> log/5/stderr476
econd\r"
 login debbie
=== End of file netrc478
=== Start of file server.cmd
 Testnum 478
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind478
 ==105773== 
 ==105773== Process terminating with default action of signal 4 (SIGILL)
 ==105773==  Illegal opcode at address 0x492B75F
 ==105773==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105773==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105773==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105773==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105773==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105773==    by 0x49908EB: curl_version_info (version.c:600)
 ==105773==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105773==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105773==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105773==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind478
test 0476 [FTP PASV upload ASCII file already using CRLF]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind476 ../src/curl -q --output log/5/curl476.out  --include --trace-ascii log/5/trace476 --trace-time "ftp://127.0.0.1:39641/476;type=a" -T log/5/test476.txt > log/5/stdout476 2> log/5/stderr476

 476: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 476
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind476 ../src/curl -q --output log/5/curl476.out  --include --trace-ascii log/5/trace476 --trace-time "ftp://127.0.0.1:39641/476;type=a" -T log/5/test476.txt > log/5/stdout476 2> log/5/stderr476
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:51.918808 ====> Client connect
 19:26:51.919002 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:51.922695 < "USER anonymous"
 19:26:51.922745 > "331 We are happy you popped in![CR][LF]"
 19:26:51.927332 < "PASS ftp@example.com"
 19:26:51.927374 > "230 Welcome you silly person[CR][LF]"
 19:26:51.929656 < "PWD"
 19:26:51.929698 > "257 "/" is current directory[CR][LF]"
 19:26:51.932312 < "EPSV"
 19:26:51.932345 ====> Passive DATA channel requested by client
 19:26:51.932362 DATA sockfilt for passive data channel starting...
 19:26:51.945437 DATA sockfilt for passive data channel started (pid 105657)
 19:26:51.945622 DATA sockfilt for passive data channel listens on port 40995
 19:26:51.945690 > "229 Entering Passive Mode (|||40995|)[CR][LF]"
 19:26:51.945717 Client has been notified that upcoming DATA connection is awaited on port 40995
 19:26:51.946070 Client connects to port 40995
 19:26:51.946103 ====> Client established passive DATA connection on port 40995
 19:26:51.946208 < "TYPE I"
 19:26:51.946249 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:51.946446 < "SIZE verifiedserver"
 19:26:51.946492 > "213 17[CR][LF]"
 19:26:51.946690 < "RETR verifiedserver"
 19:26:51.946731 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:51.946843 =====> Closing passive DATA connection...
 19:26:51.946871 Server disconnects passive DATA connection
 19:26:51.947129 Server disconnected passive DATA connection
 19:26:51.947162 DATA sockfilt for passive data channel quits (pid 105657)
 19:26:51.947480 DATA sockfilt for passive data channel quit (pid 105657)
 19:26:51.947511 =====> Closed passive DATA connection
 19:26:51.947543 > "226 File transfer complete[CR][LF]"
 19:26:51.998977 < "QUIT"
 19:26:51.999040 > "221 bye bye baby[CR][LF]"
 19:26:52.000366 MAIN sockfilt said DISC
 19:26:52.000405 ====> Client disconnected
 19:26:52.000476 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:51.526051 ====> Client connect
 19:26:51.526385 Received DATA (on stdin)
 19:26:51.526398 > 146 bytes data, server => client
 19:26:51.526409 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:51.526419 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:51.526428 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:51.529655 < 16 bytes data, client => server
 19:26:51.529685 'USER anonymous\r\n'
 19:26:51.530126 Received DATA (on stdin)
 19:26:51.530142 > 33 bytes data, server => client
 19:26:51.530153 '331 We are happy you popped in!\r\n'
 19:26:51.534555 < 22 bytes data, client => server
 19:26:51.534579 'PASS ftp@example.com\r\n'
 19:26:51.534751 Received DATA (on stdin)
 19:26:51.534763 > 30 bytes data, server => client
 19:26:51.534773 '230 Welcome you silly person\r\n'
 19:26:51.536920 < 5 bytes data, client => server
 19:26:51.536938 'PWD\r\n'
 19:26:51.537074 Received DATA (on stdin)
 19:26:51.537084 > 30 bytes data, server => client
 19:26:51.537094 '257 "/" is current directory\r\n'
 19:26:51.539579 < 6 bytes data, client => server
 19:26:51.539597 'EPSV\r\n'
 19:26:51.553110 Received DATA (on stdin)
 19:26:51.553127 > 39 bytes data, server => client
 19:26:51.553138 '229 Entering Passive Mode (|||40995|)\r\n'
 19:26:51.553389 < 8 bytes data, client => server
 19:26:51.553404 'TYPE I\r\n'
 19:26:51.553636 Received DATA (on stdin)
 19:26:51.553649 > 33 bytes data, server => client
 19:26:51.553659 '200 I modify TYPE as you wanted\r\n'
 19:26:51.553723 < 21 bytes data, client => server
 19:26:51.553736 'SIZE verifiedserver\r\n'
 19:26:51.553880 Received DATA (on stdin)
 19:26:51.553893 > 8 bytes data, server => client
 19:26:51.553903 '213 17\r\n'
 19:26:51.553967 < 21 bytes data, client => server
 19:26:51.553983 'RETR verifiedserver\r\n'
 19:26:51.554355 Received DATA (on stdin)
 19:26:51.554368 > 29 bytes data, server => client
 19:26:51.554379 '150 Binary junk (17 bytes).\r\n'
 19:26:51.554928 Received DATA (on stdin)
 19:26:51.554941 > 28 bytes data, server => client
 19:26:51.554952 '226 File transfer complete\r\n'
 19:26:51.606187 < 6 bytes data, client => server
 19:26:51.606213 'QUIT\r\n'
 19:26:51.606447 Received DATA (on stdin)
 19:26:51.606463 > 18 bytes data, server => client
 19:26:51.606474 '221 bye bye baby\r\n'
 19:26:51.607695 ====> Client disconnect
 19:26:51.607871 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:51.542889 Running IPv4 version
 19:26:51.542991 Listening on port 40995
 19:26:51.543035 Wrote pid 105657 to log/5/server/ftp_sockdata.pid
 19:26:51.552711 Received PING (on stdin)
 19:26:51.552881 Received PORT (on stdin)
 19:26:51.553353 ====> Client connect
 19:26:51.554256 Received DATA (on stdin)
 19:26:51.554270 > 17 bytes data, server => client
 19:26:51.554280 'WE ROOLZ: 85245\r\n'
 19:26:51.554312 Received DISC (on stdin)
 19:26:51.554327 ====> Client forcibly disconnected
 19:26:51.554556 Received QUIT (on stdin)
 19:26:51.554569 quits
 19:26:51.554647 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 476
=== End of file server.cmd
=== Start of file test476.txt
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
=== File too long: 349 lines omitted here
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind486 ../src/curl -q --output log/20/curl486.out  --include --trace-ascii log/20/trace486 --trace-time --netrc --netrc-file log/20/netrc486 -L -x http://127.0.0.1:33897/ http://a.com/ > log/20/stdout486 2> log/20/stderr486
ying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
 a line of text used for verifying this
=== End of file test476.txt
=== Start of file valgrind476
 ==105722== 
 ==105722== Process terminating with default action of signal 4 (SIGILL)
 ==105722==  Illegal opcode at address 0x492B75F
 ==105722==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105722==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105722==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105722==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105722==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105722==    by 0x49908EB: curl_version_info (version.c:600)
 ==105722==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105722==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105722==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105722==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind476
test 0486 [.netrc with redirect and "default" with no password or login]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind486 ../src/curl -q --output log/20/curl486.out  --include --trace-ascii log/20/trace486 --trace-time --netrc --netrc-file log/20/netrc486 -L -x http://127.0.0.1:33897/ http://a.com/ > log/20/stdout486 2> log/20/stderr486

 486: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 486
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind486 ../src/curl -q --output log/20/curl486.out  --include --trace-ascii log/20/trace486 --trace-time --netrc --netrc-file log/20/netrc486 -L -x http://127.0.0.1:33897/ http://a.com/ > log/20/stdout486 2> log/20/stderr486
=== End of file commands.log
=== Start of file http_server.loCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind481 ../src/curl -q --trace-ascii log/2/trace481 --trace-time http://127.0.0.1:34531/481 --no-clobber -C 1 -o "log/2/481" > log/2/stdout481 2> log/2/stderr481
g
 19:26:52.252235 ====> Client connect
 19:26:52.252271 accept_connection 3 returned 4
 19:26:52.252294 Read 93 bytes
 19:26:52.252304 Process 93 bytes request
 19:26:52.252317 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.252326 Are-we-friendly question received
 19:26:52.252354 Wrote request (93 bytes) input to log/20/server.input
 19:26:52.252371 Identifying ourselves as friends
 19:26:52.252437 Response sent (56 bytes) and written to log/20/server.response
 19:26:52.252447 special request received, no persistency
 19:26:52.252455 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 45498 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file netrc486
 machine a.com
   login alice
   password alicespassword
 default
=== End of file netrc486
=== Start of file server.cmd
 Testnum 486
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind486
 ==106277== 
 ==106277== Process terminating with default action of signal 4 (SIGILL)
 ==106277==  Illegal opcode at address 0x492B75F
 ==106277==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106277==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106277==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106277==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106277==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106277==    by 0x49908EB: curl_version_info (version.c:600)
 ==106277==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106277==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind486
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind482 ../src/curl -q --trace-ascii log/17/trace482 --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/17/482" > log/17/stdout482 2> log/17/stderr482
test 0481 [--no-clobber with --continue-at]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind481 ../src/curl -q --trace-ascii log/2/trace481 --trace-time http://127.0.0.1:34531/481 --no-clobber -C 1 -o "log/2/481" > log/2/stdout481 2> log/2/stderr481

 481: stderr FAILED:
--- log/2/check-expected	2026-10-15 19:26:55.014836562 +0000
+++ log/2/check-generated	2026-10-15 19:26:55.010175308 +0000
@@ -1,3 +0,0 @@
-curl: --continue-at is mutually exclusive with --no-clobber[CR][LF]
-curl: option -C: is badly used here[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/2/ directory after test 481
=== Start of file 481
 initial content
=== End of file 481
=== Start of file check-expected
 curl: --continue-at is mutually exclusive with --no-clobber[CR][LF]
 curl: option -C: is badly used here[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind481 ../src/curl -q --trace-ascii log/2/trace481 --trace-time http://127.0.0.1:34531/481 --no-clobber -C 1 -o "log/2/481" > log/2/stdout481 2> log/2/stderr481
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.839375 ====> Client connect
 19:26:52.839408 accept_connection 3 returned 4
 19:26:52.840117 Read 93 bytes
 19:26:52.840135 Process 93 bytes request
 19:26:52.840149 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.840158 Are-we-friendly question received
 19:26:52.840197 Wrote request (93 bytes) input to log/2/server.input
 19:26:52.840216 Identifying ourselves as friends
 19:26:52.840276 Response sent (56 bytes) and written to log/2/server.response
 19:26:52.840285 special request received, no persistency
 19:26:52.840293 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 50912 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 481
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind481
 ==105941== 
 ==105941== Process terminating with default action of signal 4 (SIGILL)
 ==105941==  Illegal opcode at address 0x492B75F
 ==105941==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105941==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105941==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105941==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105941==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105941==    by 0x49908EB: curl_version_info (version.c:600)
 ==105941==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105941==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105941==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105941==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind481
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind479 ../src/curl -q --output log/15/curl479.out  --include --trace-ascii log/15/trace479 --trace-time --netrc --netrc-file log/15/netrc479 -L -x http://127.0.0.1:40321/ http://a.com/ > log/15/stdout479 2> log/15/stderr479
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind492 ../src/curl -q --output log/6/curl492.out  --include --trace-ascii log/6/trace492 --trace-time 'http://127.0.0.1:33935/{one,two}/' -T '{log/6/first492,log/6/second492}' -H "Testno: 492" > log/6/stdout492 2> log/6/stderr492
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind488 ../src/curl -q --output log/18/curl488.out  --include --trace-ascii log/18/trace488 --trace-time --output-dir log/18 --url @- <log/18/stdin-for-488 > log/18/stdout488 2> log/18/stderr488
test 0482 [--remove-on-error with --continue-at]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind482 ../src/curl -q --trace-ascii log/17/trace482 --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/17/482" > log/17/stdout482 2> log/17/stderr482

 482: stderr FAILED:
--- log/17/check-expected	2026-10-15 19:26:55.037729352 +0000
+++ log/17/check-generated	2026-10-15 19:26:55.033481829 +0000
@@ -1,3 +0,0 @@
-curl: --continue-at is mutually exclusive with --remove-on-error[CR][LF]
-curl: option -C: is badly used here[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/17/ directory after test 482
=== Start of file check-expected
 curl: --continue-at is mutually exclusive with --remove-on-error[CR][LF]
 curl: option -C: is badly used here[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind482 ../src/curl -q --trace-ascii log/17/trace482 --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/17/482" > log/17/stdout482 2> log/17/stderr482
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.856400 ====> Client connect
 19:26:52.856446 accept_connection 3 returned 4
 19:26:52.856473 Read 93 bytes
 19:26:52.856484 Process 93 bytes request
 19:26:52.856497 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.856506 Are-we-friendly question received
 19:26:52.856537 Wrote request (93 bytes) input to log/17/server.input
 19:26:52.856553 Identifying ourselves as friends
 19:26:52.856640 Response sent (56 bytes) and written to log/17/server.response
 19:26:52.856651 special request received, no persistency
 19:26:52.856659 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 45628 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 482
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind482
 ==106003== 
 ==106003== Process terminating with default action of signal 4 (SIGILL)
 ==106003==  Illegal opcode at address 0x492B75F
 ==106003==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106003==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106003==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106003==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106003==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106003==    by 0x49908EB: curl_version_info (version.c:600)
 ==106003==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106003==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106003==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106003==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind482
test 0479 [.netrc with redirect and default without password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind479 ../src/curl -q --output log/15/curl479.out  --include --trace-ascii log/15/trace479 --trace-time --netrc --netrc-file log/15/netrc479 -L -x http://127.0.0.1:40321/ http://a.com/ > log/15/stdout479 2> log/15/stderr479

 479: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 479
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind479 ../src/curl -q --output log/15/curl479.out  --include --trace-ascii log/15/trace479 --trace-time --netrc --netrc-file log/15/netrc479 -L -x http://127.0.0.1:40321/ http://a.com/ > log/15/stdout479 2> log/15/stderr479
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.679637 ====> Client connect
 19:26:52.679676 accept_connection 3 returned 4
 19:26:52.679862 Read 93 bytes
 19:26:52.679881 Process 93 bytes request
 19:26:52.679896 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.679905 Are-we-friendly question received
 19:26:52.679940 Wrote request (93 bytes) input to log/15/server.input
 19:26:52.679960 Identifying ourselves as friends
 19:26:52.680031 Response sent (56 bytes) and written to log/15/server.response
 19:26:52.680044 special request received, no persistency
 19:26:52.680053 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 38280 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file netrc479
 machine a.com
   login alice
   password alicespassword
 default
   login bob
=== End of file netrc479
=== Start of file server.cmd
 Testnum 479
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind479
 ==105768== 
 ==105768== Process terminating with default action of signal 4 (SIGILL)
 ==105768==  Illegal opcode at address 0x492B75F
 ==105768==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==105768==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==105768==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==105768==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==105768==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==105768==    by 0x49908EB: curl_version_info (version.c:600)
 ==105768==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==105768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==105768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==105768==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind479
test 0492 [Two globbed HTTP PUTs to two globbed URLs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind492 ../src/curl -q --output log/6/curl492.out  --include --trace-ascii log/6/trace492 --trace-time 'http://127.0.0.1:33935/{one,two}/' -T '{log/6/first492,log/6/second492}' -H "Testno: 492" > log/6/stdout492 2> log/6/stderr492

 492: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 492
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind492 ../src/curl -q --output log/6/curl492.out  --include --trace-ascii log/6/trace492 --trace-time 'http://127.0.0.1:33935/{one,two}/' -T '{log/6/first492,log/6/second492}' -H "Testno: 492" > log/6/stdout492 2> log/6/stderr492
=== CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind485 ../src/curl -q --output log/7/curl485.out  --include --trace-ascii log/7/trace485 --trace-time http://example.com/485 http://example.net/fooo --etag-save log/7/etag485 > log/7/stdout485 2> log/7/stderr485
End of file commands.log
=== Start of file first492
 first 492 contents
=== End of file first492
=== Start of file http_server.log
 19:26:52.865959 ====> Client connect
 19:26:52.866000 accept_connection 3 returned 4
 19:26:52.866025 Read 93 bytes
 19:26:52.866037 Process 93 bytes request
 19:26:52.866054 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.866064 Are-we-friendly question received
 19:26:52.866096 Wrote request (93 bytes) input to log/6/server.input
 19:26:52.866116 Identifying ourselves as friends
 19:26:52.866190 Response sent (56 bytes) and written to log/6/server.response
 19:26:52.866201 special request received, no persistency
 19:26:52.866213 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 41618 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file second492
 second 492 contents
=== End of file second492
=== Start of file server.cmd
 Testnum 492
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind492
 ==106683== 
 ==106683== Process terminating with default action of signal 4 (SIGILL)
 ==106683==  Illegal opcode at address 0x492B75F
 ==106683==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106683==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106683==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106683==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106683==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106683==    by 0x49908EB: curl_version_info (version.c:600)
 ==106683==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106683==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106683==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106683==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind492
test 0488 [Download two URLs provided on stdin]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind488 ../src/curl -q --output log/18/curl488.out  --include --trace-ascii log/18/trace488 --trace-time --output-dir log/18 --url @- <log/18/stdin-for-488 > log/18/stdout488 2> log/18/stderr488

 488: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 488
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind488 ../src/curl -q --output log/18/curl488.out  --include --trace-ascii log/18/trace488 --trace-time --output-dir log/18 --url @- <log/18/stdin-for-488 > log/18/stdout488 2> log/18/stderr488
=== End of file commands.log
=== Start of file http_server.log
 19:26:53.529674 ====> Client connect
 19:26:53.529715 accept_connection 3 returned 4
 19:26:53.530496 Read 93 bytes
 19:26:53.530516 Process 93 bytes request
 19:26:53.530531 Got request: GET /verifiedserver HTTP/1.1
 19:26:53.530541 Are-we-friendly question received
 19:26:53.530580 Wrote request (93 bytes) input to log/18/server.input
 19:26:53.530600 Identifying ourselves as friends
 19:26:53.530675 Response sent (56 bytes) and written to log/18/server.response
 19:26:53.530687 special request received, no persistency
 19:26:53.530697 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 58386 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 488
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file stdin-for-488
 http://127.0.0.1:43739/a
 http://127.0.0.1:43739/b
=== End of file stdin-for-488
=== Start of file valgrind488
 ==106403== 
 ==106403== Process terminating with default action of signal 4 (SIGILL)
 ==106403==  Illegal opcode at address 0x492B75F
 ==106403==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106403==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106403==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106403==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106403==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106403==    by 0x49908EB: curl_version_info (version.c:600)
 ==106403==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106403==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106403==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106403==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind488
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind489 ../src/curl -q --output log/19/curl489.out  --include --trace-ascii log/19/trace489 --trace-time --output-dir log/19 --url @log/19/urls > log/19/stdout489 2> log/19/stderr489
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind480 ../src/curl -q --output log/11/curl480.out  --include --trace-ascii log/11/trace480 --trace-time --netrc --netrc-file log/11/netrc480 pop3://127.0.0.1:45393/480 > log/11/stdout480 2> log/11/stderr480
test 0485 [--etag-compare and -save with more than one URL, URLs specified first]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind485 ../src/curl -q --output log/7/curl485.out  --include --trace-ascii log/7/trace485 --trace-time http://example.com/485 http://example.net/fooo --etag-save log/7/etag485 > log/7/stdout485 2> log/7/stderr485

 485: stderr FAILED:
--- log/7/check-expected	2026-10-15 19:26:55.330619244 +0000
+++ log/7/check-generated	2026-10-15 19:26:55.326752083 +0000
@@ -1,3 +0,0 @@
-curl: The etag options only work on a single URL[CR][LF]
-curl: option --etag-save: is badly used here[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/7/ directory after test 485
=== Start of file check-expected
 curl: The etag options only work on a single URL[CR][LF]
 curl: option --etag-save: is badly used here[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind485 ../src/curl -q --output log/7/curl485.out  --include --trace-ascii log/7/trace485 --trace-time http://example.com/485 http://example.net/fooo --etag-save log/7/etag485 > log/7/stdout485 2> log/7/stderr485
=== End of file commands.log
=== Start of file server.cmd
 Testnum 485
=== End of file server.cmd
=== Start of file valgrind485
 ==106213== 
 ==106213== Process terminating with default action of signal 4 (SIGILL)
 ==106213==  Illegal opcode at address 0x492B75F
 ==106213==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106213==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106213==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106213==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106213==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106213==    by 0x49908EB: curl_version_info (version.c:600)
 ==106213==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106213==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106213==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106213==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind485
test 0489 [Download two URLs provided in a file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind489 ../src/curl -q --output log/19/curl489.out  --include --trace-ascii log/19/trace489 --trace-time --output-dir log/19 --url @log/19/urls > log/19/stdout489 2> log/19/stderr489

 489: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 489
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind489 ../src/curl -q --output log/19/curl489.out  --include --trace-ascii log/19/trace489 --trace-time --output-dir log/19 --url @log/19/urls > log/19/stdout489 2> log/19/stderr489
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.589363 ====> Client connect
 19:26:52.589402 accept_connection 3 returned 4
 19:26:52.590503 Read 93 bytes
 19:26:52.590523 Process 93 bytes request
 19:26:52.590536 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.590545 Are-we-friendly question received
 19:26:52.590583 Wrote request (93 bytes) input to log/19/server.input
 19:26:52.590601 Identifying ourselves as friends
 19:26:52.590666 Response sent (56 bytes) and written to log/19/server.response
 19:26:52.590676 special request received, no persistency
 19:26:52.590684 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 50022 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 489
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file urls
 http://127.0.0.1:46497/a
 http://127.0.0.1:46497/b
=== End of file urls
=== Start of file valgrind489
 ==106434== 
 ==106434== Process terminating with default action of signal 4 (SIGILL)
 ==106434==  Illegal opcode at address 0x492B75F
 ==106434==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106434==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106434==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106434==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106434==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106434==    by 0x49908EB: curl_version_info (version.c:600)
 ==106434==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106434==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106434==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106434==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind489
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/11/server/pop3_server.pid" --logfile "log/11/pop3_server.log" --logdir "log/11" --portfile "log/11/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45393 (log/11/server/pop3_server.port)
RUN: POP3 server is PID 105846 port 45393
* pid pop3 => 105846 105846
test 0480 [Reject .netrc with credentials using CRLF for POP3]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind480 ../src/curl -q --output log/11/curl480.out  --include --trace-ascii log/11/trace480 --trace-time --netrc --netrc-file log/11/netrc480 pop3://127.0.0.1:45393/480 > log/11/stdout480 2> log/11/stderr480

curl returned 132, when expecting 26
 480: exit FAILED
== Contents of files in the log/11/ directory after test 480
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind480 ../src/curl -q --output log/11/curl480.out  --include --trace-ascii log/11/trace480 --trace-time --netrc --netrc-file log/11/netrc480 pop3://127.0.0.1:45393/480 > log/11/stdout480 2> log/11/stderr480
=== End of file commands.log
=== Start of file netrc480
 machine 127.0.0.1
   login alice
   password "password\r\ncommand"
=== End of file netrc480
=== Start of file pop3_server.log
 19:26:52.289022 POP3 server listens on port IPv4/45393
 19:26:52.289183 logged pid 105846 in log/11/server/pop3_server.pid
 19:26:52.289247 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:26:52.894984 Running IPv4 version
 19:26:52.895069 Listening on port 45393
 19:26:52.895108 Wrote pid 105996 to log/11/server/pop3_sockfilt.pid
 19:26:52.895217 Wrote port 45393 to log/11/server/pop3_server.port
 19:26:52.896320 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 480
=== End of file server.cmd
=== Start of file valgrind480
 ==106575== 
 ==106575== Process terminating with default action of signal 4 (SIGILL)
 ==106575==  Illegal opcode at address 0x492B75F
 ==106575==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106575==   CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind496 ../src/curl -q --output log/4/curl496.out  --include --trace-ascii log/4/trace496 --trace-time 0 -Z -Tz > log/4/stdout496 2> log/4/stderr496
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind490 ../src/curl -q --output log/24/curl490.out  --include --trace-ascii log/24/trace490 --trace-time http://127.0.0.1:38895/490 -T '{log/24/in490,log/24/in490}' > log/24/stdout490 2> log/24/stderr490
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind487 ../src/curl -q --output log/12/curl487.out  --include --trace-ascii log/12/trace487 --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:40921/{{what:64dec}}/487" -g > log/12/stdout487 2> log/12/stderr487
 by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106575==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106575==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106575==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106575==    by 0x49908EB: curl_version_info (version.c:600)
 ==106575==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106575==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106575==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106575==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind480
test 0496 [parallel upload missing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind496 ../src/curl -q --output log/4/curl496.out  --include --trace-ascii log/4/trace496 --trace-time 0 -Z -Tz > log/4/stdout496 2> log/4/stderr496

curl returned 132, when expecting 26
 496: exit FAILED
== Contents of files in the log/4/ directory after test 496
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind496 ../src/curl -q --output log/4/curl496.out  --include --trace-ascii log/4/trace496 --trace-time 0 -Z -Tz > log/4/stdout496 2> log/4/stderr496
=== End of file commands.log
=== Start of file server.cmd
 Testnum 496
=== End of file server.cmd
=== Start of file valgrind496
 ==106980== 
 ==106980== Process terminating with default action of signal 4 (SIGILL)
 ==106980==  Illegal opcode at address 0x492B75F
 ==106980==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106980==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106980==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106980==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106980==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106980==    by 0x49908EB: curl_version_info (version.c:600)
 ==106980==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106980==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106980==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106980==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind496
test 0490 [Two globbed HTTP PUTs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind490 ../src/curl -q --output log/24/curl490.out  --include --trace-ascii log/24/trace490 --trace-time http://127.0.0.1:38895/490 -T '{log/24/in490,log/24/in490}' > log/24/stdout490 2> log/24/stderr490

 490: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 490
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind490 ../src/curl -q --output log/24/curl490.out  --include --trace-ascii log/24/trace490 --trace-time http://127.0.0.1:38895/490 -T '{log/24/in490,log/24/in490}' > log/24/stdout490 2> log/24/stderr490
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.673058 ====> Client connect
 19:26:52.673092 accept_connection 3 returned 4
 19:26:52.673115 Read 93 bytes
 19:26:52.673123 Process 93 bytes request
 19:26:52.673135 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.673143 Are-we-friendly question received
 19:26:52.673164 Wrote request (93 bytes) input to log/24/server.input
 19:26:52.673178 Identifying ourselves as friends
 19:26:52.673248 Response sent (56 bytes) and written to log/24/server.response
 19:26:52.673256 special request received, no persistency
 19:26:52.673263 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 34968 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file in490
 surprise
=== End of file in490
=== Start of file server.cmd
 Testnum 490
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind490
 ==106497== 
 ==106497== Process terminating with default action of signal 4 (SIGILL)
 ==106497==  Illegal opcode at address 0x492B75F
 ==106497==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106497==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106497==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106497==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106497==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106497==    by 0x49908EB: curl_version_info (version.c:600)
 ==106497==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106497==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106497==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106497==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind490
test 0487 [Variable using 64dec with bad base64]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind487 ../src/curl -q --output log/12/curl487.out  --include --trace-ascii log/12/trace487 --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:40921/{{what:64dec}}/487" -g > log/12/stdout487 2> log/12/stderr487

 487: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 487
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind487 ../src/curl -q --output log/12/curl487.out  --include --trace-ascii log/12/trace487 --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:40921/{{what:64dec}}/487" -g > log/12/stdout487 2> log/12/stderr487
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.532966 ====> Client connect
 19:26:52.533004 accept_connection 3 returned 4
 19:26:52.533161 Read 93 bytes
 19:26:52.533177 Process 93 bytes request
 19:26:52.533188 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.533197 Are-we-friendly question received
 19:26:52.533231 Wrote request (93 bytes) input to log/12/server.input
 19:26:52.533248 Identifying ourselves as friends
 19:26:52.533314 Response sent (56 bytes) and written to log/12/server.response
 19:26:52.533324 special request received, no persistency
 19:26:52.533332 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 60428 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 487
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind487
 ==106400== 
 ==10CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind491 ../src/curl -q --output log/10/curl491.out  --include --trace-ascii log/10/trace491 --trace-time http://127.0.0.1:40913/491 -T '{log/10/in491,log/10/bad491}' > log/10/stdout491 2> log/10/stderr491
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind502 ./libtest/libtests lib502 file:///startdir/src/build-curl/tests/log/16/test502.txt > log/16/stdout502 2> log/16/stderr502
6400== Process terminating with default action of signal 4 (SIGILL)
 ==106400==  Illegal opcode at address 0x492B75F
 ==106400==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106400==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106400==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106400==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106400==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106400==    by 0x49908EB: curl_version_info (version.c:600)
 ==106400==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106400==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106400==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106400==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind487
test 0491 [Two globbed HTTP PUTs, the second upload file is missing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind491 ../src/curl -q --output log/10/curl491.out  --include --trace-ascii log/10/trace491 --trace-time http://127.0.0.1:40913/491 -T '{log/10/in491,log/10/bad491}' > log/10/stdout491 2> log/10/stderr491

 491: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 491
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind491 ../src/curl -q --output log/10/curl491.out  --include --trace-ascii log/10/trace491 --trace-time http://127.0.0.1:40913/491 -T '{log/10/in491,log/10/bad491}' > log/10/stdout491 2> log/10/stderr491
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.855454 ====> Client connect
 19:26:52.855492 accept_connection 3 returned 4
 19:26:52.855517 Read 93 bytes
 19:26:52.855527 Process 93 bytes request
 19:26:52.855540 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.855549 Are-we-friendly question received
 19:26:52.855576 Wrote request (93 bytes) input to log/10/server.input
 19:26:52.855593 Identifying ourselves as friends
 19:26:52.855661 Response sent (56 bytes) and written to log/10/server.response
 19:26:52.855671 special request received, no persistency
 19:26:52.855680 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 47066 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file in491
 surprise
=== End of file in491
=== Start of file server.cmd
 Testnum 491
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind491
 ==106642== 
 ==106642== Process terminating with default action of signal 4 (SIGILL)
 ==106642==  Illegal opcode at address 0x492B75F
 ==106642==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106642==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106642==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106642==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106642==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106642==    by 0x49908EB: curl_version_info (version.c:600)
 ==106642==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106642==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106642==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106642==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind491
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind495 ../src/curl -q --output log/23/curl495.out  --include --trace-ascii log/23/trace495 --trace-time http://foo%40bar:secret@127.0.0.1:44711/495 --netrc-optional > log/23/stdout495 2> log/23/stderr495
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/2/stdout507 2> log/2/stderr507
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:35989/500 log/22/ip500 > log/22/stdout500 2> log/22/stderr500
test 0502 [simple multi file:// get]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind502 ./libtest/libtests lib502 file:///startdir/src/build-curl/tests/log/16/test502.txt > log/16/stdout502 2> log/16/stderr502

 502: data FAILED:
--- log/16/check-expected	2026-10-15 19:26:56.233560317 +0000
+++ log/16/check-generated	2026-10-15 19:26:56.229891339 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar swsclose[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/16/ directory after test 502
=== Start of file check-expected
 foo[LF]
    bar swsclose[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind502 ./libtest/libtests lib502 file:///startdir/src/build-curl/tests/log/16/test502.txt > log/16/stdout502 2> log/16/stderr502
=== End of file commands.log
=== Start of file server.cmd
 Testnum 502
=== End of file server.cmd
=== Start of file test502.txt
 foo
    bar swsclose
 bar
    foo
 moo
=== End of file test502.txt
=== Start of file valgrind502
 ==107276== 
 ==107276== Process terminating with default action of signal 4 (SIGILL)
 ==107276==  Illegal opcode at address 0x51CC63F
 ==107276==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107276==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107276==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107276==    by 0x40041AF: main (first.c:264)
=== End of file valgrind502
test 0495 [user+password in URL with optional netrc]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind495 ../src/curl -q --output log/23/curl495.out  --include --trace-ascii log/23/trace495 --trace-time http://foo%40bar:secret@127.0.0.1:44711/495 --netrc-optional > log/23/stdout495 2> log/23/stderr495

 495: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 495
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind495 ../src/curl -q --output log/23/curl495.out  --include --trace-ascii log/23/trace495 --trace-time http://foo%40bar:secret@127.0.0.1:44711/495 --netrc-optional > log/23/stdout495 2> log/23/stderr495
=== End of file commands.log
=== Start of file http_server.log
 19:26:53.139792 ====> Client connect
 19:26:53.139831 accept_connection 3 returned 4
 19:26:53.139853 Read 93 bytes
 19:26:53.139862 Process 93 bytes request
 19:26:53.139874 Got request: GET /verifiedserver HTTP/1.1
 19:26:53.139882 Are-we-friendly question received
 19:26:53.139905 Wrote request (93 bytes) input to log/23/server.input
 19:26:53.139920 Identifying ourselves as friends
 19:26:53.139984 Response sent (56 bytes) and written to log/23/server.response
 19:26:53.139992 special request received, no persistency
 19:26:53.140000 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 33066 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 495
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind495
 ==106903== 
 ==106903== Process terminating with default action of signal 4 (SIGILL)
 ==106903==  Illegal opcode at address 0x492B75F
 ==106903==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106903==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106903==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106903==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106903==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106903==    by 0x49908EB: curl_version_info (version.c:600)
 ==106903==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106903==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106903==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106903==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind495
test 0507 [multi interface get with non-existing hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/2/stdout507 2> log/2/stderr507

libtests returned 132, when expecting 6
 507: exit FAILED
== Contents of files in the log/2/ directory after test 507
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/2/stdout507 2> log/2/stderr507
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.720211 ====> Client connect
 19:26:55.720244 accept_connection 3 returned 4
 19:26:55.721373 Read 93 bytes
 19:26:55.721392 Process 93 bytes request
 19:26:55.721408 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.721417 Are-we-friendly question received
 19:26:55.721451 Wrote request (93 bytes) input to log/2/server.input
 19:26:55.721471 Identifying ourselves as friends
 19:26:55.721550 Response sent (56 bytes) and written to log/2/server.response
 19:26:55.721562 special request received, no persistency
 19:26:55.721571 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 50926 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 507
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind507
 ==107631== 
 ==107631== Process terminating with default action of signal 4 (SIGILL)
 ==107631==  Illegal opcode at address 0x51CC63F
 ==107631==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107631==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107631==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107631==    by 0x40041AF: main (first.c:264)
=== End of file valgrind507
test 0500 [simple libcurl HTTP GET tool]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:35989/500 log/22/ip500 > log/22/stdout500 2> log/22/stderr500

 500: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 500
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/5/stdout504 2> log/5/stderr504
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind494 ../src/curl -q --output log/1/curl494.out  --include --trace-ascii log/1/trace494 --trace-time --netrc --netrc-file log/1/netrc494 ftp://127.0.0.1:40221/494 > log/1/stdout494 2> log/1/stderr494
ck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:35989/500 log/22/ip500 > log/22/stdout500 2> log/22/stderr500
=== End of file commands.log
=== Start of file http_server.log
 19:26:54.037166 ====> Client connect
 19:26:54.037202 accept_connection 3 returned 4
 19:26:54.037306 Read 93 bytes
 19:26:54.037321 Process 93 bytes request
 19:26:54.037335 Got request: GET /verifiedserver HTTP/1.1
 19:26:54.037344 Are-we-friendly question received
 19:26:54.037377 Wrote request (93 bytes) input to log/22/server.input
 19:26:54.037394 Identifying ourselves as friends
 19:26:54.037456 Response sent (56 bytes) and written to log/22/server.response
 19:26:54.037467 special request received, no persistency
 19:26:54.037476 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 52978 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 500
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind500
 ==107228== 
 ==107228== Process terminating with default action of signal 4 (SIGILL)
 ==107228==  Illegal opcode at address 0x51CC63F
 ==107228==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107228==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107228==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107228==    by 0x40041AF: main (first.c:264)
=== End of file valgrind500
test 0494 [skip 'macdef' when parsing netrc]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind494 ../src/curl -q --output log/1/curl494.out  --include --trace-ascii log/1/trace494 --trace-time --netrc --netrc-file log/1/netrc494 ftp://127.0.0.1:40221/494 > log/1/stdout494 2> log/1/stderr494

 494: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 494
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind494 ../src/curl -q --output log/1/curl494.out  --include --trace-ascii log/1/trace494 --trace-time --netrc --netrc-file log/1/netrc494 ftp://127.0.0.1:40221/494 > log/1/stdout494 2> log/1/stderr494
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:53.455478 ====> Client connect
 19:26:53.455691 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:53.465587 < "USER anonymous"
 19:26:53.465650 > "331 We are happy you popped in![CR][LF]"
 19:26:53.475528 < "PASS ftp@example.com"
 19:26:53.475598 > "230 Welcome you silly person[CR][LF]"
 19:26:53.475819 < "PWD"
 19:26:53.475860 > "257 "/" is current directory[CR][LF]"
 19:26:53.476057 < "EPSV"
 19:26:53.476089 ====> Passive DATA channel requested by client
 19:26:53.476106 DATA sockfilt for passive data channel starting...
 19:26:53.485460 DATA sockfilt for passive data channel started (pid 106869)
 19:26:53.485605 DATA sockfilt for passive data channel listens on port 45009
 19:26:53.485653 > "229 Entering Passive Mode (|||45009|)[CR][LF]"
 19:26:53.485670 Client has been notified that upcoming DATA connection is awaited on port 45009
 19:26:53.486005 Client connects to port 45009
 19:26:53.486042 ====> Client established passive DATA connection on port 45009
 19:26:53.486139 < "TYPE I"
 19:26:53.486178 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:53.486362 < "SIZE verifiedserver"
 19:26:53.486407 > "213 17[CR][LF]"
 19:26:53.486580 < "RETR verifiedserver"
 19:26:53.486617 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:53.486727 =====> Closing passive DATA connection...
 19:26:53.486746 Server disconnects passive DATA connection
 19:26:53.486984 Server disconnected passive DATA connection
 19:26:53.487012 DATA sockfilt for passive data channel quits (pid 106869)
 19:26:53.487304 DATA sockfilt for passive data channel quit (pid 106869)
 19:26:53.487332 =====> Closed passive DATA connection
 19:26:53.487363 > "226 File transfer complete[CR][LF]"
 19:26:53.532940 < "QUIT"
 19:26:53.533018 > "221 bye bye baby[CR][LF]"
 19:26:53.548760 MAIN sockfilt said DISC
 19:26:53.548814 ====> Client disconnected
 19:26:53.548896 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:54.063056 ====> Client connect
 19:26:54.063418 Received DATA (on stdin)
 19:26:54.063435 > 146 bytes data, server => client
 19:26:54.063446 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:54.063456 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:54.063465 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:54.073056 < 16 bytes data, client => server
 19:26:54.073088 'USER anonymous\r\n'
 19:26:54.073376 Received DATA (on stdin)
 19:26:54.073392 > 33 bytes data, server => client
 19:26:54.073403 '331 We are happy you popped in!\r\n'
 19:26:54.079807 < 22 bytes data, client => server
 19:26:54.079840 'PASS ftp@example.com\r\n'
 19:26:54.083322 Received DATA (on stdin)
 19:26:54.083342 > 30 bytes data, server => client
 19:26:54.083352 '230 Welcome you silly person\r\n'
 19:26:54.083435 < 5 bytes data, client => server
 19:26:54.083449 'PWD\r\n'
 19:26:54.083577 Received DATA (on stdin)
 19:26:54.083589 > 30 bytes data, server => client
 19:26:54.083599 '257 "/" is current directory\r\n'
 19:26:54.083674 < 6 bytes data, client => server
 19:26:54.083689 'EPSV\r\n'
 19:26:54.093393 Received DATA (on stdin)
 19:26:54.093409 > 39 bytes data, server => client
 19:26:54.093420 '229 Entering Passive Mode (|||45009|)\r\n'
 19:26:54.093630 < 8 bytes data, client => server
 19:26:54.093648 'TYPE I\r\n'
 19:26:54.093895 Received DATA (on stdin)
 19:26:54.093907 > 33 bytes data, server => client
 19:26:54.093918 '200 I modify TYPE as you wanted\r\n'
 19:26:54.093979 < 21 bytes data, client => server
 19:26:54.093991 'SIZE verifiedserver\r\n'
 19:26:54.094123 Received DATA (on stdin)
 19:26:54.094135 > 8 bytes data, server => client
 19:26:54.094144 '213 17\r\n'
 19:26:54.094201 < 21 bytes data, client => server
 19:26:54.094213 'RETR verifiedserver\r\n'
 19:26:54.094463 Received DATA (on stdin)
 19:26:54.094475 > 29 bytes data, server => client
 19:26:54.094485 '150 Binary junk (17 bytes).\r\n'
 19:26:54.095079 Received DATA (on stdin)
 19:26:54.095091 > 28 bytes data, server => client
 19:26:54.095102 '226 File transfer complete\r\n'
 19:26:54.140411 < 6 bytes data, client => server
 19:26:54.140443 'QUIT\r\n'
 19:26:54.140749 Received DATA (on stdin)
 19:26:54.140761 > 18 bytes data, server => client
 19:26:54.140770 '221 bye bye baby\r\n'
 19:26:54.156403 ====> Client disconnect
 19:26:54.156627 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:53.086151 Running IPv4 version
 19:26:53.086266 Listening on port 45009
 19:26:53.086305 Wrote pid 106869 to log/1/server/ftp_sockdata.pid
 19:26:53.093071 Received PING (on stdin)
 19:26:53.093217 Received PORT (on stdin)
 19:26:53.093670 ====> Client connect
 19:26:53.094513 Received DATA (on stdin)
 19:26:53.094525 > 17 bytes data, server => client
 19:26:53.094534 'WE ROOLZ: 84935\r\n'
 19:26:53.094561 Received DISC (on stdin)
 19:26:53.094572 ====> Client forcibly disconnected
 19:26:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind493 ../src/curl -q --include --trace-ascii log/13/trace493 --trace-time -x http://127.0.0.1:38821 http://this.hsts.example/493 --hsts log/13/input493 -w '%{url_effective}\n' > log/13/stdout493 2> log/13/stderr493
53.094736 Received QUIT (on stdin)
 19:26:53.094748 quits
 19:26:53.094829 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc494
 macdef testmacro
 	bin
 	cd default
 	cd login
 	put login.bin
 	cd ..
 	cd password
 	put password.bin
 	quit
 machine 127.0.0.1 login user1 password passwd1
=== End of file netrc494
=== Start of file server.cmd
 Testnum 494
=== End of file server.cmd
=== Start of file valgrind494
 ==106929== 
 ==106929== Process terminating with default action of signal 4 (SIGILL)
 ==106929==  Illegal opcode at address 0x492B75F
 ==106929==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106929==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106929==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106929==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106929==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106929==    by 0x49908EB: curl_version_info (version.c:600)
 ==106929==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106929==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106929==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106929==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind494
test 0504 [simple multi through local proxy without listener]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/5/stdout504 2> log/5/stderr504

libtests returned 132, when expecting 41
 504: exit FAILED
== Contents of files in the log/5/ directory after test 504
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/5/stdout504 2> log/5/stderr504
=== End of file commands.log
=== Start of file server.cmd
 Testnum 504
=== End of file server.cmd
=== Start of file valgrind504
 ==107484== 
 ==107484== Process terminating with default action of signal 4 (SIGILL)
 ==107484==  Illegal opcode at address 0x51CC63F
 ==107484==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107484==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107484==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107484==    by 0x40041AF: main (first.c:264)
=== End of file valgrind504
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind497 ../src/curl -q --output log/14/curl497.out  --include --trace-ascii log/14/trace497 --trace-time http://127.0.0.1:45467/497 > log/14/stdout497 2> log/14/stderr497
CMD (0): ./libtest/libtests lib518 http://127.0.0.1:40913/518 > log/10/stdout518 2> log/10/stderr518
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind501 ./libtest/libtests lib501 - > log/9/stdout501 2> log/9/stderr501
test 0493 [HSTS and %{url_effective} after upgrade]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind493 ../src/curl -q --include --trace-ascii log/13/trace493 --trace-time -x http://127.0.0.1:38821 http://this.hsts.example/493 --hsts log/13/input493 -w '%{url_effective}\n' > log/13/stdout493 2> log/13/stderr493

 493: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:26:56.410522438 +0000
+++ log/13/check-generated	2026-10-15 19:26:56.409079410 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 403 not OK at all[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Funny-head: yesyes[CR][LF]
-[CR][LF]
-https://this.hsts.example/493[LF]
== Contents of files in the log/13/ directory after test 493
=== Start of file check-expected
 HTTP/1.1 403 not OK at all[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Funny-head: yesyes[CR][LF]
 [CR][LF]
 https://this.hsts.example/493[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind493 ../src/curl -q --include --trace-ascii log/13/trace493 --trace-time -x http://127.0.0.1:38821 http://this.hsts.example/493 --hsts log/13/input493 -w '%{url_effective}\n' > log/13/stdout493 2> log/13/stderr493
=== End of file commands.log
=== Start of file http_server.log
 19:26:52.933068 ====> Client connect
 19:26:52.933107 accept_connection 3 returned 4
 19:26:52.934207 Read 93 bytes
 19:26:52.934846 Process 93 bytes request
 19:26:52.946431 Got request: GET /verifiedserver HTTP/1.1
 19:26:52.946459 Are-we-friendly question received
 19:26:52.946512 Wrote request (93 bytes) input to log/13/server.input
 19:26:52.946536 Identifying ourselves as friends
 19:26:52.946625 Response sent (56 bytes) and written to log/13/server.response
 19:26:52.946639 special request received, no persistency
 19:26:52.946648 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 36044 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file input493
 .hsts.example "99991001 04:47:41"
=== End of file input493
=== Start of file server.cmd
 Testnum 493
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind493
 ==106756== 
 ==106756== Process terminating with default action of signal 4 (SIGILL)
 ==106756==  Illegal opcode at address 0x492B75F
 ==106756==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==106756==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==106756==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==106756==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==106756==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==106756==    by 0x49908EB: curl_version_info (version.c:600)
 ==106756==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==106756==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==106756==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==106756==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind493
test 0497 [Reject too large accumulated HTTP response headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind497 ../src/curl -q --output log/14/curl497.out  --include --trace-ascii log/14/trace497 --trace-time http://127.0.0.1:45467/497 > log/14/stdout497 2> log/14/stderr497

 497: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 497
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind497 ../src/curl -q --output log/14/curl497.out  --include --trace-ascii log/14/trace497 --trace-time http://127.0.0.1:45467/497 > log/14/stdout497 2> log/14/stderr497
=== End of file commands.log
=== Start of file http_server.log
 19:26:53.679930 ====> Client connect
 19:26:53.679978 accept_connection 3 returned 4
 19:26:53.686702 Read 93 bytes
 19:26:53.686729 Process 93 bytes request
 19:26:53.686743 Got request: GET /verifiedserver HTTP/1.1
 19:26:53.686752 Are-we-friendly question received
 19:26:53.686801 Wrote request (93 bytes) input to log/14/server.input
 19:26:53.686824 Identifying ourselves as friends
 19:26:53.686896 Response sent (56 bytes) and written to log/14/server.response
 19:26:53.686907 special request received, no persistency
 19:26:53.686915 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 39674 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 497
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind497
 ==107104== 
 ==107104== Process terminating with default action of signal 4 (SIGILL)
 ==107104==  Illegal opcode at address 0x492B75F
 ==107104==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==107104==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==107104==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==107104==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==107104==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==107104==    by 0x49908EB: curl_version_info (version.c:600)
 ==107104==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==107104==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==107104==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==107104==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind497
test 0501 [simple libcurl attempt operation without URL set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind501 ./libtest/libtests lib501 - > log/9/stdout501 2> log/9/stderr501

libtests returned 132, when expecting 3
 501: exit FAILED
== Contents of files in the log/9/ directory after test 501
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind501 ./libtest/libtests lib501 - > log/9/stdout501 2> log/9/stderr501
=== End of file commands.log
=== Start of file server.cmd
 Testnum 501
=== End of file server.cmd
=== Start of file valgrind501
 ==107268== 
 ==107268== Process terminating with default action of signal 4 (SIGILL)
 ==107268==  Illegal opcode at address 0x51CC63F
 ==107268==    at 0x51CC63F: formatf.constprop.1 (mprintf.CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:40859/512 > log/7/stdout512 2> log/7/stderr512
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:41549/505 log/20/upload505 > log/20/stdout505 2> log/20/stderr505
c:1115)
 ==107268==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107268==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107268==    by 0x40041AF: main (first.c:264)
=== End of file valgrind501
prechecked ./libtest/libtests lib518 check
test 0518 [HTTP GET with more than FD_SETSIZE descriptors open]
./libtest/libtests lib518 http://127.0.0.1:40913/518 > log/10/stdout518 2> log/10/stderr518
 valgrind SKIPPED
--pd---e--- OK (471 out of 1890, remaining: 02:59, took 0.325s, duration: 00:59)
test 0512 [simple curl_easy_duplicate() test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:40859/512 > log/7/stdout512 2> log/7/stderr512

 512: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 512
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:40859/512 > log/7/stdout512 2> log/7/stderr512
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.013519 ====> Client connect
 19:26:55.013561 accept_connection 3 returned 4
 19:26:55.013585 Read 93 bytes
 19:26:55.013595 Process 93 bytes request
 19:26:55.013608 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.013617 Are-we-friendly question received
 19:26:55.013650 Wrote request (93 bytes) input to log/7/server.input
 19:26:55.013668 Identifying ourselves as friends
 19:26:55.013744 Response sent (56 bytes) and written to log/7/server.response
 19:26:55.013756 special request received, no persistency
 19:26:55.013764 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 45950 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 512
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind512
 ==107876== 
 ==107876== Process terminating with default action of signal 4 (SIGILL)
 ==107876==  Illegal opcode at address 0x51CC63F
 ==107876==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107876==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107876==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107876==    by 0x40041AF: main (first.c:264)
=== End of file valgrind512
test 0505 [FTP upload with rename after transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:41549/505 log/20/upload505 > log/20/stdout505 2> log/20/stderr505

 505: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 505
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:41549/505 log/20/upload505 > log/20/stdout505 2> log/20/stderr505
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:55.055475 ====> Client connect
 19:26:55.055666 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:55.056022 < "USER anonymous"
 19:26:55.056061 > "331 We are happy you popped in![CR][LF]"
 19:26:55.056252 < "PASS ftp@example.com"
 19:26:55.056282 > "230 Welcome you silly person[CR][LF]"
 19:26:55.056448 < "PWD"
 19:26:55.056482 > "257 "/" is current directory[CR][LF]"
 19:26:55.056649 < "EPSV"
 19:26:55.056673 ====> Passive DATA channel requested by client
 19:26:55.056687 DATA sockfilt for passive data channel starting...
 19:26:55.062960 DATA sockfilt for passive data channel started (pid 107572)
 19:26:55.063073 DATA sockfilt for passive data channel listens on port 38383
 19:26:55.063110 > "229 Entering Passive Mode (|||38383|)[CR][LF]"
 19:26:55.063127 Client has been notified that upcoming DATA connection is awaited on port 38383
 19:26:55.063386 Client connects to port 38383
 19:26:55.063415 ====> Client established passive DATA connection on port 38383
 19:26:55.063487 < "TYPE I"
 19:26:55.063514 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:55.063655 < "SIZE verifiedserver"
 19:26:55.063689 > "213 17[CR][LF]"
 19:26:55.063813 < "RETR verifiedserver"
 19:26:55.063840 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:55.063920 =====> Closing passive DATA connection...
 19:26:55.063933 Server disconnects passive DATA connection
 19:26:55.064108 Server disconnected passive DATA connection
 19:26:55.064129 DATA sockfilt for passive data channel quits (pid 107572)
 19:26:55.064370 DATA sockfilt for passive data channel quit (pid 107572)
 19:26:55.064393 =====> Closed passive DATA connection
 19:26:55.064417 > "226 File transfer complete[CR][LF]"
 19:26:55.110391 < "QUIT"
 19:26:55.110456 > "221 bye bye baby[CR][LF]"
 19:26:55.111552 MAIN sockfilt said DISC
 19:26:55.111595 ====> Client disconnected
 19:26:55.111688 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:54.663411 ====> Client connect
 19:26:54.663739 Received DATA (on stdin)
 19:26:54.663755 > 146 bytes data, server => client
 19:26:54.663766 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:54.663776 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:54.663784 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:54.663922 < 16 bytes data, client => server
 19:26:54.663936 'USER anonymous\r\n'
 19:26:54.664117 Received DATA (on stdin)
 19:26:54.664129 > 33 bytes data, server => client
 19:26:54.664139 '331 We are happy you popped in!\r\n'
 19:26:54.664200 < 22 bytes data, client => server
 19:26:54.664212 'PASS ftp@example.com\r\n'
 19:26:54.664335 Received DATA (on stdin)
 19:26:54.664347 > 30 bytes data, server => client
 19:26:54.664357 '230 Welcome you silly person\r\n'
 19:26:54.664412 < 5 bytes data, client => server
 19:26:54.664422 'PWD\r\n'
 19:26:54.664534 Received DATA (on stdin)
 19:26:54.664545 > 30 bytes data, server => client
 19:26:54.664555 '257 "/" is current directory\r\n'
 19:26:54.664615 < 6 bytes data, client => server
 19:26:54.664626 'EPSV\r\n'
 19:26:54.671184 Received DATA (on stdin)
 19:26:54.671196 > 39 bytes data, server => client
 19:26:54.671207 '229 Entering Passive Mode (|||38383|)\r\n'
 19:26:54.671365 < 8 bytes data, client => server
 19:26:54.671378 'TYPE I\r\n'
 19:26:54.671565 Received DATA (on stdin)
 19:26:54.671574 > 33 bytes data, server => client
 19:26:54.671583 '200 I modify TYPE as you wanted\r\n'
 19:26:54.671634 < 21 bytes data, client => server
 19:26:54.671642 'SIZE verifiedserver\r\n'
 19:26:54.671739 Received DATA (on stdin)
 19:26:54.671748 > 8 bytes data, server => client
 19:26:54.671756 '213 17\r\n'
 19:26:54.671799 < 21 bytes data, client => server
 19:26:54.671807 'RETR verifiedserver\r\n'
 19:26:54.671985 Received DATA (on stdin)
 19:26:54.671994 > 29 bytes data, server => client
 19:26:54.672002 '150 Binary junk (17 bytes).\r\n'
 19:26:54.672470 Received DATA (on stdin)
 19:26:54.672480 > 28 bytes data, serCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind503 ./libtest/libtests lib503 http://machine.503:44467/503 127.0.0.1:33431 > log/8/stdout503 2> log/8/stderr503
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind498 ../src/curl -q --output log/21/curl498.out  --include --trace-ascii log/21/trace498 --trace-time http://127.0.0.1:39881/498 --max-redirs 400 --location > log/21/stdout498 2> log/21/stderr498
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:33935/510 > log/6/stdout510 2> log/6/stderr510
ver => client
 19:26:54.672488 '226 File transfer complete\r\n'
 19:26:54.718237 < 6 bytes data, client => server
 19:26:54.718271 'QUIT\r\n'
 19:26:54.718536 Received DATA (on stdin)
 19:26:54.718553 > 18 bytes data, server => client
 19:26:54.718564 '221 bye bye baby\r\n'
 19:26:54.719558 ====> Client disconnect
 19:26:54.719767 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:55.670823 Running IPv4 version
 19:26:55.670900 Listening on port 38383
 19:26:55.670937 Wrote pid 107572 to log/20/server/ftp_sockdata.pid
 19:26:55.670956 Received PING (on stdin)
 19:26:55.671042 Received PORT (on stdin)
 19:26:55.671396 ====> Client connect
 19:26:55.672051 Received DATA (on stdin)
 19:26:55.672062 > 17 bytes data, server => client
 19:26:55.672070 'WE ROOLZ: 84833\r\n'
 19:26:55.672093 Received DISC (on stdin)
 19:26:55.672184 ====> Client forcibly disconnected
 19:26:55.672213 Received QUIT (on stdin)
 19:26:55.672221 quits
 19:26:55.672281 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 505
=== End of file server.cmd
=== Start of file upload505
 Contents
 of
 a file
 to verify
 ftp
 upload
 works?
=== End of file upload505
=== Start of file valgrind505
 ==107639== 
 ==107639== Process terminating with default action of signal 4 (SIGILL)
 ==107639==  Illegal opcode at address 0x51CC63F
 ==107639==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107639==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107639==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107639==    by 0x40041AF: main (first.c:264)
=== End of file valgrind505
test 0503 [simple multi http:// through proxytunnel with authentication info]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind503 ./libtest/libtests lib503 http://machine.503:44467/503 127.0.0.1:33431 > log/8/stdout503 2> log/8/stderr503

 503: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 503
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind503 ./libtest/libtests lib503 http://machine.503:44467/503 127.0.0.1:33431 > log/8/stdout503 2> log/8/stderr503
=== End of file commands.log
=== Start of file http2_server.log
 19:26:55.568356 ====> Client connect
 19:26:55.568407 accept_connection 3 returned 4
 19:26:55.568435 Read 93 bytes
 19:26:55.568446 Process 93 bytes request
 19:26:55.568473 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.568483 Are-we-friendly question received
 19:26:55.568514 Wrote request (93 bytes) input to log/8/proxy.input
 19:26:55.568532 Identifying ourselves as friends
 19:26:55.568627 Response sent (56 bytes) and written to log/8/proxy.response
 19:26:55.568638 special request received, no persistency
 19:26:55.568647 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:33431...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33431) from 127.0.0.1 port 51742 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33431
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33431 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 95309
=== End of file http2_verify.out
=== Start of file http_server.log
 19:26:54.482982 ====> Client connect
 19:26:54.483025 accept_connection 3 returned 4
 19:26:54.483050 Read 93 bytes
 19:26:54.483061 Process 93 bytes request
 19:26:54.483075 Got request: GET /verifiedserver HTTP/1.1
 19:26:54.483084 Are-we-friendly question received
 19:26:54.483118 Wrote request (93 bytes) input to log/8/server.input
 19:26:54.483138 Identifying ourselves as friends
 19:26:54.483213 Response sent (56 bytes) and written to log/8/server.response
 19:26:54.483225 special request received, no persistency
 19:26:54.483234 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 51302 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 95309
=== End of file proxy.response
=== Start of file server.cmd
 connection-monitor
 Testnum 503
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file test503.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test503.txt
=== Start of file valgrind503
 ==107522== 
 ==107522== Process terminating with default action of signal 4 (SIGILL)
 ==107522==  Illegal opcode at address 0x51CC63F
 ==107522==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107522==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107522==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107522==    by 0x40041AF: main (first.c:264)
=== End of file valgrind503
test 0510 [send HTTP POST using read callback, using chunked transfer-encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:33935/510 > log/6/stdout510 2> log/6/stderr510

 510: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 510
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:33935/510 > log/6/stdout510 2> log/6/stderr510
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.013504 ====> Client connect
 19:26:55.013544 accept_connection 3 returned 4
 19:26:55.013567 Read 93 bytes
 19:26:55.013578 Process 93 bytes request
 19:26:55.013590 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.013599 Are-we-friendly question received
 19:26:55.013632 Wrote request (93 bytes) input to log/6/server.input
 19:26:55.013648 Identifying ourselves as friends
 19:26:55.013727 Response sent (56 bytes) and written to log/6/server.response
 19:26:55.013736 special request received, no persistency
 19:26:55.013745 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 41620 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 510
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind510
 ==107875== 
 ==107875== Process terminating with default action of signal 4 (SIGILL)
 ==107875==  Illegal opcode at address 0x51CC63FCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:35993/508 > log/17/stdout508 2> log/17/stderr508
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind509 ./libtest/libtests lib509 - > log/15/stdout509 2> log/15/stderr509

 ==107875==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107875==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107875==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107875==    by 0x40041AF: main (first.c:264)
=== End of file valgrind510
test 0498 [Reject too large HTTP response headers on endless redirects]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind498 ../src/curl -q --output log/21/curl498.out  --include --trace-ascii log/21/trace498 --trace-time http://127.0.0.1:39881/498 --max-redirs 400 --location > log/21/stdout498 2> log/21/stderr498

curl returned 132, when expecting 56
 498: exit FAILED
== Contents of files in the log/21/ directory after test 498
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind498 ../src/curl -q --output log/21/curl498.out  --include --trace-ascii log/21/trace498 --trace-time http://127.0.0.1:39881/498 --max-redirs 400 --location > log/21/stdout498 2> log/21/stderr498
=== End of file commands.log
=== Start of file http_server.log
 19:26:53.913294 ====> Client connect
 19:26:53.913332 accept_connection 3 returned 4
 19:26:53.913354 Read 93 bytes
 19:26:53.913363 Process 93 bytes request
 19:26:53.913375 Got request: GET /verifiedserver HTTP/1.1
 19:26:53.913383 Are-we-friendly question received
 19:26:53.913407 Wrote request (93 bytes) input to log/21/server.input
 19:26:53.913421 Identifying ourselves as friends
 19:26:53.913487 Response sent (56 bytes) and written to log/21/server.response
 19:26:53.913496 special request received, no persistency
 19:26:53.913504 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 51956 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 498
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind498
 ==107195== 
 ==107195== Process terminating with default action of signal 4 (SIGILL)
 ==107195==  Illegal opcode at address 0x492B75F
 ==107195==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==107195==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==107195==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==107195==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==107195==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==107195==    by 0x49908EB: curl_version_info (version.c:600)
 ==107195==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==107195==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==107195==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==107195==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind498
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:36115/511 > log/18/stdout511 2> log/18/stderr511
test 0509 [initialization with memory callbacks and actual usage]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind509 ./libtest/libtests lib509 - > log/15/stdout509 2> log/15/stderr509

 509: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:26:56.760642578 +0000
+++ log/15/check-generated	2026-10-15 19:26:56.756746823 +0000
@@ -1 +0,0 @@
-Callbacks were invoked![LF]
== Contents of files in the log/15/ directory after test 509
=== Start of file check-expected
 Callbacks were invoked![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind509 ./libtest/libtests lib509 - > log/15/stdout509 2> log/15/stderr509
=== End of file commands.log
=== Start of file server.cmd
 Testnum 509
=== End of file server.cmd
=== Start of file valgrind509
 ==107788== 
 ==107788== Process terminating with default action of signal 4 (SIGILL)
 ==107788==  Illegal opcode at address 0x51CC63F
 ==107788==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107788==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107788==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107788==    by 0x40041AF: main (first.c:264)
=== End of file valgrind509
test 0508 [send HTTP POST using read callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:35993/508 > log/17/stdout508 2> log/17/stderr508

 508: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 508
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:35993/508 > log/17/stdout508 2> log/17/stderr508
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.740453 ====> Client connect
 19:26:55.740490 accept_connection 3 returned 4
 19:26:55.740512 Read 93 bytes
 19:26:55.740523 Process 93 bytes request
 19:26:55.740535 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.740544 Are-we-friendly question received
 19:26:55.740576 Wrote request (93 bytes) input to log/17/server.input
 19:26:55.740595 Identifying ourselves as friends
 19:26:55.740670 Response sent (56 bytes) and written to log/17/server.response
 19:26:55.740681 special request received, no persistency
 19:26:55.740690 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 45642 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 508
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind508
 ==107648== 
 ==107648== Process terminating with default action of signal 4 (SIGILL)
 ==107648==  Illegal opcode at address 0x51CC63F
 ==107648==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107648==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107648==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107648==    by 0x40041AF: main (first.c:264)
=== End of file valgrind508
test 0511 [FTP with FILETIME and NOBODY but missing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:36115/511 > log/18/stdout511 2> log/18/stderr511

 511: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 511
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:36115/511 > log/18/stdout511 2> log/18/stderr511
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:55.398404 ====> Client connect
 19:26:55.398646 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:55.402341 < "USER anonymous"
 19:26:55.402391 > "331 We are happy you popped in![CR][LF]"
 19:26:55.402590 < "PASS ftp@example.com"
 19:26:55.402624 > "230 Welcome you silly person[CR][LF]"
 19:26:55.402806 < "PWD"
 19:26:55.402845 > "257 "/" is current directory[CR][LF]"
 19:26:55.403045 < "EPSV"
 19:26:55.403075 ====> Passive DATA channel requested by client
 19:26:55.403091 DATA sockfilt for passive data channel starting...
 19:26:55.408755 DATA sockfilt for passive data channel started (pid 107867)
 19:26:55.408914 DATA sockfilt for passive data channel listens on port 33239
 19:26:55.408963 > "229 Entering Passive Mode (|||33239|)[CR][LF]"
 19:26:55.408983 Client has been notified that upcoming DATA connection is awaited on port 33239
 19:26:55.409275 Client connects to port 33239
 19:26:55.409307 ====> Client established passive DATA connection on port 33239
 19:26:55.409407 < "TYPE I"
 19:26:55.409443 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:55.409628 < "SIZE verifiedserver"
 19:26:55.409672 > "213 17[CR][LF]"
 19:26:55.409854 < "RETR verifiedserver"
 19:26:55.409895 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:55.409992 =====> Closing passive DATA connection...
 19:26:55.410012 Server disconnects passive DATA connection
 19:26:55.410177 Server disconnected passive DATA connection
 19:26:55.410203 DATA sockfilt for passive data channel quits (pid 107867)
 19:26:55.410491 DATA sockfilt for passive data channel quit (pid 107867)
 19:26:55.410521 =====> Closed passive DATA connection
 19:26:55.410554 > "226 File transfer complete[CR][LF]"
 19:26:55.452605 < "QUIT"
 19:26:55.452673 > "221 bye bye baby[CR][LF]"
 19:26:55.454094 MAIN sockfilt said DISC
 19:26:55.454137 ====> Client disconnected
 19:26:55.454226 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:55.006401 ====> Client connect
 19:26:55.006804 Received DATA (on stdin)
 19:26:55.006821 > 146 bytes data, server => client
 19:26:55.006832 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:55.006843 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:55.006852 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:55.010251 < 16 bytes data, client => server
 19:26:55.010274 'USER anonymous\r\n'
 19:26:55.010528 Received DATA (on stdin)
 19:26:55.010541 > 33 bytes data, server => client
 19:26:55.010552 '331 We are happy you popped in!\r\n'
 19:26:55.010615 < 22 bytes data, client => server
 19:26:55.010629 'PASS ftp@example.com\r\n'
 19:26:55.010755 Received DATA (on stdin)
 19:26:55.010768 > 30 bytes data, server => client
 19:26:55.010779 '230 Welcome you silly person\r\n'
 19:26:55.010835 < 5 bytes data, client => server
 19:26:55.010847 'PWD\r\n'
 19:26:55.010978 Received DATA (on stdin)
 19:26:55.010990 > 30 bytes data, server => client
 19:26:55.011001 '257 "/" is current directory\r\n'
 19:26:55.011072 < 6 bytes data, clieCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind499 ../src/curl -q --output log/3/curl499.out  --include --trace-ascii log/3/trace499 --trace-time http://127.0.0.1:36161/499 -I > log/3/stdout499 2> log/3/stderr499
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:46497/513 > log/19/stdout513 2> log/19/stderr513
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:38895/516 > log/24/stdout516 2> log/24/stderr516
nt => server
 19:26:55.011087 'EPSV\r\n'
 19:26:55.017120 Received DATA (on stdin)
 19:26:55.017138 > 39 bytes data, server => client
 19:26:55.017149 '229 Entering Passive Mode (|||33239|)\r\n'
 19:26:55.017315 < 8 bytes data, client => server
 19:26:55.017332 'TYPE I\r\n'
 19:26:55.017576 Received DATA (on stdin)
 19:26:55.017588 > 33 bytes data, server => client
 19:26:55.017599 '200 I modify TYPE as you wanted\r\n'
 19:26:55.017660 < 21 bytes data, client => server
 19:26:55.017674 'SIZE verifiedserver\r\n'
 19:26:55.017805 Received DATA (on stdin)
 19:26:55.017818 > 8 bytes data, server => client
 19:26:55.017827 '213 17\r\n'
 19:26:55.017888 < 21 bytes data, client => server
 19:26:55.017902 'RETR verifiedserver\r\n'
 19:26:55.018234 Received DATA (on stdin)
 19:26:55.018244 > 29 bytes data, server => client
 19:26:55.018254 '150 Binary junk (17 bytes).\r\n'
 19:26:55.018686 Received DATA (on stdin)
 19:26:55.018699 > 28 bytes data, server => client
 19:26:55.018710 '226 File transfer complete\r\n'
 19:26:55.060498 < 6 bytes data, client => server
 19:26:55.060536 'QUIT\r\n'
 19:26:55.060829 Received DATA (on stdin)
 19:26:55.060847 > 18 bytes data, server => client
 19:26:55.060858 '221 bye bye baby\r\n'
 19:26:55.062172 ====> Client disconnect
 19:26:55.062374 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:55.012915 Running IPv4 version
 19:26:55.012996 Listening on port 33239
 19:26:55.013042 Wrote pid 107867 to log/18/server/ftp_sockdata.pid
 19:26:55.016794 Received PING (on stdin)
 19:26:55.016935 Received PORT (on stdin)
 19:26:55.017354 ====> Client connect
 19:26:55.018144 Received DATA (on stdin)
 19:26:55.018157 > 17 bytes data, server => client
 19:26:55.018168 'WE ROOLZ: 85350\r\n'
 19:26:55.018198 Received DISC (on stdin)
 19:26:55.018210 ====> Client forcibly disconnected
 19:26:55.018341 Received QUIT (on stdin)
 19:26:55.018354 quits
 19:26:55.018424 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY MDTM 550 bluah you f00l
 REPLY SIZE 550 bluah you f00l
 Testnum 511
=== End of file server.cmd
=== Start of file valgrind511
 ==107928== 
 ==107928== Process terminating with default action of signal 4 (SIGILL)
 ==107928==  Illegal opcode at address 0x51CC63F
 ==107928==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==107928==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==107928==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==107928==    by 0x40041AF: main (first.c:264)
=== End of file valgrind511
test 0499 [HTTP HEAD to server still sending a body]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind499 ../src/curl -q --output log/3/curl499.out  --include --trace-ascii log/3/trace499 --trace-time http://127.0.0.1:36161/499 -I > log/3/stdout499 2> log/3/stderr499

 499: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 499
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind499 ../src/curl -q --output log/3/curl499.out  --include --trace-ascii log/3/trace499 --trace-time http://127.0.0.1:36161/499 -I > log/3/stdout499 2> log/3/stderr499
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.006088 ====> Client connect
 19:26:55.006121 accept_connection 3 returned 4
 19:26:55.006141 Read 93 bytes
 19:26:55.006150 Process 93 bytes request
 19:26:55.006162 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.006171 Are-we-friendly question received
 19:26:55.006197 Wrote request (93 bytes) input to log/3/server.input
 19:26:55.006212 Identifying ourselves as friends
 19:26:55.006272 Response sent (56 bytes) and written to log/3/server.response
 19:26:55.006282 special request received, no persistency
 19:26:55.006290 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36368 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 499
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind499
 ==107222== 
 ==107222== Process terminating with default action of signal 4 (SIGILL)
 ==107222==  Illegal opcode at address 0x492B75F
 ==107222==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==107222==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==107222==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==107222==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==107222==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==107222==    by 0x49908EB: curl_version_info (version.c:600)
 ==107222==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==107222==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==107222==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==107222==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind499
test 0516 [make an HTTPPOST set to NULL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:38895/516 > log/24/stdout516 2> log/24/stderr516

 516: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 516
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:38895/516 > log/24/stdout516 2> log/24/stderr516
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.568683 ====> Client connect
 19:26:55.568724 accept_connection 3 returned 4
 19:26:55.568748 Read 93 bytes
 19:26:55.568758 Process 93 bytes request
 19:26:55.568770 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.568779 Are-we-friendly question received
 19:26:55.568805 Wrote request (93 bytes) input to log/24/server.input
 19:26:55.568822 Identifying ourselves as friends
 19:26:55.568896 Response sent (56 bytes) and written to log/24/server.response
 19:26:55.568906 special request received, no persistency
 19:26:55.568914 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 34974 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 516
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind516
 ==108194== 
 ==108194== Process terminating with default action of signal 4 (SIGILL)
 ==108194==  Illegal opcode at address 0x51CC63F
 ==108194==    at 0x51CC63F: formatf.constCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:35735/515 > log/4/stdout515 2> log/4/stderr515
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:40989/514 > log/11/stdout514 2> log/11/stderr514
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind517 ./libtest/libtests lib517 - > log/12/stdout517 2> log/12/stderr517
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:37089 > log/5/stdout523 2> log/5/stderr523
prop.1 (mprintf.c:1115)
 ==108194==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108194==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108194==    by 0x40041AF: main (first.c:264)
=== End of file valgrind516
test 0515 [make a POSTFIELDS set to NULL with POSTFIELDSIZE set to zero]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:35735/515 > log/4/stdout515 2> log/4/stderr515

 515: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 515
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:35735/515 > log/4/stdout515 2> log/4/stderr515
=== End of file commands.log
=== Start of file http_server.log
 19:26:56.534170 ====> Client connect
 19:26:56.534219 accept_connection 3 returned 4
 19:26:56.534250 Read 93 bytes
 19:26:56.534262 Process 93 bytes request
 19:26:56.534277 Got request: GET /verifiedserver HTTP/1.1
 19:26:56.534286 Are-we-friendly question received
 19:26:56.534322 Wrote request (93 bytes) input to log/4/server.input
 19:26:56.534346 Identifying ourselves as friends
 19:26:56.534450 Response sent (56 bytes) and written to log/4/server.response
 19:26:56.534464 special request received, no persistency
 19:26:56.534474 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 41834 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 515
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind515
 ==108168== 
 ==108168== Process terminating with default action of signal 4 (SIGILL)
 ==108168==  Illegal opcode at address 0x51CC63F
 ==108168==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108168==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108168==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108168==    by 0x40041AF: main (first.c:264)
=== End of file valgrind515
test 0517 [curl_getdate() testing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind517 ./libtest/libtests lib517 - > log/12/stdout517 2> log/12/stderr517

libtests returned 132, when expecting 0
 517: exit FAILED
== Contents of files in the log/12/ directory after test 517
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind517 ./libtest/libtests lib517 - > log/12/stdout517 2> log/12/stderr517
=== End of file commands.log
=== Start of file server.cmd
 Testnum 517
=== End of file server.cmd
=== Start of file valgrind517
 ==108282== 
 ==108282== Process terminating with default action of signal 4 (SIGILL)
 ==108282==  Illegal opcode at address 0x51CC63F
 ==108282==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108282==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108282==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108282==    by 0x40041AF: main (first.c:264)
=== End of file valgrind517
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:35903/519 > log/16/stdout519 2> log/16/stderr519
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 38033 > log/2/stdout521 2> log/2/stderr521
test 0523 [HTTP GET with proxy and CURLOPT_PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:37089 > log/5/stdout523 2> log/5/stderr523

 523: stdout FAILED:
--- log/5/check-expected	2026-10-15 19:26:57.862045516 +0000
+++ log/5/check-generated	2026-10-15 19:26:57.856210197 +0000
@@ -1 +0,0 @@
-hello[LF]
== Contents of files in the log/5/ directory after test 523
=== Start of file check-expected
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:37089 > log/5/stdout523 2> log/5/stderr523
=== End of file commands.log
=== Start of file http_server.log
 19:26:56.111708 ====> Client connect
 19:26:56.111754 accept_connection 3 returned 4
 19:26:56.111786 Read 93 bytes
 19:26:56.111797 Process 93 bytes request
 19:26:56.111811 Got request: GET /verifiedserver HTTP/1.1
 19:26:56.111821 Are-we-friendly question received
 19:26:56.111853 Wrote request (93 bytes) input to log/5/server.input
 19:26:56.111871 Identifying ourselves as friends
 19:26:56.111962 Response sent (56 bytes) and written to log/5/server.response
 19:26:56.111974 special request received, no persistency
 19:26:56.111983 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 33628 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 523
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind523
 ==108592== 
 ==108592== Process terminating with default action of signal 4 (SIGILL)
 ==108592==  Illegal opcode at address 0x51CC63F
 ==108592==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108592==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108592==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108592==    by 0x40041AF: main (first.c:264)
=== End of file valgrind523
test 0519 [GET same URL twice with different users]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:35903/519 > log/16/stdout519 2> log/16/stderr519

 519: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 519
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:35903/519 > log/16/stdout519 2> log/16/stderr519
=== End of file commands.log
=== Start of file http_server.log
 19:26:56.941787 ====> Client connect
 19:26:56.941816 accept_connection 3 returned 4
 19:26:56.941836 Read 93 bytes
 19:26:56.941846 Process 93 bytes request
 19:26:56.941858 Got request: GET /verifiedserver HTTP/1.1
 19:26:56.941867 Are-we-friendly question received
 19:26:56.941894 Wrote request (93 bytes) input to log/16/server.input
 19:26:56.941910 Identifying ourselves as friends
 19:26:56.941971 Response sent (56 bytes) and written to log/16/server.response
 19:26:56.941982 special request received, no persistency
 19:26:56.941990 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 40916 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 519
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind519
 ==108424== 
 ==108424== Process terminating with default action of signal 4 (SIGILL)
 ==108424==  Illegal opcode at address 0x51CC63F
 ==108424==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108424==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108424==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108424==    by 0x40041AF: main (first.c:264)
=== End of file valgrind519
test 0521 [FTP dir list PASV with CURLOPT_PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 38033 > log/2/stdout521 2> log/2/stderr521

 521: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 521
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 38033 > log/2/stdout521 2> log/2/stderr521
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.478887 ====> Client connect
 19:26:56.526593 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.540969 < "USER anonymous"
 19:26:56.541030 > "331 We are happy you popped in![CR][LF]"
 19:26:56.541268 < "PASS ftp@example.com"
 19:26:56.541305 > "230 Welcome you silly person[CR][LF]"
 19:26:56.541493 < "PWD"
 19:26:56.541530 > "257 "/" is current directory[CR][LF]"
 19:26:56.541723 < "EPSV"
 19:26:56.541750 ====> Passive DATA channel requested by client
 19:26:56.541766 DATA sockfilt for passive data channel starting...
 19:26:56.546426 DATA sockfilt for passive data channel started (pid 108580)
 19:26:56.546525 DATA sockfilt for passive data channel listens on port 46273
 19:26:56.546557 > "229 Entering Passive Mode (|||46273|)[CR][LF]"
 19:26:56.546570 Client has been notified that upcoming DATA connection is awaited on port 46273
 19:26:56.546740 Client connects to port 46273
 19:26:56.546765 ====> Client established passive DATA connection on port 46273
 19:26:56.546901 < "TYPE I"
 19:26:56.546929 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.547045 < "SIZE verifiedserver"
 19:26:56.547070 > "213 17[CR][LF]"
 19:26:56.547169 < "RETR verifiedserver"
 19:26:56.547194 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.547386 =====> Closing passive DATA connection...
 19:26:56.547401 Server disconnects passive DATA connection
 19:26:56.547497 Server disconnected passive DATA connection
 19:26:56.547514 DATA sockfilt for passive data channel quits (pid 108580)
 19:26:56.547675 DATA sockfilt for passive data channel quit (pid 108580)
 19:26:56.547693 =====> Closed passive DATA connection
 19:26:56.547750 > "226 File transfer complete[CR][LF]"
 19:26:56.5923CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:43733/path/528 > log/9/stdout528 2> log/9/stderr528
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 35989 > log/22/stdout522 2> log/22/stderr522
37 < "QUIT"
 19:26:56.592395 > "221 bye bye baby[CR][LF]"
 19:26:56.593608 MAIN sockfilt said DISC
 19:26:56.593652 ====> Client disconnected
 19:26:56.593734 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:56.083734 ====> Client connect
 19:26:56.137044 Received DATA (on stdin)
 19:26:56.143716 > 146 bytes data, server => client
 19:26:56.143743 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:56.143754 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:56.143762 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:56.147141 < 16 bytes data, client => server
 19:26:56.147166 'USER anonymous\r\n'
 19:26:56.149419 Received DATA (on stdin)
 19:26:56.149437 > 33 bytes data, server => client
 19:26:56.149447 '331 We are happy you popped in!\r\n'
 19:26:56.149528 < 22 bytes data, client => server
 19:26:56.149540 'PASS ftp@example.com\r\n'
 19:26:56.149683 Received DATA (on stdin)
 19:26:56.149695 > 30 bytes data, server => client
 19:26:56.149705 '230 Welcome you silly person\r\n'
 19:26:56.149769 < 5 bytes data, client => server
 19:26:56.149783 'PWD\r\n'
 19:26:56.149903 Received DATA (on stdin)
 19:26:56.149915 > 30 bytes data, server => client
 19:26:56.149925 '257 "/" is current directory\r\n'
 19:26:56.149996 < 6 bytes data, client => server
 19:26:56.150010 'EPSV\r\n'
 19:26:56.154944 Received DATA (on stdin)
 19:26:56.154956 > 39 bytes data, server => client
 19:26:56.154964 '229 Entering Passive Mode (|||46273|)\r\n'
 19:26:56.155200 < 8 bytes data, client => server
 19:26:56.155211 'TYPE I\r\n'
 19:26:56.155295 Received DATA (on stdin)
 19:26:56.155303 > 33 bytes data, server => client
 19:26:56.155310 '200 I modify TYPE as you wanted\r\n'
 19:26:56.155359 < 21 bytes data, client => server
 19:26:56.155367 'SIZE verifiedserver\r\n'
 19:26:56.155436 Received DATA (on stdin)
 19:26:56.155443 > 8 bytes data, server => client
 19:26:56.155450 '213 17\r\n'
 19:26:56.155591 < 21 bytes data, client => server
 19:26:56.155599 'RETR verifiedserver\r\n'
 19:26:56.155608 Received DATA (on stdin)
 19:26:56.155614 > 29 bytes data, server => client
 19:26:56.155621 '150 Binary junk (17 bytes).\r\n'
 19:26:56.156064 Received DATA (on stdin)
 19:26:56.156074 > 28 bytes data, server => client
 19:26:56.156086 '226 File transfer complete\r\n'
 19:26:56.200525 < 6 bytes data, client => server
 19:26:56.200560 'QUIT\r\n'
 19:26:56.200786 Received DATA (on stdin)
 19:26:56.200798 > 18 bytes data, server => client
 19:26:56.200809 '221 bye bye baby\r\n'
 19:26:56.201929 ====> Client disconnect
 19:26:56.202121 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.151992 Running IPv4 version
 19:26:56.152060 Listening on port 46273
 19:26:56.152104 Wrote pid 108580 to log/2/server/ftp_sockdata.pid
 19:26:56.154736 Received PING (on stdin)
 19:26:56.154818 Received PORT (on stdin)
 19:26:56.155068 ====> Client connect
 19:26:56.155567 Received DATA (on stdin)
 19:26:56.155576 > 17 bytes data, server => client
 19:26:56.155664 'WE ROOLZ: 85208\r\n'
 19:26:56.155803 Received DISC (on stdin)
 19:26:56.155813 ====> Client forcibly disconnected
 19:26:56.155880 Received QUIT (on stdin)
 19:26:56.155887 quits
 19:26:56.155927 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 521
=== End of file server.cmd
=== Start of file valgrind521
 ==108671== 
 ==108671== Process terminating with default action of signal 4 (SIGILL)
 ==108671==  Illegal opcode at address 0x51CC63F
 ==108671==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108671==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108671==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108671==    by 0x40041AF: main (first.c:264)
=== End of file valgrind521
test 0528 [HTTP GET same file using different handles but same connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:43733/path/528 > log/9/stdout528 2> log/9/stderr528

 528: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 528
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:43733/path/528 > log/9/stdout528 2> log/9/stderr528
=== End of file commands.log
=== Start of file http_server.log
 19:26:56.272488 ====> Client connect
 19:26:56.272524 accept_connection 3 returned 4
 19:26:56.273381 Read 93 bytes
 19:26:56.273399 Process 93 bytes request
 19:26:56.273412 Got request: GET /verifiedserver HTTP/1.1
 19:26:56.273421 Are-we-friendly question received
 19:26:56.273457 Wrote request (93 bytes) input to log/9/server.input
 19:26:56.273474 Identifying ourselves as friends
 19:26:56.273534 Response sent (56 bytes) and written to log/9/server.response
 19:26:56.273543 special request received, no persistency
 19:26:56.273551 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 50564 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 528
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind528
 ==108922== 
 ==108922== Process terminating with default action of signal 4 (SIGILL)
 ==108922==  Illegal opcode at address 0x51CC63F
 ==108922==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108922==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108922==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108922==    by 0x40041AF: main (first.c:264)
=== End of file valgrind528
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:33989/path/532 > log/6/stdout532 2> log/6/stderr532
test 0522 [HTTP GET with CURLOPT_PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 35989 > log/22/stdout522 2> log/22/stderr522

 522: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:26:58.005852917 +0000
+++ log/22/check-generated	2026-10-15 19:26:58.005778633 +0000
@@ -1 +0,0 @@
-hello[LF]
== Contents of files in the log/22/ directory after test 522
=== Start of file check-expected
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 35989 > log/22/stdout522 2> log/22/stderr522
=== End of file commands.log
=== Start of file http_server.log
 19:26:56.067051 ====> Client connect
 19:26:56.067081 accept_connection 3 returned 4
 19:26:56.067101 Read 93 bytes
 19:26:56.067111 Process 93 bytes request
 19:26:56.067121 Got request: GET /verifiedserver HTTP/1.1
 19:26:56.067129 Are-we-friendly question received
 19:26:56.067157 Wrote request (93 bytes) input to log/22/server.input
 19:26:56.067173 Identifying ourselves as friends
 19:26:56.067237 Response sent (56 bytes) and written to log/22/server.response
 19:26:56.067245 special request received, no persistency
 19:26:56.067253 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 52982 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 522
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind522
 ==108594== 
 ==108594== Process terminating with default action of signal 4 (SIGILL)
 ==108594==  Illegal opcode at address 0x51CC63F
 ==108594==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108594==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108594==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108594==    by 0x40041AF: main (first.c:264)
=== End of file valgrind522
test 0532 [FTP RETR same file using reset handles between each transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:33989/path/532 > log/6/stdout532 2> log/6/stderr532

 532: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 532
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:33989/path/532 > log/6/stdout532 2> log/6/stderr532
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.789467 ====> Client connect
 19:26:56.789677 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.790008 < "USER anonymous"
 19:26:56.790055 > "331 We are happy you popped in![CR][LF]"
 19:26:56.790271 < "PASS ftp@example.com"
 19:26:56.790310 > "230 Welcome you silly person[CR][LF]"
 19:26:56.790862 < "PWD"
 19:26:56.790904 > "257 "/" is current directory[CR][LF]"
 19:26:56.791108 < "EPSV"
 19:26:56.791137 ====> Passive DATA channel requested by client
 19:26:56.791153 DATA sockfilt for passive data channel starting...
 19:26:56.805641 DATA sockfilt for passive data channel started (pid 108976)
 19:26:56.805839 DATA sockfilt for passive data channel listens on port 35359
 19:26:56.805911 > "229 Entering Passive Mode (|||35359|)[CR][LF]"
 19:26:56.805937 Client has been notified that upcoming DATA connection is awaited on port 35359
 19:26:56.806303 Client connects to port 35359
 19:26:56.806341 ====> Client established passive DATA connection on port 35359
 19:26:56.806450 < "TYPE I"
 19:26:56.806497 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.806705 < "SIZE verifiedserver"
 19:26:56.806756 > "213 17[CR][LF]"
 19:26:56.806958 < "RETR verifiedserver"
 19:26:56.807006 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.807121 =====> Closing passive DATA connection...
 19:26:56.807143 Server disconnects passive DATA connection
 19:26:56.807437 Server disconnected passive DATA connection
 19:26:56.807472 DATA sockfilt for passive data channel quits (pid 108976)
 19:26:56.807819 DATA sockfilt for passive data channel quit (pid 108976)
 19:26:56.807847 =====> Closed passive DATA connection
 19:26:56.807879 > "226 File transfer complete[CR][LF]"
 19:26:56.849119 < "QUIT"
 19:26:56.849167 > "221 bye bye baby[CR][LF]"
 19:26:56.850057 MAIN sockfilt said DISC
 19:26:56.850093 ====> Client disconnected
 19:26:56.850152 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.396092 ====> Client connect
 19:26:57.398127 Received DATA (on stdin)
 19:26:57.398147 > 146 bytes data, server => client
 19:26:57.398159 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.398169 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.398178 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.398277 < 16 bytes data, client => server
 19:26:57.398293 'USER anonymous\r\n'
 19:26:57.398491 Received DATA (on stdin)
 19:26:57.398505 > 33 bytes data, server => client
 19:26:57.398515 '331 We are happy you popped in!\r\n'
 19:26:57.398582 < 22 bytes data, client => server
 19:26:57.398598 'PASS ftp@example.com\r\n'
 19:26:57.398743 Received DATA (on stdin)
 19:26:57.398756 > 30 bytes data, server => client
 19:26:57.398766 '230 Welcome you silly person\r\n'
 19:26:57.399178 < 5 bytes data, client => server
 19:26:57.399195 'PWD\r\n'
 19:26:57.399336 Received DATA (on stdin)
 19:26:57.399349 > 30 bytes data, server => client
 19:26:57.399359 '257 "/" is current directory\r\n'
 19:26:57.399433 < 6 bytes data, client => server
 19:26:57.399448 'EPSV\r\n'
 19:26:57.414385 Received DATA (on stdin)
 19:26:57.414406 > 39 bytes data, server => client
 19:26:57.414418 '229 Entering Passive Mode (|||35359|)\r\n'
 19:26:57.414637 < 8 bytes data, client => server
 19:26:57.414656 'TYPE I\r\n'
 19:26:57.414935 Received DATA (on stdin)
 19:26:57.414950 > 33 bytes data, server => client
 19:26:57.414960 '200 I modify TYPE as you wanted\r\n'
 19:26:57.415028 < 21 bytes data, client => server
 19:26:57.415043 'SIZE verifiedserver\r\n'
 19:26:57.415193 Received DATA (on stdin)
 19:26:57.415207 > 8 bytes data, server => client
 19:26:57.415217 '213 17\r\n'
 19:26:57.415283 < 21 bytes data, client => server
 19:26:57.415298 'RETR verifiedserver\r\n'
 19:26:57.415576 Received DATA (on stdin)
 19:26:57.415589 > 29 bytes data, server => client
 19:26:57.415598 '150 Binary junk (17 bytes).\r\n'
 19:26:57.416311 Received DATA (on stdin)
 19:26:57.416323 > 28 bytes data, server => client
 19:26:57.416333 '226 File transfer complete\r\n'
 19:26:57.457401 < 6 bytes data, client => server
 19:26:57.457421 'QUIT\r\n'
 19:26:57.457605 Received DATA (on stdin)
 19:26:57.457614 > 18 bytes data, server => client
 19:26:57.457621 '221 bye bye baby\r\n'
 19:26:57.458442 ====> Client disconnect
 19:26:57.458584 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== StaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:44283/path/529 log/7/upload529 > log/7/stdout529 2> log/7/stderr529
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:35523/520 > log/23/stdout520 2> log/23/stderr520
rt of file ftp_sockdata.log
 19:26:56.404917 Running IPv4 version
 19:26:56.405004 Listening on port 35359
 19:26:56.405053 Wrote pid 108976 to log/6/server/ftp_sockdata.pid
 19:26:56.413971 Received PING (on stdin)
 19:26:56.414131 Received PORT (on stdin)
 19:26:56.414680 ====> Client connect
 19:26:56.415666 Received DATA (on stdin)
 19:26:56.415682 > 17 bytes data, server => client
 19:26:56.415692 'WE ROOLZ: 85558\r\n'
 19:26:56.415731 Received DISC (on stdin)
 19:26:56.415746 ====> Client forcibly disconnected
 19:26:56.415921 Received QUIT (on stdin)
 19:26:56.415934 quits
 19:26:56.416027 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 532
=== End of file server.cmd
=== Start of file valgrind532
 ==109110== 
 ==109110== Process terminating with default action of signal 4 (SIGILL)
 ==109110==  Illegal opcode at address 0x51CC63F
 ==109110==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109110==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109110==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109110==    by 0x40041AF: main (first.c:264)
=== End of file valgrind532
test 0513 [send HTTP POST using read callback that returns CURL_READFUNC_ABORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:46497/513 > log/19/stdout513 2> log/19/stderr513

libtests returned 132, when expecting 42
 513: exit FAILED
== Contents of files in the log/19/ directory after test 513
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:46497/513 > log/19/stdout513 2> log/19/stderr513
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.277072 ====> Client connect
 19:26:55.277110 accept_connection 3 returned 4
 19:26:55.277133 Read 93 bytes
 19:26:55.277143 Process 93 bytes request
 19:26:55.277155 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.277164 Are-we-friendly question received
 19:26:55.277194 Wrote request (93 bytes) input to log/19/server.input
 19:26:55.277212 Identifying ourselves as friends
 19:26:55.277283 Response sent (56 bytes) and written to log/19/server.response
 19:26:55.277294 special request received, no persistency
 19:26:55.277302 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 50038 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 513
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind513
 ==108058== 
 ==108058== Process terminating with default action of signal 4 (SIGILL)
 ==108058==  Illegal opcode at address 0x51CC63F
 ==108058==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108058==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108058==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108058==    by 0x40041AF: main (first.c:264)
=== End of file valgrind513
test 0529 [FTP PORT upload using multi interface (weird cleanup function seq)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:44283/path/529 log/7/upload529 > log/7/stdout529 2> log/7/stderr529

 529: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 529
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:44283/path/529 log/7/upload529 > log/7/stdout529 2> log/7/stderr529
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.715447 ====> Client connect
 19:26:56.715632 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.715905 < "USER anonymous"
 19:26:56.715936 > "331 We are happy you popped in![CR][LF]"
 19:26:56.716086 < "PASS ftp@example.com"
 19:26:56.716109 > "230 Welcome you silly person[CR][LF]"
 19:26:56.716243 < "PWD"
 19:26:56.716271 > "257 "/" is current directory[CR][LF]"
 19:26:56.716414 < "EPSV"
 19:26:56.716437 ====> Passive DATA channel requested by client
 19:26:56.716451 DATA sockfilt for passive data channel starting...
 19:26:56.722235 DATA sockfilt for passive data channel started (pid 108829)
 19:26:56.722357 DATA sockfilt for passive data channel listens on port 46603
 19:26:56.722394 > "229 Entering Passive Mode (|||46603|)[CR][LF]"
 19:26:56.722409 Client has been notified that upcoming DATA connection is awaited on port 46603
 19:26:56.722691 Client connects to port 46603
 19:26:56.722721 ====> Client established passive DATA connection on port 46603
 19:26:56.722800 < "TYPE I"
 19:26:56.722829 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.722974 < "SIZE verifiedserver"
 19:26:56.723012 > "213 17[CR][LF]"
 19:26:56.723147 < "RETR verifiedserver"
 19:26:56.723176 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.723257 =====> Closing passive DATA connection...
 19:26:56.723274 Server disconnects passive DATA connection
 19:26:56.723477 Server disconnected passive DATA connection
 19:26:56.723501 DATA sockfilt for passive data channel quits (pid 108829)
 19:26:56.723784 DATA sockfilt for passive data channel quit (pid 108829)
 19:26:56.723806 =====> Closed passive DATA connection
 19:26:56.723830 > "226 File transfer complete[CR][LF]"
 19:26:56.769099 < "QUIT"
 19:26:56.769160 > "221 bye bye baby[CR][LF]"
 19:26:56.770406 MAIN sockfilt said DISC
 19:26:56.770442 ====> Client disconnected
 19:26:56.770537 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.323754 ====> Client connect
 19:26:57.324050 Received DATA (on stdin)
 19:26:57.324063 > 146 bytes data, server => client
 19:26:57.324074 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.324084 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.324093 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.324183 < 16 bytes data, client => server
 19:26:57.324193 'USER anonymous\r\n'
 19:26:57.324346 Received DATA (on stdin)
 19:26:57.324357 > 33 bytes data, server => client
 19:26:57.324367 '331 We are happy you popped in!\r\n'
 19:26:57.324415 < 22 bytes data, client => server
 19:26:57.324425 'PASS ftp@example.com\r\n'
 19:26:57.324516 Received DATA (on stdin)
 19:26:57.324525 > 30 bytes data, server => client
 19:26:57.324535 '230 Welcome you silly person\r\n'
 19:26:57.324579 < 5 bytes data, client => server
 19:26:57.324588 'PWD\r\n'
 19:26:57.324677 Received DATA (on stdin)
 19:26:57.324687 > 30 bytes data, server => client
 19:26:57.324696 '257 "/" is current directory\r\n'
 19:26:57.324750 < 6 bytes data, client => server
 19:26:57.324759 'EPSV\r\n'
 19:26:57.330825 Received DATA (on stdin)
 19:26:57.330840 > 39 bytes data, server => client
 19:26:57.330850 '229 Entering Passive Mode (|||46603|)\r\n'
 19:26:57.331051 < 8 bytes data, client => server
 19:26:57.331061 'TYPE I\r\n'
 19:26:57.331239 Received DATA (on stdin)
 19:26:57.331249 > 33 bytes data, server => client
 19:26:57.331259 '200 I modify TYPE as you wanted\r\n'
 19:26:57.331308 < 21 bytes data, client => server
 19:26:57.331317 'SIZE verifiedserver\r\n'
 19:26:57.331419 Received DATA (on stdin)
 19:26:57.331428 > 8 bytes data, server => client
 19:26:57.331437 '213 17\r\n'
 19:26:57.331483 < 21 bytes data, client => server
 19:26:57.331493 'RETR verifiedserver\r\n'
 19:26:57.331684 Received DATA (on stdin)
 19:26:57.331694 > 29 bytes data, server => client
 19:26:57.331704 '150 Binary junk (17 bytes).\r\n'
 19:26:57.332239 Received DATA (on stdin)
 19:26:57.332250 > 28 bytes data, server => client
 19:26:57.332259 '226 File transfer complete\r\n'
 19:26:57.377323 < 6 bytes data, client => server
 19:26:57.377350 'QUIT\r\n'
 19:26:57.377592 Received DATA (on stdin)
 19:26:57.377606 > 18 bytes data, server => client
 19:26:57.377617 '221 bye bye baby\r\n'
 19:26:57.378771 ====> Client disconnect
 19:26:57.378967 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.328255 Running IPv4 version
 19:26:56.328345 Listening on port 46603
 19:26:56.328425 Wrote pid 108829 to log/7/server/ftp_sockdata.pid
 19:26:56.330568 Received PING (on stdin)
 19:26:56.330675 Received PORT (on stdin)
 19:26:56.331024 ====> Client connect
 19:26:56.331727 Received DATA (on stdin)
 19:26:56.331738 > 17 bytes data, server => client
 19:26:56.331748 'WE ROOLZ: 84721\r\n'
 19:26:56.331769 Received DISC (on stdin)
 19:26:56.331779 ====> Client forcibly disconnected
 19:26:56.331917 Received QUIT (on stdin)
 19:26:56.331927 quits
 19:26:56.331998 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 529
=== End of file server.cmd
=== Start of file upload529
 Moooooooooooo
  upload this
=== End of file upload529
=== Start of file valgrind529
 ==109034== 
 ==109034== Process terminating with default action of signal 4 (SIGILL)
 ==109034==  Illegal opcode at address 0x51CC63F
 ==109034==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109034==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109034==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109034==    by 0x40041AF: main (first.c:264)
=== End of file valgrind529
test 0520 [FTP RETR with FILETIME]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:35523/520 > log/23/stdout520 2> log/23/stderr520

 520: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 520
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:35523/520 > log/23/stdout520 2> log/23/stderr520
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.327741 ====> Client connect
 19:26:56.327948 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.328241 < "USER anonymous"
 19:26:56.328277 > "331 We are happy you popped in![CR][LF]"
 19:26:56.328450 < "PASS ftp@example.com"
 19:26:56.328478 > "230 Welcome you silly person[CR][LF]"
 19:26:56.328626 < "PWD"
 19:26:56.328657 > "257 "/" is current directory[CR][LF]"
 19:26:56.328839 < "EPSV"
 19:26:56.328864 ====> Passive DATA channel requested by client
 19:26:56.328878 DATA sockfilt for passive data channel starting...
 19:26:56.333750 DATA sockfilt for passive data channel started (pid 108409)
 19:26:56.333906 DATA sockfilt for passive data channel listens on port 35291
 19:26:56.333964 > "229 Entering Passive Mode (|||35291|)[CR][LF]"
 19:26:56.333987 Client has been notified that upcoming DATA connection is awaited on port 35291
 19:26:56.334270 Client connects to port 35291
 19:26:56.334304 ====> Client established passive DATA connection on port 35291
 19:26:56.334410 < "TYPE I"
 19:26:56.334451 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.334651 < "SIZE verifiedserver"
 19:26:56.334698 > "213 17[CR][LF]"
 19:26:56.334889 < "RETR verifiedserver"
 19:26:56.334932 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.335027 =====> Closing passive DATA connection...
 19:26:56.335049 Server disconnects passive DATA connection
 19:26:56.335290 Server disconnected passive DATA connection
 19:26:56.335326 DATA sockfilt for passive data channel quits (pid 108409)
 19:26:56.335604 DATA sockfilt for passive data channel quit (pid 108409)
 19:26:56.335633 =====> Closed passive DATA connection
 19:26:56.335664 > "226 File transfer complete[CR][LF]"
 19:26:56.382231 < "QUIT"
 19:26:56.382289 > "221 bye bye baby[CR][LF]"
 19:26:56.384263 MAIN sockfilt said DISC
 19:26:56.384305 ====> Client disconnected
 19:26:56.384383 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:56.935931 ====> Client connect
 19:26:56.936287 Received DATA (on stdin)
 19:26:56.936302 > 146 bytes data, server => client
 19:26:56.936313 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:56.936323 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:56.936332 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:56.936420 < 16 bytes data, client => server
 19:26:56.936432 'USER anonymous\r\n'
 19:26:56.936605 Received DATA (on stdin)
 19:26:56.936617 > 33 bytes data, server => client
 19:26:56.936627 '331 We are happy you popped in!\r\n'
 19:26:56.936683 < 22 bytes data, client => server
 19:26:56.936693 'PASS ftp@example.com\r\n'
 19:26:56.936803 Received DATA (on stdin)
 19:26:56.936814 > 30 bytes data, server => client
 19:26:56.936824 '230 Welcome you silly person\r\n'
 19:26:56.936872 < 5 bytes data, client => server
 19:26:56.936882 'PWD\r\n'
 19:26:56.936998 Received DATA (on stdin)
 19:26:56.937010 > 30 bytes data, server => client
 19:26:56.937020 '257 "/" is current directory\r\n'
 19:26:56.937082 < 6 bytes data, client => server
 19:26:56.937092 'EPSV\r\n'
 19:26:56.942331 Received DATA (on stdin)
 19:26:56.942348 > 39 bytes data, server => client
 19:26:56.942359 '229 Entering Passive Mode (|||35291|)\r\n'
 19:26:56.942511 < 8 bytes data, client => server
 19:26:56.942529 'TYPE I\r\n'
 19:26:56.942788 Received DATA (on stdin)
 19:26:56.942801 > 33 bytes data, server => client
 19:26:56.942812 '200 I modify TYPE as you wanted\r\n'
 19:26:56.942877 < 21 bytes data, client => server
 19:26:56.942891 'SIZE verifiedserver\r\n'
 19:26:56.943034 Received DATA (on stdin)
 19:26:56.943047 > 8 bytes data, server => client
 19:26:56.943057 '213 17\r\n'
 19:26:56.943119 < 21 bytes data, client => server
 19:26:56.943133 'RETR verifiedserver\r\n'
 19:26:56.943383 Received DATA (on stdin)
 19:26:56.943396 > 29 bytes data, server => client
 19:26:56.943407 '150 Binary junk (17 bytes).\r\n'
 19:26:56.943999 Received DATA (on stdin)
 19:26:56.944012 > 28 bytes data, server => client
 19:26:56.944022 '226 File transfer complete\r\n'
 19:26:56.990380 < 6 bytes data, client => server
 19:26:56.990412 'QUIT\r\n'
 19:26:56.990634 Received DATA (on stdin)
 19:26:56.990647 > 18 bytes data, server => client
 19:26:56.990657 '221 bye bye baby\r\n'
 19:26:56.992543 ====> Client disconnect
 19:26:56.992730 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.941612 Running IPv4 version
 19:26:56.941695 Listening on port 35291
 19:26:56.941733 Wrote pid 108409 to log/23/server/ftp_sockdata.pid
 19:26:56.942008 Received PING (on stdin)
 19:26:56.942125 Received PORT (on stdin)
 19:26:56.942550 ====> Client connect
 19:26:56.943438 Received DATA (on stdin)
 19:26:56.943451 > 17 bytes data, server => client
 19:26:56.943460 'WE ROOLZ: 84709\r\n'
 19:26:56.943485 Received DISC (on stdin)
 19:26:56.943496 ====> Client foCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:41879/path/531 log/8/upload531 > log/8/stdout531 2> log/8/stderr531
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:37411/path/526 > log/14/stdout526 2> log/14/stderr526
rcibly disconnected
 19:26:56.943678 Received QUIT (on stdin)
 19:26:56.943690 quits
 19:26:56.943749 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY MDTM 213 20030405060708
 Testnum 520
=== End of file server.cmd
=== Start of file valgrind520
 ==108500== 
 ==108500== Process terminating with default action of signal 4 (SIGILL)
 ==108500==  Illegal opcode at address 0x51CC63F
 ==108500==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108500==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108500==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108500==    by 0x40041AF: main (first.c:264)
=== End of file valgrind520
test 0531 [FTP PORT upload using multi interface and get 425 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:41879/path/531 log/8/upload531 > log/8/stdout531 2> log/8/stderr531

 531: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 531
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:41879/path/531 log/8/upload531 > log/8/stdout531 2> log/8/stderr531
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.766292 ====> Client connect
 19:26:56.766504 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.772603 < "USER anonymous"
 19:26:56.772660 > "331 We are happy you popped in![CR][LF]"
 19:26:56.772907 < "PASS ftp@example.com"
 19:26:56.772952 > "230 Welcome you silly person[CR][LF]"
 19:26:56.773152 < "PWD"
 19:26:56.773192 > "257 "/" is current directory[CR][LF]"
 19:26:56.773392 < "EPSV"
 19:26:56.773421 ====> Passive DATA channel requested by client
 19:26:56.773438 DATA sockfilt for passive data channel starting...
 19:26:56.785378 DATA sockfilt for passive data channel started (pid 108932)
 19:26:56.785555 DATA sockfilt for passive data channel listens on port 34203
 19:26:56.785606 > "229 Entering Passive Mode (|||34203|)[CR][LF]"
 19:26:56.785625 Client has been notified that upcoming DATA connection is awaited on port 34203
 19:26:56.787807 Client connects to port 34203
 19:26:56.787870 ====> Client established passive DATA connection on port 34203
 19:26:56.787999 < "TYPE I"
 19:26:56.788049 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.788275 < "SIZE verifiedserver"
 19:26:56.788325 > "213 17[CR][LF]"
 19:26:56.788519 < "RETR verifiedserver"
 19:26:56.788567 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.788666 =====> Closing passive DATA connection...
 19:26:56.788693 Server disconnects passive DATA connection
 19:26:56.788983 Server disconnected passive DATA connection
 19:26:56.789017 DATA sockfilt for passive data channel quits (pid 108932)
 19:26:56.789310 DATA sockfilt for passive data channel quit (pid 108932)
 19:26:56.789339 =====> Closed passive DATA connection
 19:26:56.789375 > "226 File transfer complete[CR][LF]"
 19:26:56.835668 < "QUIT"
 19:26:56.835729 > "221 bye bye baby[CR][LF]"
 19:26:56.837599 MAIN sockfilt said DISC
 19:26:56.837678 ====> Client disconnected
 19:26:56.837789 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:56.373768 ====> Client connect
 19:26:56.374949 Received DATA (on stdin)
 19:26:56.374968 > 146 bytes data, server => client
 19:26:56.374980 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:56.374990 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:56.374999 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:56.377201 < 16 bytes data, client => server
 19:26:56.377222 'USER anonymous\r\n'
 19:26:56.381059 Received DATA (on stdin)
 19:26:56.381080 > 33 bytes data, server => client
 19:26:56.381090 '331 We are happy you popped in!\r\n'
 19:26:56.381161 < 22 bytes data, client => server
 19:26:56.381172 'PASS ftp@example.com\r\n'
 19:26:56.381380 Received DATA (on stdin)
 19:26:56.381392 > 30 bytes data, server => client
 19:26:56.381403 '230 Welcome you silly person\r\n'
 19:26:56.381467 < 5 bytes data, client => server
 19:26:56.381482 'PWD\r\n'
 19:26:56.381619 Received DATA (on stdin)
 19:26:56.381631 > 30 bytes data, server => client
 19:26:56.381642 '257 "/" is current directory\r\n'
 19:26:56.381715 < 6 bytes data, client => server
 19:26:56.381730 'EPSV\r\n'
 19:26:56.395807 Received DATA (on stdin)
 19:26:56.395838 > 39 bytes data, server => client
 19:26:56.395851 '229 Entering Passive Mode (|||34203|)\r\n'
 19:26:56.396045 < 8 bytes data, client => server
 19:26:56.396063 'TYPE I\r\n'
 19:26:56.396487 Received DATA (on stdin)
 19:26:56.396501 > 33 bytes data, server => client
 19:26:56.396512 '200 I modify TYPE as you wanted\r\n'
 19:26:56.396584 < 21 bytes data, client => server
 19:26:56.396600 'SIZE verifiedserver\r\n'
 19:26:56.396757 Received DATA (on stdin)
 19:26:56.396768 > 8 bytes data, server => client
 19:26:56.396777 '213 17\r\n'
 19:26:56.396841 < 21 bytes data, client => server
 19:26:56.396856 'RETR verifiedserver\r\n'
 19:26:56.397121 Received DATA (on stdin)
 19:26:56.397133 > 29 bytes data, server => client
 19:26:56.397143 '150 Binary junk (17 bytes).\r\n'
 19:26:56.397809 Received DATA (on stdin)
 19:26:56.397822 > 28 bytes data, server => client
 19:26:56.397833 '226 File transfer complete\r\n'
 19:26:56.443889 < 6 bytes data, client => server
 19:26:56.443916 'QUIT\r\n'
 19:26:56.444174 Received DATA (on stdin)
 19:26:56.444189 > 18 bytes data, server => client
 19:26:56.444199 '221 bye bye baby\r\n'
 19:26:56.445403 ====> Client disconnect
 19:26:56.446238 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.384856 Running IPv4 version
 19:26:56.384933 Listening on port 34203
 19:26:56.384971 Wrote pid 108932 to log/8/server/ftp_sockdata.pid
 19:26:56.390449 Received PING (on stdin)
 19:26:56.393868 Received PORT (on stdin)
 19:26:56.396162 ====> Client connect
 19:26:56.397213 Received DATA (on stdin)
 19:26:56.397233 > 17 bytes data, server => client
 19:26:56.397244 'WE ROOLZ: 84824\r\n'
 19:26:56.397278 Received DISC (on stdin)
 19:26:56.397294 ====> Client forcibly disconnected
 19:26:56.397460 Received QUIT (on stdin)
 19:26:56.397476 quits
 19:26:56.397546 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY STOR 425 Permission Denied. File Exists.
 Testnum 531
=== End of file server.cmd
=== Start of file upload531
 Moooooooooooo
 do not upload this
=== End of file upload531
=== Start of file valgrind531
 ==109178== 
 ==109178== Process terminating with default action of signal 4 (SIGILL)
 ==109178==  Illegal opcode at address 0x51CC63F
 ==109178==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109178==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109178==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109178==    by 0x40041AF: main (first.c:264)
=== End of file valgrind531
test 0526 [FTP RETR same file using different handles but same connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:37411/path/526 > log/14/stdout526 2> log/14/stderr526

 526: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 526
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:33897/file530 > log/20/stdout530 2> log/20/stderr530
--log-file=log/14/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:37411/path/526 > log/14/stdout526 2> log/14/stderr526
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.668616 ====> Client connect
 19:26:56.668829 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.669127 < "USER anonymous"
 19:26:56.669162 > "331 We are happy you popped in![CR][LF]"
 19:26:56.669328 < "PASS ftp@example.com"
 19:26:56.669358 > "230 Welcome you silly person[CR][LF]"
 19:26:56.669600 < "PWD"
 19:26:56.669632 > "257 "/" is current directory[CR][LF]"
 19:26:56.669782 < "EPSV"
 19:26:56.669804 ====> Passive DATA channel requested by client
 19:26:56.669817 DATA sockfilt for passive data channel starting...
 19:26:56.692054 DATA sockfilt for passive data channel started (pid 108754)
 19:26:56.692577 DATA sockfilt for passive data channel listens on port 34829
 19:26:56.692651 > "229 Entering Passive Mode (|||34829|)[CR][LF]"
 19:26:56.692679 Client has been notified that upcoming DATA connection is awaited on port 34829
 19:26:56.693007 Client connects to port 34829
 19:26:56.693043 ====> Client established passive DATA connection on port 34829
 19:26:56.693187 < "TYPE I"
 19:26:56.693232 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.693424 < "SIZE verifiedserver"
 19:26:56.693464 > "213 17[CR][LF]"
 19:26:56.695597 < "RETR verifiedserver"
 19:26:56.695638 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.695739 =====> Closing passive DATA connection...
 19:26:56.695755 Server disconnects passive DATA connection
 19:26:56.695875 Server disconnected passive DATA connection
 19:26:56.695897 DATA sockfilt for passive data channel quits (pid 108754)
 19:26:56.696139 DATA sockfilt for passive data channel quit (pid 108754)
 19:26:56.696164 =====> Closed passive DATA connection
 19:26:56.696189 > "226 File transfer complete[CR][LF]"
 19:26:56.745650 < "QUIT"
 19:26:56.745705 > "221 bye bye baby[CR][LF]"
 19:26:56.746903 MAIN sockfilt said DISC
 19:26:56.746943 ====> Client disconnected
 19:26:56.747049 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.276911 ====> Client connect
 19:26:57.277244 Received DATA (on stdin)
 19:26:57.277260 > 146 bytes data, server => client
 19:26:57.277271 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.277281 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.277290 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.277390 < 16 bytes data, client => server
 19:26:57.277401 'USER anonymous\r\n'
 19:26:57.277562 Received DATA (on stdin)
 19:26:57.277573 > 33 bytes data, server => client
 19:26:57.277582 '331 We are happy you popped in!\r\n'
 19:26:57.277636 < 22 bytes data, client => server
 19:26:57.277645 'PASS ftp@example.com\r\n'
 19:26:57.277838 Received DATA (on stdin)
 19:26:57.277851 > 30 bytes data, server => client
 19:26:57.277860 '230 Welcome you silly person\r\n'
 19:26:57.277912 < 5 bytes data, client => server
 19:26:57.277921 'PWD\r\n'
 19:26:57.278029 Received DATA (on stdin)
 19:26:57.278039 > 30 bytes data, server => client
 19:26:57.278048 '257 "/" is current directory\r\n'
 19:26:57.278105 < 6 bytes data, client => server
 19:26:57.278114 'EPSV\r\n'
 19:26:57.301102 Received DATA (on stdin)
 19:26:57.301123 > 39 bytes data, server => client
 19:26:57.301134 '229 Entering Passive Mode (|||34829|)\r\n'
 19:26:57.301470 < 8 bytes data, client => server
 19:26:57.301483 'TYPE I\r\n'
 19:26:57.301649 Received DATA (on stdin)
 19:26:57.301663 > 33 bytes data, server => client
 19:26:57.301674 '200 I modify TYPE as you wanted\r\n'
 19:26:57.301734 < 21 bytes data, client => server
 19:26:57.301745 'SIZE verifiedserver\r\n'
 19:26:57.302220 Received DATA (on stdin)
 19:26:57.302238 > 8 bytes data, server => client
 19:26:57.302248 '213 17\r\n'
 19:26:57.303895 < 21 bytes data, client => server
 19:26:57.303911 'RETR verifiedserver\r\n'
 19:26:57.304596 Received DATA (on stdin)
 19:26:57.304608 > 29 bytes data, server => client
 19:26:57.304618 '150 Binary junk (17 bytes).\r\n'
 19:26:57.304641 Received DATA (on stdin)
 19:26:57.304649 > 28 bytes data, server => client
 19:26:57.304659 '226 File transfer complete\r\n'
 19:26:57.353879 < 6 bytes data, client => server
 19:26:57.353915 'QUIT\r\n'
 19:26:57.354126 Received DATA (on stdin)
 19:26:57.354138 > 18 bytes data, server => client
 19:26:57.354148 '221 bye bye baby\r\n'
 19:26:57.355262 ====> Client disconnect
 19:26:57.355468 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.287862 Running IPv4 version
 19:26:56.287953 Listening on port 34829
 19:26:56.288003 Wrote pid 108754 to log/14/server/ftp_sockdata.pid
 19:26:56.292632 Received PING (on stdin)
 19:26:56.300841 Received PORT (on stdin)
 19:26:56.301352 ====> Client connect
 19:26:56.304164 Received DATA (on stdin)
 19:26:56.304178 > 17 bytes data, server => client
 19:26:56.304190 'WE ROOLZ: 85053\r\n'
 19:26:56.304218 Received DISC (on stdin)
 19:26:56.304229 ====> Client forcibly disconnected
 19:26:56.304309 Received QUIT (on stdin)
 19:26:56.304319 quits
 19:26:56.304393 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 526
=== End of file server.cmd
=== Start of file valgrind526
 ==108955== 
 ==108955== Process terminating with default action of signal 4 (SIGILL)
 ==108955==  Illegal opcode at address 0x51CC63F
 ==108955==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108955==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108955==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108955==    by 0x40041AF: main (first.c:264)
=== End of file valgrind526
test 0530 [multi_socket interface transfer with callbacks returning error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:33897/file530 > log/20/stdout530 2> log/20/stderr530

libtests returned 132, when expecting 0
 530: exit FAILED
== Contents of files in the log/20/ directory after test 530
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:33897/file530 > log/20/stdout530 2> log/20/stderr530
=== End of file commands.log
=== Start of file http_server.log
 19:26:56.364024 ====> Client connect
 19:26:56.364754 accept_connection 3 returned 4
 19:26:56.364783 Read 93 bytes
 19:26:56.364795 Process 93 bytes request
 19:26:56.364808 Got request: GET /verifiedserver HTTP/1.1
 19:26:56.364817 Are-we-friendly question received
 19:26:56.364847 Wrote request (93 bytes) input to log/20/server.input
 19:26:56.364866 Identifying ourselves as friends
 19:26:56.364940 Response sent (56 bytes) and written to log/20/server.response
 19:26:56.364951 special request received, no persistency
 19:26:56.364960 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 45506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 530
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind530
 ==108959== 
 ==108959== Process terminating with default action of signal 4 (SIGILL)
 ==108959==  Illegal opcode CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:33695/path/to/ > log/13/stdout524 2> log/13/stderr524
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:40221/path/525 log/1/upload525 > log/1/stdout525 2> log/1/stderr525
at address 0x51CC63F
 ==108959==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108959==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108959==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108959==    by 0x40041AF: main (first.c:264)
=== End of file valgrind530
test 0524 [FTP upload with target URL ending with slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:33695/path/to/ > log/13/stdout524 2> log/13/stderr524

 524: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 524
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:33695/path/to/ > log/13/stdout524 2> log/13/stderr524
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.495488 ====> Client connect
 19:26:56.495724 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.498880 < "USER anonymous"
 19:26:56.498927 > "331 We are happy you popped in![CR][LF]"
 19:26:56.499112 < "PASS ftp@example.com"
 19:26:56.499141 > "230 Welcome you silly person[CR][LF]"
 19:26:56.499288 < "PWD"
 19:26:56.499318 > "257 "/" is current directory[CR][LF]"
 19:26:56.499470 < "EPSV"
 19:26:56.499498 ====> Passive DATA channel requested by client
 19:26:56.499511 DATA sockfilt for passive data channel starting...
 19:26:56.535499 DATA sockfilt for passive data channel started (pid 108558)
 19:26:56.535673 DATA sockfilt for passive data channel listens on port 42219
 19:26:56.535734 > "229 Entering Passive Mode (|||42219|)[CR][LF]"
 19:26:56.535753 Client has been notified that upcoming DATA connection is awaited on port 42219
 19:26:56.536023 Client connects to port 42219
 19:26:56.536064 ====> Client established passive DATA connection on port 42219
 19:26:56.536270 < "TYPE I"
 19:26:56.536312 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.536525 < "SIZE verifiedserver"
 19:26:56.536563 > "213 17[CR][LF]"
 19:26:56.536736 < "RETR verifiedserver"
 19:26:56.536773 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.536879 =====> Closing passive DATA connection...
 19:26:56.536902 Server disconnects passive DATA connection
 19:26:56.537032 Server disconnected passive DATA connection
 19:26:56.537059 DATA sockfilt for passive data channel quits (pid 108558)
 19:26:56.540658 DATA sockfilt for passive data channel quit (pid 108558)
 19:26:56.540695 =====> Closed passive DATA connection
 19:26:56.540734 > "226 File transfer complete[CR][LF]"
 19:26:56.582335 < "QUIT"
 19:26:56.582399 > "221 bye bye baby[CR][LF]"
 19:26:56.583767 MAIN sockfilt said DISC
 19:26:56.583807 ====> Client disconnected
 19:26:56.583892 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:56.103713 ====> Client connect
 19:26:56.104117 Received DATA (on stdin)
 19:26:56.104136 > 146 bytes data, server => client
 19:26:56.104148 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:56.104158 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:56.104167 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:56.107038 < 16 bytes data, client => server
 19:26:56.107059 'USER anonymous\r\n'
 19:26:56.107295 Received DATA (on stdin)
 19:26:56.107306 > 33 bytes data, server => client
 19:26:56.107317 '331 We are happy you popped in!\r\n'
 19:26:56.107383 < 22 bytes data, client => server
 19:26:56.107395 'PASS ftp@example.com\r\n'
 19:26:56.107504 Received DATA (on stdin)
 19:26:56.107514 > 30 bytes data, server => client
 19:26:56.107524 '230 Welcome you silly person\r\n'
 19:26:56.107572 < 5 bytes data, client => server
 19:26:56.107582 'PWD\r\n'
 19:26:56.107680 Received DATA (on stdin)
 19:26:56.107689 > 30 bytes data, server => client
 19:26:56.107699 '257 "/" is current directory\r\n'
 19:26:56.107756 < 6 bytes data, client => server
 19:26:56.107766 'EPSV\r\n'
 19:26:56.144137 Received DATA (on stdin)
 19:26:56.144155 > 39 bytes data, server => client
 19:26:56.144166 '229 Entering Passive Mode (|||42219|)\r\n'
 19:26:56.144689 < 8 bytes data, client => server
 19:26:56.144703 'TYPE I\r\n'
 19:26:56.144717 Received DATA (on stdin)
 19:26:56.144725 > 33 bytes data, server => client
 19:26:56.144735 '200 I modify TYPE as you wanted\r\n'
 19:26:56.144816 < 21 bytes data, client => server
 19:26:56.144830 'SIZE verifiedserver\r\n'
 19:26:56.144936 Received DATA (on stdin)
 19:26:56.144947 > 8 bytes data, server => client
 19:26:56.144957 '213 17\r\n'
 19:26:56.145015 < 21 bytes data, client => server
 19:26:56.145028 'RETR verifiedserver\r\n'
 19:26:56.145481 Received DATA (on stdin)
 19:26:56.145494 > 29 bytes data, server => client
 19:26:56.145504 '150 Binary junk (17 bytes).\r\n'
 19:26:56.149118 Received DATA (on stdin)
 19:26:56.149134 > 28 bytes data, server => client
 19:26:56.149144 '226 File transfer complete\r\n'
 19:26:56.190511 < 6 bytes data, client => server
 19:26:56.190539 'QUIT\r\n'
 19:26:56.190792 Received DATA (on stdin)
 19:26:56.190808 > 18 bytes data, server => client
 19:26:56.190818 '221 bye bye baby\r\n'
 19:26:56.192072 ====> Client disconnect
 19:26:56.192283 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.111609 Running IPv4 version
 19:26:56.123763 Listening on port 42219
 19:26:56.143756 Wrote pid 108558 to log/13/server/ftp_sockdata.pid
 19:26:56.143789 Received PING (on stdin)
 19:26:56.143925 Received PORT (on stdin)
 19:26:56.144333 ====> Client connect
 19:26:56.145279 Received DATA (on stdin)
 19:26:56.145293 > 17 bytes data, server => client
 19:26:56.145304 'WE ROOLZ: 93286\r\n'
 19:26:56.145334 Received DISC (on stdin)
 19:26:56.145349 ====> Client forcibly disconnected
 19:26:56.145441 Received QUIT (on stdin)
 19:26:56.145454 quits
 19:26:56.148854 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 524
=== End of file server.cmd
=== Start of file valgrind524
 ==108659== 
 ==108659== Process terminating with default action of signal 4 (SIGILL)
 ==108659==  Illegal opcode at address 0x51CC63F
 ==108659==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108659==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108659==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108659==    by 0x40041AF: main (first.c:264)
=== End of file valgrind524
test 0525 [FTP PORT upload using multi interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:40221/path/525 log/1/upload525 > log/1/stdout525 2> log/1/stderr525

 525: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 525
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:40221/path/525 log/1/upload525 > log/1/stdout525 2> log/1/stderr525
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.508888 ====> Client connect
 19:26:56.539711 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.543176 < "USER anonymous"
 19:26:56.543234 > "331 We are happy you popped in![CR][LF]"
 19:26:56.543939 < "PASS ftp@example.com"
 19:26:56.543987CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:43739 goingdirect.test:43739 goingdirect.test:43739:127.0.0.1 > log/18/stdout536 2> log/18/stderr536
 > "230 Welcome you silly person[CR][LF]"
 19:26:56.544196 < "PWD"
 19:26:56.544241 > "257 "/" is current directory[CR][LF]"
 19:26:56.544458 < "EPSV"
 19:26:56.544489 ====> Passive DATA channel requested by client
 19:26:56.544508 DATA sockfilt for passive data channel starting...
 19:26:56.560339 DATA sockfilt for passive data channel started (pid 108582)
 19:26:56.560460 DATA sockfilt for passive data channel listens on port 40235
 19:26:56.560500 > "229 Entering Passive Mode (|||40235|)[CR][LF]"
 19:26:56.560516 Client has been notified that upcoming DATA connection is awaited on port 40235
 19:26:56.560786 Client connects to port 40235
 19:26:56.560815 ====> Client established passive DATA connection on port 40235
 19:26:56.560895 < "TYPE I"
 19:26:56.560925 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.561058 < "SIZE verifiedserver"
 19:26:56.561091 > "213 17[CR][LF]"
 19:26:56.561214 < "RETR verifiedserver"
 19:26:56.561242 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.561317 =====> Closing passive DATA connection...
 19:26:56.561331 Server disconnects passive DATA connection
 19:26:56.561527 Server disconnected passive DATA connection
 19:26:56.561549 DATA sockfilt for passive data channel quits (pid 108582)
 19:26:56.561729 DATA sockfilt for passive data channel quit (pid 108582)
 19:26:56.561749 =====> Closed passive DATA connection
 19:26:56.561773 > "226 File transfer complete[CR][LF]"
 19:26:56.606739 < "QUIT"
 19:26:56.606791 > "221 bye bye baby[CR][LF]"
 19:26:56.614197 MAIN sockfilt said DISC
 19:26:56.614251 ====> Client disconnected
 19:26:56.614324 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.097263 ====> Client connect
 19:26:57.148106 Received DATA (on stdin)
 19:26:57.150620 > 146 bytes data, server => client
 19:26:57.150641 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.150653 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.150663 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.151345 < 16 bytes data, client => server
 19:26:57.151367 'USER anonymous\r\n'
 19:26:57.151621 Received DATA (on stdin)
 19:26:57.151635 > 33 bytes data, server => client
 19:26:57.151646 '331 We are happy you popped in!\r\n'
 19:26:57.152182 < 22 bytes data, client => server
 19:26:57.152200 'PASS ftp@example.com\r\n'
 19:26:57.152370 Received DATA (on stdin)
 19:26:57.152384 > 30 bytes data, server => client
 19:26:57.152394 '230 Welcome you silly person\r\n'
 19:26:57.152461 < 5 bytes data, client => server
 19:26:57.152476 'PWD\r\n'
 19:26:57.152623 Received DATA (on stdin)
 19:26:57.152637 > 30 bytes data, server => client
 19:26:57.152648 '257 "/" is current directory\r\n'
 19:26:57.152725 < 6 bytes data, client => server
 19:26:57.152740 'EPSV\r\n'
 19:26:57.168899 Received DATA (on stdin)
 19:26:57.168914 > 39 bytes data, server => client
 19:26:57.168923 '229 Entering Passive Mode (|||40235|)\r\n'
 19:26:57.169089 < 8 bytes data, client => server
 19:26:57.169101 'TYPE I\r\n'
 19:26:57.169298 Received DATA (on stdin)
 19:26:57.169307 > 33 bytes data, server => client
 19:26:57.169316 '200 I modify TYPE as you wanted\r\n'
 19:26:57.169360 < 21 bytes data, client => server
 19:26:57.169369 'SIZE verifiedserver\r\n'
 19:26:57.169462 Received DATA (on stdin)
 19:26:57.169470 > 8 bytes data, server => client
 19:26:57.169478 '213 17\r\n'
 19:26:57.169520 < 21 bytes data, client => server
 19:26:57.169529 'RETR verifiedserver\r\n'
 19:26:57.169704 Received DATA (on stdin)
 19:26:57.169712 > 29 bytes data, server => client
 19:26:57.169721 '150 Binary junk (17 bytes).\r\n'
 19:26:57.170145 Received DATA (on stdin)
 19:26:57.170155 > 28 bytes data, server => client
 19:26:57.170164 '226 File transfer complete\r\n'
 19:26:57.214949 < 6 bytes data, client => server
 19:26:57.214982 'QUIT\r\n'
 19:26:57.215180 Received DATA (on stdin)
 19:26:57.215190 > 18 bytes data, server => client
 19:26:57.215200 '221 bye bye baby\r\n'
 19:26:57.217394 ====> Client disconnect
 19:26:57.222711 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.168405 Running IPv4 version
 19:26:56.168471 Listening on port 40235
 19:26:56.168508 Wrote pid 108582 to log/1/server/ftp_sockdata.pid
 19:26:56.168660 Received PING (on stdin)
 19:26:56.168744 Received PORT (on stdin)
 19:26:56.169118 ====> Client connect
 19:26:56.169769 Received DATA (on stdin)
 19:26:56.169779 > 17 bytes data, server => client
 19:26:56.169788 'WE ROOLZ: 84935\r\n'
 19:26:56.169809 Received DISC (on stdin)
 19:26:56.169818 ====> Client forcibly disconnected
 19:26:56.169927 Received QUIT (on stdin)
 19:26:56.169936 quits
 19:26:56.169984 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 525
=== End of file server.cmd
=== Start of file upload525
 Moooooooooooo
  upload this
=== End of file upload525
=== Start of file valgrind525
 ==108721== 
 ==108721== Process terminating with default action of signal 4 (SIGILL)
 ==108721==  Illegal opcode at address 0x51CC63F
 ==108721==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108721==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108721==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108721==    by 0x40041AF: main (first.c:264)
=== End of file valgrind525
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:44817/path/527 > log/10/stdout527 2> log/10/stderr527
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:46137/path/534 > log/17/stdout534 2> log/17/stderr534
test 0536 [CURLINFO_USED_PROXY]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:43739 goingdirect.test:43739 goingdirect.test:43739:127.0.0.1 > log/18/stdout536 2> log/18/stderr536

 536: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:26:58.472407475 +0000
+++ log/18/check-generated	2026-10-15 19:26:58.469412987 +0000
@@ -1,4 +0,0 @@
-hello[CR][LF]
-This used the proxy[CR][LF]
-hello[CR][LF]
-This DID NOT use the proxy[CR][LF]
== Contents of files in the log/18/ directory after test 536
=== Start of file check-expected
 hello[CR][LF]
 This used the proxy[CR][LF]
 hello[CR][LF]
 This DID NOT use the proxy[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:43739 goingdirect.test:43739 goingdirect.test:43739:127.0.0.1 > log/18/stdout536 2> log/18/stderr536
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.660530 ====> Client connect
 19:26:57.660570 accept_connection 3 returned 4
 19:26:57.660594 Read 93 bytes
 19:26:57.660605 Process 93 bytes request
 19:26:57.660617 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.660627 Are-we-friendly question received
 19:26:57.660659 Wrote request (93 bytes) input to log/18/server.input
 19:26:57.660678 Identifying ourselves as friends
 19:26:57.660755 Response sent (56 bytes) and written to log/18/server.response
 19:26:57.660768 special request received, no persistency
 19:26:57.660777 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 58390 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 536
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind536
 ==109456== 
 ==109456== Process terminating with default action of signal 4 (SIGILL)
 ==109456==  Illegal opcode at address 0x51CC63F
 ==109456==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109456==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109456==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109456==    by 0x40041AF: main (first.c:264)
=== End of file valgrind536
test 0527 [FTP RETR same file using different handles and closed connections]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:44817/path/527 > log/10/stdout527 2> log/10/stderr527

 527: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 527
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:44817/path/527 > log/10/stdout527 2> log/10/stderr527
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.638711 ====> Client connect
 19:26:56.638937 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.642394 < "USER anonymous"
 19:26:56.642445 > "331 We are happy you popped in![CR][LF]"
 19:26:56.642635 < "PASS ftp@example.com"
 19:26:56.642670 > "230 Welcome you silly person[CR][LF]"
 19:26:56.642848 < "PWD"
 19:26:56.642886 > "257 "/" is current directory[CR][LF]"
 19:26:56.643080 < "EPSV"
 19:26:56.643108 ====> Passive DATA channel requested by client
 19:26:56.643125 DATA sockfilt for passive data channel starting...
 19:26:56.664639 DATA sockfilt for passive data channel started (pid 108725)
 19:26:56.664799 DATA sockfilt for passive data channel listens on port 34601
 19:26:56.664860 > "229 Entering Passive Mode (|||34601|)[CR][LF]"
 19:26:56.664882 Client has been notified that upcoming DATA connection is awaited on port 34601
 19:26:56.670266 Client connects to port 34601
 19:26:56.670311 ====> Client established passive DATA connection on port 34601
 19:26:56.670417 < "TYPE I"
 19:26:56.670455 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.670620 < "SIZE verifiedserver"
 19:26:56.670659 > "213 17[CR][LF]"
 19:26:56.671046 < "RETR verifiedserver"
 19:26:56.671083 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.671171 =====> Closing passive DATA connection...
 19:26:56.671186 Server disconnects passive DATA connection
 19:26:56.671422 Server disconnected passive DATA connection
 19:26:56.671452 DATA sockfilt for passive data channel quits (pid 108725)
 19:26:56.671721 DATA sockfilt for passive data channel quit (pid 108725)
 19:26:56.671750 =====> Closed passive DATA connection
 19:26:56.671783 > "226 File transfer complete[CR][LF]"
 19:26:56.712688 < "QUIT"
 19:26:56.712742 > "221 bye bye baby[CR][LF]"
 19:26:56.713978 MAIN sockfilt said DISC
 19:26:56.714011 ====> Client disconnected
 19:26:56.714104 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.243765 ====> Client connect
 19:26:57.250396 Received DATA (on stdin)
 19:26:57.250430 > 146 bytes data, server => client
 19:26:57.250443 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.250454 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.250463 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.250601 < 16 bytes data, client => server
 19:26:57.250618 'USER anonymous\r\n'
 19:26:57.250849 Received DATA (on stdin)
 19:26:57.250861 > 33 bytes data, server => client
 19:26:57.250871 '331 We are happy you popped in!\r\n'
 19:26:57.250930 < 22 bytes data, client => server
 19:26:57.250943 'PASS ftp@example.com\r\n'
 19:26:57.251069 Received DATA (on stdin)
 19:26:57.251081 > 30 bytes data, server => client
 19:26:57.251092 '230 Welcome you silly person\r\n'
 19:26:57.251149 < 5 bytes data, client => server
 19:26:57.251160 'PWD\r\n'
 19:26:57.251283 Received DATA (on stdin)
 19:26:57.251296 > 30 bytes data, server => client
 19:26:57.251306 '257 "/" is current directory\r\n'
 19:26:57.251379 < 6 bytes data, client => server
 19:26:57.251393 'EPSV\r\n'
 19:26:57.273236 Received DATA (on stdin)
 19:26:57.273260 > 39 bytes data, server => client
 19:26:57.273273 '229 Entering Passive Mode (|||34601|)\r\n'
 19:26:57.278563 < 8 bytes data, client => server
 19:26:57.278581 'TYPE I\r\n'
 19:26:57.278857 Received DATA (on stdin)
 19:26:57.278868 > 33 bytes data, server => client
 19:26:57.278877 '200 I modify TYPE as you wanted\r\n'
 19:26:57.278936 < 21 bytes data, client => server
 19:26:57.278945 'SIZE verifiedserver\r\n'
 19:26:57.279055 Received DATA (on stdin)
 19:26:57.279064 > 8 bytes data, server => client
 19:26:57.279073 '213 17\r\n'
 19:26:57.279120 < 21 bytes data, client => server
 19:26:57.279128 'RETR verifiedserver\r\n'
 19:26:57.279586 Received DATA (on stdin)
 19:26:57.279597 > 29 bytes data, server => client
 19:26:57.279606 '150 Binary junk (17 bytes).\r\n'
 19:26:57.280186 Received DATA (on stdin)
 19:26:57.280198 > 28 bytes data, server => client
 19:26:57.280209 '226 File transfer complete\r\n'
 19:26:57.320910 < 6 bytes data, client => server
 19:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:35787/path/533 ftp://127.0.0.1:35787/path/533 > log/21/stdout533 2> log/21/stderr533
26:57.320939 'QUIT\r\n'
 19:26:57.321152 Received DATA (on stdin)
 19:26:57.321162 > 18 bytes data, server => client
 19:26:57.321171 '221 bye bye baby\r\n'
 19:26:57.322335 ====> Client disconnect
 19:26:57.322514 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.264649 Running IPv4 version
 19:26:56.264742 Listening on port 34601
 19:26:56.264782 Wrote pid 108725 to log/10/server/ftp_sockdata.pid
 19:26:56.272960 Received PING (on stdin)
 19:26:56.273090 Received PORT (on stdin)
 19:26:56.278605 ====> Client connect
 19:26:56.279663 Received DATA (on stdin)
 19:26:56.279678 > 17 bytes data, server => client
 19:26:56.279687 'WE ROOLZ: 85153\r\n'
 19:26:56.279715 Received DISC (on stdin)
 19:26:56.279727 ====> Client forcibly disconnected
 19:26:56.279861 Received QUIT (on stdin)
 19:26:56.279872 quits
 19:26:56.279941 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 527
=== End of file server.cmd
=== Start of file valgrind527
 ==108921== 
 ==108921== Process terminating with default action of signal 4 (SIGILL)
 ==108921==  Illegal opcode at address 0x51CC63F
 ==108921==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108921==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108921==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108921==    by 0x40041AF: main (first.c:264)
=== End of file valgrind527
test 0534 [FTP RETR twice using multi: non-existing host and non-existing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:46137/path/534 > log/17/stdout534 2> log/17/stderr534

 534: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 534
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:46137/path/534 > log/17/stdout534 2> log/17/stderr534
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.882040 ====> Client connect
 19:26:56.882295 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.892175 < "USER anonymous"
 19:26:56.892241 > "331 We are happy you popped in![CR][LF]"
 19:26:56.892520 < "PASS ftp@example.com"
 19:26:56.892561 > "230 Welcome you silly person[CR][LF]"
 19:26:56.892760 < "PWD"
 19:26:56.892801 > "257 "/" is current directory[CR][LF]"
 19:26:56.892996 < "EPSV"
 19:26:56.893028 ====> Passive DATA channel requested by client
 19:26:56.893046 DATA sockfilt for passive data channel starting...
 19:26:56.898159 DATA sockfilt for passive data channel started (pid 109150)
 19:26:56.898297 DATA sockfilt for passive data channel listens on port 37671
 19:26:56.898350 > "229 Entering Passive Mode (|||37671|)[CR][LF]"
 19:26:56.898369 Client has been notified that upcoming DATA connection is awaited on port 37671
 19:26:56.898668 Client connects to port 37671
 19:26:56.898703 ====> Client established passive DATA connection on port 37671
 19:26:56.898841 < "TYPE I"
 19:26:56.898877 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.899047 < "SIZE verifiedserver"
 19:26:56.899085 > "213 17[CR][LF]"
 19:26:56.899231 < "RETR verifiedserver"
 19:26:56.899262 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.899351 =====> Closing passive DATA connection...
 19:26:56.899366 Server disconnects passive DATA connection
 19:26:56.899589 Server disconnected passive DATA connection
 19:26:56.899615 DATA sockfilt for passive data channel quits (pid 109150)
 19:26:56.899845 DATA sockfilt for passive data channel quit (pid 109150)
 19:26:56.899866 =====> Closed passive DATA connection
 19:26:56.899893 > "226 File transfer complete[CR][LF]"
 19:26:56.945646 < "QUIT"
 19:26:56.945704 > "221 bye bye baby[CR][LF]"
 19:26:56.946857 MAIN sockfilt said DISC
 19:26:56.946903 ====> Client disconnected
 19:26:56.946993 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:56.487116 ====> Client connect
 19:26:56.493789 Received DATA (on stdin)
 19:26:56.493824 > 146 bytes data, server => client
 19:26:56.493835 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:56.493845 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:56.493854 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:56.497113 < 16 bytes data, client => server
 19:26:56.497139 'USER anonymous\r\n'
 19:26:56.500703 Received DATA (on stdin)
 19:26:56.500721 > 33 bytes data, server => client
 19:26:56.500732 '331 We are happy you popped in!\r\n'
 19:26:56.500844 < 22 bytes data, client => server
 19:26:56.500860 'PASS ftp@example.com\r\n'
 19:26:56.501015 Received DATA (on stdin)
 19:26:56.501028 > 30 bytes data, server => client
 19:26:56.501038 '230 Welcome you silly person\r\n'
 19:26:56.501105 < 5 bytes data, client => server
 19:26:56.501119 'PWD\r\n'
 19:26:56.501251 Received DATA (on stdin)
 19:26:56.501262 > 30 bytes data, server => client
 19:26:56.501273 '257 "/" is current directory\r\n'
 19:26:56.501344 < 6 bytes data, client => server
 19:26:56.501359 'EPSV\r\n'
 19:26:56.506828 Received DATA (on stdin)
 19:26:56.506845 > 39 bytes data, server => client
 19:26:56.506855 '229 Entering Passive Mode (|||37671|)\r\n'
 19:26:56.507175 < 8 bytes data, client => server
 19:26:56.507188 'TYPE I\r\n'
 19:26:56.507325 Received DATA (on stdin)
 19:26:56.507335 > 33 bytes data, server => client
 19:26:56.507346 '200 I modify TYPE as you wanted\r\n'
 19:26:56.507408 < 21 bytes data, client => server
 19:26:56.507418 'SIZE verifiedserver\r\n'
 19:26:56.507532 Received DATA (on stdin)
 19:26:56.507542 > 8 bytes data, server => client
 19:26:56.507551 '213 17\r\n'
 19:26:56.507600 < 21 bytes data, client => server
 19:26:56.507609 'RETR verifiedserver\r\n'
 19:26:56.507901 Received DATA (on stdin)
 19:26:56.507912 > 29 bytes data, server => client
 19:26:56.507922 '150 Binary junk (17 bytes).\r\n'
 19:26:56.508342 Received DATA (on stdin)
 19:26:56.508354 > 28 bytes data, server => client
 19:26:56.508364 '226 File transfer complete\r\n'
 19:26:56.553909 < 6 bytes data, client => server
 19:26:56.553938 'QUIT\r\n'
 19:26:56.554171 Received DATA (on stdin)
 19:26:56.554184 > 18 bytes data, server => client
 19:26:56.554195 '221 bye bye baby\r\n'
 19:26:56.555253 ====> Client disconnect
 19:26:56.555460 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.505899 Running IPv4 version
 19:26:56.505982 Listening on port 37671
 19:26:56.506020 Wrote pid 109150 to log/17/server/ftp_sockdata.pid
 19:26:56.506538 Received PING (on stdin)
 19:26:56.506649 Received PORT (on stdin)
 19:26:56.507058 ====> Client connect
 19:26:56.507816 Received DATA (on stdin)
 19:26:56.507828 > 17 bytes data, server => client
 19:26:56.507838 'WE ROOLZ: 84749\r\n'
 19:26:56.507866 Received DISC (on stdin)
 19:26:56.507876 ====> Client forcibly disconnected
 19:26:56.508072 Received QUIT (on stdin)
 19:26:56.508082 quits
 19:26:56.508143 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY RETR 550 the file doesn't exist
 REPLY SIZE 500 Can't check for file existence
 Testnum 534
=== End of file server.cmd
=== Start of file valgrind534
 ==109332== 
 ==109332== Process terminating with default action of signal 4 (SIGILL)
 ==109332==  Illegal opcode at address 0x51CC63F
 ==109332==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109332==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109332==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109332==    by 0x40041AF: main (first.c:264)
=== End of file valgrind534
test 0533 [FTP RETR a non-existing file twice using the multi interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:35787/path/533 ftp://127.0.0.1:35787/path/533 > log/21/stdout533 2> log/21/stderr533

 533: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 533
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:35787/path/533 ftp://127.0.0.1:35787/path/533 > log/21/stdout533 2> log/21/stderr533
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:56.844486 ====> Client connect
 19:26:56.844766 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:56.845068 < "USER anonymous"
 19:26:56.845189 > "331 We are happy you popped in![CR][LF]"
 19:26:56.845387 < "PASS ftp@example.com"
 19:26:56.845426 > "230 Welcome you silly person[CR][LF]"
 19:26:56.849315 < "PWD"
 19:26:56.849365 > "257 "/" is current directory[CR][LF]"
 19:26:56.849581 < "EPSV"
 19:26:56.849612 ====> Passive DATA channel requested by client
 19:26:56.849630 DATA sockfilt for passive data channel starting...
 19:26:56.854770 DATA sockfilt for passive data channel started (pid 109080)
 19:26:56.861597 DATA sockfilt for passive data channel listens on port 44333
 19:26:56.861673 > "229 Entering Passive Mode (|||44333|)[CR][LF]"
 19:26:56.861693 Client has been notified that upcoming DATA connection is awaited on port 44333
 19:26:56.861960 Client connects to port 44333
 19:26:56.861990 ====> Client established passive DATA connection on port 44333
 19:26:56.862092 < "TYPE I"
 19:26:56.862124 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:56.862286 < "SIZE verifiedserver"
 19:26:56.862323 > "213 17[CR][LF]"
 19:26:56.862472 < "RETR verifiedserver"
 19:26:56.862508 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:56.862600 =====> Closing passive DATA connection...
 19:26:56.862617 Server disconnects passive DATA connection
 19:26:56.868900 Server disconnected passive DATA connection
 19:26:56.868956 DATA sockfilt for passive data channel quits (pid 109080)
 19:26:56.869212 DATA sockfilt for passive data channel quit (pid 109080)
 19:26:56.869238 =====> Closed passive DATA connection
 19:26:56.869276 > "226 File transfer complete[CR][LF]"
 19:26:56.925603 < "QUIT"
 19:26:56.925665 > "221 bye bye baby[CR][LF]"
 19:26:56.926985 MAIN sockfilt said DISC
 19:26:56.927033 ====> Client disconnected
 19:26:56.927122 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:56.452784 ====> Client connect
 19:26:56.453124 Received DATA (on stdin)
 19:26:56.453149 > 146 bytes data, server => client
 19:26:56.453229 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:56.453244 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:56.453253 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:56.453347 < 16 bytes data, client => server
 19:26:56.453363 'USER anonymous\r\n'
 19:26:56.453533 Received DATA (on stdin)
 19:26:56.453548 > 33 bytes data, server => client
 19:26:56.453569 '331 We are happy you popped in!\r\n'
 19:26:56.453679 < 22 bytes data, client => server
 19:26:56.453695 'PASS ftp@example.com\r\n'
 19:26:56.453866 Received DATA (on stdin)
 19:26:56.453878 > 30 bytes data, server => client
 19:26:56.453888 '230 Welcome you silly person\r\n'
 19:26:56.457618 < 5 bytes data, client => server
 19:26:56.457640 'PWD\r\n'
 19:26:56.457811 Received DATA (on stdin)
 19:26:56.457825 > 30 bytes data, server => client
 19:26:56.457836 '257 "/" is current directory\r\n'
 19:26:56.457912 < 6 bytes data, client => server
 19:26:56.457927 'EPSV\r\n'
 19:26:56.470144 Received DATA (on stdin)
 19:26:56.470161 > 39 bytes data, server => client
 19:26:56.470172 '229 Entering Passive Mode (|||44333|)\r\n'
 19:26:56.470309 < 8 bytes data, client => server
 19:26:56.470324 'TYPE I\r\n'
 19:26:56.470565 Received DATA (on stdin)
 19:26:56.470576 > 33 bytes data, server => client
 19:26:56.470586 '200 I modify TYPE as you wanted\r\n'
 19:26:56.470642 < 21 bytes data, client => server
 19:26:56.470653 'SIZE verifiedserver\r\n'
 19:26:56.470761 Received DATA (on stdin)
 19:26:56.470770 > 8 bytes data, server => client
 19:26:56.470778 '213 17\r\n'
 19:26:56.470828 < 21 bytes data, client => server
 19:26:56.470839 'RETR verifiedserver\r\n'
 19:26:56.471059 Received DATA (on stdin)
 19:26:56.471071 > 29 bytes data, server => client
 19:26:56.471081 '150 Binary junk (17 bytes).\r\n'
 19:26:56.477727 Received DATA (on stdin)
 19:26:56.477742 > 28 bytes data, server => client
 19:26:56.477752 '226 File transfer complete\r\n'
 19:26:56.530464 < 6 bytes data, client => server
 19:26:56.530492 'QUIT\r\n'
 19:26:56.534131 Received DATA (on stdin)
 19:26:56.534149 > 18 bytes data, server => client
 19:26:56.534159 '221 bye bye baby\r\n'
 19:26:56.535374 ====> Client disconnect
 19:26:56.535581 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:56.461623 Running IPv4 version
 19:26:56.461719 Listening on port 44333
 19:26:56.461759 Wrote pid 109080 to log/21/server/ftp_sockdata.pid
 19:26:56.461781 Received PING (on stdin)
 19:26:56.469887 Received PORT (on stdin)
 19:26:56.470356 ====> Client connect
 19:26:56.477107 Received DATA (on stdin)
 19:26:56.477137 > 17 bytes data, server => client
 19:26:56.477152 'WE ROOLZ: 84694\r\n'
 19:26:56.477197 Received DISC (on stdin)
 19:26:56.477210 ====> Client forcibly disconnected
 19:26:56.477414 Received QUIT (on stdin)
 19:26:56.477426 quits
 19:26:56.477502 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY RETR 550 the file doesn't exist
 REPLY SIZE 500 Can't check for file existence
 Testnum 533
=== End of file server.cmd
=== Start of file valgrind533
 ==109254== 
 ==109254== Process terminating with default action of signal 4 (SIGILL)
 ==109254==  Illegal opcode at address 0x51CC63F
 ==109254==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109254==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109254==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109254==    by 0x40041AF: main (first.c:264)
=== End of file valgrind533
test 0514 [First set options to POST and then to make HEAD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:40989/514 > log/11/stdout514 2> log/11/stderr514

 514: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 514
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:40989/514 > log/11/stdout514 2> log/11/stderr514
=== End of file commands.log
=== Start of file http_server.log
 19:26:55.512337 ====> Client connect
 19:26:55.512396 accept_connection 3 returned 4
 19:26:55.512416 Read 93 bytes
 19:26:55.512426 Process 93 bytes request
 19:26:55.512438 Got request: GET /verifiedserver HTTP/1.1
 19:26:55.512446 Are-we-friendly question received
 19:26:55.512471 Wrote request (93 bytes) input to log/11/server.input
 19:26:55.512486 Identifying ourselves as friends
 19:26:55.512545 Response sent (56 bytes) and written to log/11/server.response
 19:26:55.512554 special request reCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:40321/535 http://127.0.0.1:40321/5350001 > log/15/stdout535 2> log/15/stderr535
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:37215/538 > log/24/stdout538 2> log/24/stderr538
ceived, no persistency
 19:26:55.512562 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 35132 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 514
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind514
 ==108151== 
 ==108151== Process terminating with default action of signal 4 (SIGILL)
 ==108151==  Illegal opcode at address 0x51CC63F
 ==108151==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==108151==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==108151==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==108151==    by 0x40041AF: main (first.c:264)
=== End of file valgrind514
test 0535 [HTTP GET multi two files with FAILONERROR]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:40321/535 http://127.0.0.1:40321/5350001 > log/15/stdout535 2> log/15/stderr535

 535: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 535
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:40321/535 http://127.0.0.1:40321/5350001 > log/15/stdout535 2> log/15/stderr535
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.477172 ====> Client connect
 19:26:57.477214 accept_connection 3 returned 4
 19:26:57.477239 Read 93 bytes
 19:26:57.477248 Process 93 bytes request
 19:26:57.477260 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.477269 Are-we-friendly question received
 19:26:57.477294 Wrote request (93 bytes) input to log/15/server.input
 19:26:57.477309 Identifying ourselves as friends
 19:26:57.477384 Response sent (56 bytes) and written to log/15/server.response
 19:26:57.477394 special request received, no persistency
 19:26:57.477401 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 38296 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 535
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind535
 ==109153== 
 ==109153== Process terminating with default action of signal 4 (SIGILL)
 ==109153==  Illegal opcode at address 0x51CC63F
 ==109153==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109153==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109153==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109153==    by 0x40041AF: main (first.c:264)
=== End of file valgrind535
test 0538 [FTP multi-interface download, failed login: PASS not valid]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:37215/538 > log/24/stdout538 2> log/24/stderr538

 538: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 538
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:37215/538 > log/24/stdout538 2> log/24/stderr538
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:57.382133 ====> Client connect
 19:26:57.382365 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:57.388927 < "USER anonymous"
 19:26:57.388989 > "331 We are happy you popped in![CR][LF]"
 19:26:57.389242 < "PASS ftp@example.com"
 19:26:57.389282 > "230 Welcome you silly person[CR][LF]"
 19:26:57.389479 < "PWD"
 19:26:57.389523 > "257 "/" is current directory[CR][LF]"
 19:26:57.389725 < "EPSV"
 19:26:57.389754 ====> Passive DATA channel requested by client
 19:26:57.389771 DATA sockfilt for passive data channel starting...
 19:26:57.398742 DATA sockfilt for passive data channel started (pid 109610)
 19:26:57.398902 DATA sockfilt for passive data channel listens on port 40667
 19:26:57.398961 > "229 Entering Passive Mode (|||40667|)[CR][LF]"
 19:26:57.398982 Client has been notified that upcoming DATA connection is awaited on port 40667
 19:26:57.399298 Client connects to port 40667
 19:26:57.399337 ====> Client established passive DATA connection on port 40667
 19:26:57.399488 < "TYPE I"
 19:26:57.399529 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:57.399724 < "SIZE verifiedserver"
 19:26:57.399773 > "213 17[CR][LF]"
 19:26:57.399961 < "RETR verifiedserver"
 19:26:57.400009 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:57.400113 =====> Closing passive DATA connection...
 19:26:57.400137 Server disconnects passive DATA connection
 19:26:57.400272 Server disconnected passive DATA connection
 19:26:57.400304 DATA sockfilt for passive data channel quits (pid 109610)
 19:26:57.400567 DATA sockfilt for passive data channel quit (pid 109610)
 19:26:57.400596 =====> Closed passive DATA connection
 19:26:57.400625 > "226 File transfer complete[CR][LF]"
 19:26:57.452311 < "QUIT"
 19:26:57.452364 > "221 bye bye baby[CR][LF]"
 19:26:57.454070 MAIN sockfilt said DISC
 19:26:57.454106 ====> Client disconnected
 19:26:57.454184 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.990555 ====> Client connect
 19:26:57.990944 Received DATA (on stdin)
 19:26:57.990964 > 146 bytes data, server => client
 19:26:57.990976 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.990987 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.990996 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.997225 < 16 bytes data, client => server
 19:26:57.997268 'USER anonymous\r\n'
 19:26:57.997559 Received DATA (on stdin)
 19:26:57.997575 > 33 bytes data, server => client
 19:26:57.997586 '331 We are happy you popped in!\r\n'
 19:26:57.997671 < 22 bytes data, client => server
 19:26:57.997687 'PASS ftp@example.com\r\n'
 19:26:57.997842 Received DATA (on stdin)
 19:26:57.997855 > 30 bytes data, server => client
 19:26:57.997864 '230 Welcome you silly person\r\n'
 19:26:57.997927 < 5 bytes data, client => server
 19:26:57.997942 'PWD\r\n'
 19:26:57.998082 Received DATA (on stdin)
 19:26:57.998095 > 30 bytes data, server => client
 19:26:57.998104 '257 "/" is current directory\r\n'
 19:26:57.998177 < 6 bytes data, client => server
 19:26:57.998193 'EPSV\r\n'
 19:26:58.007552 Received DATA (on stdin)
 19:26:58.007572 > 39 bytes data, server => client
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:39739/path/to/the/file/539 ftp://127.0.0.1:39739/path/to/the/file/5390001 > log/4/stdout539 2> log/4/stderr539
6:58.007583 '229 Entering Passive Mode (|||40667|)\r\n'
 19:26:58.007920 < 8 bytes data, client => server
 19:26:58.007933 'TYPE I\r\n'
 19:26:58.008093 Received DATA (on stdin)
 19:26:58.008107 > 33 bytes data, server => client
 19:26:58.008117 '200 I modify TYPE as you wanted\r\n'
 19:26:58.008180 < 21 bytes data, client => server
 19:26:58.008196 'SIZE verifiedserver\r\n'
 19:26:58.008335 Received DATA (on stdin)
 19:26:58.008349 > 8 bytes data, server => client
 19:26:58.008359 '213 17\r\n'
 19:26:58.008420 < 21 bytes data, client => server
 19:26:58.008435 'RETR verifiedserver\r\n'
 19:26:58.009184 Received DATA (on stdin)
 19:26:58.009195 > 29 bytes data, server => client
 19:26:58.009205 '150 Binary junk (17 bytes).\r\n'
 19:26:58.009228 Received DATA (on stdin)
 19:26:58.009238 > 28 bytes data, server => client
 19:26:58.009248 '226 File transfer complete\r\n'
 19:26:58.060717 < 6 bytes data, client => server
 19:26:58.060739 'QUIT\r\n'
 19:26:58.060935 Received DATA (on stdin)
 19:26:58.060945 > 18 bytes data, server => client
 19:26:58.060955 '221 bye bye baby\r\n'
 19:26:58.062584 ====> Client disconnect
 19:26:58.062750 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:57.001381 Running IPv4 version
 19:26:57.001464 Listening on port 40667
 19:26:57.001511 Wrote pid 109610 to log/24/server/ftp_sockdata.pid
 19:26:57.007217 Received PING (on stdin)
 19:26:57.007346 Received PORT (on stdin)
 19:26:57.007797 ====> Client connect
 19:26:57.008703 Received DATA (on stdin)
 19:26:57.008716 > 17 bytes data, server => client
 19:26:57.008726 'WE ROOLZ: 85113\r\n'
 19:26:57.008756 Received DISC (on stdin)
 19:26:57.008772 ====> Client forcibly disconnected
 19:26:57.008874 Received QUIT (on stdin)
 19:26:57.008887 quits
 19:26:57.008956 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 314 bluah you f00l
 Testnum 538
=== End of file server.cmd
=== Start of file valgrind538
 ==109628== 
 ==109628== Process terminating with default action of signal 4 (SIGILL)
 ==109628==  Illegal opcode at address 0x51CC63F
 ==109628==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109628==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109628==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109628==    by 0x40041AF: main (first.c:264)
=== End of file valgrind538
test 0539 [Two FTP fetches using different CURLOPT_FTP_FILEMETHOD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:39739/path/to/the/file/539 ftp://127.0.0.1:39739/path/to/the/file/5390001 > log/4/stdout539 2> log/4/stderr539

 539: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 539
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:39739/path/to/the/file/539 ftp://127.0.0.1:39739/path/to/the/file/5390001 > log/4/stdout539 2> log/4/stderr539
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:57.445026 ====> Client connect
 19:26:57.445253 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:57.445599 < "USER anonymous"
 19:26:57.445635 > "331 We are happy you popped in![CR][LF]"
 19:26:57.445798 < "PASS ftp@example.com"
 19:26:57.445824 > "230 Welcome you silly person[CR][LF]"
 19:26:57.445970 < "PWD"
 19:26:57.446000 > "257 "/" is current directory[CR][LF]"
 19:26:57.446156 < "EPSV"
 19:26:57.446182 ====> Passive DATA channel requested by client
 19:26:57.446196 DATA sockfilt for passive data channel starting...
 19:26:57.458742 DATA sockfilt for passive data channel started (pid 109624)
 19:26:57.458915 DATA sockfilt for passive data channel listens on port 35049
 19:26:57.458962 > "229 Entering Passive Mode (|||35049|)[CR][LF]"
 19:26:57.458979 Client has been notified that upcoming DATA connection is awaited on port 35049
 19:26:57.459290 Client connects to port 35049
 19:26:57.459319 ====> Client established passive DATA connection on port 35049
 19:26:57.459421 < "TYPE I"
 19:26:57.459452 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:57.459604 < "SIZE verifiedserver"
 19:26:57.459640 > "213 17[CR][LF]"
 19:26:57.459783 < "RETR verifiedserver"
 19:26:57.459817 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:57.459905 =====> Closing passive DATA connection...
 19:26:57.459920 Server disconnects passive DATA connection
 19:26:57.460132 Server disconnected passive DATA connection
 19:26:57.460157 DATA sockfilt for passive data channel quits (pid 109624)
 19:26:57.460421 DATA sockfilt for passive data channel quit (pid 109624)
 19:26:57.460445 =====> Closed passive DATA connection
 19:26:57.460471 > "226 File transfer complete[CR][LF]"
 19:26:57.508883 < "QUIT"
 19:26:57.509055 > "221 bye bye baby[CR][LF]"
 19:26:57.509161 MAIN sockfilt said DISC
 19:26:57.509193 ====> Client disconnected
 19:26:57.509266 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.053443 ====> Client connect
 19:26:57.053835 Received DATA (on stdin)
 19:26:57.053850 > 146 bytes data, server => client
 19:26:57.053861 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.053873 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.053944 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.054014 < 16 bytes data, client => server
 19:26:57.054024 'USER anonymous\r\n'
 19:26:57.054202 Received DATA (on stdin)
 19:26:57.054213 > 33 bytes data, server => client
 19:26:57.054223 '331 We are happy you popped in!\r\n'
 19:26:57.054275 < 22 bytes data, client => server
 19:26:57.054286 'PASS ftp@example.com\r\n'
 19:26:57.054387 Received DATA (on stdin)
 19:26:57.054397 > 30 bytes data, server => client
 19:26:57.054407 '230 Welcome you silly person\r\n'
 19:26:57.054457 < 5 bytes data, client => server
 19:26:57.054466 'PWD\r\n'
 19:26:57.054562 Received DATA (on stdin)
 19:26:57.054573 > 30 bytes data, server => client
 19:26:57.054582 '257 "/" is current directory\r\n'
 19:26:57.054641 < 6 bytes data, client => server
 19:26:57.054651 'EPSV\r\n'
 19:26:57.067558 Received DATA (on stdin)
 19:26:57.067577 > 39 bytes data, server => client
 19:26:57.067587 '229 Entering Passive Mode (|||35049|)\r\n'
 19:26:57.067772 < 8 bytes data, client => server
 19:26:57.067785 'TYPE I\r\n'
 19:26:57.068019 Received DATA (on stdin)
 19:26:57.068030 > 33 bytes data, server => client
 19:26:57.068040 '200 I modify TYPE as you wanted\r\n'
 19:26:57.068091 < 21 bytes data, client => server
 19:26:57.068101 'SIZE verifiedserver\r\n'
 19:26:57.068205 Received DATA (on stdin)
 19:26:57.068215 > 8 bytes data, server => client
 19:26:57.068224 '213 17\r\n'
 19:26:57.068273 < 21 bytes data, client => server
 19:26:57.068283 'RETR verifiedserver\r\n'
 19:26:57.068488 Received DATA (on stdin)
 19:26:57.068499 > 29 bytes data, server => client
 19:26:57.068508 '150 Binary junk (17 bytes).\r\n'
 19:26:57.069039 Received DATA (on stdin)
 19:26:57.069051 > 28 bytes data, server => client
 19:26:57.069061 '226 File transfer complete\r\n'
 19:26:57.117284 < 6 bytes data, client => server
 19:26:57.117311 'QUIT\r\n'
 19:26:57.117513 Received DATA (on stdin)
 19:26:57.117531 > 18 bytes data, server => client
 19:26:57.117551 '221 bye bye baby\r\n'
 19:26:57.117689 ====> Client disconnect
 19:26:57.117853 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:57.058439 Running IPv4 version
 19:26:57.058514 Listening on port 35049
 19:26:57.058551 Wrote pid 109624 to log/4/server/ftp_sockdata.pid
 19:26:57.063912 Received PING (on stdin)
 19:26:57.067371 ReceiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:38821 > log/13/stdout556 2> log/13/stderr556
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:40859 ascii > log/7/stdout550 2> log/7/stderr550
ved PORT (on stdin)
 19:26:57.067811 ====> Client connect
 19:26:57.068533 Received DATA (on stdin)
 19:26:57.068545 > 17 bytes data, server => client
 19:26:57.068559 'WE ROOLZ: 85249\r\n'
 19:26:57.068582 Received DISC (on stdin)
 19:26:57.068592 ====> Client forcibly disconnected
 19:26:57.068731 Received QUIT (on stdin)
 19:26:57.068741 quits
 19:26:57.068801 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 539
=== End of file server.cmd
=== Start of file valgrind539
 ==109640== 
 ==109640== Process terminating with default action of signal 4 (SIGILL)
 ==109640==  Illegal opcode at address 0x51CC63F
 ==109640==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109640==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109640==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109640==    by 0x40041AF: main (first.c:264)
=== End of file valgrind539
test 0556 [send and recv HTTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:38821 > log/13/stdout556 2> log/13/stderr556

 556: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 556
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:38821 > log/13/stdout556 2> log/13/stderr556
=== End of file commands.log
=== Start of file http_server.log
 19:26:58.058406 ====> Client connect
 19:26:58.058439 accept_connection 3 returned 4
 19:26:58.058459 Read 93 bytes
 19:26:58.058468 Process 93 bytes request
 19:26:58.058481 Got request: GET /verifiedserver HTTP/1.1
 19:26:58.058489 Are-we-friendly question received
 19:26:58.058514 Wrote request (93 bytes) input to log/13/server.input
 19:26:58.058530 Identifying ourselves as friends
 19:26:58.058586 Response sent (56 bytes) and written to log/13/server.response
 19:26:58.058594 special request received, no persistency
 19:26:58.058601 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 36058 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 556
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind556
 ==110605== 
 ==110605== Process terminating with default action of signal 4 (SIGILL)
 ==110605==  Illegal opcode at address 0x51CC63F
 ==110605==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110605==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110605==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110605==    by 0x40041AF: main (first.c:264)
=== End of file valgrind556
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind543 ./libtest/libtests lib543 - > log/2/stdout543 2> log/2/stderr543
test 0550 [FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE using ASCII]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:40859 ascii > log/7/stdout550 2> log/7/stderr550

 550: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:26:59.582237768 +0000
+++ log/7/check-generated	2026-10-15 19:26:59.579177390 +0000
@@ -1 +0,0 @@
-hello[LF]
== Contents of files in the log/7/ directory after test 550
=== Start of file check-expected
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:40859 ascii > log/7/stdout550 2> log/7/stderr550
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.887507 ====> Client connect
 19:26:57.887560 accept_connection 3 returned 4
 19:26:57.887590 Read 93 bytes
 19:26:57.887614 Process 93 bytes request
 19:26:57.887629 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.887638 Are-we-friendly question received
 19:26:57.887671 Wrote request (93 bytes) input to log/7/server.input
 19:26:57.887689 Identifying ourselves as friends
 19:26:57.887788 Response sent (56 bytes) and written to log/7/server.response
 19:26:57.887800 special request received, no persistency
 19:26:57.887809 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 45962 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 550
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind550
 ==110258== 
 ==110258== Process terminating with default action of signal 4 (SIGILL)
 ==110258==  Illegal opcode at address 0x51CC63F
 ==110258==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110258==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110258==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110258==    by 0x40041AF: main (first.c:264)
=== End of file valgrind550
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:40921 silly:person custom.set.host.name > log/12/stdout540 2> log/12/stderr540
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind537 ./libtest/libtests lib537 http://127.0.0.1:36161/537 > log/3/stdout537 2> log/3/stderr537
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:39641/541 log/5/upload541 > log/5/stdout541 2> log/5/stderr541
test 0543 [curl_easy_escape]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind543 ./libtest/libtests lib543 - > log/2/stdout543 2> log/2/stderr543

 543: stdout FAILED:
--- log/2/check-expected	2026-10-15 19:26:59.597819012 +0000
+++ log/2/check-generated	2026-10-15 19:26:59.592507897 +0000
@@ -1,3 +0,0 @@
-%9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1[LF]
-IN: '' OUT: ''[LF]
-IN: ' 12' OUT: '%2012'[LF]
== Contents of files in the log/2/ directory after test 543
=== Start of file check-expected
 %9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1[LF]
 IN: '' OUT: ''[LF]
 IN: ' 12' OUT: '%2012'[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind543 ./libtest/libtests lib543 - > log/2/stdout543 2> log/2/stderr543
=== End of file commands.log
=== Start of file server.cmd
 Testnum 543
=== End of file server.cmd
=== Start of file valgrind543
 ==109815== 
 ==109815== Process terminating with default action of signal 4 (SIGILL)
 ==109815==  Illegal opcode at address 0x51CC63F
 ==109815==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109815==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109815==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109815==    by 0x40041AF: main (first.c:264)
=== End of file valgrind543
test 0540 [HTTP proxy auth Digest multi API reusing connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:40921 silly:person custom.set.host.name > log/12/stdout540 2> log/12/stderr540

 540: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 540
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:40921 silly:person custom.set.host.name > log/12/stdout540 2> log/12/stderr540
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.389977 ====> Client connect
 19:26:57.390016 accept_connection 3 returned 4
 19:26:57.390118 Read 93 bytes
 19:26:57.390133 Process 93 bytes request
 19:26:57.390147 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.390156 Are-we-friendly question received
 19:26:57.390190 Wrote request (93 bytes) input to log/12/server.input
 19:26:57.390207 Identifying ourselves as friends
 19:26:57.390270 Response sent (56 bytes) and written to log/12/server.response
 19:26:57.390280 special request received, no persistency
 19:26:57.390288 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 60438 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 540
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind540
 ==109744== 
 ==109744== Process terminating with default action of signal 4 (SIGILL)
 ==109744==  Illegal opcode at address 0x51CC63F
 ==109744==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109744==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109744==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109744==    by 0x40041AF: main (first.c:264)
=== End of file valgrind540
prechecked ./libtest/libtests lib537 check
test 0537 [HTTP GET with a HUGE number of file descriptors open]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind537 ./libtest/libtests lib537 http://127.0.0.1:36161/537 > log/3/stdout537 2> log/3/stderr537

 537: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 537
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind537 ./libtest/libtests lib537 http://127.0.0.1:36161/537 > log/3/stdout537 2> log/3/stderr537
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.857259 ====> Client connect
 19:26:57.857304 accept_connection 3 returned 4
 19:26:57.857330 Read 93 bytes
 19:26:57.857341 Process 93 bytes request
 19:26:57.857354 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.857363 Are-we-friendly question received
 19:26:57.857391 Wrote request (93 bytes) input to log/3/server.input
 19:26:57.857408 Identifying ourselves as friends
 19:26:57.857495 Response sent (56 bytes) and written to log/3/server.response
 19:26:57.857505 special request received, no persistency
 19:26:57.857513 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36372 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file precheck-537
 URL: check
 initial soft limit: 1024
 initial hard limit: 524288
 raising soft limit up to hard limit
 current soft limit: 524288
 current hard limit: 524288
 allocating memchunk 1048576 byte array
 initializing memchunk array
 allocating array for 524277 file descriptors
 initializing testfd array
 trying to open 524277 file descriptors
 524277 file descriptors open
 Test ended with result 0
=== End of file precheck-537
=== Start of file server.cmd
 Testnum 537
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind537
 ==109757== 
 ==109757== Process terminating with default action of signal 4 (SIGILL)
 ==109757==  Illegal opcode at address 0x51CC63F
 ==109757==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109757==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109757==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109757==    by 0x40041AF: main (first.c:264)
=== End of file valgrind537
test 0541 [FTP upload and upload same file again without rewind]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:39641/541 log/5/upload541 > log/5/stdout541 2> log/5/stderr541

 541: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 541
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:39881 ascii > log/21/stdout561 2> log/21/stderr561
valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:39641/541 log/5/upload541 > log/5/stdout541 2> log/5/stderr541
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:57.978840 ====> Client connect
 19:26:57.979071 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:57.985540 < "USER anonymous"
 19:26:57.985595 > "331 We are happy you popped in![CR][LF]"
 19:26:57.985855 < "PASS ftp@example.com"
 19:26:57.985895 > "230 Welcome you silly person[CR][LF]"
 19:26:57.986097 < "PWD"
 19:26:57.986140 > "257 "/" is current directory[CR][LF]"
 19:26:57.986345 < "EPSV"
 19:26:57.986378 ====> Passive DATA channel requested by client
 19:26:57.986396 DATA sockfilt for passive data channel starting...
 19:26:57.994129 DATA sockfilt for passive data channel started (pid 109858)
 19:26:57.994280 DATA sockfilt for passive data channel listens on port 45611
 19:26:57.994337 > "229 Entering Passive Mode (|||45611|)[CR][LF]"
 19:26:57.994360 Client has been notified that upcoming DATA connection is awaited on port 45611
 19:26:57.994699 Client connects to port 45611
 19:26:57.994731 ====> Client established passive DATA connection on port 45611
 19:26:57.994821 < "TYPE I"
 19:26:57.994854 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:57.995039 < "SIZE verifiedserver"
 19:26:57.995083 > "213 17[CR][LF]"
 19:26:57.995271 < "RETR verifiedserver"
 19:26:57.995308 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:57.995428 =====> Closing passive DATA connection...
 19:26:57.995451 Server disconnects passive DATA connection
 19:26:57.995732 Server disconnected passive DATA connection
 19:26:57.995768 DATA sockfilt for passive data channel quits (pid 109858)
 19:26:57.996089 DATA sockfilt for passive data channel quit (pid 109858)
 19:26:57.996121 =====> Closed passive DATA connection
 19:26:57.996159 > "226 File transfer complete[CR][LF]"
 19:26:58.045680 < "QUIT"
 19:26:58.045748 > "221 bye bye baby[CR][LF]"
 19:26:58.046258 MAIN sockfilt said DISC
 19:26:58.046298 ====> Client disconnected
 19:26:58.046381 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.587370 ====> Client connect
 19:26:57.587773 Received DATA (on stdin)
 19:26:57.587790 > 146 bytes data, server => client
 19:26:57.587805 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.587815 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.587824 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.594020 < 16 bytes data, client => server
 19:26:57.594043 'USER anonymous\r\n'
 19:26:57.594289 Received DATA (on stdin)
 19:26:57.594304 > 33 bytes data, server => client
 19:26:57.594315 '331 We are happy you popped in!\r\n'
 19:26:57.594414 < 22 bytes data, client => server
 19:26:57.594431 'PASS ftp@example.com\r\n'
 19:26:57.594583 Received DATA (on stdin)
 19:26:57.594595 > 30 bytes data, server => client
 19:26:57.594605 '230 Welcome you silly person\r\n'
 19:26:57.594673 < 5 bytes data, client => server
 19:26:57.594689 'PWD\r\n'
 19:26:57.594827 Received DATA (on stdin)
 19:26:57.594839 > 30 bytes data, server => client
 19:26:57.594850 '257 "/" is current directory\r\n'
 19:26:57.594924 < 6 bytes data, client => server
 19:26:57.594939 'EPSV\r\n'
 19:26:57.603056 Received DATA (on stdin)
 19:26:57.603071 > 39 bytes data, server => client
 19:26:57.603083 '229 Entering Passive Mode (|||45611|)\r\n'
 19:26:57.603289 < 8 bytes data, client => server
 19:26:57.603307 'TYPE I\r\n'
 19:26:57.603538 Received DATA (on stdin)
 19:26:57.603549 > 33 bytes data, server => client
 19:26:57.603559 '200 I modify TYPE as you wanted\r\n'
 19:26:57.603619 < 21 bytes data, client => server
 19:26:57.603633 'SIZE verifiedserver\r\n'
 19:26:57.603771 Received DATA (on stdin)
 19:26:57.603784 > 8 bytes data, server => client
 19:26:57.603795 '213 17\r\n'
 19:26:57.603860 < 21 bytes data, client => server
 19:26:57.603873 'RETR verifiedserver\r\n'
 19:26:57.604138 Received DATA (on stdin)
 19:26:57.604151 > 29 bytes data, server => client
 19:26:57.604163 '150 Binary junk (17 bytes).\r\n'
 19:26:57.604849 Received DATA (on stdin)
 19:26:57.604862 > 28 bytes data, server => client
 19:26:57.604871 '226 File transfer complete\r\n'
 19:26:57.654161 < 6 bytes data, client => server
 19:26:57.654193 'QUIT\r\n'
 19:26:57.654456 Received DATA (on stdin)
 19:26:57.654472 > 18 bytes data, server => client
 19:26:57.654482 '221 bye bye baby\r\n'
 19:26:57.654886 ====> Client disconnect
 19:26:57.655077 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:57.601262 Running IPv4 version
 19:26:57.601344 Listening on port 45611
 19:26:57.601380 Wrote pid 109858 to log/5/server/ftp_sockdata.pid
 19:26:57.602732 Received PING (on stdin)
 19:26:57.602859 Received PORT (on stdin)
 19:26:57.603332 ====> Client connect
 19:26:57.604233 Received DATA (on stdin)
 19:26:57.604249 > 17 bytes data, server => client
 19:26:57.604260 'WE ROOLZ: 85245\r\n'
 19:26:57.604291 Received DISC (on stdin)
 19:26:57.604306 ====> Client forcibly disconnected
 19:26:57.604468 Received QUIT (on stdin)
 19:26:57.604483 quits
 19:26:57.604561 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 541
=== End of file server.cmd
=== Start of file upload541
 Contents
 of
 a file
 to verify
 ftp
 upload
 works?
=== End of file upload541
=== Start of file valgrind541
 ==109959== 
 ==109959== Process terminating with default action of signal 4 (SIGILL)
 ==109959==  Illegal opcode at address 0x51CC63F
 ==109959==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109959==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109959==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109959==    by 0x40041AF: main (first.c:264)
=== End of file valgrind541
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:40031/542 > log/16/stdout542 2> log/16/stderr542
test 0561 [FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:39881 ascii > log/21/stdout561 2> log/21/stderr561

 561: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:26:59.819228929 +0000
+++ log/21/check-generated	2026-10-15 19:26:59.815793911 +0000
@@ -1 +0,0 @@
-hello[LF]
== Contents of files in the log/21/ directory after test 561
=== Start of file check-expected
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:39881 ascii > log/21/stdout561 2> log/21/stderr561
=== End of file commands.log
=== Start of file http_server.log
 19:26:58.207162 ====> Client connect
 19:26:58.207199 accept_connection 3 returned 4
 19:26:58.207221 Read 93 bytes
 19:26:58.207230 Process 93 bytes request
 19:26:58.207243 Got request: GET /verifiedserver HTTP/1.1
 19:26:58.207252 Are-we-friendly question received
 19:26:58.207278 Wrote request (93 bytes) input to log/21/server.input
 19:26:58.207295 Identifying ourselves as friends
 19:26:58.207353 Response sent (56 bytes) and written to log/21/server.response
 19:26:58.207363 special request received, no persistency
 19:26:58.207371 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 51964 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 561
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind561
 ==110746== 
 ==110746== Process terminating with default action of signal 4 (SIGILL)
 ==110746==  Illegal opcode at address 0x51CC63F
 ==110746==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110746==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110746==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110746==    by 0x40041AF: main (first.c:264)
=== End of file valgrind561
test 0542 [FTP a file with NOBODY yes and HEADER no]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:40031/542 > log/16/stdout542 2> log/16/stderr542

 542: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 542
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:40031/542 > log/16/stdout542 2> log/16/stderr542
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:57.995766 ====> Client connect
 19:26:57.995975 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:58.005713 < "USER anonymous"
 19:26:58.005767 > "331 We are happy you popped in![CR][LF]"
 19:26:58.005970 < "PASS ftp@example.com"
 19:26:58.006002 > "230 Welcome you silly person[CR][LF]"
 19:26:58.006159 < "PWD"
 19:26:58.006194 > "257 "/" is current directory[CR][LF]"
 19:26:58.006367 < "EPSV"
 19:26:58.006394 ====> Passive DATA channel requested by client
 19:26:58.006409 DATA sockfilt for passive data channel starting...
 19:26:58.022046 DATA sockfilt for passive data channel started (pid 109881)
 19:26:58.025493 DATA sockfilt for passive data channel listens on port 43185
 19:26:58.025562 > "229 Entering Passive Mode (|||43185|)[CR][LF]"
 19:26:58.025585 Client has been notified that upcoming DATA connection is awaited on port 43185
 19:26:58.028968 Client connects to port 43185
 19:26:58.029015 ====> Client established passive DATA connection on port 43185
 19:26:58.029128 < "TYPE I"
 19:26:58.029168 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:58.029361 < "SIZE verifiedserver"
 19:26:58.029402 > "213 17[CR][LF]"
 19:26:58.029552 < "RETR verifiedserver"
 19:26:58.029584 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:58.029671 =====> Closing passive DATA connection...
 19:26:58.029687 Server disconnects passive DATA connection
 19:26:58.029842 Server disconnected passive DATA connection
 19:26:58.029864 DATA sockfilt for passive data channel quits (pid 109881)
 19:26:58.030143 DATA sockfilt for passive data channel quit (pid 109881)
 19:26:58.030165 =====> Closed passive DATA connection
 19:26:58.030194 > "226 File transfer complete[CR][LF]"
 19:26:58.078887 < "QUIT"
 19:26:58.078950 > "221 bye bye baby[CR][LF]"
 19:26:58.085435 MAIN sockfilt said DISC
 19:26:58.085507 ====> Client disconnected
 19:26:58.085608 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:57.604178 ====> Client connect
 19:26:57.614010 Received DATA (on stdin)
 19:26:57.614048 > 146 bytes data, server => client
 19:26:57.614061 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:57.614071 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:57.614080 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:57.614203 < 16 bytes data, client => server
 19:26:57.614215 'USER anonymous\r\n'
 19:26:57.614461 Received DATA (on stdin)
 19:26:57.614475 > 33 bytes data, server => client
 19:26:57.614485 '331 We are happy you popped in!\r\n'
 19:26:57.614549 < 22 bytes data, client => server
 19:26:57.614560 'PASS ftp@example.com\r\n'
 19:26:57.614686 Received DATA (on stdin)
 19:26:57.614696 > 30 bytes data, server => client
 19:26:57.614706 '230 Welcome you silly person\r\n'
 19:26:57.614757 < 5 bytes data, client => server
 19:26:57.614767 'PWD\r\n'
 19:26:57.614876 Received DATA (on stdin)
 19:26:57.614887 > 30 bytes data, server => client
 19:26:57.614897 '257 "/" is current directory\r\n'
 19:26:57.614960 < 6 bytes data, client => server
 19:26:57.614972 'EPSV\r\n'
 19:26:57.634287 Received DATA (on stdin)
 19:26:57.634305 > 39 bytes data, server => client
 19:26:57.634316 '229 Entering Passive Mode (|||43185|)\r\n'
 19:26:57.637547 < 8 bytes data, client => server
 19:26:57.637571 'TYPE I\r\n'
 19:26:57.637861 Received DATA (on stdin)
 19:26:57.637875 > 33 bytes data, server => client
 19:26:57.637885 '200 I modify TYPE as you wanted\r\n'
 19:26:57.637956 < 21 bytes data, client => server
 19:26:57.637966 'SIZE verifiedserver\r\n'
 19:26:57.638091 Received DATA (on stdin)
 19:26:57.638101 > 8 bytes data, server => client
 19:26:57.638110 '213 17\r\n'
 19:26:57.638159 < 21 bytes data, client => server
 19:26:57.638169 'RETR verifiedserver\r\n'
 19:26:57.638378 Received DATA (on stdin)
 19:26:57.638388 > 29 bytes data, server => client
 19:26:57.638398 '150 Binary junk (17 bytes).\r\n'
 19:26:57.638884 Received DATA (on stdin)
 19:26:57.638895 > 28 bytes data, server => client
 19:26:57.638905 '226 File transfer complete\r\n'
 19:26:57.687375 < 6 bytes data, client => server
 19:26:57.687410 'QUIT\r\n'
 19:26:57.687657 Received DATA (on stdin)
 19:26:57.687669 > 18 bytes data, server => client
 19:26:57.687681 '221 bye bye baby\r\n'
 19:26:57.694035 ====CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:44467/ > log/8/stdout552 2> log/8/stderr552
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:43733/544 > log/9/stdout544 2> log/9/stderr544
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:44711 s1lly:pers0n > log/23/stdout551 2> log/23/stderr551
> Client disconnect
 19:26:57.694318 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:58.622297 Running IPv4 version
 19:26:58.622405 Listening on port 43185
 19:26:58.622464 Wrote pid 109881 to log/16/server/ftp_sockdata.pid
 19:26:58.627367 Received PING (on stdin)
 19:26:58.634046 Received PORT (on stdin)
 19:26:58.637597 ====> Client connect
 19:26:58.638424 Received DATA (on stdin)
 19:26:58.638437 > 17 bytes data, server => client
 19:26:58.638447 'WE ROOLZ: 84702\r\n'
 19:26:58.638471 Received DISC (on stdin)
 19:26:58.638482 ====> Client forcibly disconnected
 19:26:58.638557 Received QUIT (on stdin)
 19:26:58.638566 quits
 19:26:58.638636 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 542
=== End of file server.cmd
=== Start of file valgrind542
 ==109984== 
 ==109984== Process terminating with default action of signal 4 (SIGILL)
 ==109984==  Illegal opcode at address 0x51CC63F
 ==109984==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109984==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109984==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109984==    by 0x40041AF: main (first.c:264)
=== End of file valgrind542
test 0552 [HTTP proxy auth Digest with 70K POST data from read callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:44467/ > log/8/stdout552 2> log/8/stderr552

 552: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 552
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:44467/ > log/8/stdout552 2> log/8/stderr552
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.924513 ====> Client connect
 19:26:57.924552 accept_connection 3 returned 4
 19:26:57.924708 Read 93 bytes
 19:26:57.924721 Process 93 bytes request
 19:26:57.924734 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.924743 Are-we-friendly question received
 19:26:57.924777 Wrote request (93 bytes) input to log/8/server.input
 19:26:57.924795 Identifying ourselves as friends
 19:26:57.924855 Response sent (56 bytes) and written to log/8/server.response
 19:26:57.924864 special request received, no persistency
 19:26:57.924874 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 51314 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 552
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind552
 ==110290== 
 ==110290== Process terminating with default action of signal 4 (SIGILL)
 ==110290==  Illegal opcode at address 0x51CC63F
 ==110290==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110290==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110290==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110290==    by 0x40041AF: main (first.c:264)
=== End of file valgrind552
test 0544 [HTTP POST text data using CURLOPT_COPYPOSTFIELDS]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:43733/544 > log/9/stdout544 2> log/9/stderr544

 544: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 544
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:43733/544 > log/9/stdout544 2> log/9/stderr544
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.697420 ====> Client connect
 19:26:57.697463 accept_connection 3 returned 4
 19:26:57.697609 Read 93 bytes
 19:26:57.697624 Process 93 bytes request
 19:26:57.697638 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.697647 Are-we-friendly question received
 19:26:57.697676 Wrote request (93 bytes) input to log/9/server.input
 19:26:57.697694 Identifying ourselves as friends
 19:26:57.697757 Response sent (56 bytes) and written to log/9/server.response
 19:26:57.697766 special request received, no persistency
 19:26:57.697774 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 50580 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 544
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind544
 ==109981== 
 ==109981== Process terminating with default action of signal 4 (SIGILL)
 ==109981==  Illegal opcode at address 0x51CC63F
 ==109981==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==109981==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==109981==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==109981==    by 0x40041AF: main (first.c:264)
=== End of file valgrind544
test 0551 [HTTP proxy auth Digest with POST data from read callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:44711 s1lly:pers0n > log/23/stdout551 2> log/23/stderr551

 551: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 551
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:44711 s1lly:pers0n > log/23/stdout551 2> log/23/stderr551
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.901532 ====> Client connect
 19:26:57.901566 accept_connection 3 returned 4
 19:26:57.901587 Read 93 bytes
 19:26:57.901596 Process 93 bytes request
 19:26:57.901607 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.901616 Are-we-friendly question received
 19:26:57.901645 Wrote request (93 bytes) input to log/23/server.input
 19:26:57.901661 Identifying ourselves as friends
 19:26:57.901723 Response sent (56 bytes) and written to log/23/server.response
 19:26:57.901732 spCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:45467/path/553 > log/14/stdout553 2> log/14/stderr553
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:33989/path/546 ftp://127.0.0.1:33989/path/546 > log/6/stdout546 2> log/6/stderr546
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind557 ./libtest/libtests lib557 - > log/1/stdout557 2> log/1/stderr557
ecial request received, no persistency
 19:26:57.901740 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 33076 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 551
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind551
 ==110317== 
 ==110317== Process terminating with default action of signal 4 (SIGILL)
 ==110317==  Illegal opcode at address 0x51CC63F
 ==110317==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110317==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110317==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110317==    by 0x40041AF: main (first.c:264)
=== End of file valgrind551
test 0546 [FTP RETR non-existing file then a found one using multi]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:33989/path/546 ftp://127.0.0.1:33989/path/546 > log/6/stdout546 2> log/6/stderr546

 546: stdout FAILED:
--- log/6/check-expected	2026-10-15 19:27:00.040346998 +0000
+++ log/6/check-generated	2026-10-15 19:27:00.035747323 +0000
@@ -1,6 +0,0 @@
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
== Contents of files in the log/6/ directory after test 546
=== Start of file check-expected
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:33989/path/546 ftp://127.0.0.1:33989/path/546 > log/6/stdout546 2> log/6/stderr546
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:58.099530 ====> Client connect
 19:26:58.099724 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:58.108882 < "USER anonymous"
 19:26:58.108943 > "331 We are happy you popped in![CR][LF]"
 19:26:58.109170 < "PASS ftp@example.com"
 19:26:58.109203 > "230 Welcome you silly person[CR][LF]"
 19:26:58.109348 < "PWD"
 19:26:58.109378 > "257 "/" is current directory[CR][LF]"
 19:26:58.115653 < "EPSV"
 19:26:58.115699 ====> Passive DATA channel requested by client
 19:26:58.115714 DATA sockfilt for passive data channel starting...
 19:26:58.118885 DATA sockfilt for passive data channel started (pid 109982)
 19:26:58.119048 DATA sockfilt for passive data channel listens on port 36801
 19:26:58.119105 > "229 Entering Passive Mode (|||36801|)[CR][LF]"
 19:26:58.119125 Client has been notified that upcoming DATA connection is awaited on port 36801
 19:26:58.119474 Client connects to port 36801
 19:26:58.119511 ====> Client established passive DATA connection on port 36801
 19:26:58.119611 < "TYPE I"
 19:26:58.119649 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:58.119817 < "SIZE verifiedserver"
 19:26:58.119858 > "213 17[CR][LF]"
 19:26:58.120014 < "RETR verifiedserver"
 19:26:58.120051 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:58.120143 =====> Closing passive DATA connection...
 19:26:58.120160 Server disconnects passive DATA connection
 19:26:58.120380 Server disconnected passive DATA connection
 19:26:58.120408 DATA sockfilt for passive data channel quits (pid 109982)
 19:26:58.120618 DATA sockfilt for passive data channel quit (pid 109982)
 19:26:58.120642 =====> Closed passive DATA connection
 19:26:58.120669 > "226 File transfer complete[CR][LF]"
 19:26:58.162456 < "QUIT"
 19:26:58.162615 > "221 bye bye baby[CR][LF]"
 19:26:58.166485 MAIN sockfilt said DISC
 19:26:58.166525 ====> Client disconnected
 19:26:58.166607 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:58.707449 ====> Client connect
 19:26:58.714043 Received DATA (on stdin)
 19:26:58.714082 > 146 bytes data, server => client
 19:26:58.714093 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:58.714101 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:58.714109 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:58.714244 < 16 bytes data, client => server
 19:26:58.714256 'USER anonymous\r\n'
 19:26:58.717660 Received DATA (on stdin)
 19:26:58.717675 > 33 bytes data, server => client
 19:26:58.717686 '331 We are happy you popped in!\r\n'
 19:26:58.717768 < 22 bytes data, client => server
 19:26:58.717778 'PASS ftp@example.com\r\n'
 19:26:58.717907 Received DATA (on stdin)
 19:26:58.717917 > 30 bytes data, server => client
 19:26:58.717927 '230 Welcome you silly person\r\n'
 19:26:58.717975 < 5 bytes data, client => server
 19:26:58.717985 'PWD\r\n'
 19:26:58.718082 Received DATA (on stdin)
 19:26:58.718091 > 30 bytes data, server => client
 19:26:58.718101 '257 "/" is current directory\r\n'
 19:26:58.724161 < 6 bytes data, client => server
 19:26:58.724192 'EPSV\r\n'
 19:26:58.727847 Received DATA (on stdin)
 19:26:58.727867 > 39 bytes data, server => client
 19:26:58.727877 '229 Entering Passive Mode (|||36801|)\r\n'
 19:26:58.728095 < 8 bytes data, client => server
 19:26:58.728112 'TYPE I\r\n'
 19:26:58.728358 Received DATA (on stdin)
 19:26:58.728370 > 33 bytes data, server => client
 19:26:58.728380 '200 I modify TYPE as you wanted\r\n'
 19:26:58.728437 < 21 bytes data, client => server
 19:26:58.728448 'SIZE verifiedserver\r\n'
 19:26:58.728566 Received DATA (on stdin)
 19:26:58.728577 > 8 bytes data, server => client
 19:26:58.728586 '213 17\r\n'
 19:26:58.728637 < 21 bytes data, client => server
 19:26:58.728647 'RETR verifiedserver\r\n'
 19:26:58.728871 Received DATA (on stdin)
 19:26:58.728881 > 29 bytes data, server => client
 19:26:58.728892 '150 Binary junk (17 bytes).\r\n'
 19:26:58.729378 Received DATA (on stdin)
 19:26:58.729389 > 28 bytes data, server => client
 19:26:58.729400 '226 File transfer complete\r\n'
 19:26:58.770877 < 6 bytes data, client => server
 19:26:58.770930 'QUIT\r\n'
 19:26:58.771243 Received DATA (on stdin)
 19:26:58.771260 > 18 bytes data, server => client
 19:26:58.774069 '221 bye bye baby\r\n'
 19:26:58.775145 ====> Client disconnect
 19:26:58.775332 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:58.726372 Running IPv4 version
 19:26:58.726483 Listening on port 36801
 19:26:58.726530 Wrote pid 109982 to log/6/server/ftp_sockdata.pid
 19:26:58.727514 Received PING (on stdin)
 19:26:58.727646 Received PORT (on stdin)
 19:26:58.728133 ====> Client connect
 19:26:58.728919 Received DATA (on stdin)
 19:26:58.728930 > 17 bytes data, server => client
 19:26:58.728940 'WE ROOLZ: 85558\r\n'
 19:26:58.728964 Received DISC (on stdin)
 19:26:58.728975 ====> Client forcibly disconnected
 19:26:58.729123 Received QUIT (on stdin)
 19:26:58.729133 quits
 19:26:58.729192 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY RETR 550 the file doesn't exist
 COUNT RETR 1
 REPLY SIZE 500 Can't check for file existence
 COUNT SIZE 1
 Testnum 546
=== End of file server.cmd
=== Start of file valgrind546
 ==110081== 
 ==110081== Process terminating with default action of signal 4 (SIGILL)
 ==110081==  Illegal opcode at address 0x51CC63F
 ==110081==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110081==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110081==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110081==    by 0x40041AF: main (first.c:264)
=== End of file valgrind546
test 0553 [HTTP post with huge request headers and post data from callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:45467/path/553 > log/14/stdout553 2> log/14/stderr553

 553: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 553
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:45467/path/553 > log/14/stdout553 2> log/14/stderr553
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.928638 ====> Client connect
 19:26:57.928674 accept_connection 3 returned 4
 19:26:57.928696 Read 93 bytes
 19:26:57.928706 Process 93 bytes request
 19:26:57.928719 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.928728 Are-we-friendly question received
 19:26:57.928758 Wrote request (93 bytes) input to log/14/server.input
 19:26:57.928776 Identifying ourselves as friends
 19:26:57.928846 Response sent (56 bytes) and written to log/14/server.response
 19:26:57.928858 special request received, no persistency
 19:26:57.928867 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 39680 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 553
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind553
 ==110318== 
 ==110318== Process terminating with default action of signal 4 (SIGILL)
 ==110318==  Illegal opcode at address 0x51CC63F
 ==110318==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110318==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110318==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110318==    by 0x40041AF: main (first.c:264)
=== End of file valgrind553
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:38895/566 log/24/ip566 > log/24/stdout566 2> log/24/stderr566
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:35989/545 > log/22/stdout545 2> log/22/stderr545
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:46497 > log/19/stdout549 2> log/19/stderr549
test 0557 [curl_mprintf() testing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind557 ./libtest/libtests lib557 - > log/1/stdout557 2> log/1/stderr557

 557: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:27:00.053895067 +0000
+++ log/1/check-generated	2026-10-15 19:27:00.049077841 +0000
@@ -1,12 +0,0 @@
-All curl_mprintf() unsigned short tests OK![LF]
-All curl_mprintf() signed short tests OK![LF]
-All curl_mprintf() unsigned int tests OK![LF]
-All curl_mprintf() signed int tests OK![LF]
-All curl_mprintf() unsigned long tests OK![LF]
-All curl_mprintf() signed long tests OK![LF]
-All curl_mprintf() curl_off_t tests OK![LF]
-All curl_mprintf() strings tests OK![LF]
-All float strings tests OK![LF]
-All curl_mprintf() octal and hexadecimal tests OK![LF]
-testing a string and -443 is super fun and 9876543[LF]
-All v-functions test OK![LF]
== Contents of files in the log/1/ directory after test 557
=== Start of file check-expected
 All curl_mprintf() unsigned short tests OK![LF]
 All curl_mprintf() signed short tests OK![LF]
 All curl_mprintf() unsigned int tests OK![LF]
 All curl_mprintf() signed int tests OK![LF]
 All curl_mprintf() unsigned long tests OK![LF]
 All curl_mprintf() signed long tests OK![LF]
 All curl_mprintf() curl_off_t tests OK![LF]
 All curl_mprintf() strings tests OK![LF]
 All float strings tests OK![LF]
 All curl_mprintf() octal and hexadecimal tests OK![LF]
 testing a string and -443 is super fun and 9876543[LF]
 All v-functions test OK![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind557 ./libtest/libtests lib557 - > log/1/stdout557 2> log/1/stderr557
=== End of file commands.log
=== Start of file server.cmd
 Testnum 557
=== End of file server.cmd
=== Start of file valgrind557
 ==110473== 
 ==110473== Process terminating with default action of signal 4 (SIGILL)
 ==110473==  Illegal opcode at address 0x51CC63F
 ==110473==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110473==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110473==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110473==    by 0x40041AF: main (first.c:264)
=== End of file valgrind557
test 0566 [HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:38895/566 log/24/ip566 > log/24/stdout566 2> log/24/stderr566

 566: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 566
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:38895/566 log/24/ip566 > log/24/stdout566 2> log/24/stderr566
=== End of file commands.log
=== Start of file http_server.log
 19:26:58.660047 ====> Client connect
 19:26:58.660081 accept_connection 3 returned 4
 19:26:58.660101 Read 93 bytes
 19:26:58.660110 Process 93 bytes request
 19:26:58.660123 Got request: GET /verifiedserver HTTP/1.1
 19:26:58.660131 Are-we-friendly question received
 19:26:58.660156 Wrote request (93 bytes) input to log/24/server.input
 19:26:58.660171 Identifying ourselves as friends
 19:26:58.660227 Response sent (56 bytes) and written to log/24/server.response
 19:26:58.660236 special request received, no persistency
 19:26:58.660245 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 34986 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 566
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind566
 ==111072== 
 ==111072== Process terminating with default action of signal 4 (SIGILL)
 ==111072==  Illegal opcode at address 0x51CC63F
 ==111072==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111072==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111072==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111072==    by 0x40041AF: main (first.c:264)
=== End of file valgrind566
test 0545 [HTTP POST binary with embedded NUL byte and no null-terminator]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:35989/545 > log/22/stdout545 2> log/22/stderr545

 545: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 545
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:35989/545 > log/22/stdout545 2> log/22/stderr545
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.740777 ====> Client connect
 19:26:57.740823 accept_connection 3 returned 4
 19:26:57.741040 Read 93 bytes
 19:26:57.741058 Process 93 bytes request
 19:26:57.741073 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.741082 Are-we-friendly question received
 19:26:57.741120 Wrote request (93 bytes) input to log/22/server.input
 19:26:57.741137 Identifying ourselves as friends
 19:26:57.741204 Response sent (56 bytes) and written to log/22/server.response
 19:26:57.741213 special request received, no persistency
 19:26:57.741222 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 52992 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 545
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind545
 ==110017== 
 ==110017== Process terminating with default action of signal 4 (SIGILL)
 ==110017==  Illegal opcode at address 0x51CC63F
 ==110017==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110017==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110017==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110017==    by 0x40041AF: main (first.c:264)
=== End of file valgrind545
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:43739/559 > log/18/stdout559 2> log/18/stderr559
test 0549 [FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:46497 > log/19/stdout549 2> log/19/stderr549

 549: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:27:00.220578264 +0000
+++ log/19/check-generated	2026-10-15 19:27:00.216068314 +0000
@@ -1 +0,0 @@
-hello[LF]
== Contents of files in the log/19/ directory after test 549
=== Start of file check-expected
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:46497 > log/19/stdout549 2> log/19/stderr549
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.876020 ====> Client connect
 19:26:57.876061 accept_connection 3 returned 4
 19:26:57.876090 Read 93 bytes
 19:26:57.876104 Process 93 bytes request
 19:26:57.876118 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.876127 Are-we-friendly question received
 19:26:57.876159 Wrote request (93 bytes) input to log/19/server.input
 19:26:57.876179 Identifying ourselves as friends
 19:26:57.876249 Response sent (56 bytes) and written to log/19/server.response
 19:26:57.876260 special request received, no persistency
 19:26:57.876268 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 50044 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 549
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind549
 ==110257== 
 ==110257== Process terminating with default action of signal 4 (SIGILL)
 ==110257==  Illegal opcode at address 0x51CC63F
 ==110257==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110257==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110257==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110257==    by 0x40041AF: main (first.c:264)
=== End of file valgrind549
test 0559 [use tiny CURLOPT_BUFFERSIZE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:43739/559 > log/18/stdout559 2> log/18/stderr559

 559: data FAILED:
--- log/18/check-expected	2026-10-15 19:27:00.376308972 +0000
+++ log/18/check-generated	2026-10-15 19:27:00.376191286 +0000
@@ -1,12 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[LF]
-ETag: "21025-dc7-39462498"[LF]
-Accept-Ranges: bytes[LF]
-Content-Length: 2049[LF]
-Connection: close[LF]
-Content-Type: text/html[LF]
-Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF]
-[LF]
-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF]
== Contents of files in the log/18/ directory after test 559
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[LF]
 ETag: "21025-dc7-39462498"[LF]
 Accept-Ranges: bytes[LF]
 Content-Length: 2049[LF]
 Connection: close[LF]
 Content-Type: text/html[LF]
 Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF]
 [LF]
 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:43739/559 > log/18/stdout559 2> log/18/stderr559
=== End of file commands.log
=== Start of file http_server.log
 19:26:59.167600 ====> Client connect
 19:26:59.167640 accept_connection 3 returned 4
 19:26:59.167663 Read 93 bytes
 19:26:59.167672 Process 93 bytes request
 19:26:59.167687 Got request: GET /verifiedserver HTTP/1.1
 19:26:59.167696 Are-we-friendly question received
 19:26:59.167724 Wrote request (93 bytes) input to log/18/server.input
 19:26:59.167741 Identifying ourselves as friends
 19:26:59.167806 Response sent (56 bytes) and written to log/18/server.response
 19:26:59.167816 special request received, no persistency
 19:26:59.167824 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 58404 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 559
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind559
 ==110737== 
 ==110737== Process terminating with default action of signal 4 (SIGILL)
 ==110737==  Illegal opcode atCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:33897/554 > log/20/stdout554 2> log/20/stderr554
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:40913/565 > log/10/stdout565 2> log/10/stderr565
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 46137 > log/17/stdout562 2> log/17/stderr562
 address 0x51CC63F
 ==110737==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110737==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110737==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110737==    by 0x40041AF: main (first.c:264)
=== End of file valgrind559
test 0554 [HTTP multi-part formpost using read callback for the file part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:33897/554 > log/20/stdout554 2> log/20/stderr554

 554: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 554
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:33897/554 > log/20/stdout554 2> log/20/stderr554
=== End of file commands.log
=== Start of file http_server.log
 19:26:57.971912 ====> Client connect
 19:26:57.971951 accept_connection 3 returned 4
 19:26:57.974174 Read 93 bytes
 19:26:57.974201 Process 93 bytes request
 19:26:57.974220 Got request: GET /verifiedserver HTTP/1.1
 19:26:57.974229 Are-we-friendly question received
 19:26:57.974273 Wrote request (93 bytes) input to log/20/server.input
 19:26:57.974294 Identifying ourselves as friends
 19:26:57.974364 Response sent (56 bytes) and written to log/20/server.response
 19:26:57.974376 special request received, no persistency
 19:26:57.974385 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 45514 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 554
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind554
 ==110463== 
 ==110463== Process terminating with default action of signal 4 (SIGILL)
 ==110463==  Illegal opcode at address 0x51CC63F
 ==110463==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110463==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110463==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110463==    by 0x40041AF: main (first.c:264)
=== End of file valgrind554
test 0565 [HTTP POST using read callback, chunked transfer-encoding and Digest]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:40913/565 > log/10/stdout565 2> log/10/stderr565

 565: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 565
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:40913/565 > log/10/stdout565 2> log/10/stderr565
=== End of file commands.log
=== Start of file http_server.log
 19:26:58.300881 ====> Client connect
 19:26:58.300917 accept_connection 3 returned 4
 19:26:58.300939 Read 93 bytes
 19:26:58.300949 Process 93 bytes request
 19:26:58.300962 Got request: GET /verifiedserver HTTP/1.1
 19:26:58.300971 Are-we-friendly question received
 19:26:58.300999 Wrote request (93 bytes) input to log/10/server.input
 19:26:58.301015 Identifying ourselves as friends
 19:26:58.301082 Response sent (56 bytes) and written to log/10/server.response
 19:26:58.301091 special request received, no persistency
 19:26:58.301100 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 47092 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 565
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind565
 ==110858== 
 ==110858== Process terminating with default action of signal 4 (SIGILL)
 ==110858==  Illegal opcode at address 0x51CC63F
 ==110858==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110858==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110858==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110858==    by 0x40041AF: main (first.c:264)
=== End of file valgrind565
test 0562 [FTP a type=A URL and CURLOPT_PORT set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 46137 > log/17/stdout562 2> log/17/stderr562

 562: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 562
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 46137 > log/17/stdout562 2> log/17/stderr562
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:58.589954 ====> Client connect
 19:26:58.590198 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:58.590817 < "USER anonymous"
 19:26:58.590865 > "331 We are happy you popped in![CR][LF]"
 19:26:58.591076 < "PASS ftp@example.com"
 19:26:58.591120 > "230 Welcome you silly person[CR][LF]"
 19:26:58.591307 < "PWD"
 19:26:58.591348 > "257 "/" is current directory[CR][LF]"
 19:26:58.591529 < "EPSV"
 19:26:58.591559 ====> Passive DATA channel requested by client
 19:26:58.591575 DATA sockfilt for passive data channel starting...
 19:26:58.598954 DATA sockfilt for passive data channel started (pid 110715)
 19:26:58.599124 DATA sockfilt for passive data channel listens on port 34193
 19:26:58.599189 > "229 Entering Passive Mode (|||34193|)[CR][LF]"
 19:26:58.599218 Client has been notified that upcoming DATA connection is awaited on port 34193
 19:26:58.599557 Client connects to port 34193
 19:26:58.599591 ====> Client established passive DATA connection on port 34193
 19:26:58.599707 < "TYPE I"
 19:26:58.599753 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:58.599961 < "SIZE verifiedserver"
 19:26:58.600012 > "213 17[CR][LF]"
 19:26:58.600203 < "RETR verifiedserver"
 19:26:58.600245 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:58.600351 =====> Closing passive DATA connection...
 19:26:58.600375 Server disconnects passive DATA connection
 19:26:58.600638 Server disconnected passive DATA connection
 19:26:58.600672 DATA sockfilt for passive data channeCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 37735 > log/11/stdout563 2> log/11/stderr563
l quits (pid 110715)
 19:26:58.600980 DATA sockfilt for passive data channel quit (pid 110715)
 19:26:58.601008 =====> Closed passive DATA connection
 19:26:58.601040 > "226 File transfer complete[CR][LF]"
 19:26:58.656801 < "QUIT"
 19:26:58.656860 > "221 bye bye baby[CR][LF]"
 19:26:58.659753 MAIN sockfilt said DISC
 19:26:58.659806 ====> Client disconnected
 19:26:58.659899 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:58.198627 ====> Client connect
 19:26:58.199031 Received DATA (on stdin)
 19:26:58.199050 > 146 bytes data, server => client
 19:26:58.199062 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:58.199072 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:58.199081 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:58.199446 < 16 bytes data, client => server
 19:26:58.199463 'USER anonymous\r\n'
 19:26:58.199680 Received DATA (on stdin)
 19:26:58.199691 > 33 bytes data, server => client
 19:26:58.199702 '331 We are happy you popped in!\r\n'
 19:26:58.199766 < 22 bytes data, client => server
 19:26:58.199781 'PASS ftp@example.com\r\n'
 19:26:58.199935 Received DATA (on stdin)
 19:26:58.199947 > 30 bytes data, server => client
 19:26:58.199957 '230 Welcome you silly person\r\n'
 19:26:58.200017 < 5 bytes data, client => server
 19:26:58.200028 'PWD\r\n'
 19:26:58.200158 Received DATA (on stdin)
 19:26:58.200170 > 30 bytes data, server => client
 19:26:58.200180 '257 "/" is current directory\r\n'
 19:26:58.200249 < 6 bytes data, client => server
 19:26:58.200260 'EPSV\r\n'
 19:26:58.208045 Received DATA (on stdin)
 19:26:58.208063 > 39 bytes data, server => client
 19:26:58.208074 '229 Entering Passive Mode (|||34193|)\r\n'
 19:26:58.208273 < 8 bytes data, client => server
 19:26:58.208292 'TYPE I\r\n'
 19:26:58.208571 Received DATA (on stdin)
 19:26:58.208585 > 33 bytes data, server => client
 19:26:58.208596 '200 I modify TYPE as you wanted\r\n'
 19:26:58.208664 < 21 bytes data, client => server
 19:26:58.208678 'SIZE verifiedserver\r\n'
 19:26:58.208830 Received DATA (on stdin)
 19:26:58.208843 > 8 bytes data, server => client
 19:26:58.208853 '213 17\r\n'
 19:26:58.208913 < 21 bytes data, client => server
 19:26:58.208927 'RETR verifiedserver\r\n'
 19:26:58.209192 Received DATA (on stdin)
 19:26:58.209205 > 29 bytes data, server => client
 19:26:58.209215 '150 Binary junk (17 bytes).\r\n'
 19:26:58.209856 Received DATA (on stdin)
 19:26:58.209868 > 28 bytes data, server => client
 19:26:58.209878 '226 File transfer complete\r\n'
 19:26:58.265178 < 6 bytes data, client => server
 19:26:58.265210 'QUIT\r\n'
 19:26:58.265693 Received DATA (on stdin)
 19:26:58.265709 > 18 bytes data, server => client
 19:26:58.265718 '221 bye bye baby\r\n'
 19:26:58.268507 ====> Client disconnect
 19:26:58.268732 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:58.205675 Running IPv4 version
 19:26:58.205780 Listening on port 34193
 19:26:58.205825 Wrote pid 110715 to log/17/server/ftp_sockdata.pid
 19:26:58.207684 Received PING (on stdin)
 19:26:58.207821 Received PORT (on stdin)
 19:26:58.208317 ====> Client connect
 19:26:58.209247 Received DATA (on stdin)
 19:26:58.209261 > 17 bytes data, server => client
 19:26:58.209273 'WE ROOLZ: 84749\r\n'
 19:26:58.209301 Received DISC (on stdin)
 19:26:58.209316 ====> Client forcibly disconnected
 19:26:58.209499 Received QUIT (on stdin)
 19:26:58.209512 quits
 19:26:58.209579 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 562
=== End of file server.cmd
=== Start of file valgrind562
 ==110832== 
 ==110832== Process terminating with default action of signal 4 (SIGILL)
 ==110832==  Illegal opcode at address 0x51CC63F
 ==110832==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110832==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110832==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110832==    by 0x40041AF: main (first.c:264)
=== End of file valgrind562
setenv ftp_proxy = http://127.0.0.1:40989/
test 0563 [FTP type=A URL and CURLOPT_PORT set and proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 37735 > log/11/stdout563 2> log/11/stderr563

 563: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 563
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 37735 > log/11/stdout563 2> log/11/stderr563
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:58.752150 ====> Client connect
 19:26:58.752358 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:58.752662 < "USER anonymous"
 19:26:58.752705 > "331 We are happy you popped in![CR][LF]"
 19:26:58.752858 < "PASS ftp@example.com"
 19:26:58.752881 > "230 Welcome you silly person[CR][LF]"
 19:26:58.753019 < "PWD"
 19:26:58.753047 > "257 "/" is current directory[CR][LF]"
 19:26:58.753196 < "EPSV"
 19:26:58.753219 ====> Passive DATA channel requested by client
 19:26:58.753232 DATA sockfilt for passive data channel starting...
 19:26:58.760719 DATA sockfilt for passive data channel started (pid 110897)
 19:26:58.760864 DATA sockfilt for passive data channel listens on port 41227
 19:26:58.760910 > "229 Entering Passive Mode (|||41227|)[CR][LF]"
 19:26:58.760929 Client has been notified that upcoming DATA connection is awaited on port 41227
 19:26:58.762654 Client connects to port 41227
 19:26:58.762698 ====> Client established passive DATA connection on port 41227
 19:26:58.762818 < "TYPE I"
 19:26:58.762864 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:58.765313 < "SIZE verifiedserver"
 19:26:58.765383 > "213 17[CR][LF]"
 19:26:58.765572 < "RETR verifiedserver"
 19:26:58.765613 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:58.765727 =====> Closing passive DATA connection...
 19:26:58.765747 Server disconnects passive DATA connection
 19:26:58.769369 Server disconnected passive DATA connection
 19:26:58.769430 DATA sockfilt for passive data channel quits (pid 110897)
 19:26:58.769749 DATA sockfilt for passive data channel quit (pid 110897)
 19:26:58.769773 =====> Closed passive DATA connection
 19:26:58.769810 > "226 File transfer complete[CR][LF]"
 19:26:58.815955 < "QUIT"
 19:26:58.816018 > "221 bye bye baby[CR][LF]"
 19:26:58.817288 MAIN sockfilt said DISC
 19:26:58.817327 ====> Client disconnected
 19:26:58.817422 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:58.360859 ====> Client connect
 19:26:58.361216 Received DATA (on stdin)
 19:26:58.361231 > 146 bytes data, server => client
 19:26:58.361241 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:58.361249 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:58.361258 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:58.361350 < 16 bytes data, client => server
 19:26:58.361368 'USER anonymous\r\n'
 19:26:58.361552 Received DATA (on stdin)
 19:26:58.361562 > 33 bytes data, server => client
 19:26:58.361572 '331 We are happy you popped in!\r\n'
 19:26:58.361620 < 22 bytes data, client => server
 19:26:58.361631 'PASS ftp@example.com\r\n'
 19:26:58.361721 Received DATA (on stdin)
 19:26:58.361730 > 30 bytes data, server => client
 19:26:58.361739 '230 Welcome you silly person\r\n'
 19:26:58.361786 < 5 bytes data, client => server
 19:26:58.361795 'PWD\r\n'
 19:26:58.361887 Received DATA (on stdin)
 19:26:58.361896 > 30 bytes data, server => client
 19:26:58.361905 '257 "/" is current directory\r\n'
 19:26:58.361963 < 6 bytes data, CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:37089/573 > log/5/stdout573 2> log/5/stderr573
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:35787/fully_simulated/UNIX/*.txt > log/21/stdout574 2> log/21/stderr574
client => server
 19:26:58.361972 'EPSV\r\n'
 19:26:58.369785 Received DATA (on stdin)
 19:26:58.369803 > 39 bytes data, server => client
 19:26:58.369813 '229 Entering Passive Mode (|||41227|)\r\n'
 19:26:58.370002 < 8 bytes data, client => server
 19:26:58.370016 'TYPE I\r\n'
 19:26:58.373447 Received DATA (on stdin)
 19:26:58.373474 > 33 bytes data, server => client
 19:26:58.373486 '200 I modify TYPE as you wanted\r\n'
 19:26:58.374034 < 21 bytes data, client => server
 19:26:58.374052 'SIZE verifiedserver\r\n'
 19:26:58.374236 Received DATA (on stdin)
 19:26:58.374249 > 8 bytes data, server => client
 19:26:58.374259 '213 17\r\n'
 19:26:58.374321 < 21 bytes data, client => server
 19:26:58.374335 'RETR verifiedserver\r\n'
 19:26:58.377506 Received DATA (on stdin)
 19:26:58.377542 > 29 bytes data, server => client
 19:26:58.377554 '150 Binary junk (17 bytes).\r\n'
 19:26:58.378664 Received DATA (on stdin)
 19:26:58.378677 > 28 bytes data, server => client
 19:26:58.378685 '226 File transfer complete\r\n'
 19:26:58.424615 < 6 bytes data, client => server
 19:26:58.424641 'QUIT\r\n'
 19:26:58.424887 Received DATA (on stdin)
 19:26:58.424900 > 18 bytes data, server => client
 19:26:58.424910 '221 bye bye baby\r\n'
 19:26:58.426089 ====> Client disconnect
 19:26:58.426290 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:58.368742 Running IPv4 version
 19:26:58.368838 Listening on port 41227
 19:26:58.368882 Wrote pid 110897 to log/11/server/ftp_sockdata.pid
 19:26:58.369477 Received PING (on stdin)
 19:26:58.369609 Received PORT (on stdin)
 19:26:58.370020 ====> Client connect
 19:26:58.377610 Received DATA (on stdin)
 19:26:58.377633 > 17 bytes data, server => client
 19:26:58.377645 'WE ROOLZ: 84823\r\n'
 19:26:58.377680 Received DISC (on stdin)
 19:26:58.377693 ====> Client forcibly disconnected
 19:26:58.378293 Received QUIT (on stdin)
 19:26:58.378305 quits
 19:26:58.378388 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:26:58.267572 ====> Client connect
 19:26:58.267621 accept_connection 3 returned 4
 19:26:58.267652 Read 93 bytes
 19:26:58.267664 Process 93 bytes request
 19:26:58.267677 Got request: GET /verifiedserver HTTP/1.1
 19:26:58.267687 Are-we-friendly question received
 19:26:58.267716 Wrote request (93 bytes) input to log/11/server.input
 19:26:58.267741 Identifying ourselves as friends
 19:26:58.267838 Response sent (56 bytes) and written to log/11/server.response
 19:26:58.267851 special request received, no persistency
 19:26:58.267859 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 35134 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 563
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind563
 ==110977== 
 ==110977== Process terminating with default action of signal 4 (SIGILL)
 ==110977==  Illegal opcode at address 0x51CC63F
 ==110977==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==110977==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==110977==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==110977==    by 0x40041AF: main (first.c:264)
=== End of file valgrind563
test 0573 [verify connect time with multi interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:37089/573 > log/5/stdout573 2> log/5/stderr573

 573: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 573
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:37089/573 > log/5/stdout573 2> log/5/stderr573
=== End of file commands.log
=== Start of file http_server.log
 19:26:59.461117 ====> Client connect
 19:26:59.461160 accept_connection 3 returned 4
 19:26:59.461186 Read 93 bytes
 19:26:59.461198 Process 93 bytes request
 19:26:59.461212 Got request: GET /verifiedserver HTTP/1.1
 19:26:59.461221 Are-we-friendly question received
 19:26:59.461254 Wrote request (93 bytes) input to log/5/server.input
 19:26:59.461273 Identifying ourselves as friends
 19:26:59.461361 Response sent (56 bytes) and written to log/5/server.response
 19:26:59.461374 special request received, no persistency
 19:26:59.461383 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 33636 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 573
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind573
 ==111225== 
 ==111225== Process terminating with default action of signal 4 (SIGILL)
 ==111225==  Illegal opcode at address 0x51CC63F
 ==111225==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111225==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111225==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111225==    by 0x40041AF: main (first.c:264)
=== End of file valgrind573
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:44883/path/564 127.0.0.1:37225 > log/15/stdout564 2> log/15/stderr564
test 0574 [FTP wildcard download - changed fnmatch, 2x perform (Unix LIST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:35787/fully_simulated/UNIX/*.txt > log/21/stdout574 2> log/21/stderr574

 574: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:27:01.246793161 +0000
+++ log/21/check-generated	2026-10-15 19:27:01.242159422 +0000
@@ -1,10 +0,0 @@
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
== Contents of files in the log/21/ directory after test 574
=== Start of file check-expected
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:35787/fully_simulated/UNIX/*.txt > log/21/stdout574 2> log/21/stderr574
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:59.934465 ====> Client connect
 19:26:59.934758 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:59.934988 < "USER anonymous"
 19:26:59.935033 > "331 We are happy you popped in![CR][LF]"
 19:26:59.935202 < "PASS ftp@example.com"
 19:26:59.935228 > "230 Welcome you silly person[CR][LF]"
 19:26:59.935398 < "PWD"
 19:26:59.935428 > "257 "/" is current directory[CR][LF]"
 19:26:59.935578 < "EPSV"
 19:26:59.935601 ====> Passive DATA channel requested by client
 19:26:59.935614 DATA sockfilt for passive data channel starting...
 19:26:59.952069 DATA sockfilt for passive data channel started (pid 111259)
 19:26:59.952277 DATA sockfilt for passive data channel listens on port 38627
 19:26:59.952331 > "229 Entering Passive Mode (|||38627|)[CR][LF]"
 19:26:59.952349 Client has been notified that upcoming DATA connection is awaited on port 38627
 19:26:59.952677 Client connects to port 38627
 19:26:59.952709 ====> Client established passive DATA connection on port 38627
 19:26:59.952803 < "TYPE I"
 19:26:59.952836 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:59.953004 < "SIZE verifiedserver"
 19:26:59.953044 > "213 17[CR][LF]"
 19:26:59.953203 < "RETR verifiedserver"
 19:26:59.953240 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:59.953340 =====> Closing passive DATA connection...
 19:26:59.953359 Server disconnects passive DATA connection
 19:26:59.953607 Server disconnected passive DATA connection
 19:26:59.953637 DATA sockfilt for passive data channel quits (pid 111259)
 19:26:59.953919 DATA sockfilt for passive data channel quit (pid 111259)
 19:26:59.953946 =====> Closed passive DATA connection
 19:26:59.953975 > "226 File transfer complete[CR][LF]"
 19:26:59.999201 < "QUIT"
 19:26:59.999257 > "221 bye bye baby[CR][LF]"
 19:27:00.000486 MAIN sockfilt said DISC
 19:27:00.000522 ====> Client disconnected
 19:27:00.000597 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:59.543461 ====> Client connect
 19:26:59.543725 Received DATA (on stdin)
 19:26:59.543744 > 146 bytes data, server => client
 19:26:59.543764 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:59.543775 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:59.543784 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:59.543936 < 16 bytes data, client => server
 19:26:59.543951 'USER anonymous\r\n'
 19:26:59.544129 Received DATA (on stdin)
 19:26:59.544140 > 33 bytes data, server => client
 19:26:59.544150 '331 We are happy you popped in!\r\n'
 19:26:59.544196 < 22 bytes data, client => server
 19:26:59.544207 'PASS ftp@example.com\r\n'
 19:26:59.544320 Received DATA (on stdin)
 19:26:59.544330 > 30 bytes data, server => client
 19:26:59.544340 '230 Welcome you silly person\r\n'
 19:26:59.544387 < 5 bytes data, client => server
 19:26:59.544420 'PWD\r\n'
 19:26:59.544520 Received DATA (on stdin)
 19:26:59.544530 > 30 bytes data, server => client
 19:26:59.544539 '257 "/" is current directory\r\n'
 19:26:59.544594 < 6 bytes data, client => server
 19:26:59.544604 'EPSV\r\n'
 19:26:59.561458 Received DATA (on stdin)
 19:26:59.561476 > 39 bytes data, server => client
 19:26:59.561486 '229 Entering Passive Mode (|||38627|)\r\n'
 19:26:59.561690 < 8 bytes data, client => server
 19:26:59.561705 'TYPE I\r\n'
 19:26:59.561934 Received DATA (on stdin)
 19:26:59.561945 > 33 bytes data, server => client
 19:26:59.561955 '200 I modify TYPE as you wanted\r\n'
 19:26:59.562010 < 21 bytes data, client => server
 19:26:59.562022 'SIZE verifiedserver\r\n'
 19:26:59.562141 Received DATA (on stdin)
 19:26:59.562152 > 8 bytes data, server => client
 19:26:59.562162 '213 17\r\n'
 19:26:59.562210 < 21 bytes data, client => server
 19:26:59.562220 'RETR verifiedserver\r\n'
 19:26:59.562458 Received DATA (on stdin)
 19:26:59.562470 > 29 bytes data, server => client
 19:26:59.562480 '150 Binary junk (17 bytes).\r\n'
 19:26:59.563074 Received DATA (on stdin)
 19:26:59.563086 > 28 bytes data, server => client
 19:26:59.563096 '226 File transfer complete\r\n'
 19:26:59.608130 < 6 bytes data, client => server
 19:26:59.608155 'QUIT\r\n'
 19:26:59.608368 Received DATA (on stdin)
 19:26:59.608380 > 18 bytes data, server => client
 19:26:59.608390 '221 bye bye baby\r\n'
 19:26:59.609540 ====> Client disconnect
 19:26:59.609705 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:59.552051 Running IPv4 version
 19:26:59.552145 Listening on port 38627
 19:26:59.552191 Wrote pid 111259 to log/21/server/ftp_sockdata.pid
 19:26:59.557797 Received PING (on stdin)
 19:26:59.561254 Received PORT (on stdin)
 19:26:59.561728 ====> Client connect
 19:26:59.562539 Received DATA (on stdin)
 19:26:59.562554 > 17 bytes data, server => client
 19:26:59.562567 'WE ROOLZ: 84694\r\n'
 19:26:59.562594 Received DISC (on stdin)
 19:26:59.562604 ====> Client forcibly disconnected
 19:26:59.562743 Received QUIT (on stdin)
 19:26:59.562754 quits
 19:26:59.562826 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 574
=== End of file server.cmd
=== Start of file valgrind574
 ==111304== 
 ==111304== Process terminating with default action of signal 4 (SIGILL)
 ==111304==  Illegal opcode at address 0x51CC63F
 ==111304==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111304==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111304==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111304==    by 0x40041AF: main (first.c:264)
=== End of file valgrind574
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:40031/fully_simulated/UNIX/* > log/16/stdout575 2> log/16/stderr575
startnew: ./server/servers socksd --port 0 --pidfile log/15/server/socks_server.pid --portfile log/15/server/socks_server.port --reqfile log/15/socksd-request.log --logfile log/15/socks_server.log --backend 127.0.0.1 --config log/15/server.cmd
RUN: SOCKS server is now running PID 110886
* pid socks => 110886 110886
test 0564 [FTP RETR a file over a SOCKS proxy using the multi interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:44883/path/564 127.0.0.1:37225 > log/15/stdout564 2> log/15/stderr564

 564: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:27:01.262327940 +0000
+++ log/15/check-generated	2026-10-15 19:27:01.261148956 +0000
@@ -1,6 +0,0 @@
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
== Contents of files in the log/15/ directory after test 564
=== Start of file check-expected
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:44883/path/564 127.0.0.1:37225 > log/15/stdout564 2> log/15/stderr564
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:58.682165 ====> Client connect
 19:26:58.682405 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:58.682725 < "USER anonymous"
 19:26:58.682759 > "331 We are happy you popped in![CR][LF]"
 19:26:58.682919 < "PASS ftp@example.com"
 19:26:58.682946 > "230 Welcome you silly person[CR][LF]"
 19:26:58.683085 < "PWD"
 19:26:58.683114 > "257 "/" is current directory[CR][LF]"
 19:26:58.683266 < "EPSV"
 19:26:58.683288 ====> Passive DATA channel requested by client
 19:26:58.683301 DATA sockfilt for passive data channel starting...
 19:26:58.688541 DATA sockfilt for passive data channel started (pid 110819)
 19:26:58.688654 DATA sockfilt for passive data channel listens on port 43583
 19:26:58.688715 > "229 Entering Passive Mode (|||43583|)[CR][LF]"
 19:26:58.688733 Client has been notified that upcoming DATA connection is awaited on port 43583
 19:26:58.689000 Client connects to port 43583
 19:26:58.689026 ====> Client established passive DATA connection on port 43583
 19:26:58.689099 < "TYPE I"
 19:26:58.689126 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:58.689263 < "SIZE verifiedserver"
 19:26:58.689295 > "213 17[CR][LF]"
 19:26:58.689421 < "RETR verifiedserver"
 19:26:58.689448 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:58.689526 =====> Closing passive DATA connection...
 19:26:58.689541 Server disconnects passive DATA connection
 19:26:58.689746 Server disconnected passive DATA connection
 19:26:58.689768 DATA sockfilt for passive data channel quits (pid 110819)
 19:26:58.689955 DATA sockfilt for passive data channel quit (pid 110819)
 19:26:58.689976 =====> Closed passive DATA connection
 19:26:58.689999 > "226 File transfer complete[CR][LF]"
 19:26:58.739528 < "QUIT"
 19:26:58.739599 > "221 bye bye baby[CR][LF]"
 19:26:58.741171 MAIN sockfilt said DISC
 19:26:58.741212 ====> Client disconnected
 19:26:58.741301 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:58.290845 ====> Client connect
 19:26:58.291246 Received DATA (on stdin)
 19:26:58.291260 > 146 bytes data, server => client
 19:26:58.291271 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:58.291281 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:58.291289 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:58.291413 < 16 bytes data, client => server
 19:26:58.291424 'USER anonymous\r\n'
 19:26:58.291588 Received DATA (on stdin)
 19:26:58.291599 > 33 bytes data, server => client
 19:26:58.291610 '331 We are happy you popped in!\r\n'
 19:26:58.291661 < 22 bytes data, client => server
 19:26:58.291672 'PASS ftp@example.com\r\n'
 19:26:58.291771 Received DATA (on stdin)
 19:26:58.291781 > 30 bytes data, server => client
 19:26:58.291791 '230 Welcome you silly person\r\n'
 19:26:58.291836 < 5 bytes data, client => server
 19:26:58.291845 'PWD\r\n'
 19:26:58.291939 Received DATA (on stdin)
 19:26:58.291949 > 30 bytes data, server => client
 19:26:58.291958 '257 "/" is current directory\r\n'
 19:26:58.292010 < 6 bytes data, client => server
 19:26:58.292019 'EPSV\r\n'
 19:26:58.297566 Received DATA (on stdin)
 19:26:58.297580 > 39 bytes data, server => client
 19:26:58.297589 '229 Entering Passive Mode (|||43583|)\r\n'
 19:26:58.297755 < 8 bytes data, client => server
 19:26:58.297767 'TYPE I\r\n'
 19:26:58.297953 Received DATA (on stdin)
 19:26:58.297963 > 33 bytes data, server => client
 19:26:58.297972 '200 I modify TYPE as you wanted\r\n'
 19:26:58.298019 < 21 bytes data, client => server
 19:26:58.298028 'SIZE verifiedserver\r\n'
 19:26:58.298121 Received DATA (on stdin)
 19:26:58.298130 > 8 bytes data, server => client
 19:26:58.298138 '213 17\r\n'
 19:26:58.298180 < 21 bytes data, client => server
 19:26:58.298189 'RETR verifiedserver\r\n'
 19:26:58.298369 Received DATA (on stdin)
 19:26:58.298378 > 29 bytes data, server => client
 19:26:58.298387 '150 Binary junk (17 bytes).\r\n'
 19:26:58.298827 Received DATA (on stdin)
 19:26:58.298838 > 28 bytes data, server => client
 19:26:58.298847 '226 File transfer complete\r\n'
 19:26:58.347644 < 6 bytes data, client => server
 19:26:58.347679 'QUIT\r\n'
 19:26:58.348455 Received DATA (on stdin)
 19:26:58.348469 > 18 bytes data, server => client
 19:26:58.348480 '221 bye bye baby\r\n'
 19:26:58.349710 ====> Client disconnect
 19:26:58.350148 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:58.297044 Running IPv4 version
 19:26:58.297115 Listening on port 43583
 19:26:58.297159 Wrote pid 110819 to log/15/server/ftp_sockdata.pid
 19:26:58.297314 Received PING (on stdin)
 19:26:58.297395 Received PORT (on stdin)
 19:26:58.297786 ====> Client connect
 19:26:58.298436 Received DATA (on stdin)
 19:26:58.298447 > 17 bytes data, server => client
 19:26:58.298456 'WE ROOLZ: 84744\r\n'
 19:26:58.298479 Received DISC (on stdin)
 19:26:58.298488 ====> Client forcibly disconnected
 19:26:58.298601 Received QUIT (on stdin)
 19:26:58.298609 quits
 19:26:58.298659 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 564
=== End of file server.cmd
=== Start of file socks_server.log
 19:26:58.358991 Running IPv4 version
 19:26:58.359088 Listening on port 37225
 19:26:58.359129 Wrote pid 110886 to log/15/server/socks_server.pid
 19:26:58.359165 Wrote port 37225 to log/15/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind564
 ==111147== 
 ==111147== Process terminating with default action of signal 4 (SIGILL)
 ==111147==  Illegal opcode at address 0x51CC63F
 ==111147==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111147==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111147==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111147==    by 0x40041AF: main (first.c:264)
=== End of file valgrind564
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:38815/580 > log/1/stdout580 2> log/1/stderr580
test 0575 [FTP wildcard download - dup_handle and multi interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:40031/fully_simulated/UNIX/* > log/16/stdout575 2> log/16/stderr575

 575: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:27:01.282928840 +0000
+++ log/16/check-generated	2026-10-15 19:27:01.278818376 +0000
@@ -1,15 +0,0 @@
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
== Contents of files in the log/16/ directory after test 575
=== Start of file check-expected
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:40031/fully_simulated/UNIX/* > log/16/stdout575 2> log/16/stderr575
=== End of file commands.log
=== Start of file ftp_server.log
 19:26:59.926554 ====> Client connect
 19:26:59.926789 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:26:59.928902 < "USER anonymous"
 19:26:59.928946 > "331 We are happy you popped in![CR][LF]"
 19:26:59.929134 < "PASS ftp@example.com"
 19:26:59.929169 > "230 Welcome you silly person[CR][LF]"
 19:26:59.929364 < "PWD"
 19:26:59.929403 > "257 "/" is current directory[CR][LF]"
 19:26:59.929604 < "EPSV"
 19:26:59.929635 ====> Passive DATA channel requested by client
 19:26:59.929651 DATA sockfilt for passive data channel starting...
 19:26:59.933370 DATA sockfilt for passive data channel started (pid 111255)
 19:26:59.933491 DATA sockfilt for passive data channel listens on port 33951
 19:26:59.933537 > "229 Entering Passive Mode (|||33951|)[CR][LF]"
 19:26:59.933556 Client has been notified that upcoming DATA connection is awaited on port 33951
 19:26:59.934134 Client connects to port 33951
 19:26:59.934167 ====> Client established passive DATA connection on port 33951
 19:26:59.934257 < "TYPE I"
 19:26:59.934288 > "200 I modify TYPE as you wanted[CR][LF]"
 19:26:59.934466 < "SIZE verifiedserver"
 19:26:59.934509 > "213 17[CR][LF]"
 19:26:59.938756 < "RETR verifiedserver"
 19:26:59.938807 > "150 Binary junk (17 bytes).[CR][LF]"
 19:26:59.938908 =====> Closing passive DATA connection...
 19:26:59.938926 Server disconnects passive DATA connection
 19:26:59.939205 Server disconnected passive DATA connection
 19:26:59.939237 DATA sockfilt for passive data channel quits (pid 111255)
 19:26:59.939506 DATA sockfilt for passive data channel quit (pid 111255)
 19:26:59.939532 =====> Closed passive DATA connection
 19:26:59.939566 > "226 File transfer complete[CR][LF]"
 19:26:59.992177 < "QUIT"
 19:26:59.992232 > "221 bye bye baby[CR][LF]"
 19:26:59.993417 MAIN sockfilt said DISC
 19:26:59.993462 ====> Client disconnected
 19:26:59.993543 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:59.535529 ====> Client connect
 19:26:59.535902 Received DATA (on stdin)
 19:26:59.535919 > 146 bytes data, server => client
 19:26:59.535930 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:59.535940 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:59.535949 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:59.537821 < 16 bytes data, client => server
 19:26:59.537839 'USER anonymous\r\n'
 19:26:59.538046 Received DATA (on stdin)
 19:26:59.538059 > 33 bytes data, server => client
 19:26:59.538069 '331 We are happy you popped in!\r\n'
 19:26:59.538121 < 22 bytes data, client => server
 19:26:59.538135 'PASS ftp@example.com\r\n'
 19:26:59.538266 Received DATA (on stdin)
 19:26:59.538279 > 30 bytes data, server => client
 19:26:59.538290 '230 Welcome you silly person\r\n'
 19:26:59.538348 < 5 bytes data, client => server
 19:26:59.538363 'PWD\r\n'
 19:26:59.538501 Received DATA (on stdin)
 19:26:59.538514 > 30 bytes data, server => client
 19:26:59.538525 '257 "/" is current directory\r\n'
 19:26:59.538599 < 6 bytes data, client => server
 19:26:59.538614 'EPSV\r\n'
 19:26:59.542657 Received DATA (on stdin)
 19:26:59.542670 > 39 bytes data, server => client
 19:26:59.542680 '229 Entering Passive Mode (|||33951|)\r\n'
 19:26:59.543136 < 8 bytes data, client => server
 19:26:59.543153 'TYPE I\r\n'
 19:26:59.543383 Received DATA (on stdin)
 19:26:59.543395 > 33 bytes data, server => client
 19:26:59.543405 '200 I modify TYPE as you wanted\r\n'
 19:26:59.543464 < 21 bytes data, client => server
 19:26:59.543476 'SIZE verifiedserver\r\n'
 19:26:59.543604 Received DATA (on stdin)
 19:26:59.543615 > 8 bytes data, server => client
 19:26:59.543625 '213 17\r\n'
 19:26:59.543680 < 21 bytes data, client => server
 19:26:59.543693 'RETR verifiedserver\r\n'
 19:26:59.548029 Received DATA (on stdin)
 19:26:59.548045 > 29 bytes data, server => client
 19:26:59.548055 '150 Binary junk (17 bytes).\r\n'
 19:26:59.548665 Received DATA (on stdin)
 19:26:59.548679 > 28 bytes data, server => client
 19:26:59.548689 '226 File transfer complete\r\n'
 19:26:59.601113 < 6 bytes data, client => server
 19:26:59.601141 'QUIT\r\n'
 19:26:59.601342 Received DATA (on stdin)
 19:26:59.601353 > 18 bytes data, server => client
 19:26:59.601362 '221 bye bye baby\r\n'
 19:26:59.602461 ====> Client disconnect
 19:26:59.602661 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:26:59.542125 Running IPv4 version
 19:26:59.542204 Listening on port 33951
 19:26:59.542247 Wrote pid 111255 to log/16/server/ftp_sockdata.pid
 19:26:59.542402 Received PING (on stdin)
 19:26:59.542493 Received PORT (on stdin)
 19:26:59.543176 ====> Client connect
 19:26:59.548093 Received DATA (on stdin)
 19:26:59.548109 > 17 bytes data, server => client
 19:26:59.548119 'WE ROOLZ: 84702\r\n'
 19:26:59.548146 Received DISC (on stdin)
 19:26:59.548158 ====> Client forcibly disconnected
 19:26:59.548346 Received QUIT (on stdin)
 19:26:59.548358 quits
 19:26:59.548431 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 575
=== End of file server.cmd
=== Start of file valgrind575
 ==111291== 
 ==111291== Process terminating with default action of signal 4 (SIGILL)
 ==111291==  Illegal opcode at address 0x51CC63F
 ==111291==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111291==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111291==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111291==    by 0x40041AF: main (first.c:264)
=== End of file valgrind575
test 0580 [multi interface, multiple Location: headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --supprCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:46497/584 > log/19/stdout584 2> log/19/stderr584
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:33935/581 > log/6/stdout581 2> log/6/stderr581
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:43739/585 > log/18/stdout585 2> log/18/stderr585
essions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:38815/580 > log/1/stdout580 2> log/1/stderr580

 580: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 580
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:38815/580 > log/1/stdout580 2> log/1/stderr580
=== End of file commands.log
=== Start of file http_server.log
 19:27:00.767854 ====> Client connect
 19:27:00.767887 accept_connection 3 returned 4
 19:27:00.767908 Read 93 bytes
 19:27:00.767917 Process 93 bytes request
 19:27:00.767927 Got request: GET /verifiedserver HTTP/1.1
 19:27:00.767935 Are-we-friendly question received
 19:27:00.767959 Wrote request (93 bytes) input to log/1/server.input
 19:27:00.767975 Identifying ourselves as friends
 19:27:00.768051 Response sent (56 bytes) and written to log/1/server.response
 19:27:00.768062 special request received, no persistency
 19:27:00.768071 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 56976 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 580
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind580
 ==111543== 
 ==111543== Process terminating with default action of signal 4 (SIGILL)
 ==111543==  Illegal opcode at address 0x51CC63F
 ==111543==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111543==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111543==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111543==    by 0x40041AF: main (first.c:264)
=== End of file valgrind580
test 0584 [CURLOPT_MIMEPOST first set then set to NULL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:46497/584 > log/19/stdout584 2> log/19/stderr584

 584: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 584
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:46497/584 > log/19/stdout584 2> log/19/stderr584
=== End of file commands.log
=== Start of file http_server.log
 19:26:59.909597 ====> Client connect
 19:26:59.909631 accept_connection 3 returned 4
 19:26:59.909653 Read 93 bytes
 19:26:59.909662 Process 93 bytes request
 19:26:59.909674 Got request: GET /verifiedserver HTTP/1.1
 19:26:59.909682 Are-we-friendly question received
 19:26:59.909708 Wrote request (93 bytes) input to log/19/server.input
 19:26:59.909724 Identifying ourselves as friends
 19:26:59.909794 Response sent (56 bytes) and written to log/19/server.response
 19:26:59.909803 special request received, no persistency
 19:26:59.909811 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 50048 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 584
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind584
 ==111734== 
 ==111734== Process terminating with default action of signal 4 (SIGILL)
 ==111734==  Illegal opcode at address 0x51CC63F
 ==111734==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111734==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111734==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111734==    by 0x40041AF: main (first.c:264)
=== End of file valgrind584
test 0581 [multi interface, multiple Content-Type: headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:33935/581 > log/6/stdout581 2> log/6/stderr581

 581: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 581
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:33935/581 > log/6/stdout581 2> log/6/stderr581
=== End of file commands.log
=== Start of file http_server.log
 19:26:59.765049 ====> Client connect
 19:26:59.765091 accept_connection 3 returned 4
 19:26:59.765115 Read 93 bytes
 19:26:59.765127 Process 93 bytes request
 19:26:59.765140 Got request: GET /verifiedserver HTTP/1.1
 19:26:59.765149 Are-we-friendly question received
 19:26:59.765182 Wrote request (93 bytes) input to log/6/server.input
 19:26:59.765202 Identifying ourselves as friends
 19:26:59.765281 Response sent (56 bytes) and written to log/6/server.response
 19:26:59.765294 special request received, no persistency
 19:26:59.765304 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 41632 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 581
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind581
 ==111524== 
 ==111524== Process terminating with default action of signal 4 (SIGILL)
 ==111524==  Illegal opcode at address 0x51CC63F
 ==111524==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111524==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111524==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111524==    by 0x40041AF: main (first.c:264)
=== End of file valgrind581
test 0585 [socket open/close callbacks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:43739/585 > log/18/stdout585 2> log/18/stderr585

 585: protocol FAILED!
 There was no content at allCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:45467/579 log/14/ip579 > log/14/stdout579 2> log/14/stderr579
 in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 585
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:43739/585 > log/18/stdout585 2> log/18/stderr585
=== End of file commands.log
=== Start of file http_server.log
 19:27:01.105637 ====> Client connect
 19:27:01.105674 accept_connection 3 returned 4
 19:27:01.105698 Read 93 bytes
 19:27:01.105708 Process 93 bytes request
 19:27:01.105721 Got request: GET /verifiedserver HTTP/1.1
 19:27:01.105730 Are-we-friendly question received
 19:27:01.105759 Wrote request (93 bytes) input to log/18/server.input
 19:27:01.105776 Identifying ourselves as friends
 19:27:01.105845 Response sent (56 bytes) and written to log/18/server.response
 19:27:01.105856 special request received, no persistency
 19:27:01.105864 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 58408 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 585
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind585
 ==111873== 
 ==111873== Process terminating with default action of signal 4 (SIGILL)
 ==111873==  Illegal opcode at address 0x51CC63F
 ==111873==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111873==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111873==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111873==    by 0x40041AF: main (first.c:264)
=== End of file valgrind585
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:41879/fully_simulated/UNIX/* > log/8/stdout576 2> log/8/stderr576
test 0579 [small chunked HTTP POSTs with digest auth and progress callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:45467/579 log/14/ip579 > log/14/stdout579 2> log/14/stderr579

 579: data FAILED:
--- log/14/check-expected	2026-10-15 19:27:01.603702033 +0000
+++ log/14/check-generated	2026-10-15 19:27:01.598751058 +0000
@@ -1,17 +0,0 @@
-HTTP/1.1 100 Continue[CR][LF]
-Server: Microsoft-IIS/5.0[CR][LF]
-Date: Sun, 03 Apr 2005 14:57:45 GMT[CR][LF]
-X-Powered-By: ASP.NET[CR][LF]
-[CR][LF]
-HTTP/1.1 401 authentication please swsbounce[CR][LF]
-Server: Microsoft-IIS/6.0[CR][LF]
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 0[CR][LF]
-[CR][LF]
-HTTP/1.1 200 A OK[CR][LF]
-Server: Microsoft-IIS/6.0[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 3[CR][LF]
-[CR][LF]
-ok[LF]
== Contents of files in the log/14/ directory after test 579
=== Start of file check-expected
 HTTP/1.1 100 Continue[CR][LF]
 Server: Microsoft-IIS/5.0[CR][LF]
 Date: Sun, 03 Apr 2005 14:57:45 GMT[CR][LF]
 X-Powered-By: ASP.NET[CR][LF]
 [CR][LF]
 HTTP/1.1 401 authentication please swsbounce[CR][LF]
 Server: Microsoft-IIS/6.0[CR][LF]
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 0[CR][LF]
 [CR][LF]
 HTTP/1.1 200 A OK[CR][LF]
 Server: Microsoft-IIS/6.0[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 3[CR][LF]
 [CR][LF]
 ok[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:45467/579 log/14/ip579 > log/14/stdout579 2> log/14/stderr579
=== End of file commands.log
=== Start of file http_server.log
 19:26:59.739038 ====> Client connect
 19:26:59.739075 accept_connection 3 returned 4
 19:26:59.739097 Read 93 bytes
 19:26:59.739106 Process 93 bytes request
 19:26:59.739119 Got request: GET /verifiedserver HTTP/1.1
 19:26:59.739127 Are-we-friendly question received
 19:26:59.739158 Wrote request (93 bytes) input to log/14/server.input
 19:26:59.739178 Identifying ourselves as friends
 19:26:59.739250 Response sent (56 bytes) and written to log/14/server.response
 19:26:59.739260 special request received, no persistency
 19:26:59.739268 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 39686 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 579
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind579
 ==111490== 
 ==111490== Process terminating with default action of signal 4 (SIGILL)
 ==111490==  Illegal opcode at address 0x51CC63F
 ==111490==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111490==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111490==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111490==    by 0x40041AF: main (first.c:264)
=== End of file valgrind579
test 0576 [FTP wildcard - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:41879/fully_simulated/UNIX/* > log/8/stdout576 2> log/8/stderr576

 576: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:27:01.619514094 +0000
+++ log/8/check-generated	2026-10-15 19:27:01.615414219 +0000
@@ -1,152 +0,0 @@
-=============================================================[LF]
-Remains:      14[LF]
-Filename:     .[LF]
-Permissions:  rwxrwxrwx (parsed => 777)[LF]
-Size:         20480B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Apr 27  5:12[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      13[LF]
-Filename:     ..[LF]
-Permissions:  rwxrwxrwx (parsed => 777)[LF]
-Size:         20480B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Apr 23  3:12[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      12[LF]
-Filename:     chmod1[LF]
-Permissions:  r--r--r-- (parsed => 444)[LF]
-Size:         38B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Jan 11 10:00[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This file should have permissions 444[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      11[LF]
-Filename:     chmod2[LF]
-Permissions:  rw-rw-rw- (parsed => 666)[LF]
-Size:         38B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Feb  1  8:00[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This file should have permissions 666[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      10[LF]
-Filename:     chmod3[LF]
-Permissions:  rwxrwxrwx (parsed => 777)[LF]
-Size:         38B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Feb  1  8:00[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This file should have permissions 777[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      9[LF]
-Filename:     chmod4[LF]
-Permissions:  --S--S--t (parsed => 7001)[LF]
-Size:         4096B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         May  4  4:31[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      8[LF]
-Filename:     chmod5[LF]
-Permissions:  --s--s--T (parsed => 7110)[LF]
-Size:         4096B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         May  4  4:31[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      7[LF]
-Filename:     empty_file.dat[LF]
-Permissions:  rw-r--r-- (parsed => 644)[LF]
-Size:         0B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Apr 27 11:01[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      6[LF]
-Filename:     file.txt[LF]
-Permissions:  rw-r--r-- (parsed => 644)[LF]
-Size:         35B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Apr 27 11:01[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This is content of file "file.txt"[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      5[LF]
-Filename:     link[LF]
-Permissions:  rwxrwxrwx (parsed => 777)[LF]
-Size:         0B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Jan  6  4:42[LF]
-Filetype:     symlink[LF]
-Target:       file.txt[LF]
-=============================================================[LF]
-Remains:      4[LF]
-Filename:     link_absolute[LF]
-Permissions:  rwxrwxrwx (parsed => 777)[LF]
-Size:         0B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Jan  6  4:45[LF]
-Filetype:     symlink[LF]
-Target:       /data/ftp/file.txt[LF]
-=============================================================[LF]
-Remains:      3[LF]
-Filename:     .NeXT[LF]
-Permissions:  rwxrwxrwx (parsed => 777)[LF]
-Size:         4096B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Jan 23  2:05[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      2[LF]
-Filename:     someothertext.txt[LF]
-Permissions:  rw-r--r-- (parsed => 644)[LF]
-Size:         47B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Apr 27 11:01[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-# THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      1[LF]
-Filename:     weirddir.txt[LF]
-Permissions:  rwxr-xrwx (parsed => 757)[LF]
-Size:         4096B[LF]
-User:         ftp-default[LF]
-Group:        ftp-default[LF]
-Time:         Apr 23  3:12[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
== Contents of files in the log/8/ directory after test 576
=== Start of file check-expected
 =============================================================[LF]
 Remains:      14[LF]
 Filename:     .[LF]
 Permissions:  rwxrwxrwx (parsed => 777)[LF]
 Size:         20480B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Apr 27  5:12[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      13[LF]
 Filename:     ..[LF]
 Permissions:  rwxrwxrwx (parsed => 777)[LF]
 Size:         20480B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Apr 23  3:12[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      12[LF]
 Filename:     chmod1[LF]
 Permissions:  r--r--r-- (parsed => 444)[LF]
 Size:         38B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Jan 11 10:00[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This file should have permissions 444[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      11[LF]
 Filename:     chmod2[LF]
 Permissions:  rw-rw-rw- (parsed => 666)[LF]
 Size:         38B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Feb  1  8:00[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This file should have permissions 666[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      10[LF]
 Filename:     chmod3[LF]
 Permissions:  rwxrwxrwx (parsed => 777)[LF]
 Size:         38B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Feb  1  8:00[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This file should have permissions 777[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      9[LF]
 Filename:     chmod4[LF]
 Permissions:  --S--S--t (parsed => 7001)[LF]
 Size:         4096B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         May  4  4:31[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      8[LF]
 Filename:     chmod5[LF]
 Permissions:  --s--s--T (parsed => 7110)[LF]
 Size:         4096B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         May  4  4:31[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      7[LF]
 Filename:     empty_file.dat[LF]
 Permissions:  rw-r--r-- (parsed => 644)[LF]
 Size:         0B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Apr 27 11:01[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      6[LF]
 Filename:     file.txt[LF]
 Permissions:  rw-r--r-- (parsed => 644)[LF]
 Size:         35B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Apr 27 11:01[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This is content of file "file.txt"[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      5[LF]
 Filename:     link[LF]
 Permissions:  rwxrwxrwx (parsed => 777)[LF]
 Size:         0B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Jan  6  4:42[LF]
 Filetype:     symlink[LF]
 Target:       file.txt[LF]
 =============================================================[LF]
 Remains:      4[LF]
 Filename:     link_absolute[LF]
 Permissions:  rwxrwxrwx (parsed => 777)[LF]
 Size:         0B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Jan  6  4:45[LF]
 Filetype:     symlink[LF]
 Target:       /data/ftp/file.txt[LF]
 =============================================================[LF]
 Remains:      3[LF]
 Filename:     .NeXT[LF]
 Permissions:  rwxrwxrwx (parsed => 777)[LF]
 Size:         4096B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Jan 23  2:05[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      2[LF]
 Filename:     someothertext.txt[LF]
 Permissions:  rw-r--r-- (parsed => 644)[LF]
 Size:         47B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Apr 27 11:01[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 # THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      1[LF]
 Filename:     weirddir.txt[LF]
 Permissions:  rwxr-xrwx (parsed => 757)[LF]
 Size:         4096B[LF]
 User:         ftp-default[LF]
 Group:        ftp-default[LF]
 Time:         Apr 23  3:12[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:41879/fully_simulated/UNIX/* > log/8/stdout576 2> log/8/stderr576
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:00.065376 ====> Client connect
 19:27:00.065648 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:00.066045 < "USER anonymous"
 19:27:00.066085 > "331 We are happy you popped in![CR][LF]"
 19:27:00.066268 < "PASS ftp@example.com"
 19:27:00.066302 > "230 Welcome you silly person[CR][LF]"
 19:27:00.066485 < "PWD"
 19:27:00.066522 > "257 "/" is current directory[CR][LF]"
 19:27:00.072170 < "EPSV"
 19:27:00.072222 ====> Passive DATA channel requested by client
 19:27:00.072242 DATA sockfilt for passive data channel starting...
 19:27:00.076721 DATA sockfilt for passive data channel started (pid 111355)
 19:27:00.076869 DATA sockfilt for passive data channel listens on port 38237
 19:27:00.076921 > "229 Entering Passive Mode (|||38237|)[CR][LF]"
 19:27:00.076942 Client has been notified that upcoming DATA connection is awaited on port 38237
 19:27:00.077245 Client connects to port 38237
 19:27:00.077278 ====> Client established passive DATA connection on port 38237
 19:27:00.077372 < "TYPE I"
 19:27:00.077407 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:00.077583 < "SIZE verifiedserver"
 19:27:00.077621 > "213 17[CR][LF]"
 19:27:00.077798 < "RETR verifiedserver"
 19:27:00.077839 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:00.077928 =====> Closing passive DATA connection...
 19:27:00.077947 Server disconnects passive DATA connection
 19:27:00.078179 Server disconnected passive DATA connection
 19:27:00.078206 DATA sockfilt for passive data channel quits (pid 111355)
 19:27:00.078417 DATA sockfilt for passive data channel quit (pid 111355)
 19:27:00.078443 =====> Closed passive DATA connection
 19:27:00.078476 > "226 File transfer complete[CR][LF]"
 19:27:00.119043 < "QUIT"
 19:27:00.119098 > "221 bye bye baby[CR][LF]"
 19:27:00.120271 MAIN sockfilt said DISC
 19:27:00.120304 ====> Client disconnected
 19:27:00.120385 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:26:59.669695 ====> Client connect
 19:26:59.674798 Received DATA (on stdin)
 19:26:59.674822 > 146 bytes data, server => client
 19:26:59.674835 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:26:59.674845 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:26:59.674854 '220    \___|\___/|_| \_\_____|\r\n'
 19:26:59.675001 < 16 bytes data, client => server
 19:26:59.675017 'USER anonymous\r\n'
 19:26:59.675213 Received DATA (on stdin)
 19:26:59.675227 > 33 bytes data, server => client
 19:26:59.675237 '331 We are happy you popped in!\r\n'
 19:26:59.675289 < 22 bytes data, client => server
 19:26:59.675303 'PASS ftp@example.com\r\n'
 19:26:59.675428 Received DATA (on stdin)
 19:26:59.675440 > 30 bytes data, server => client
 19:26:59.675450 '230 Welcome you silly person\r\n'
 19:26:59.675512 < 5 bytes data, client => server
 19:26:59.675526 'PWD\r\n'
 19:26:59.675646 Received DATA (on stdin)
 19:26:59.675659 > 30 bytes data, server => client
 19:26:59.675669 '257 "/" is current directory\r\n'
 19:26:59.675734 < 6 bytes data, client => server
 19:26:59.675748 'EPSV\r\n'
 19:26:59.686078 Received DATA (on stdin)
 19:26:59.686096 > 39 bytes data, server => client
 19:26:59.686107 '229 Entering Passive Mode (|||38237|)\r\n'
 19:26:59.686284 < 8 bytes data, client => server
 19:26:59.686300 'TYPE I\r\n'
 19:26:59.686535 Received DATA (on stdin)
 19:26:59.686547 > 33 bytes data, server => client
 19:26:59.686558 '200 I modify TYPE as you wanted\r\n'
 19:26:59.686614 < 21 bytes data, client => server
 19:26:59.686628 'SIZE verifiedserver\r\n'
 19:26:59.686747 Received DATA (on stdin)
 19:26:59.686759 > 8 bytes data, server => client
 19:26:59.686769 '213 17\r\n'
 19:26:59.686831 < 21 bytes data, client => server
 19:26:59.686844 'RETR verifiedserver\r\n'
 19:26:59.687072 Received DATA (on stdin)
 19:26:59.687083 > 29 bytes data, server => client
 19:26:59.687093 '150 Binary junk (17 bytes).\r\n'
 19:26:59.687605 Received DATA (on stdin)
 19:26:59.687618 > 28 bytes data, server => client
 19:26:59.687628 '226 File transfer complete\r\n'
 19:26:59.72cannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:40913/587 > log/10/stdout587 2> log/10/stderr587
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:35869/567 > log/4/stdout567 2> log/4/stderr567
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:44711/578 log/23/ip578 > log/23/stdout578 2> log/23/stderr578
7960 < 6 bytes data, client => server
 19:26:59.727990 'QUIT\r\n'
 19:26:59.728233 Received DATA (on stdin)
 19:26:59.728245 > 18 bytes data, server => client
 19:26:59.728254 '221 bye bye baby\r\n'
 19:26:59.729354 ====> Client disconnect
 19:26:59.729522 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:00.685627 Running IPv4 version
 19:27:00.685713 Listening on port 38237
 19:27:00.685752 Wrote pid 111355 to log/8/server/ftp_sockdata.pid
 19:27:00.685775 Received PING (on stdin)
 19:27:00.685889 Received PORT (on stdin)
 19:27:00.686321 ====> Client connect
 19:27:00.687150 Received DATA (on stdin)
 19:27:00.687162 > 17 bytes data, server => client
 19:27:00.687172 'WE ROOLZ: 84824\r\n'
 19:27:00.687197 Received DISC (on stdin)
 19:27:00.687207 ====> Client forcibly disconnected
 19:27:00.687341 Received QUIT (on stdin)
 19:27:00.687353 quits
 19:27:00.687406 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 576
=== End of file server.cmd
=== Start of file valgrind576
 ==111503== 
 ==111503== Process terminating with default action of signal 4 (SIGILL)
 ==111503==  Illegal opcode at address 0x51CC63F
 ==111503==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111503==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111503==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111503==    by 0x40041AF: main (first.c:264)
=== End of file valgrind576
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/4/server/rtsp_server.pid" --portfile "log/4/server/rtsp_server.port" --logfile "log/4/rtsp_server.log" --logdir "log/4" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111069 port 35869
* pid rtsp => 111069 111069
test 0567 [simple RTSP OPTIONS command]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:35869/567 > log/4/stdout567 2> log/4/stderr567

 567: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 567
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:35869/567 > log/4/stdout567 2> log/4/stderr567
=== End of file commands.log
=== Start of file rtsp_server.log
 19:26:59.736553 Running IPv4 version on port 35869
 19:26:59.736774 Wrote pid 111069 to log/4/server/rtsp_server.pid
 19:26:59.736809 Wrote port 35869 to log/4/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 567
=== End of file server.cmd
=== Start of file valgrind567
 ==111401== 
 ==111401== Process terminating with default action of signal 4 (SIGILL)
 ==111401==  Illegal opcode at address 0x51CC63F
 ==111401==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111401==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111401==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111401==    by 0x40041AF: main (first.c:264)
=== End of file valgrind567
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:45539/568 log/13/file568.txt > log/13/stdout568 2> log/13/stderr568
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:41549/586 > log/20/stdout586 2> log/20/stderr586
test 0578 [HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:44711/578 log/23/ip578 > log/23/stdout578 2> log/23/stderr578

 578: data FAILED:
--- log/23/check-expected	2026-10-15 19:27:01.817292799 +0000
+++ log/23/check-generated	2026-10-15 19:27:01.812039514 +0000
@@ -1,12 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
-ETag: "21025-dc7-39462498"[CR][LF]
-Accept-Ranges: bytes[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-[CR][LF]
--foo-[LF]
== Contents of files in the log/23/ directory after test 578
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
 ETag: "21025-dc7-39462498"[CR][LF]
 Accept-Ranges: bytes[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 [CR][LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:44711/578 log/23/ip578 > log/23/stdout578 2> log/23/stderr578
=== End of file commands.log
=== Start of file http_server.log
 19:26:59.676989 ====> Client connect
 19:26:59.677018 accept_connection 3 returned 4
 19:26:59.677037 Read 93 bytes
 19:26:59.677046 Process 93 bytes request
 19:26:59.677058 Got request: GET /verifiedserver HTTP/1.1
 19:26:59.677066 Are-we-friendly question received
 19:26:59.677090 Wrote request (93 bytes) input to log/23/server.input
 19:26:59.677105 Identifying ourselves as friends
 19:26:59.677157 Response sent (56 bytes) and written to log/23/server.response
 19:26:59.677165 special request received, no persistency
 19:26:59.677173 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 33090 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 578
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind578
 ==111403== 
 ==111403== Process terminating with default action of signal 4 (SIGILL)
 ==111403==  Illegal opcode at address 0x51CC63F
 ==111403==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111403==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111403==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111403==    by 0x40041AF: main (first.c:264)
=== End of file valgrind578
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/13/server/rtsp_server.pid" --portfile "log/13/server/rtsp_server.port" --logfile "log/13/rtsp_server.log" --logdir "log/13" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111131 port 45539
* pid rtsp => 111131 111131
test 0568 [RTSP Announce (PUT and POST style) test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:45539/568 log/13/file568.txt > log/13/stdout568 2> log/13/stderr568

 568: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 568
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:45539/568 log/13/file568.txt > log/13/stdout568 2> log/13/stderr568
=== End of file commands.log
=== Start of file file568.txt
 v=0
 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
 s=SDP Seminar
 i=A Seminar on the session description protocol
 u=something something something something something
 e=once upon the time we knew
 c=IN IP4 224.2.17.12/127
 t=2873397496 2873404696
 a=recvonly
 m=audio 3456 RTP/AVP 0
 m=video 2232 RTP/AVP 31
=== End of file file568.txt
=== Start of file rtsp_server.log
 19:26:59.161107 Running IPv4 version on port 45539
 19:26:59.161237 Wrote pid 111131 to log/13/server/rtsp_server.pid
 19:26:59.161275 Wrote port 45539 to log/13/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 568
=== End of file server.cmd
=== Start of file valgrind568
 ==111902== 
 ==111902== Process terminating with default action of signal 4 (SIGILL)
 ==111902==  Illegal opcode at address 0x51CC63F
 ==111902==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111902==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111902==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111902==    by 0x40041AF: main (first.c:264)
=== End of file valgrind568
test 0586 [FTP and open/close socket callbacks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:41549/586 > log/20/stdout586 2> log/20/stderr586

 586: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 586
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:41549/586 > log/20/stdout586 2> log/20/stderr586
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:00.525377 ====> Client connect
 19:27:00.525682 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:00.526073 < "USER anonymous"
 19:27:00.526121 > "331 We are happy you popped in![CR][LF]"
 19:27:00.526340 < "PASS ftp@example.com"
 19:27:00.526375 > "230 Welcome you silly person[CR][LF]"
 19:27:00.526569 < "PWD"
 19:27:00.526610 > "257 "/" is current directory[CR][LF]"
 19:27:00.526815 < "EPSV"
 19:27:00.526843 ====> Passive DATA channel requested by client
 19:27:00.526860 DATA sockfilt for passive data channel starting...
 19:27:00.533517 DATA sockfilt for passive data channel started (pid 111880)
 19:27:00.533675 DATA sockfilt for passive data channel listens on port 42909
 19:27:00.533737 > "229 Entering Passive Mode (|||42909|)[CR][LF]"
 19:27:00.533763 Client has been notified that upcoming DATA connection is awaited on port 42909
 19:27:00.534132 Client connects to port 42909
 19:27:00.534169 ====> Client established passive DATA connection on port 42909
 19:27:00.534279 < "TYPE I"
 19:27:00.534316 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:00.534509 < "SIZE verifiedserver"
 19:27:00.534555 > "213 17[CR][LF]"
 19:27:00.534754 < "RETR verifiedserver"
 19:27:00.534797 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:00.5349cannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:33577/570 > log/2/stdout570 2> log/2/stderr570
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:43115/571 log/12/protofile571.txt > log/12/stdout571 2> log/12/stderr571
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:36439/569 log/7/idfile569.txt > log/7/stdout569 2> log/7/stderr569
04 =====> Closing passive DATA connection...
 19:27:00.534930 Server disconnects passive DATA connection
 19:27:00.535119 Server disconnected passive DATA connection
 19:27:00.535148 DATA sockfilt for passive data channel quits (pid 111880)
 19:27:00.535418 DATA sockfilt for passive data channel quit (pid 111880)
 19:27:00.535449 =====> Closed passive DATA connection
 19:27:00.535481 > "226 File transfer complete[CR][LF]"
 19:27:00.582671 < "QUIT"
 19:27:00.582728 > "221 bye bye baby[CR][LF]"
 19:27:00.586416 MAIN sockfilt said DISC
 19:27:00.586460 ====> Client disconnected
 19:27:00.586538 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:00.126866 ====> Client connect
 19:27:00.134936 Received DATA (on stdin)
 19:27:00.134961 > 146 bytes data, server => client
 19:27:00.134973 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:00.134983 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:00.134993 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:00.135127 < 16 bytes data, client => server
 19:27:00.135144 'USER anonymous\r\n'
 19:27:00.135351 Received DATA (on stdin)
 19:27:00.135364 > 33 bytes data, server => client
 19:27:00.135375 '331 We are happy you popped in!\r\n'
 19:27:00.135444 < 22 bytes data, client => server
 19:27:00.135460 'PASS ftp@example.com\r\n'
 19:27:00.135600 Received DATA (on stdin)
 19:27:00.135612 > 30 bytes data, server => client
 19:27:00.135623 '230 Welcome you silly person\r\n'
 19:27:00.135686 < 5 bytes data, client => server
 19:27:00.135700 'PWD\r\n'
 19:27:00.135836 Received DATA (on stdin)
 19:27:00.135849 > 30 bytes data, server => client
 19:27:00.135859 '257 "/" is current directory\r\n'
 19:27:00.135934 < 6 bytes data, client => server
 19:27:00.135950 'EPSV\r\n'
 19:27:00.143002 Received DATA (on stdin)
 19:27:00.143022 > 39 bytes data, server => client
 19:27:00.143033 '229 Entering Passive Mode (|||42909|)\r\n'
 19:27:00.143259 < 8 bytes data, client => server
 19:27:00.143278 'TYPE I\r\n'
 19:27:00.143541 Received DATA (on stdin)
 19:27:00.143554 > 33 bytes data, server => client
 19:27:00.143564 '200 I modify TYPE as you wanted\r\n'
 19:27:00.143626 < 21 bytes data, client => server
 19:27:00.143639 'SIZE verifiedserver\r\n'
 19:27:00.143784 Received DATA (on stdin)
 19:27:00.143796 > 8 bytes data, server => client
 19:27:00.143807 '213 17\r\n'
 19:27:00.143870 < 21 bytes data, client => server
 19:27:00.143886 'RETR verifiedserver\r\n'
 19:27:00.144158 Received DATA (on stdin)
 19:27:00.144172 > 29 bytes data, server => client
 19:27:00.144182 '150 Binary junk (17 bytes).\r\n'
 19:27:00.144708 Received DATA (on stdin)
 19:27:00.144721 > 28 bytes data, server => client
 19:27:00.144731 '226 File transfer complete\r\n'
 19:27:00.191690 < 6 bytes data, client => server
 19:27:00.191727 'QUIT\r\n'
 19:27:00.192206 Received DATA (on stdin)
 19:27:00.192227 > 18 bytes data, server => client
 19:27:00.192238 '221 bye bye baby\r\n'
 19:27:00.195585 ====> Client disconnect
 19:27:00.195769 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:00.142066 Running IPv4 version
 19:27:00.142163 Listening on port 42909
 19:27:00.142216 Wrote pid 111880 to log/20/server/ftp_sockdata.pid
 19:27:00.142657 Received PING (on stdin)
 19:27:00.142786 Received PORT (on stdin)
 19:27:00.143303 ====> Client connect
 19:27:00.144213 Received DATA (on stdin)
 19:27:00.144227 > 17 bytes data, server => client
 19:27:00.144237 'WE ROOLZ: 84833\r\n'
 19:27:00.144267 Received DISC (on stdin)
 19:27:00.144283 ====> Client forcibly disconnected
 19:27:00.144382 Received QUIT (on stdin)
 19:27:00.144396 quits
 19:27:00.144470 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 586
=== End of file server.cmd
=== Start of file valgrind586
 ==111925== 
 ==111925== Process terminating with default action of signal 4 (SIGILL)
 ==111925==  Illegal opcode at address 0x51CC63F
 ==111925==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111925==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111925==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111925==    by 0x40041AF: main (first.c:264)
=== End of file valgrind586
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/2/server/rtsp_server.pid" --portfile "log/2/server/rtsp_server.port" --logfile "log/2/rtsp_server.log" --logdir "log/2" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111139 port 33577
* pid rtsp => 111139 111139
test 0570 [RTSP CSeq and Session Mismatch checks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:33577/570 > log/2/stdout570 2> log/2/stderr570

 570: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 570
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:33577/570 > log/2/stdout570 2> log/2/stderr570
=== End of file commands.log
=== Start of file rtsp_server.log
 19:26:59.253457 Running IPv4 version on port 33577
 19:26:59.253583 Wrote pid 111139 to log/2/server/rtsp_server.pid
 19:26:59.253618 Wrote port 33577 to log/2/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 570
=== End of file server.cmd
=== Start of file valgrind570
 ==111972== 
 ==111972== Process terminating with default action of signal 4 (SIGILL)
 ==111972==  Illegal opcode at address 0x51CC63F
 ==111972==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111972==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111972==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111972==    by 0x40041AF: main (first.c:264)
=== End of file valgrind570
cannot find sshd
cannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:40989/589 > log/11/stdout589 2> log/11/stderr589
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/12/server/rtsp_server.pid" --portfile "log/12/server/rtsp_server.port" --logfile "log/12/rtsp_server.log" --logdir "log/12" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111141 port 43115
* pid rtsp => 111141 111141
test 0571 [RTSP RTP Interleaving Test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:43115/571 log/12/protofile571.txt > log/12/stdout571 2> log/12/stderr571

 571: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:27:02.046654419 +0000
+++ log/12/check-generated	2026-10-15 19:27:02.045323793 +0000
@@ -1,20 +0,0 @@
-RTP: message size 10, channel 1[LF]
-RTP: message size 500, channel 0[LF]
-RTP: message size 196, channel 0[LF]
-RTP: message size 124, channel 0[LF]
-RTP: message size 824, channel 0[LF]
-RTP: message size 12, channel 0[LF]
-RTP: message size 10, channel 1[LF]
-RTP: message size 50, channel 0[LF]
-RTP: message size 798, channel 0[LF]
-RTP: message size 42, channel 0[LF]
-RTP: message size 30, channel 1[LF]
-RTP: message size 2048, channel 0[LF]
-RTP: message size 85, channel 0[LF]
-RTP: message size 24, channel 1[LF]
-RTP: message size 13, channel 0[LF]
-RTP: message size 33, channel 0[LF]
-RTP: message size 127, channel 0[LF]
-RTP: message size 35, channel 1[LF]
-RTP PAYLOAD END CORRUPTED (11), [$][LF]
-RTP: message size 63, channel 0[LF]
== Contents of files in the log/12/ directory after test 571
=== Start of file check-expected
 RTP: message size 10, channel 1[LF]
 RTP: message size 500, channel 0[LF]
 RTP: message size 196, channel 0[LF]
 RTP: message size 124, channel 0[LF]
 RTP: message size 824, channel 0[LF]
 RTP: message size 12, channel 0[LF]
 RTP: message size 10, channel 1[LF]
 RTP: message size 50, channel 0[LF]
 RTP: message size 798, channel 0[LF]
 RTP: message size 42, channel 0[LF]
 RTP: message size 30, channel 1[LF]
 RTP: message size 2048, channel 0[LF]
 RTP: message size 85, channel 0[LF]
 RTP: message size 24, channel 1[LF]
 RTP: message size 13, channel 0[LF]
 RTP: message size 33, channel 0[LF]
 RTP: message size 127, channel 0[LF]
 RTP: message size 35, channel 1[LF]
 RTP PAYLOAD END CORRUPTED (11), [$][LF]
 RTP: message size 63, channel 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:43115/571 log/12/protofile571.txt > log/12/stdout571 2> log/12/stderr571
=== End of file commands.log
=== Start of file rtsp_server.log
 19:26:59.281761 Running IPv4 version on port 43115
 19:26:59.281910 Wrote pid 111141 to log/12/server/rtsp_server.pid
 19:26:59.281956 Wrote port 43115 to log/12/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 rtp: part 2 channel 1 size 10
 rtp: part 2 channel 0 size 500
 rtp: part 2 channel 0 size 196
 rtp: part 2 channel 0 size 124
 rtp: part 2 channel 0 size 824
 rtp: part 2 channel 0 size 18 size_err -6
 rtp: part 3 channel 1 size 10
 rtp: part 3 channel 0 size 50
 rtp: part 4 channel 0 size 798
 rtp: part 4 channel 0 size 42
 rtp: part 4 channel 1 size 30
 rtp: part 4 channel 0 size 2048
 rtp: part 4 channel 0 size 85
 rtp: part 4 channel 1 size 24
 rtp: part 4 channel 0 size 17 size_err -4
 rtp: part 4 channel 0 size 33
 rtp: part 4 channel 0 size 127
 rtp: part 4 channel 1 size 24 size_err 11
 rtp: part 4 channel 0 size 37
 rtp: part 4 channel 0 size 63
 Testnum 571
=== End of file server.cmd
=== Start of file valgrind571
 ==112048== 
 ==112048== Process terminating with default action of signal 4 (SIGILL)
 ==112048==  Illegal opcode at address 0x51CC63F
 ==112048==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112048==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112048==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112048==    by 0x40041AF: main (first.c:264)
=== End of file valgrind571
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/7/server/rtsp_server.pid" --portfile "log/7/server/rtsp_server.port" --logfile "log/7/rtsp_server.log" --logdir "log/7" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111137 port 36439
* pid rtsp => 111137 111137
test 0569 [RTSP Session ID parsing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:36439/569 log/7/idfile569.txt > log/7/stdout569 2> log/7/stderr569

 569: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 569
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:36439/569 log/7/idfile569.txt > log/7/stdout569 2> log/7/stderr569
=== End of file commands.log
=== Start of file rtsp_server.log
 19:26:59.238199 Running IPv4 version on port 36439
 19:26:59.238322 Wrote pid 111137 to log/7/server/rtsp_server.pid
 19:26:59.238361 Wrote port 36439 to log/7/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 569
=== End of file server.cmd
=== Start of file valgrind569
 ==111984== 
 ==111984== Process terminating with default action of signal 4 (SIGILL)
 ==111984==  Illegal opcode at address 0x51CC63F
 ==111984==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111984==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111984==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111984==    by 0x40041AF: main (first.c:264)
=== End of file valgrind569
test 0589 [make an HTTP MIME POST set to NULL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:40989/589 > log/11/stdout589 2> log/11/stderr589

 589: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 589
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:40989/589 > log/11/stdout589 2> log/11/stderr589
=== End of file commands.log
=== Start of file http_server.log
 19:27:00.320352 ====> Client connect
 19:27:00.320400 accept_connection 3 returned 4
 19:27:00.320572 Read 93 bytes
 19:27:00.320589 Process 93 bytes request
 19:27:00.320602 Got request: GET /verifiedserver HTTP/1.1
 19:27:00.320612 Are-we-friendly question received
 19:27:00.320647 Wrote request (93 bytes) input to log/11/server.input
 19:27:00.320666 Identifying ourselves as friends
 19:27:00.320735 Response sent (56 bytes) and written to log/11/server.response
 19:27:00.320747 special request received, no persistency
 19:27:00.320755 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 35140 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.locannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:46137/path/588 log/17/upload588 > log/17/stdout588 2> log/17/stderr588
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:42675/577 > log/9/stdout577 2> log/9/stderr577
cannot find sshd
g
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 589
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind589
 ==112156== 
 ==112156== Process terminating with default action of signal 4 (SIGILL)
 ==112156==  Illegal opcode at address 0x51CC63F
 ==112156==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112156==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112156==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112156==    by 0x40041AF: main (first.c:264)
=== End of file valgrind589
test 0588 [FTP PORT upload using multi interface, EPRT does not work]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:46137/path/588 log/17/upload588 > log/17/stdout588 2> log/17/stderr588

 588: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 588
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:46137/path/588 log/17/upload588 > log/17/stdout588 2> log/17/stderr588
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:00.571787 ====> Client connect
 19:27:00.572077 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:00.583175 < "USER anonymous"
 19:27:00.583227 > "331 We are happy you popped in![CR][LF]"
 19:27:00.583415 < "PASS ftp@example.com"
 19:27:00.583453 > "230 Welcome you silly person[CR][LF]"
 19:27:00.583651 < "PWD"
 19:27:00.583692 > "257 "/" is current directory[CR][LF]"
 19:27:00.583897 < "EPSV"
 19:27:00.583929 ====> Passive DATA channel requested by client
 19:27:00.583945 DATA sockfilt for passive data channel starting...
 19:27:00.586412 DATA sockfilt for passive data channel started (pid 111900)
 19:27:00.586531 DATA sockfilt for passive data channel listens on port 41123
 19:27:00.586578 > "229 Entering Passive Mode (|||41123|)[CR][LF]"
 19:27:00.586601 Client has been notified that upcoming DATA connection is awaited on port 41123
 19:27:00.588899 Client connects to port 41123
 19:27:00.588936 ====> Client established passive DATA connection on port 41123
 19:27:00.589034 < "TYPE I"
 19:27:00.589074 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:00.589275 < "SIZE verifiedserver"
 19:27:00.589324 > "213 17[CR][LF]"
 19:27:00.589507 < "RETR verifiedserver"
 19:27:00.589546 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:00.589650 =====> Closing passive DATA connection...
 19:27:00.589671 Server disconnects passive DATA connection
 19:27:00.589939 Server disconnected passive DATA connection
 19:27:00.589971 DATA sockfilt for passive data channel quits (pid 111900)
 19:27:00.590213 DATA sockfilt for passive data channel quit (pid 111900)
 19:27:00.590242 =====> Closed passive DATA connection
 19:27:00.590273 > "226 File transfer complete[CR][LF]"
 19:27:00.635512 < "QUIT"
 19:27:00.635563 > "221 bye bye baby[CR][LF]"
 19:27:00.636651 MAIN sockfilt said DISC
 19:27:00.636692 ====> Client disconnected
 19:27:00.636780 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:00.180868 ====> Client connect
 19:27:00.181330 Received DATA (on stdin)
 19:27:00.181345 > 146 bytes data, server => client
 19:27:00.181357 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:00.181367 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:00.181377 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:00.192210 < 16 bytes data, client => server
 19:27:00.192231 'USER anonymous\r\n'
 19:27:00.192462 Received DATA (on stdin)
 19:27:00.192474 > 33 bytes data, server => client
 19:27:00.192483 '331 We are happy you popped in!\r\n'
 19:27:00.192542 < 22 bytes data, client => server
 19:27:00.192553 'PASS ftp@example.com\r\n'
 19:27:00.192690 Received DATA (on stdin)
 19:27:00.192704 > 30 bytes data, server => client
 19:27:00.192714 '230 Welcome you silly person\r\n'
 19:27:00.192779 < 5 bytes data, client => server
 19:27:00.192793 'PWD\r\n'
 19:27:00.192928 Received DATA (on stdin)
 19:27:00.192941 > 30 bytes data, server => client
 19:27:00.192952 '257 "/" is current directory\r\n'
 19:27:00.193026 < 6 bytes data, client => server
 19:27:00.193042 'EPSV\r\n'
 19:27:00.195840 Received DATA (on stdin)
 19:27:00.195854 > 39 bytes data, server => client
 19:27:00.195865 '229 Entering Passive Mode (|||41123|)\r\n'
 19:27:00.198034 < 8 bytes data, client => server
 19:27:00.198053 'TYPE I\r\n'
 19:27:00.198313 Received DATA (on stdin)
 19:27:00.198327 > 33 bytes data, server => client
 19:27:00.198337 '200 I modify TYPE as you wanted\r\n'
 19:27:00.198406 < 21 bytes data, client => server
 19:27:00.198420 'SIZE verifiedserver\r\n'
 19:27:00.198562 Received DATA (on stdin)
 19:27:00.198575 > 8 bytes data, server => client
 19:27:00.198585 '213 17\r\n'
 19:27:00.198645 < 21 bytes data, client => server
 19:27:00.198658 'RETR verifiedserver\r\n'
 19:27:00.198907 Received DATA (on stdin)
 19:27:00.198921 > 29 bytes data, server => client
 19:27:00.198932 '150 Binary junk (17 bytes).\r\n'
 19:27:00.199511 Received DATA (on stdin)
 19:27:00.199525 > 28 bytes data, server => client
 19:27:00.199535 '226 File transfer complete\r\n'
 19:27:00.244580 < 6 bytes data, client => server
 19:27:00.244611 'QUIT\r\n'
 19:27:00.244808 Received DATA (on stdin)
 19:27:00.244819 > 18 bytes data, server => client
 19:27:00.244828 '221 bye bye baby\r\n'
 19:27:00.245832 ====> Client disconnect
 19:27:00.246022 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:00.195081 Running IPv4 version
 19:27:00.195156 Listening on port 41123
 19:27:00.195194 Wrote pid 111900 to log/17/server/ftp_sockdata.pid
 19:27:00.195575 Received PING (on stdin)
 19:27:00.195670 Received PORT (on stdin)
 19:27:00.198079 ====> Client connect
 19:27:00.198995 Received DATA (on stdin)
 19:27:00.199011 > 17 bytes data, server => client
 19:27:00.199021 'WE ROOLZ: 84749\r\n'
 19:27:00.199052 Received DISC (on stdin)
 19:27:00.199065 ====> Client forcibly disconnected
 19:27:00.199216 Received QUIT (on stdin)
 19:27:00.199228 quits
 19:27:00.199296 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPRT 500 we don't like EPRT now
 Testnum 588
=== End of file server.cmd
=== Start of file upload588
 Moooooooooooo
  upload this
=== End of file upload588
=== Start of file valgrind588
 ==112021== 
 ==112021== Process terminating with default action of signal 4 (SIGILL)
 ==112021==  Illegal opcode at address 0x51CC63F
 ==112021==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112021==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112021==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112021==    by 0x40041AF: main (first.c:264)
=== End of file valgrind588
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/9/server/rtsp_server.pid" --portfile "log/9/server/rtsp_server.port" --logfile "log/9/rtsp_server.log" --logdir "log/9" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111274 port 42675
* pid rtsp => 111274 111274
test 0577 [Funny RTSP version in response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:42675/577 > log/9/stdout577 2> log/9/stderr577

 577: protocol FAILED!
 There was no content at all in the file loCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:33101/572 log/3/file572.txt > log/3/stdout572 2> log/3/stderr572
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:39641/path/591 8 log/5/upload591 > log/5/stdout591 2> log/5/stderr591
g/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 577
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:42675/577 > log/9/stdout577 2> log/9/stderr577
=== End of file commands.log
=== Start of file rtsp_server.log
 19:27:00.626673 Running IPv4 version on port 42675
 19:27:00.626771 Wrote pid 111274 to log/9/server/rtsp_server.pid
 19:27:00.626807 Wrote port 42675 to log/9/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 577
=== End of file server.cmd
=== Start of file valgrind577
 ==112383== 
 ==112383== Process terminating with default action of signal 4 (SIGILL)
 ==112383==  Illegal opcode at address 0x51CC63F
 ==112383==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112383==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112383==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112383==    by 0x40041AF: main (first.c:264)
=== End of file valgrind577
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/3/server/rtsp_server.pid" --portfile "log/3/server/rtsp_server.port" --logfile "log/3/rtsp_server.log" --logdir "log/3" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 111152 port 33101
* pid rtsp => 111152 111152
test 0572 [RTSP GET_PARAMETER (Put/Heartbeat/Post)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:33101/572 log/3/file572.txt > log/3/stdout572 2> log/3/stderr572

 572: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 572
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:33101/572 log/3/file572.txt > log/3/stdout572 2> log/3/stderr572
=== End of file commands.log
=== Start of file file572.txt
 scale
 speed
=== End of file file572.txt
=== Start of file rtsp_server.log
 19:26:59.433908 Running IPv4 version on port 33101
 19:26:59.433997 Wrote pid 111152 to log/3/server/rtsp_server.pid
 19:26:59.434026 Wrote port 33101 to log/3/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 572
=== End of file server.cmd
=== Start of file valgrind572
 ==112272== 
 ==112272== Process terminating with default action of signal 4 (SIGILL)
 ==112272==  Illegal opcode at address 0x51CC63F
 ==112272==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112272==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112272==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112272==    by 0x40041AF: main (first.c:264)
=== End of file valgrind572
test 0591 [FTP multi PORT and 425 on upload]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:39641/path/591 8 log/5/upload591 > log/5/stdout591 2> log/5/stderr591

 591: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 591
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:39641/path/591 8 log/5/upload591 > log/5/stdout591 2> log/5/stderr591
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:01.087210 ====> Client connect
 19:27:01.087414 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:01.087688 < "USER anonymous"
 19:27:01.087721 > "331 We are happy you popped in![CR][LF]"
 19:27:01.087878 < "PASS ftp@example.com"
 19:27:01.087902 > "230 Welcome you silly person[CR][LF]"
 19:27:01.088045 < "PWD"
 19:27:01.088076 > "257 "/" is current directory[CR][LF]"
 19:27:01.088226 < "EPSV"
 19:27:01.088251 ====> Passive DATA channel requested by client
 19:27:01.088264 DATA sockfilt for passive data channel starting...
 19:27:01.090131 DATA sockfilt for passive data channel started (pid 112418)
 19:27:01.090235 DATA sockfilt for passive data channel listens on port 41151
 19:27:01.090274 > "229 Entering Passive Mode (|||41151|)[CR][LF]"
 19:27:01.090291 Client has been notified that upcoming DATA connection is awaited on port 41151
 19:27:01.090510 Client connects to port 41151
 19:27:01.090540 ====> Client established passive DATA connection on port 41151
 19:27:01.090610 < "TYPE I"
 19:27:01.090636 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:01.090787 < "SIZE verifiedserver"
 19:27:01.090819 > "213 17[CR][LF]"
 19:27:01.090960 < "RETR verifiedserver"
 19:27:01.090991 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:01.091079 =====> Closing passive DATA connection...
 19:27:01.091095 Server disconnects passive DATA connection
 19:27:01.091302 Server disconnected passive DATA connection
 19:27:01.091329 DATA sockfilt for passive data channel quits (pid 112418)
 19:27:01.091545 DATA sockfilt for passive data channel quit (pid 112418)
 19:27:01.091567 =====> Closed passive DATA connection
 19:27:01.091590 > "226 File transfer complete[CR][LF]"
 19:27:01.142148 < "QUIT"
 19:27:01.142214 > "221 bye bye baby[CR][LF]"
 19:27:01.143488 MAIN sockfilt said DISC
 19:27:01.143535 ====> Client disconnected
 19:27:01.143629 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:00.696415 ====> Client connect
 19:27:00.696762 Received DATA (on stdin)
 19:27:00.696776 > 146 bytes data, server => client
 19:27:00.696788 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:00.696798 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:00.696806 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:00.696882 < 16 bytes data, client => server
 19:27:00.696893 'USER anonymous\r\n'
 19:27:00.697059 Received DATA (on stdin)
 19:27:00.697070 > 33 bytes data, server => client
 19:27:00.697080 '331 We are happy you popped in!\r\n'
 19:27:00.697131 < 22 bytes data, client => server
 19:27:00.697142 'PASS ftp@example.com\r\n'
 19:27:00.697236 Received DATA (on stdin)
 19:27:00.697246 > 30 bytes data, server => client
 19:27:00.697256 '230 Welcome you silly person\r\n'
 19:27:00.697303 < 5 bytes data, client => server
 19:27:00.697313 'PWD\r\n'
 19:27:00.697411 Received DATA (on stdin)
 19:27:00.697421 > 30 bytes data, server => client
 19:27:00.697431 '257 "/" is current directory\r\n'
 19:27:00.697486 < 6 bytes data, client => server
 19:27:00.697495 'EPSV\r\n'
 19:27:00.699632 Received DATA (on stdin)
 19:27:00.699643 > 39 bytes data, server => client
 19:27:00.699654 '229 Entering Passive Mode (|||41151|)\r\n'
 19:27:00.699771 < 8 bytes data, client => server
 19:27:00.699783 'TYPE I\r\n'
 19:27:00.699973 Received DATA (on stdin)
 19:27:00.699984 > 33 bytes data, server => client
 19:27:00.699994 '200 I modify TYPE as you wanted\r\n'
 19:27:00.700044 < 21 bytes data, client => server
 19:27:00.700054 'SIZE verifiedserver\r\n'
 19:27:00.700154 Received DATA (on stdin)
 19:27:00.700164 > 8 bytes data, server => client
 19:27:00.700174 '213 17\r\n'
 19:27:00.700220 < 21 bytes data, client => server
 19:27:00.700230 'RETR verifiedserver\r\n'
 19:27:00.700432 Received DATA (on stdin)
 19:27:00.700442 > 29 bytes data, server => client
 1cannot find sshd
cannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:35787/path/592 8 log/21/upload592 > log/21/stdout592 2> log/21/stderr592
9:27:00.700452 '150 Binary junk (17 bytes).\r\n'
 19:27:00.700927 Received DATA (on stdin)
 19:27:00.700939 > 28 bytes data, server => client
 19:27:00.700949 '226 File transfer complete\r\n'
 19:27:00.748134 < 6 bytes data, client => server
 19:27:00.748166 'QUIT\r\n'
 19:27:00.751581 Received DATA (on stdin)
 19:27:00.751599 > 18 bytes data, server => client
 19:27:00.751610 '221 bye bye baby\r\n'
 19:27:00.752772 ====> Client disconnect
 19:27:00.752992 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:01.699170 Running IPv4 version
 19:27:01.699236 Listening on port 41151
 19:27:01.699272 Wrote pid 112418 to log/5/server/ftp_sockdata.pid
 19:27:01.699413 Received PING (on stdin)
 19:27:01.699491 Received PORT (on stdin)
 19:27:01.699803 ====> Client connect
 19:27:01.700477 Received DATA (on stdin)
 19:27:01.700488 > 17 bytes data, server => client
 19:27:01.700498 'WE ROOLZ: 85245\r\n'
 19:27:01.700520 Received DISC (on stdin)
 19:27:01.700531 ====> Client forcibly disconnected
 19:27:01.700674 Received QUIT (on stdin)
 19:27:01.700684 quits
 19:27:01.700741 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 NODATACONN425
 REPLY EPRT 500 we don't like EPRT now
 Testnum 591
=== End of file server.cmd
=== Start of file upload591
 Moooooooooooo for 591
  upload this
=== End of file upload591
=== Start of file valgrind591
 ==112450== 
 ==112450== Process terminating with default action of signal 4 (SIGILL)
 ==112450==  Illegal opcode at address 0x51CC63F
 ==112450==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112450==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112450==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112450==    by 0x40041AF: main (first.c:264)
=== End of file valgrind591
test 0592 [FTP multi PORT and 421 on upload]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:35787/path/592 8 log/21/upload592 > log/21/stdout592 2> log/21/stderr592

 592: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 592
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:35787/path/592 8 log/21/upload592 > log/21/stdout592 2> log/21/stderr592
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:01.318721 ====> Client connect
 19:27:01.319003 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:01.322146 < "USER anonymous"
 19:27:01.322203 > "331 We are happy you popped in![CR][LF]"
 19:27:01.325560 < "PASS ftp@example.com"
 19:27:01.325612 > "230 Welcome you silly person[CR][LF]"
 19:27:01.325832 < "PWD"
 19:27:01.325879 > "257 "/" is current directory[CR][LF]"
 19:27:01.326079 < "EPSV"
 19:27:01.326107 ====> Passive DATA channel requested by client
 19:27:01.326123 DATA sockfilt for passive data channel starting...
 19:27:01.336997 DATA sockfilt for passive data channel started (pid 112534)
 19:27:01.337179 DATA sockfilt for passive data channel listens on port 42965
 19:27:01.337243 > "229 Entering Passive Mode (|||42965|)[CR][LF]"
 19:27:01.337267 Client has been notified that upcoming DATA connection is awaited on port 42965
 19:27:01.337609 Client connects to port 42965
 19:27:01.337641 ====> Client established passive DATA connection on port 42965
 19:27:01.337747 < "TYPE I"
 19:27:01.337789 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:01.338003 < "SIZE verifiedserver"
 19:27:01.338054 > "213 17[CR][LF]"
 19:27:01.338256 < "RETR verifiedserver"
 19:27:01.338303 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:01.338403 =====> Closing passive DATA connection...
 19:27:01.338425 Server disconnects passive DATA connection
 19:27:01.338688 Server disconnected passive DATA connection
 19:27:01.338718 DATA sockfilt for passive data channel quits (pid 112534)
 19:27:01.339015 DATA sockfilt for passive data channel quit (pid 112534)
 19:27:01.339043 =====> Closed passive DATA connection
 19:27:01.339072 > "226 File transfer complete[CR][LF]"
 19:27:01.382447 < "QUIT"
 19:27:01.382507 > "221 bye bye baby[CR][LF]"
 19:27:01.388757 MAIN sockfilt said DISC
 19:27:01.388821 ====> Client disconnected
 19:27:01.388909 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:00.924727 ====> Client connect
 19:27:00.928364 Received DATA (on stdin)
 19:27:00.928390 > 146 bytes data, server => client
 19:27:00.928400 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:00.928410 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:00.928418 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:00.928582 < 16 bytes data, client => server
 19:27:00.928598 'USER anonymous\r\n'
 19:27:00.931599 Received DATA (on stdin)
 19:27:00.931613 > 33 bytes data, server => client
 19:27:00.931622 '331 We are happy you popped in!\r\n'
 19:27:00.934790 < 22 bytes data, client => server
 19:27:00.934812 'PASS ftp@example.com\r\n'
 19:27:00.935011 Received DATA (on stdin)
 19:27:00.935026 > 30 bytes data, server => client
 19:27:00.935037 '230 Welcome you silly person\r\n'
 19:27:00.935108 < 5 bytes data, client => server
 19:27:00.935124 'PWD\r\n'
 19:27:00.935273 Received DATA (on stdin)
 19:27:00.935286 > 30 bytes data, server => client
 19:27:00.935296 '257 "/" is current directory\r\n'
 19:27:00.935368 < 6 bytes data, client => server
 19:27:00.935381 'EPSV\r\n'
 19:27:00.946671 Received DATA (on stdin)
 19:27:00.946689 > 39 bytes data, server => client
 19:27:00.946699 '229 Entering Passive Mode (|||42965|)\r\n'
 19:27:00.946914 < 8 bytes data, client => server
 19:27:00.946932 'TYPE I\r\n'
 19:27:00.947186 Received DATA (on stdin)
 19:27:00.947200 > 33 bytes data, server => client
 19:27:00.947210 '200 I modify TYPE as you wanted\r\n'
 19:27:00.947283 < 21 bytes data, client => server
 19:27:00.947297 'SIZE verifiedserver\r\n'
 19:27:00.947452 Received DATA (on stdin)
 19:27:00.947465 > 8 bytes data, server => client
 19:27:00.947474 '213 17\r\n'
 19:27:00.947540 < 21 bytes data, client => server
 19:27:00.947556 'RETR verifiedserver\r\n'
 19:27:00.947818 Received DATA (on stdin)
 19:27:00.947830 > 29 bytes data, server => client
 19:27:00.947840 '150 Binary junk (17 bytes).\r\n'
 19:27:00.948464 Received DATA (on stdin)
 19:27:00.948477 > 28 bytes data, server => client
 19:27:00.948487 '226 File transfer complete\r\n'
 19:27:00.991642 < 6 bytes data, client => server
 19:27:00.991666 'QUIT\r\n'
 19:27:00.991912 Received DATA (on stdin)
 19:27:00.991924 > 18 bytes data, server => client
 19:27:00.991934 '221 bye bye baby\r\n'
 19:27:00.998075 ====> Client disconnect
 19:27:00.998318 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:01.946145 Running IPv4 version
 19:27:01.946242 Listening on port 42965
 19:27:01.946288 Wrote pid 112534 to log/21/server/ftp_sockdata.pid
 19:27:01.946310 Received PING (on stdin)
 19:27:01.946452 Received PORT (on stdin)
 19:27:01.946952 ====> Client connect
 19:27:01.947902 Received DATA (on stdin)
 19:27:01.947917 > 17 bytes data, server => client
 19:27:01.947927 'WE ROOLZ: 84694\r\n'
 19:27:01.947955 Received DISC (on stdin)
 19:27:01.947967 ====> Client forcibly disconnected
 19:27:01.948122 Received QUIT (on stdin)
 19:27:01.948134 quits
 19:27:01.948211 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 NODATACONN421
 REPLY EPRT 500 we don't like EPRT now
 Testnum 592
=== End of file server.cmd
=== Start of file upload592
 Moooooooooooo for 592
  upload this
=== End of file upload592
=== Start of file valgrind592
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:40031/595 log/16/ip595 > log/16/stdout595 2> log/16/stderr595
cannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:44883/path/593 8 log/15/upload593 > log/15/stdout593 2> log/15/stderr593
==112566== 
 ==112566== Process terminating with default action of signal 4 (SIGILL)
 ==112566==  Illegal opcode at address 0x51CC63F
 ==112566==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112566==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112566==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112566==    by 0x40041AF: main (first.c:264)
=== End of file valgrind592
test 0595 [verify close callbacks with passive FTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:40031/595 log/16/ip595 > log/16/stdout595 2> log/16/stderr595

 595: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 595
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:40031/595 log/16/ip595 > log/16/stdout595 2> log/16/stderr595
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:01.367637 ====> Client connect
 19:27:01.367850 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:01.375567 < "USER anonymous"
 19:27:01.375618 > "331 We are happy you popped in![CR][LF]"
 19:27:01.375828 < "PASS ftp@example.com"
 19:27:01.375853 > "230 Welcome you silly person[CR][LF]"
 19:27:01.375996 < "PWD"
 19:27:01.376027 > "257 "/" is current directory[CR][LF]"
 19:27:01.376182 < "EPSV"
 19:27:01.376207 ====> Passive DATA channel requested by client
 19:27:01.376220 DATA sockfilt for passive data channel starting...
 19:27:01.382220 DATA sockfilt for passive data channel started (pid 112559)
 19:27:01.382354 DATA sockfilt for passive data channel listens on port 36481
 19:27:01.382404 > "229 Entering Passive Mode (|||36481|)[CR][LF]"
 19:27:01.382422 Client has been notified that upcoming DATA connection is awaited on port 36481
 19:27:01.382726 Client connects to port 36481
 19:27:01.382756 ====> Client established passive DATA connection on port 36481
 19:27:01.382846 < "TYPE I"
 19:27:01.382873 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:01.383027 < "SIZE verifiedserver"
 19:27:01.383064 > "213 17[CR][LF]"
 19:27:01.383209 < "RETR verifiedserver"
 19:27:01.383241 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:01.383337 =====> Closing passive DATA connection...
 19:27:01.383352 Server disconnects passive DATA connection
 19:27:01.383568 Server disconnected passive DATA connection
 19:27:01.383596 DATA sockfilt for passive data channel quits (pid 112559)
 19:27:01.383894 DATA sockfilt for passive data channel quit (pid 112559)
 19:27:01.383916 =====> Closed passive DATA connection
 19:27:01.383948 > "226 File transfer complete[CR][LF]"
 19:27:01.428985 < "QUIT"
 19:27:01.429042 > "221 bye bye baby[CR][LF]"
 19:27:01.430346 MAIN sockfilt said DISC
 19:27:01.430381 ====> Client disconnected
 19:27:01.430464 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:00.976899 ====> Client connect
 19:27:00.977265 Received DATA (on stdin)
 19:27:00.977283 > 146 bytes data, server => client
 19:27:00.977294 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:00.977305 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:00.977314 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:00.984740 < 16 bytes data, client => server
 19:27:00.984770 'USER anonymous\r\n'
 19:27:00.985018 Received DATA (on stdin)
 19:27:00.985029 > 33 bytes data, server => client
 19:27:00.985040 '331 We are happy you popped in!\r\n'
 19:27:00.985137 < 22 bytes data, client => server
 19:27:00.985148 'PASS ftp@example.com\r\n'
 19:27:00.985249 Received DATA (on stdin)
 19:27:00.985259 > 30 bytes data, server => client
 19:27:00.985268 '230 Welcome you silly person\r\n'
 19:27:00.985315 < 5 bytes data, client => server
 19:27:00.985325 'PWD\r\n'
 19:27:00.985423 Received DATA (on stdin)
 19:27:00.985433 > 30 bytes data, server => client
 19:27:00.985443 '257 "/" is current directory\r\n'
 19:27:00.985503 < 6 bytes data, client => server
 19:27:00.985512 'EPSV\r\n'
 19:27:00.991830 Received DATA (on stdin)
 19:27:00.991845 > 39 bytes data, server => client
 19:27:00.991857 '229 Entering Passive Mode (|||36481|)\r\n'
 19:27:00.992044 < 8 bytes data, client => server
 19:27:00.992058 'TYPE I\r\n'
 19:27:00.992273 Received DATA (on stdin)
 19:27:00.992283 > 33 bytes data, server => client
 19:27:00.992293 '200 I modify TYPE as you wanted\r\n'
 19:27:00.992344 < 21 bytes data, client => server
 19:27:00.992354 'SIZE verifiedserver\r\n'
 19:27:00.992462 Received DATA (on stdin)
 19:27:00.992472 > 8 bytes data, server => client
 19:27:00.992482 '213 17\r\n'
 19:27:00.992531 < 21 bytes data, client => server
 19:27:00.992540 'RETR verifiedserver\r\n'
 19:27:00.992752 Received DATA (on stdin)
 19:27:00.992763 > 29 bytes data, server => client
 19:27:00.992772 '150 Binary junk (17 bytes).\r\n'
 19:27:00.993347 Received DATA (on stdin)
 19:27:00.993359 > 28 bytes data, server => client
 19:27:00.993369 '226 File transfer complete\r\n'
 19:27:01.038191 < 6 bytes data, client => server
 19:27:01.038223 'QUIT\r\n'
 19:27:01.038455 Received DATA (on stdin)
 19:27:01.038466 > 18 bytes data, server => client
 19:27:01.038476 '221 bye bye baby\r\n'
 19:27:01.039703 ====> Client disconnect
 19:27:01.039873 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:01.989731 Running IPv4 version
 19:27:01.989823 Listening on port 36481
 19:27:01.989869 Wrote pid 112559 to log/16/server/ftp_sockdata.pid
 19:27:01.991544 Received PING (on stdin)
 19:27:01.991654 Received PORT (on stdin)
 19:27:01.992078 ====> Client connect
 19:27:01.992797 Received DATA (on stdin)
 19:27:01.992808 > 17 bytes data, server => client
 19:27:01.992822 'WE ROOLZ: 84702\r\n'
 19:27:01.992844 Received DISC (on stdin)
 19:27:01.992854 ====> Client forcibly disconnected
 19:27:01.993002 Received QUIT (on stdin)
 19:27:01.993013 quits
 19:27:01.993090 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 595
=== End of file server.cmd
=== Start of file valgrind595
 ==112587== 
 ==112587== Process terminating with default action of signal 4 (SIGILL)
 ==112587==  Illegal opcode at address 0x51CC63F
 ==112587==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112587==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112587==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112587==    by 0x40041AF: main (first.c:264)
=== End of file valgrind595
test 0593 [FTP multi PORT upload, no data conn and no transient neg. reply]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:44883/path/593 8 log/15/upload593 > log/15/stdout593 2> log/15/stderr593

 593: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 593
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:44883/path/593 8 log/15/upload593 > log/15/stdout593 2> log/15/stderr593
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:01.352408 ====> Client connect
 19:27:01.352625 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:40221/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596
CR][LF]"
 19:27:01.356288 < "USER anonymous"
 19:27:01.356334 > "331 We are happy you popped in![CR][LF]"
 19:27:01.356561 < "PASS ftp@example.com"
 19:27:01.356595 > "230 Welcome you silly person[CR][LF]"
 19:27:01.356770 < "PWD"
 19:27:01.356803 > "257 "/" is current directory[CR][LF]"
 19:27:01.356984 < "EPSV"
 19:27:01.357011 ====> Passive DATA channel requested by client
 19:27:01.357026 DATA sockfilt for passive data channel starting...
 19:27:01.360291 DATA sockfilt for passive data channel started (pid 112553)
 19:27:01.360426 DATA sockfilt for passive data channel listens on port 40289
 19:27:01.360481 > "229 Entering Passive Mode (|||40289|)[CR][LF]"
 19:27:01.360501 Client has been notified that upcoming DATA connection is awaited on port 40289
 19:27:01.360761 Client connects to port 40289
 19:27:01.360792 ====> Client established passive DATA connection on port 40289
 19:27:01.360923 < "TYPE I"
 19:27:01.360957 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:01.361136 < "SIZE verifiedserver"
 19:27:01.361177 > "213 17[CR][LF]"
 19:27:01.361353 < "RETR verifiedserver"
 19:27:01.361388 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:01.361483 =====> Closing passive DATA connection...
 19:27:01.361508 Server disconnects passive DATA connection
 19:27:01.361750 Server disconnected passive DATA connection
 19:27:01.361782 DATA sockfilt for passive data channel quits (pid 112553)
 19:27:01.362049 DATA sockfilt for passive data channel quit (pid 112553)
 19:27:01.362075 =====> Closed passive DATA connection
 19:27:01.362100 > "226 File transfer complete[CR][LF]"
 19:27:01.405653 < "QUIT"
 19:27:01.405714 > "221 bye bye baby[CR][LF]"
 19:27:01.407018 MAIN sockfilt said DISC
 19:27:01.407061 ====> Client disconnected
 19:27:01.407150 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:00.961640 ====> Client connect
 19:27:00.962294 Received DATA (on stdin)
 19:27:00.962317 > 146 bytes data, server => client
 19:27:00.962330 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:00.962341 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:00.962350 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:00.965500 < 16 bytes data, client => server
 19:27:00.965520 'USER anonymous\r\n'
 19:27:00.965745 Received DATA (on stdin)
 19:27:00.965759 > 33 bytes data, server => client
 19:27:00.965770 '331 We are happy you popped in!\r\n'
 19:27:00.965855 < 22 bytes data, client => server
 19:27:00.965868 'PASS ftp@example.com\r\n'
 19:27:00.965994 Received DATA (on stdin)
 19:27:00.966006 > 30 bytes data, server => client
 19:27:00.966017 '230 Welcome you silly person\r\n'
 19:27:00.966075 < 5 bytes data, client => server
 19:27:00.966086 'PWD\r\n'
 19:27:00.966198 Received DATA (on stdin)
 19:27:00.966209 > 30 bytes data, server => client
 19:27:00.966219 '257 "/" is current directory\r\n'
 19:27:00.966288 < 6 bytes data, client => server
 19:27:00.966300 'EPSV\r\n'
 19:27:00.969907 Received DATA (on stdin)
 19:27:00.969923 > 39 bytes data, server => client
 19:27:00.969935 '229 Entering Passive Mode (|||40289|)\r\n'
 19:27:00.970207 < 8 bytes data, client => server
 19:27:00.970219 'TYPE I\r\n'
 19:27:00.970354 Received DATA (on stdin)
 19:27:00.970366 > 33 bytes data, server => client
 19:27:00.970376 '200 I modify TYPE as you wanted\r\n'
 19:27:00.970436 < 21 bytes data, client => server
 19:27:00.970450 'SIZE verifiedserver\r\n'
 19:27:00.970575 Received DATA (on stdin)
 19:27:00.970588 > 8 bytes data, server => client
 19:27:00.970598 '213 17\r\n'
 19:27:00.970657 < 21 bytes data, client => server
 19:27:00.970670 'RETR verifiedserver\r\n'
 19:27:00.970907 Received DATA (on stdin)
 19:27:00.970919 > 29 bytes data, server => client
 19:27:00.970929 '150 Binary junk (17 bytes).\r\n'
 19:27:00.971494 Received DATA (on stdin)
 19:27:00.971505 > 28 bytes data, server => client
 19:27:00.971514 '226 File transfer complete\r\n'
 19:27:01.014864 < 6 bytes data, client => server
 19:27:01.014899 'QUIT\r\n'
 19:27:01.015130 Received DATA (on stdin)
 19:27:01.015147 > 18 bytes data, server => client
 19:27:01.015157 '221 bye bye baby\r\n'
 19:27:01.016362 ====> Client disconnect
 19:27:01.016561 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:01.969237 Running IPv4 version
 19:27:01.969412 Listening on port 40289
 19:27:01.969455 Wrote pid 112553 to log/15/server/ftp_sockdata.pid
 19:27:01.969623 Received PING (on stdin)
 19:27:01.969723 Received PORT (on stdin)
 19:27:01.970104 ====> Client connect
 19:27:01.970958 Received DATA (on stdin)
 19:27:01.970971 > 17 bytes data, server => client
 19:27:01.970981 'WE ROOLZ: 84744\r\n'
 19:27:01.971006 Received DISC (on stdin)
 19:27:01.971018 ====> Client forcibly disconnected
 19:27:01.971188 Received QUIT (on stdin)
 19:27:01.971200 quits
 19:27:01.971274 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 NODATACONN150
 REPLY EPRT 500 we don't like EPRT now
 Testnum 593
=== End of file server.cmd
=== Start of file upload593
 Moooooooooooo for 593
  upload this
=== End of file upload593
=== Start of file valgrind593
 ==112571== 
 ==112571== Process terminating with default action of signal 4 (SIGILL)
 ==112571==  Illegal opcode at address 0x51CC63F
 ==112571==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112571==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112571==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112571==    by 0x40041AF: main (first.c:264)
=== End of file valgrind593
test 0596 [verify close callbacks with active FTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:40221/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596

 596: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 596
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:40221/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:01.480386 ====> Client connect
 19:27:01.480627 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:01.480958 < "USER anonymous"
 19:27:01.481000 > "331 We are happy you popped in![CR][LF]"
 19:27:01.481207 < "PASS ftp@example.com"
 19:27:01.481243 > "230 Welcome you silly person[CR][LF]"
 19:27:01.481428 < "PWD"
 19:27:01.481465 > "257 "/" is current directory[CR][LF]"
 19:27:01.481651 < "EPSV"
 19:27:01.481679 ====> Passive DATA channel requested by client
 19:27:01.481695 DATA sockfilt for passive data channel starting...
 19:27:01.489080 DATA sockfilt for passive data channel started (pid 112612)
 19:27:01.492145 DATA sockfilt for passive data channel listens on port 42703
 19:27:01.492214 > "229 Entering Passive Mode (|||42703|)[CR][LF]"
 19:27:01.492232 Client has been notified that upcoming DATA connection is awaited on port 42703
 19:27:01.498756 Client connects to port 42703
 19:27:01.498819 ====> Client established passive DATA connection on port 42703
 19:27:01.498932 < "TYPE I"
 19:27:01.498987 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:01.499196 < "SIZE verifiedserver"
 19:27:01.499236 > "213 17[CR][LF]"
 19:27:01.499383 < "RETR verifiedserver"
 19:27:01.499411 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:01.499503 =====> Closing passive DATA connection...
 19:27:01.499518 Server disconnects passive DATA connection
 19:27:01.499634 Server disconnected passive DATA connection
 19:27:01.499651 DATA sockfilt for passive data channel quits (pid 112612)
 19:27:01.499918 DATA sockfcannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:33935/598 > log/6/stdout598 2> log/6/stderr598
ilt for passive data channel quit (pid 112612)
 19:27:01.499940 =====> Closed passive DATA connection
 19:27:01.499965 > "226 File transfer complete[CR][LF]"
 19:27:01.545673 < "QUIT"
 19:27:01.545734 > "221 bye bye baby[CR][LF]"
 19:27:01.547044 MAIN sockfilt said DISC
 19:27:01.547095 ====> Client disconnected
 19:27:01.547177 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:02.089665 ====> Client connect
 19:27:02.090072 Received DATA (on stdin)
 19:27:02.090089 > 146 bytes data, server => client
 19:27:02.090099 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:02.090108 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:02.090117 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:02.090208 < 16 bytes data, client => server
 19:27:02.090224 'USER anonymous\r\n'
 19:27:02.090427 Received DATA (on stdin)
 19:27:02.090439 > 33 bytes data, server => client
 19:27:02.090449 '331 We are happy you popped in!\r\n'
 19:27:02.090512 < 22 bytes data, client => server
 19:27:02.090527 'PASS ftp@example.com\r\n'
 19:27:02.090667 Received DATA (on stdin)
 19:27:02.090680 > 30 bytes data, server => client
 19:27:02.090690 '230 Welcome you silly person\r\n'
 19:27:02.090749 < 5 bytes data, client => server
 19:27:02.090763 'PWD\r\n'
 19:27:02.090888 Received DATA (on stdin)
 19:27:02.090900 > 30 bytes data, server => client
 19:27:02.090910 '257 "/" is current directory\r\n'
 19:27:02.090975 < 6 bytes data, client => server
 19:27:02.090988 'EPSV\r\n'
 19:27:02.104753 Received DATA (on stdin)
 19:27:02.104792 > 39 bytes data, server => client
 19:27:02.104804 '229 Entering Passive Mode (|||42703|)\r\n'
 19:27:02.105013 < 8 bytes data, client => server
 19:27:02.105032 'TYPE I\r\n'
 19:27:02.108416 Received DATA (on stdin)
 19:27:02.108432 > 33 bytes data, server => client
 19:27:02.108443 '200 I modify TYPE as you wanted\r\n'
 19:27:02.108532 < 21 bytes data, client => server
 19:27:02.108542 'SIZE verifiedserver\r\n'
 19:27:02.108660 Received DATA (on stdin)
 19:27:02.108670 > 8 bytes data, server => client
 19:27:02.108679 '213 17\r\n'
 19:27:02.108729 < 21 bytes data, client => server
 19:27:02.108738 'RETR verifiedserver\r\n'
 19:27:02.109389 Received DATA (on stdin)
 19:27:02.109402 > 29 bytes data, server => client
 19:27:02.109412 '150 Binary junk (17 bytes).\r\n'
 19:27:02.109434 Received DATA (on stdin)
 19:27:02.109443 > 28 bytes data, server => client
 19:27:02.109452 '226 File transfer complete\r\n'
 19:27:02.154899 < 6 bytes data, client => server
 19:27:02.154933 'QUIT\r\n'
 19:27:02.155194 Received DATA (on stdin)
 19:27:02.155209 > 18 bytes data, server => client
 19:27:02.155220 '221 bye bye baby\r\n'
 19:27:02.156414 ====> Client disconnect
 19:27:02.156624 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:01.096650 Running IPv4 version
 19:27:01.096753 Listening on port 42703
 19:27:01.096790 Wrote pid 112612 to log/1/server/ftp_sockdata.pid
 19:27:01.098424 Received PING (on stdin)
 19:27:01.101424 Received PORT (on stdin)
 19:27:01.108096 ====> Client connect
 19:27:01.108945 Received DATA (on stdin)
 19:27:01.108960 > 17 bytes data, server => client
 19:27:01.108969 'WE ROOLZ: 84935\r\n'
 19:27:01.108996 Received DISC (on stdin)
 19:27:01.109008 ====> Client forcibly disconnected
 19:27:01.109079 Received QUIT (on stdin)
 19:27:01.109088 quits
 19:27:01.109157 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 596
=== End of file server.cmd
=== Start of file valgrind596
 ==112687== 
 ==112687== Process terminating with default action of signal 4 (SIGILL)
 ==112687==  Illegal opcode at address 0x51CC63F
 ==112687==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112687==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112687==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112687==    by 0x40041AF: main (first.c:264)
=== End of file valgrind596
test 0598 [curl_easy_reset with referer and other strings set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:33935/598 > log/6/stdout598 2> log/6/stderr598

 598: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 598
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:33935/598 > log/6/stdout598 2> log/6/stderr598
=== End of file commands.log
=== Start of file http_server.log
 19:27:01.294860 ====> Client connect
 19:27:01.294894 accept_connection 3 returned 4
 19:27:01.294916 Read 93 bytes
 19:27:01.294925 Process 93 bytes request
 19:27:01.294937 Got request: GET /verifiedserver HTTP/1.1
 19:27:01.294946 Are-we-friendly question received
 19:27:01.294973 Wrote request (93 bytes) input to log/6/server.input
 19:27:01.294990 Identifying ourselves as friends
 19:27:01.295065 Response sent (56 bytes) and written to log/6/server.response
 19:27:01.295076 special request received, no persistency
 19:27:01.295085 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 41640 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 598
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind598
 ==112838== 
 ==112838== Process terminating with default action of signal 4 (SIGILL)
 ==112838==  Illegal opcode at address 0x51CC63F
 ==112838==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112838==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112838==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112838==    by 0x40041AF: main (first.c:264)
=== End of file valgrind598
test 0587 [HTTP multi-part formpost with aborted read callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:40913/587 > log/10/stdout587 2> log/10/stderr587

libtests returned 132, when expecting 42
 587: exit FAILED
== Contents of files in the log/10/ directory after test 587
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:40913/587 > log/10/stdout587 2> log/10/stderr587
=== End of file commands.log
=== Start of file http_server.log
 19:27:00.146481 ====> Client connect
 19:27:00.146516 accept_connection 3 returned 4
 19:27:00.146539 Read 93 bytes
 19:27:00.146549 Process 93 bytes request
 19:27:00.146563 Got request: GET /verifiedserver HTTP/1.1
 19:27:00.146572 Are-we-friendly question received
 19:27:00.146599 Wrote request (93 bytes) input to log/10/server.input
 19:27:00.146613 Identifying ourselves as friends
 19:27:00.146676 Response sent (56 bytes) and written to log/10/server.response
 19:27:00.146685 special request received, no persistency
 19:27:00.146693 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connecannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:43739/599 log/18/ip599 > log/18/stdout599 2> log/18/stderr599
ction to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 47096 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 587
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind587
 ==111899== 
 ==111899== Process terminating with default action of signal 4 (SIGILL)
 ==111899==  Illegal opcode at address 0x51CC63F
 ==111899==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==111899==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==111899==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==111899==    by 0x40041AF: main (first.c:264)
=== End of file valgrind587
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:38555 > log/19/stdout597 2> log/19/stderr597
test 0599 [HTTP GET with progress callback and redirects changing content sizes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:43739/599 log/18/ip599 > log/18/stdout599 2> log/18/stderr599

 599: data FAILED:
--- log/18/check-expected	2026-10-15 19:27:02.784034841 +0000
+++ log/18/check-generated	2026-10-15 19:27:02.781836036 +0000
@@ -1,16 +0,0 @@
-HTTP/1.1 302 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Location: 5990001[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/html[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Transfer-Encoding: chunked[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/html[CR][LF]
-[CR][LF]
-this data is slightly larger than the first piece[LF]
== Contents of files in the log/18/ directory after test 599
=== Start of file check-expected
 HTTP/1.1 302 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Location: 5990001[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/html[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Transfer-Encoding: chunked[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/html[CR][LF]
 [CR][LF]
 this data is slightly larger than the first piece[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:43739/599 log/18/ip599 > log/18/stdout599 2> log/18/stderr599
=== End of file commands.log
=== Start of file http_server.log
 19:27:02.264842 ====> Client connect
 19:27:02.264879 accept_connection 3 returned 4
 19:27:02.264901 Read 93 bytes
 19:27:02.264911 Process 93 bytes request
 19:27:02.264924 Got request: GET /verifiedserver HTTP/1.1
 19:27:02.264932 Are-we-friendly question received
 19:27:02.264962 Wrote request (93 bytes) input to log/18/server.input
 19:27:02.264979 Identifying ourselves as friends
 19:27:02.265052 Response sent (56 bytes) and written to log/18/server.response
 19:27:02.265064 special request received, no persistency
 19:27:02.265072 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 58420 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 599
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind599
 ==112807== 
 ==112807== Process terminating with default action of signal 4 (SIGILL)
 ==112807==  Illegal opcode at address 0x51CC63F
 ==112807==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112807==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112807==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112807==    by 0x40041AF: main (first.c:264)
=== End of file valgrind599
test 0597 [FTP connect only option]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:38555 > log/19/stdout597 2> log/19/stderr597

 597: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 597
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:38555 > log/19/stdout597 2> log/19/stderr597
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:01.641456 ====> Client connect
 19:27:01.641661 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:01.641967 < "USER anonymous"
 19:27:01.642027 > "331 We are happy you popped in![CR][LF]"
 19:27:01.642340 < "PASS ftp@example.com"
 19:27:01.642372 > "230 Welcome you silly person[CR][LF]"
 19:27:01.642525 < "PWD"
 19:27:01.642558 > "257 "/" is current directory[CR][LF]"
 19:27:01.642713 < "EPSV"
 19:27:01.642737 ====> Passive DATA channel requested by client
 19:27:01.642751 DATA sockfilt for passive data channel starting...
 19:27:01.646945 DATA sockfilt for passive data channel started (pid 112775)
 19:27:01.647079 DATA sockfilt for passive data channel listens on port 42443
 19:27:01.647132 > "229 Entering Passive Mode (|||42443|)[CR][LF]"
 19:27:01.647157 Client has been notified that upcoming DATA connection is awaited on port 42443
 19:27:01.647459 Client connects to port 42443
 19:27:01.647492 ====> Client established passive DATA connection on port 42443
 19:27:01.647582 < "TYPE I"
 19:27:01.647620 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:01.647859 < "SIZE verifiedserver"
 19:27:01.647907 > "213 17[CR][LF]"
 19:27:01.648102 < "RETR verifiedserver"
 19:27:01.648148 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:01.648241 =====> Closing passive DATA connection...
 19:27:01.648262 Server disconnects passive DATA connection
 19:27:01.648541 Server disconnected passive DATA connection
 19:27:01.648569 DATA sockfilt for passive data channel quits (pid 112775)
 19:27:01.648817 DATA sockfilt for passive data channel quit (pid 112775)
 19:27:01.648845 =====> Closed passive DATA connection
 19:27:01.648929 > "226 File transfer complete[CR][LF]"
 19:27:01.696732 < "QUIT"
 19:27:01.696795 > "221 bye bye baby[CR][LF]"
 19:27:01.699920 MAIN sockfilt said DISC
 19:27:01.699967 ====> Client disconnected
 19:27:01.700050 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:01.250788 ====> Client connect
 19:27:01.251136 Received DATA (on stdin)
 19:27:01.251153 > 146 bytes data, server => client
 19:27:01.251165 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:01.251175 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:01.251184 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:01.251270 < 16 bytes data, client => server
 19:27:01.251285 'USER anonymous\r\n'
 19:27:01.251603 Received DATA (on stdin)
 19:27:01.251616 > 33 bytes data, server => client
 19:27:01.251626 '331 We are happy you popped in!\r\n'
 19:27:01.251694 < 22 bytes data, client => server
 19:27:01.251706 'PASS ftp@example.com\r\n'
 19:27:01.251830 Received DATA (on stdin)
 19:27:01.251840 > 30 bytes data, server => client
 19:27:01.251849 '230 Welcome you silly person\r\n'
 19:27:01.251897 < 5 bytes data, client => server
 19:27:01.251906 'PWD\r\n'
 19:27:01.252010 Received DATA (on stdin)
 19:27:01.252020 > 30 bytes data, server => client
 19:27:01.252029 '257 "/" is current directory\r\n'
 19:27:01.252086 < 6 bytes data, client => server
 19:27:01.252096 'EPSV\r\n'
 19:27:01.256625 Received DATA (on stdin)
 19:27:01.256641 > 39 bytes data, server => client
 19:27:01.256652 '229 Entering Passive Mode (|||42443|)\r\n'
 19:27:01.256825 < 8 bytes data, client => server
 19:27:01.256843 'TYPE I\r\n'
 19:27:01.257081 Received DATA (on stdin)
 19:27:01.257095 > 33 bytes data, server => client
 cannot find sshd
cannot find sshd
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:35989/643 > log/22/stdout643 2> log/22/stderr643
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind632 ../src/curl -q --output log/24/curl632.out  --include --trace-ascii log/24/trace632 --trace-time --hostpubmd5 00 --key log/24/server/curl_client_key --pubkey log/24/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/startdir/src/build-curl/tests/log/24/irrelevant-file --insecure > log/24/stdout632 2> log/24/stderr632
19:27:01.257105 '200 I modify TYPE as you wanted\r\n'
 19:27:01.257164 < 21 bytes data, client => server
 19:27:01.257176 'SIZE verifiedserver\r\n'
 19:27:01.257368 Received DATA (on stdin)
 19:27:01.257381 > 8 bytes data, server => client
 19:27:01.257391 '213 17\r\n'
 19:27:01.257455 < 21 bytes data, client => server
 19:27:01.257470 'RETR verifiedserver\r\n'
 19:27:01.257722 Received DATA (on stdin)
 19:27:01.257734 > 29 bytes data, server => client
 19:27:01.257745 '150 Binary junk (17 bytes).\r\n'
 19:27:01.258311 Received DATA (on stdin)
 19:27:01.258323 > 28 bytes data, server => client
 19:27:01.258340 '226 File transfer complete\r\n'
 19:27:01.304892 < 6 bytes data, client => server
 19:27:01.304915 'QUIT\r\n'
 19:27:01.308192 Received DATA (on stdin)
 19:27:01.308218 > 18 bytes data, server => client
 19:27:01.308228 '221 bye bye baby\r\n'
 19:27:01.309318 ====> Client disconnect
 19:27:01.309525 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:01.256062 Running IPv4 version
 19:27:01.256133 Listening on port 42443
 19:27:01.256176 Wrote pid 112775 to log/19/server/ftp_sockdata.pid
 19:27:01.256333 Received PING (on stdin)
 19:27:01.256436 Received PORT (on stdin)
 19:27:01.256865 ====> Client connect
 19:27:01.257812 Received DATA (on stdin)
 19:27:01.257833 > 17 bytes data, server => client
 19:27:01.257843 'WE ROOLZ: 84587\r\n'
 19:27:01.257916 Received DISC (on stdin)
 19:27:01.257934 ====> Client forcibly disconnected
 19:27:01.258034 Received QUIT (on stdin)
 19:27:01.258046 quits
 19:27:01.258127 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 597
=== End of file server.cmd
=== Start of file valgrind597
 ==112841== 
 ==112841== Process terminating with default action of signal 4 (SIGILL)
 ==112841==  Illegal opcode at address 0x51CC63F
 ==112841==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==112841==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==112841==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==112841==    by 0x40041AF: main (first.c:264)
=== End of file valgrind597
Hmmm, the tests are taking a while to finish. Here is the status:
runtests.pl internal state:
24 busy test runner(s) of 24
Runner 1 (id 78958) running test 617 in state 3
Runner 2 (id 78959) running test 606 in state 3
Runner 3 (id 78960) running test 612 in state 3
Runner 4 (id 78961) running test 602 in state 3
Runner 5 (id 78962) running test 613 in state 3
Runner 6 (id 78963) running test 618 in state 3
Runner 7 (id 78964) running test 608 in state 3
Runner 8 (id 78965) running test 601 in state 3
Runner 9 (id 78966) running test 611 in state 3
Runner 10 (id 78967) running test 619 in state 3
Runner 11 (id 78968) running test 609 in state 3
Runner 12 (id 78969) running test 607 in state 3
Runner 13 (id 78970) running test 604 in state 3
Runner 14 (id 78971) running test 600 in state 3
Runner 15 (id 78972) running test 616 in state 3
Runner 16 (id 78973) running test 615 in state 3
Runner 17 (id 78974) running test 610 in state 3
Runner 18 (id 78975) running test 620 in state 3
Runner 19 (id 78976) running test 621 in state 3
Runner 20 (id 78977) running test 605 in state 3
Runner 21 (id 78978) running test 614 in state 3
Runner 22 (id 78979) running test 583 in state 3
Runner 23 (id 78980) running test 603 in state 3
Runner 24 (id 78981) running test 582 in state 3
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/22/server/ssh_server.pid" --logdir "log/22" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 37479
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 37479
test 0583 SKIPPED: failed starting SSH server
test 0622 SKIPPED: failed starting SSH server
test 0623 SKIPPED: failed starting SSH server
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/24/server/ssh_server.pid" --logdir "log/24" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 39499
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 39499
test 0643 [HTTP multi-part mimepost using read callback for the file part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:35989/643 > log/22/stdout643 2> log/22/stderr643

 643: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 643
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:35989/643 > log/22/stdout643 2> log/22/stderr643
=== End of file commands.log
=== Start of file http_server.log
 19:27:15.965114 ====> Client connect
 19:27:15.965157 accept_connection 3 returned 4
 19:27:15.965184 Read 93 bytes
 19:27:15.965194 Process 93 bytes request
 19:27:15.965208 Got request: GET /verifiedserver HTTP/1.1
 19:27:15.965217 Are-we-friendly question received
 19:27:15.965257 Wrote request (93 bytes) input to log/22/server.input
 19:27:15.965275 Identifying ourselves as friends
 19:27:15.965356 Response sent (56 bytes) and written to log/22/server.response
 19:27:15.965367 special request received, no persistency
 19:27:15.965375 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 44688 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 643
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind643
 ==113071== 
 ==113071== Process terminating with default action of signal 4 (SIGILL)
 ==113071==  Illegal opcode at address 0x51CC63F
 ==113071==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113071==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113071==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113071==    by 0x40041AF: main (first.c:264)
=== End of file valgrind643
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/14/server/ssh_server.pid" --logdir "log/14" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 39257
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 39257
test 0632 [SFTP syntactically invalid host key]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind632 ../src/curl -q --output log/24/curl632.out  --include --trace-ascii log/24/trace632 --trace-time --hostpubmd5 00 --key log/24/server/curl_client_key --pubkey log/24/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/startdir/src/build-curl/tests/log/24/irrelevant-file --insecure > log/24/stdout632 2> log/24/stderr632

curl returned 132, when expecting 2
 632: exit FAILED
== Contents of files in the log/24/ directory after test 632
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind632 .CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:35989/645 > log/22/stdout645 2> log/22/stderr645
./src/curl -q --output log/24/curl632.out  --include --trace-ascii log/24/trace632 --trace-time --hostpubmd5 00 --key log/24/server/curl_client_key --pubkey log/24/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/startdir/src/build-curl/tests/log/24/irrelevant-file --insecure > log/24/stdout632 2> log/24/stderr632
=== End of file commands.log
=== Start of file server.cmd
 Testnum 632
=== End of file server.cmd
=== Start of file valgrind632
 ==113024== 
 ==113024== Process terminating with default action of signal 4 (SIGILL)
 ==113024==  Illegal opcode at address 0x492B75F
 ==113024==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==113024==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==113024==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==113024==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==113024==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==113024==    by 0x49908EB: curl_version_info (version.c:600)
 ==113024==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==113024==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==113024==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==113024==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind632
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/8/server/ssh_server.pid" --logdir "log/8" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 34251
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 34251
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/4/server/ssh_server.pid" --logdir "log/4" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 37217
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 37217
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/23/server/ssh_server.pid" --logdir "log/23" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 33381
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 33381
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/13/server/ssh_server.pid" --logdir "log/13" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 36203
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 36203
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/20/server/ssh_server.pid" --logdir "log/20" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 37937
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 37937
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/2/server/ssh_server.pid" --logdir "log/2" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 33443
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 33443
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/7/server/ssh_server.pid" --logdir "log/7" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 37031
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 37031
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/12/server/ssh_server.pid" --logdir "log/12" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 43257
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 43257
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/11/server/ssh_server.pid" --logdir "log/11" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 35639
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 35639
test 0645 [HTTP multi-part chunked mimepost using read callback for the file part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:35989/645 > log/22/stdout645 2> log/22/stderr645

 645: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 645
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:35989/645 > log/22/stdout645 2> log/22/stderr645
=== End of file commands.log
=== Start of file http_server.log
 19:27:17.001596 ====> Client connect
 19:27:17.001636 accept_connection 3 returned 4
 19:27:17.001660 Read 93 bytes
 19:27:17.001671 Process 93 bytes request
 19:27:17.001684 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.001693 Are-we-friendly question received
 19:27:17.001723 Wrote request (93 bytes) input to log/22/server.input
 19:27:17.001743 Identifying ourselves as friends
 19:27:17.001818 Response sent (56 bytes) and written to log/22/server.response
 19:27:17.001831 special request received, no persistency
 19:27:17.001840 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 44692 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 645
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind645
 ==113157== 
 ==113157== Process terminating with default action of signal 4 (SIGILL)
 ==113157==  Illegal opcode at address 0x51CC63F
 ==113157==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113157==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113157==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113157==    by 0x40041AF: main (first.c:264)
=== End of file valgrind645
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/17/server/ssh_server.pid" --logdir "log/17" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 35671
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 35671
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/9/server/ssh_server.pid" --logdir "log/9" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 36905
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 36905
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/3/server/ssh_server.pid" --logdir "log/3" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 41999
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 41999
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/5/server/ssh_server.pid" --logdir "log/5" --ipv4 --addr "127.0.0.1" --user "builduser" --kRUN: Process with pid 110886 signalled to die
RUN: Process with pid 110886 gracefully died
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:44711/650 log/23/test650.filedata <log/23/stdin-for-650 > log/23/stdout650 2> log/23/stderr650
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind657 ./libtest/libtests lib567 rtsp://127.0.0.1:36439/657 > log/7/stdout657 2> log/7/stderr657
eyalgo rsa --sshport 34951
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 34951
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/21/server/ssh_server.pid" --logdir "log/21" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 35457
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 35457
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/16/server/ssh_server.pid" --logdir "log/16" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 36495
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 36495
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/1/server/ssh_server.pid" --logdir "log/1" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 44201
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 44201
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/6/server/ssh_server.pid" --logdir "log/6" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 44567
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 44567
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/10/server/ssh_server.pid" --logdir "log/10" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 45253
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 45253
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/15/server/ssh_server.pid" --logdir "log/15" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 46841
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 46841
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/19/server/ssh_server.pid" --logdir "log/19" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 42395
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 42395
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/sshserver.pl --verbose --pidfile "log/18/server/ssh_server.pid" --logdir "log/18" --ipv4 --addr "127.0.0.1" --user "builduser" --keyalgo rsa --sshport 35839
startnew: child process has died, server might start up
RUN: failed to start the SSH server on 35839
test 0650 [HTTP formpost using form API - with redirect and re-POST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:44711/650 log/23/test650.filedata <log/23/stdin-for-650 > log/23/stdout650 2> log/23/stderr650

 650: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 650
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:44711/650 log/23/test650.filedata <log/23/stdin-for-650 > log/23/stdout650 2> log/23/stderr650
=== End of file commands.log
=== Start of file http_server.log
 19:27:17.583605 ====> Client connect
 19:27:17.583645 accept_connection 3 returned 4
 19:27:17.583671 Read 93 bytes
 19:27:17.583683 Process 93 bytes request
 19:27:17.583697 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.583706 Are-we-friendly question received
 19:27:17.583733 Wrote request (93 bytes) input to log/23/server.input
 19:27:17.583751 Identifying ourselves as friends
 19:27:17.583819 Response sent (56 bytes) and written to log/23/server.response
 19:27:17.583832 special request received, no persistency
 19:27:17.583841 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 43432 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 650
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file stdin-for-650
  Some data from stdin
=== End of file stdin-for-650
=== Start of file test650.filedata
 This is data from a file.
=== End of file test650.filedata
=== Start of file valgrind650
 ==113228== 
 ==113228== Process terminating with default action of signal 4 (SIGILL)
 ==113228==  Illegal opcode at address 0x51CC63F
 ==113228==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113228==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113228==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113228==    by 0x40041AF: main (first.c:264)
=== End of file valgrind650
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:40921/654 log/12/file654.txt > log/12/stdout654 2> log/12/stderr654
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:38821/651 log/13/test651.filedata <log/13/stdin-for-651 > log/13/stdout651 2> log/13/stderr651
test 0657 [RTSP OPTIONS response with a body]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind657 ./libtest/libtests lib567 rtsp://127.0.0.1:36439/657 > log/7/stdout657 2> log/7/stderr657

 657: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:27:19.441065599 +0000
+++ log/7/check-generated	2026-10-15 19:27:19.435640882 +0000
@@ -1,7 +0,0 @@
-RTSP/1.0 200 OK[LF]
-Server: RTSPD/libcurl-test[LF]
-CSeq: 1[LF]
-Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE[LF]
-Content-Length: 18[LF]
-[LF]
-No-More: sessions[LF]
== Contents of files in the log/7/ directory after test 657
=== Start of file check-expected
 RTSP/1.0 200 OK[LF]
 Server: RTSPD/libcurl-test[LF]
 CSeq: 1[LF]
 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE[LF]
 Content-Length: 18[LF]
 [LF]
 No-More: sessions[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind657 ./libtest/libtests lib567 rtsp://127.0.0.1:36439/657 > log/7/stdout657 2> log/7/stderr657
=== End of file commands.log
=== Start of file rtsp_server.log
 19:27:17.894778 ====> Client connect
 19:27:17.894820 Read 93 bytes
 19:27:17.894832 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1
 Host: 127.0.0.1:36439
 User-Agent: curl/8.23.0
 Accept: */*
 ]
 19:27:17.894856 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.894865 Are-we-friendly question received
 19:27:17.894889 Wrote request (93 bytes) input to log/7/server.input
 19:27:17.894905 Send response number -2 part 0
 19:27:17.894913 Identifying ourselves as friends
 19:27:17.894961 Sent off 69 bytes
 19:27:17.894976 Response sent (69 bytes) and written to log/7/server.response
 19:27:17.894984 special request received, no persistency
 19:27:17.894991 ====> Client disconnect
=== End of file rtsp_server.log
=== Start of file rtsp_verify.log
 *   Trying 127.0.0.1:36439...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36439) from 127.0.0.1 port 47152 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36439
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 30
 < 
 { [30 bytes data]
 * Connection #0 to host 127.0.0.1:36439 left intact
=== End of file rtsp_verify.log
=== Start of file rtsp_verify.out
 RTSP_SERVER WE ROOLZ: 111137
=== End of file rtsp_verify.out
=== Start of file server.cmd
 Testnum 657
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 30
 RTSP_SERVER WE ROOLZ: 111137
=== End of file server.response
=== Start of file valgrind657
 ==113478== 
 ==113478== Process terminating with default action of signal 4 (SIGILL)
 ==113478==  Illegal opcode at address 0x51CC63F
 ==113478==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113478==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113478==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113478==    by 0x40041AF: main (first.c:264)
=== End of file valgrind657
test 0654 [HTTP duplicate easy handle with mime data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:40921/654 log/12/file654.txt > log/12/stdout654 2> log/12/stderr654

 654: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 654
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:40921/654 log/12/file654.txt > log/12/stdout654 2> log/12/stderr654
=== End of file commands.log
=== Start of file file654.txt
 This is data from a file
=== End of file file654.txt
=== Start of file http_server.log
 19:27:17.821466 ====> Client connect
 19:27:17.821513 accept_connection 3 returned 4
 19:27:17.821542 Read 93 bytes
 19:27:17.821553 Process 93 bytes request
 19:27:17.821567 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.821576 Are-we-friendly question received
 19:27:17.821608 Wrote request (93 bytes) input to log/12/server.input
 19:27:17.821627 Identifying ourselves as friends
 19:27:17.821726 Response sent (56 bytes) and written to log/12/server.response
 19:27:17.821739 special request received, no persistency
 19:27:17.821748 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 57520 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 654
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind654
 ==113399== 
 ==113399== Process terminating with default action of signal 4 (SIGILL)
 ==113399==  Illegal opcode at address 0x51CC63F
 ==113399==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113399==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113399==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113399==    by 0x40041AF: main (first.c:264)
=== End of file valgrind654
test 0651 [curl_formadd with huge COPYCONTENTS]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:38821/651 log/13/test651.filedata <log/13/stdin-for-651 > log/13/stdout651 2> log/13/stderr651

 651: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 651
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:38821/651 log/13/test651.filedata <log/13/stdin-for-651 > log/13/stdout651 2> log/13/stderr651
=== End of file commands.log
=== Start of file http_server.log
 19:27:17.704064 ====> Client connect
 19:27:17.704101 accept_connection 3 returned 4
 19:27:17.704126 Read 93 bytes
 19:27:17.704137 Process 93 bytes request
 19:27:17.704150 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.704160 Are-we-friendly question received
 19:27:17.704190 Wrote request (93 bytes) input to log/13/server.input
 19:27:17.704209 Identifying ourselves as friends
 19:27:17.704279 Response sent (56 bytes) and written to log/13/server.response
 19:27:17.704292 special request received, no persistency
 19:27:17.704300 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 60788 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== StaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:34531/653 > log/2/stdout653 2> log/2/stderr653
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind655 ./libtest/libtests lib655 http://failthis/655 http://127.0.0.1:40989/655 > log/11/stdout655 2> log/11/stderr655
rt of file server.cmd
 Testnum 651
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file stdin-for-651
  Some data from stdin
=== End of file stdin-for-651
=== Start of file test651.filedata
 This is data from a file.
=== End of file test651.filedata
=== Start of file valgrind651
 ==113274== 
 ==113274== Process terminating with default action of signal 4 (SIGILL)
 ==113274==  Illegal opcode at address 0x51CC63F
 ==113274==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113274==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113274==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113274==    by 0x40041AF: main (first.c:264)
=== End of file valgrind651
test 0653 [Reuse of handle after altering mime data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:34531/653 > log/2/stdout653 2> log/2/stderr653

 653: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 653
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:34531/653 > log/2/stdout653 2> log/2/stderr653
=== End of file commands.log
=== Start of file http_server.log
 19:27:18.804808 ====> Client connect
 19:27:18.804852 accept_connection 3 returned 4
 19:27:18.804879 Read 93 bytes
 19:27:18.804890 Process 93 bytes request
 19:27:18.804904 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.804913 Are-we-friendly question received
 19:27:18.804943 Wrote request (93 bytes) input to log/2/server.input
 19:27:18.804963 Identifying ourselves as friends
 19:27:18.805051 Response sent (56 bytes) and written to log/2/server.response
 19:27:18.805065 special request received, no persistency
 19:27:18.805076 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 53414 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 653
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind653
 ==113354== 
 ==113354== Process terminating with default action of signal 4 (SIGILL)
 ==113354==  Illegal opcode at address 0x51CC63F
 ==113354==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113354==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113354==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113354==    by 0x40041AF: main (first.c:264)
=== End of file valgrind653
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:35993 > log/17/stdout659 2> log/17/stderr659
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:35989/658 > log/22/stdout658 2> log/22/stderr658
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:42249/ > log/3/stdout661 2> log/3/stderr661
test 0655 [resolver start callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind655 ./libtest/libtests lib655 http://failthis/655 http://127.0.0.1:40989/655 > log/11/stdout655 2> log/11/stderr655

 655: data FAILED:
--- log/11/check-expected	2026-10-15 19:27:19.614301585 +0000
+++ log/11/check-generated	2026-10-15 19:27:19.609001210 +0000
@@ -1 +0,0 @@
-hello[LF]
== Contents of files in the log/11/ directory after test 655
=== Start of file check-expected
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind655 ./libtest/libtests lib655 http://failthis/655 http://127.0.0.1:40989/655 > log/11/stdout655 2> log/11/stderr655
=== End of file commands.log
=== Start of file http_server.log
 19:27:17.820049 ====> Client connect
 19:27:17.820086 accept_connection 3 returned 4
 19:27:17.820108 Read 93 bytes
 19:27:17.820118 Process 93 bytes request
 19:27:17.820131 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.820140 Are-we-friendly question received
 19:27:17.820167 Wrote request (93 bytes) input to log/11/server.input
 19:27:17.820184 Identifying ourselves as friends
 19:27:17.820250 Response sent (56 bytes) and written to log/11/server.response
 19:27:17.820260 special request received, no persistency
 19:27:17.820268 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 38482 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 655
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind655
 ==113361== 
 ==113361== Process terminating with default action of signal 4 (SIGILL)
 ==113361==  Illegal opcode at address 0x51CC63F
 ==113361==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113361==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113361==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113361==    by 0x40041AF: main (first.c:264)
=== End of file valgrind655
test 0659 [CURLOPT_CURLU without the path set - over proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:35993 > log/17/stdout659 2> log/17/stderr659

 659: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 659
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:35993 > log/17/stdout659 2> log/17/stderr659
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.018104 ====> Client connect
 19:27:19.018144 accept_connection 3 returned 4
 19:27:19.018169 Read 93 bytes
 19:27:19.018179 Process 93 bytes request
 19:27:19.018192 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.018200 Are-we-friendly question received
 19:27:19.018227 Wrote request (93 bytes) input to log/17/server.input
 19:27:19.018244 Identifying ourselves as friends
 19:27:19.018329 Response sent (56 bytes) and written to log/17/server.response
 19:27:19.018340 special request received, no persistency
 19:27:19.018349 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 50256 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 659
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind659
 ==113641== 
 ==113641== Process terminating with default action of signal 4 (SIGILL)
 ==113641==  Illegal opcode at address 0x51CC63F
 ==113641==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113641==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113641==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113641==    by 0x40041AF: main (first.c:264)
=== End of file valgrind659
test 0658 [Pass URL to libcurl with CURLOPT_CURLU]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:35989/658 > log/22/stdout658 2> log/22/stderr658

 658: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 658
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:35989/658 > log/22/stdout658 2> log/22/stderr658
=== End of file commands.log
=== Start of file http_server.log
 19:27:17.914782 ====> Client connect
 19:27:17.914827 accept_connection 3 returned 4
 19:27:17.914851 Read 93 bytes
 19:27:17.914861 Process 93 bytes request
 19:27:17.914874 Got request: GET /verifiedserver HTTP/1.1
 19:27:17.914883 Are-we-friendly question received
 19:27:17.914912 Wrote request (93 bytes) input to log/22/server.input
 19:27:17.914929 Identifying ourselves as friends
 19:27:17.915018 Response sent (56 bytes) and written to log/22/server.response
 19:27:17.915030 special request received, no persistency
 19:27:17.915039 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 44708 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 658
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind658
 ==113503== 
 ==113503== Process terminating with default action of signal 4 (SIGILL)
 ==113503==  Illegal opcode at address 0x51CC63F
 ==113503==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113503==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113503==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113503==    by 0x40041AF: main (first.c:264)
=== End of file valgrind658
test 0661 [Avoid redundant CWDs]
../libtool --mode=execute /usr/bin/valgrind --tool=meCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:33935/668 log/6/file668.txt > log/6/stdout668 2> log/6/stderr668
mcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:42249/ > log/3/stdout661 2> log/3/stderr661

 661: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 661
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:42249/ > log/3/stdout661 2> log/3/stderr661
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:18.470418 ====> Client connect
 19:27:18.470636 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:18.470951 < "USER anonymous"
 19:27:18.470992 > "331 We are happy you popped in![CR][LF]"
 19:27:18.471189 < "PASS ftp@example.com"
 19:27:18.471222 > "230 Welcome you silly person[CR][LF]"
 19:27:18.471384 < "PWD"
 19:27:18.471412 > "257 "/" is current directory[CR][LF]"
 19:27:18.471577 < "EPSV"
 19:27:18.471607 ====> Passive DATA channel requested by client
 19:27:18.471623 DATA sockfilt for passive data channel starting...
 19:27:18.476886 DATA sockfilt for passive data channel started (pid 113702)
 19:27:18.477015 DATA sockfilt for passive data channel listens on port 43759
 19:27:18.477058 > "229 Entering Passive Mode (|||43759|)[CR][LF]"
 19:27:18.477078 Client has been notified that upcoming DATA connection is awaited on port 43759
 19:27:18.477378 Client connects to port 43759
 19:27:18.477413 ====> Client established passive DATA connection on port 43759
 19:27:18.477511 < "TYPE I"
 19:27:18.477544 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:18.477711 < "SIZE verifiedserver"
 19:27:18.477747 > "213 17[CR][LF]"
 19:27:18.477890 < "RETR verifiedserver"
 19:27:18.477922 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:18.478008 =====> Closing passive DATA connection...
 19:27:18.478024 Server disconnects passive DATA connection
 19:27:18.478245 Server disconnected passive DATA connection
 19:27:18.478271 DATA sockfilt for passive data channel quits (pid 113702)
 19:27:18.478516 DATA sockfilt for passive data channel quit (pid 113702)
 19:27:18.478538 =====> Closed passive DATA connection
 19:27:18.478565 > "226 File transfer complete[CR][LF]"
 19:27:18.522301 < "QUIT"
 19:27:18.522353 > "221 bye bye baby[CR][LF]"
 19:27:18.523448 MAIN sockfilt said DISC
 19:27:18.523476 ====> Client disconnected
 19:27:18.523553 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:19.079670 ====> Client connect
 19:27:19.080028 Received DATA (on stdin)
 19:27:19.080045 > 146 bytes data, server => client
 19:27:19.080057 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:19.080068 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:19.080078 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:19.080170 < 16 bytes data, client => server
 19:27:19.080186 'USER anonymous\r\n'
 19:27:19.080371 Received DATA (on stdin)
 19:27:19.080385 > 33 bytes data, server => client
 19:27:19.080396 '331 We are happy you popped in!\r\n'
 19:27:19.080458 < 22 bytes data, client => server
 19:27:19.080473 'PASS ftp@example.com\r\n'
 19:27:19.080596 Received DATA (on stdin)
 19:27:19.080608 > 30 bytes data, server => client
 19:27:19.080618 '230 Welcome you silly person\r\n'
 19:27:19.080674 < 5 bytes data, client => server
 19:27:19.080684 'PWD\r\n'
 19:27:19.080779 Received DATA (on stdin)
 19:27:19.080787 > 30 bytes data, server => client
 19:27:19.080796 '257 "/" is current directory\r\n'
 19:27:19.080858 < 6 bytes data, client => server
 19:27:19.080871 'EPSV\r\n'
 19:27:19.086456 Received DATA (on stdin)
 19:27:19.086472 > 39 bytes data, server => client
 19:27:19.086482 '229 Entering Passive Mode (|||43759|)\r\n'
 19:27:19.086655 < 8 bytes data, client => server
 19:27:19.086669 'TYPE I\r\n'
 19:27:19.086914 Received DATA (on stdin)
 19:27:19.086925 > 33 bytes data, server => client
 19:27:19.086935 '200 I modify TYPE as you wanted\r\n'
 19:27:19.086991 < 21 bytes data, client => server
 19:27:19.087001 'SIZE verifiedserver\r\n'
 19:27:19.087115 Received DATA (on stdin)
 19:27:19.087125 > 8 bytes data, server => client
 19:27:19.087134 '213 17\r\n'
 19:27:19.087182 < 21 bytes data, client => server
 19:27:19.087192 'RETR verifiedserver\r\n'
 19:27:19.087395 Received DATA (on stdin)
 19:27:19.087405 > 29 bytes data, server => client
 19:27:19.087415 '150 Binary junk (17 bytes).\r\n'
 19:27:19.087935 Received DATA (on stdin)
 19:27:19.087946 > 28 bytes data, server => client
 19:27:19.087956 '226 File transfer complete\r\n'
 19:27:19.131463 < 6 bytes data, client => server
 19:27:19.131498 'QUIT\r\n'
 19:27:19.131717 Received DATA (on stdin)
 19:27:19.131726 > 18 bytes data, server => client
 19:27:19.131735 '221 bye bye baby\r\n'
 19:27:19.132762 ====> Client disconnect
 19:27:19.132911 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:18.085895 Running IPv4 version
 19:27:18.085980 Listening on port 43759
 19:27:18.086020 Wrote pid 113702 to log/3/server/ftp_sockdata.pid
 19:27:18.086197 Received PING (on stdin)
 19:27:18.086292 Received PORT (on stdin)
 19:27:18.086699 ====> Client connect
 19:27:18.087467 Received DATA (on stdin)
 19:27:18.087480 > 17 bytes data, server => client
 19:27:18.087489 'WE ROOLZ: 84710\r\n'
 19:27:18.087513 Received DISC (on stdin)
 19:27:18.087523 ====> Client forcibly disconnected
 19:27:18.087646 Received QUIT (on stdin)
 19:27:18.087656 quits
 19:27:18.087720 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 661
=== End of file server.cmd
=== Start of file valgrind661
 ==113753== 
 ==113753== Process terminating with default action of signal 4 (SIGILL)
 ==113753==  Illegal opcode at address 0x51CC63F
 ==113753==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==113753==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==113753==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==113753==    by 0x40041AF: main (first.c:264)
=== End of file valgrind661
test 0668 [HTTP mimepost early end of data detection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:33935/668 log/6/file668.txt > log/6/stdout668 2> log/6/stderr668

 668: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 668
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:33935/668 log/6/file668.txt > log/6/stdout668 2> log/6/stderr668
=== End of file commands.log
=== Start of file file668.txt
 This is data from a file
=== End of file file668.txt
=== Start of file http_server.log
 19:27:18.454697 ====> Client connect
 19:27:18.454736 accept_connection 3 returned 4
 19:27:18.454758 Read 93 bytes
 19:27:18.454766 Process 93 bytes request
 19:27:18.454777 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.454784 Are-we-friendly question received
 19:27:18.454806 Wrote request (93 bytes) input to log/6/server.input
 19:27:18.454819 Identifying ourselves as friends
 19:27:18.454895 Response sent (56 bytes) and written to log/6/server.response
 19:27:18.454902 special request received, no persistency
 19:27:18.454909 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 3393CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:38815/667 > log/1/stdout667 2> log/1/stderr667
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:44711/673 > log/23/stdout673 2> log/23/stderr673
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:40321/670 > log/15/stdout670 2> log/15/stderr670
5) from 127.0.0.1 port 37418 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 668
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind668
 ==114131== 
 ==114131== Process terminating with default action of signal 4 (SIGILL)
 ==114131==  Illegal opcode at address 0x51CC63F
 ==114131==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114131==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114131==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114131==    by 0x40041AF: main (first.c:264)
=== End of file valgrind668
test 0667 [HTTP chunked mimepost using single-byte read callback with encoder]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:38815/667 > log/1/stdout667 2> log/1/stderr667

 667: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 667
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:38815/667 > log/1/stdout667 2> log/1/stderr667
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.428026 ====> Client connect
 19:27:19.428065 accept_connection 3 returned 4
 19:27:19.428093 Read 93 bytes
 19:27:19.428105 Process 93 bytes request
 19:27:19.428120 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.428129 Are-we-friendly question received
 19:27:19.428162 Wrote request (93 bytes) input to log/1/server.input
 19:27:19.428181 Identifying ourselves as friends
 19:27:19.428281 Response sent (56 bytes) and written to log/1/server.response
 19:27:19.428295 special request received, no persistency
 19:27:19.428304 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 60192 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 667
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind667
 ==114052== 
 ==114052== Process terminating with default action of signal 4 (SIGILL)
 ==114052==  Illegal opcode at address 0x51CC63F
 ==114052==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114052==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114052==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114052==    by 0x40041AF: main (first.c:264)
=== End of file valgrind667
test 0673 [Request pause from form read callback: easy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:44711/673 > log/23/stdout673 2> log/23/stderr673

 673: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 673
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:44711/673 > log/23/stdout673 2> log/23/stderr673
=== End of file commands.log
=== Start of file http_server.log
 19:27:18.961142 ====> Client connect
 19:27:18.961179 accept_connection 3 returned 4
 19:27:18.961238 Read 93 bytes
 19:27:18.961249 Process 93 bytes request
 19:27:18.961262 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.961270 Are-we-friendly question received
 19:27:18.961304 Wrote request (93 bytes) input to log/23/server.input
 19:27:18.961321 Identifying ourselves as friends
 19:27:18.961389 Response sent (56 bytes) and written to log/23/server.response
 19:27:18.961400 special request received, no persistency
 19:27:18.961410 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 43444 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 673
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind673
 ==114638== 
 ==114638== Process terminating with default action of signal 4 (SIGILL)
 ==114638==  Illegal opcode at address 0x51CC63F
 ==114638==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114638==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114638==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114638==    by 0x40041AF: main (first.c:264)
=== End of file valgrind673
test 0670 [Request pause from mime read callback: multi]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:40321/670 > log/15/stdout670 2> log/15/stderr670

 670: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 670
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:40321/670 > log/15/stdout670 2> log/15/stderr670
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.498151 ====> Client connect
 19:27:19.498204 accept_connection 3 returned 4
 19:27:19.501336 Read 93 bytes
 19:27:19.501357 Process 93 bytes request
 19:27:19.501369 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.501377 Are-we-friendly question received
 19:27:19.501412 Wrote request (93 bytes) input to log/15/server.input
 19:27:19.501429 Identifying ourselves as friends
 19:27:19.501508 Response sent (56 bytes) and written to log/15/server.response
 19:27:19.501516 special request received, no persistency
 19:27:19.501523 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 34716 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:46497/671 > log/19/stdout671 2> log/19/stderr671
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:35903/666 > log/16/stdout666 2> log/16/stderr666
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind648 ../src/curl -q --output log/8/curl648.out  --include --trace-ascii log/8/trace648 --trace-time smtp://127.0.0.1:34057/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/8/test648.txt;encoder=base64" -H "From: different" -H "To: another" <log/8/stdin-for-648 > log/8/stdout648 2> log/8/stderr648
1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 670
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind670
 ==114200== 
 ==114200== Process terminating with default action of signal 4 (SIGILL)
 ==114200==  Illegal opcode at address 0x51CC63F
 ==114200==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114200==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114200==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114200==    by 0x40041AF: main (first.c:264)
=== End of file valgrind670
test 0671 [Request pause from mime read callback: easy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:46497/671 > log/19/stdout671 2> log/19/stderr671

 671: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 671
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:46497/671 > log/19/stdout671 2> log/19/stderr671
=== End of file commands.log
=== Start of file http_server.log
 19:27:18.541355 ====> Client connect
 19:27:18.541395 accept_connection 3 returned 4
 19:27:18.541418 Read 93 bytes
 19:27:18.541428 Process 93 bytes request
 19:27:18.541441 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.541449 Are-we-friendly question received
 19:27:18.541475 Wrote request (93 bytes) input to log/19/server.input
 19:27:18.541491 Identifying ourselves as friends
 19:27:18.541565 Response sent (56 bytes) and written to log/19/server.response
 19:27:18.541574 special request received, no persistency
 19:27:18.541582 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 48652 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 671
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind671
 ==114278== 
 ==114278== Process terminating with default action of signal 4 (SIGILL)
 ==114278==  Illegal opcode at address 0x51CC63F
 ==114278==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114278==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114278==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114278==    by 0x40041AF: main (first.c:264)
=== End of file valgrind671
test 0666 [HTTP mime post with binary-encoded huge data contents]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:35903/666 > log/16/stdout666 2> log/16/stderr666

 666: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 666
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:35903/666 > log/16/stdout666 2> log/16/stderr666
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.432727 ====> Client connect
 19:27:19.432759 accept_connection 3 returned 4
 19:27:19.437364 Read 93 bytes
 19:27:19.437388 Process 93 bytes request
 19:27:19.437403 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.437412 Are-we-friendly question received
 19:27:19.437450 Wrote request (93 bytes) input to log/16/server.input
 19:27:19.437469 Identifying ourselves as friends
 19:27:19.437540 Response sent (56 bytes) and written to log/16/server.response
 19:27:19.437550 special request received, no persistency
 19:27:19.437559 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 50330 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 666
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind666
 ==114247== 
 ==114247== Process terminating with default action of signal 4 (SIGILL)
 ==114247==  Illegal opcode at address 0x51CC63F
 ==114247==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114247==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114247==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114247==    by 0x40041AF: main (first.c:264)
=== End of file valgrind666
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/8/server/smtp_server.pid" --logfile "log/8/smtp_server.log" --logdir "log/8" --portfile "log/8/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 34057 (log/8/server/smtp_server.port)
RUN: SMTP server is PID 113206 port 34057
* pid smtp => 113206 113206
test 0648 [SMTP multipart with transfer content encoders]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind648 ../src/curl -q --output log/8/curl648.out  --include --trace-ascii log/8/trace648 --trace-time smtp://127.0.0.1:34057/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/8/test648.txt;encoder=base64" -H "From: different" -H "To: another" <log/8/stdin-for-648 > log/8/stdout648 2> log/8/stderr648

 648: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 648
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind648 ../src/curl -q --output log/8/curl648.out  --include --trace-ascii log/8/trace648 --trace-time smtp://127.0.0.1:34057/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/8/test648.txt;encCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:43739/672 > log/18/stdout672 2> log/18/stderr672
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind646 ../src/curl -q --output log/14/curl646.out  --include --trace-ascii log/14/trace646 --trace-time smtp://127.0.0.1:44025/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/14/headers646" -F "=)" -F "=@log/14/test646.txt;headers=<log/14/headers646" -H "From: different" -H "To: another" -H "Reply-To: <followup@example.com>" <log/14/stdin-for-646 > log/14/stdout646 2> log/14/stderr646
oder=base64" -H "From: different" -H "To: another" <log/8/stdin-for-648 > log/8/stdout648 2> log/8/stderr648
=== End of file commands.log
=== Start of file server.cmd
 Testnum 648
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:17.758285 SMTP server listens on port IPv4/34057
 19:27:17.758395 logged pid 113206 in log/8/server/smtp_server.pid
 19:27:17.758444 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:17.367256 Running IPv4 version
 19:27:17.367524 Listening on port 34057
 19:27:17.367603 Wrote pid 113208 to log/8/server/smtp_sockfilt.pid
 19:27:17.367638 Wrote port 34057 to log/8/server/smtp_server.port
 19:27:17.367660 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-648
 From: different
 To: another
 body
=== End of file stdin-for-648
=== Start of file test648.txt
 This is an attached file.
 It may contain any type of data and will be encoded in base64 for transfer.
=== End of file test648.txt
=== Start of file valgrind648
 ==113853== 
 ==113853== Process terminating with default action of signal 4 (SIGILL)
 ==113853==  Illegal opcode at address 0x492B75F
 ==113853==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==113853==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==113853==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==113853==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==113853==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==113853==    by 0x49908EB: curl_version_info (version.c:600)
 ==113853==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==113853==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==113853==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==113853==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind648
test 0672 [Request pause from form read callback: multi]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:43739/672 > log/18/stdout672 2> log/18/stderr672

 672: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 672
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:43739/672 > log/18/stdout672 2> log/18/stderr672
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.565482 ====> Client connect
 19:27:19.565515 accept_connection 3 returned 4
 19:27:19.565537 Read 93 bytes
 19:27:19.565545 Process 93 bytes request
 19:27:19.565556 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.565564 Are-we-friendly question received
 19:27:19.565587 Wrote request (93 bytes) input to log/18/server.input
 19:27:19.565601 Identifying ourselves as friends
 19:27:19.565656 Response sent (56 bytes) and written to log/18/server.response
 19:27:19.565664 special request received, no persistency
 19:27:19.565672 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45814 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 672
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind672
 ==114363== 
 ==114363== Process terminating with default action of signal 4 (SIGILL)
 ==114363==  Illegal opcode at address 0x51CC63F
 ==114363==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114363==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114363==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114363==    by 0x40041AF: main (first.c:264)
=== End of file valgrind672
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/14/server/smtp_server.pid" --logfile "log/14/smtp_server.log" --logdir "log/14" --portfile "log/14/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44025 (log/14/server/smtp_server.port)
RUN: SMTP server is PID 113204 port 44025
* pid smtp => 113204 113204
test 0646 [SMTP multipart using mime API]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind646 ../src/curl -q --output log/14/curl646.out  --include --trace-ascii log/14/trace646 --trace-time smtp://127.0.0.1:44025/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/14/headers646" -F "=)" -F "=@log/14/test646.txt;headers=<log/14/headers646" -H "From: different" -H "To: another" -H "Reply-To: <followup@example.com>" <log/14/stdin-for-646 > log/14/stdout646 2> log/14/stderr646

 646: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 646
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind646 ../src/curl -q --output log/14/curl646.out  --include --trace-ascii log/14/trace646 --trace-time smtp://127.0.0.1:44025/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/14/headers646" -F "=)" -F "=@log/14/test646.txt;headers=<log/14/headers646" -H "From: different" -H "To: another" -H "Reply-To: <followup@example.com>" <log/14/stdin-for-646 > log/14/stdout646 2> log/14/stderr646
=== End of file commands.log
=== Start of file headers646
 # This line is a comment
 X-fileheader1: This is a header from a file 
 # This line is another comment. It precedes a folded header.
 X-fileheader2: This is #a
  folded header
=== End of file headers646
=== Start of file server.cmd
 Testnum 646
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:17.738773 SMTP server listens on port IPv4/44025
 19:27:17.738902 logged pid 113204 in log/14/server/smtp_server.pid
 19:27:17.738951 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:17.335517 Running IPv4 version
 19:27:17.335626 Listening on port 44025
 19:27:17.335674 Wrote pid 113207 to log/14/server/smtp_sockfilt.pid
 19:27:17.335709 Wrote port 44025 to log/14/server/smtp_server.port
 19:27:17.344820 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-646
 From: different
 To: another
 body
=== End of file stdin-for-646
=== Start of file test646.txt
 This is an attached file.
 It may contain any type of data.
=== End of file test646.txt
=== Start of file valgrind646
 ==113835== 
 ==113835== Process terminating with default action of signal 4 (SIGILL)
 ==113835==  Illegal opcode at address 0x492B75F
 ==113835==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==113835==    by 0x492C53A: CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:38821/we/want/676 log/13/cookies676 > log/13/stdout676 2> log/13/stderr676
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:44599/652 > log/20/stdout652 2> log/20/stderr652
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:40859/674 > log/7/stdout674 2> log/7/stderr674
curl_mvsnprintf (mprintf.c:1257)
 ==113835==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==113835==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==113835==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==113835==    by 0x49908EB: curl_version_info (version.c:600)
 ==113835==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==113835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==113835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==113835==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind646
test 0676 [verify setting CURLOPT_COOKIEFILE to NULL again]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:38821/we/want/676 log/13/cookies676 > log/13/stdout676 2> log/13/stderr676

 676: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 676
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:38821/we/want/676 log/13/cookies676 > log/13/stdout676 2> log/13/stderr676
=== End of file commands.log
=== Start of file cookies676
 127.0.0.1	TRUE	/we/want/	FALSE	22118138987	proven	yes
=== End of file cookies676
=== Start of file http_server.log
 19:27:19.269864 ====> Client connect
 19:27:19.269897 accept_connection 3 returned 4
 19:27:19.269918 Read 93 bytes
 19:27:19.269927 Process 93 bytes request
 19:27:19.269939 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.269948 Are-we-friendly question received
 19:27:19.269977 Wrote request (93 bytes) input to log/13/server.input
 19:27:19.269992 Identifying ourselves as friends
 19:27:19.270085 Response sent (56 bytes) and written to log/13/server.response
 19:27:19.270094 special request received, no persistency
 19:27:19.270103 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 60796 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 676
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind676
 ==114877== 
 ==114877== Process terminating with default action of signal 4 (SIGILL)
 ==114877==  Illegal opcode at address 0x51CC63F
 ==114877==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114877==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114877==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114877==    by 0x40041AF: main (first.c:264)
=== End of file valgrind676
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/20/server/smtp_server.pid" --logfile "log/20/smtp_server.log" --logdir "log/20" --portfile "log/20/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44599 (log/20/server/smtp_server.port)
RUN: SMTP server is PID 113262 port 44599
* pid smtp => 113262 113262
test 0652 [SMTP with encoded huge mime data contents]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:44599/652 > log/20/stdout652 2> log/20/stderr652

 652: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 652
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:44599/652 > log/20/stdout652 2> log/20/stderr652
=== End of file commands.log
=== Start of file server.cmd
 Testnum 652
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:18.149831 SMTP server listens on port IPv4/44599
 19:27:18.149928 logged pid 113262 in log/20/server/smtp_server.pid
 19:27:18.149971 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:18.758776 Running IPv4 version
 19:27:18.758872 Listening on port 44599
 19:27:18.758914 Wrote pid 113281 to log/20/server/smtp_sockfilt.pid
 19:27:18.758943 Wrote port 44599 to log/20/server/smtp_server.port
 19:27:18.759143 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind652
 ==114580== 
 ==114580== Process terminating with default action of signal 4 (SIGILL)
 ==114580==  Illegal opcode at address 0x51CC63F
 ==114580==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114580==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114580==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114580==    by 0x40041AF: main (first.c:264)
=== End of file valgrind652
test 0674 [Set CURLOPT_CURLU and dupe the handle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:40859/674 > log/7/stdout674 2> log/7/stderr674

 674: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 674
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:40859/674 > log/7/stdout674 2> log/7/stderr674
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.148331 ====> Client connect
 19:27:19.148371 accept_connection 3 returned 4
 19:27:19.148392 Read 93 bytes
 19:27:19.148402 Process 93 bytes request
 19:27:19.148414 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.148476 Are-we-friendly question received
 19:27:19.148503 Wrote request (93 bytes) input to log/7/server.input
 19:27:19.148519 Identifying ourselves as friends
 19:27:19.148588 Response sent (56 bytes) and written to log/7/server.response
 19:27:19.148597 special request received, no persistency
 19:27:19.148605 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 50166 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 674
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind674
 ==114783== 
 ==114783== Process terminating with default action of signal 4 (SIGILL)
 ==114783==  Illegal opcode at address 0x51CC63F
 ==114783==    at 0x51CC63F: formatf.constprop.1 (mprCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind662 ../src/curl -q --output log/5/curl662.out  --include --trace-ascii log/5/trace662 --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:37089 > log/5/stdout662 2> log/5/stderr662
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:38847/660 > log/9/stdout660 2> log/9/stderr660
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind663 ../src/curl -q --output log/21/curl663.out  --include --trace-ascii log/21/trace663 --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:39881 > log/21/stdout663 2> log/21/stderr663
intf.c:1115)
 ==114783==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114783==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114783==    by 0x40041AF: main (first.c:264)
=== End of file valgrind674
test 0662 [HTTP redirect with whitespace in absolute Location: URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind662 ../src/curl -q --output log/5/curl662.out  --include --trace-ascii log/5/trace662 --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:37089 > log/5/stdout662 2> log/5/stderr662

 662: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 662
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind662 ../src/curl -q --output log/5/curl662.out  --include --trace-ascii log/5/trace662 --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:37089 > log/5/stdout662 2> log/5/stderr662
=== End of file commands.log
=== Start of file http_server.log
 19:27:18.062318 ====> Client connect
 19:27:18.062358 accept_connection 3 returned 4
 19:27:18.062519 Read 93 bytes
 19:27:18.062536 Process 93 bytes request
 19:27:18.062550 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.062560 Are-we-friendly question received
 19:27:18.062594 Wrote request (93 bytes) input to log/5/server.input
 19:27:18.062613 Identifying ourselves as friends
 19:27:18.062681 Response sent (56 bytes) and written to log/5/server.response
 19:27:18.062692 special request received, no persistency
 19:27:18.062699 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 54004 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 662
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind662
 ==113707== 
 ==113707== Process terminating with default action of signal 4 (SIGILL)
 ==113707==  Illegal opcode at address 0x492B75F
 ==113707==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==113707==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==113707==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==113707==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==113707==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==113707==    by 0x49908EB: curl_version_info (version.c:600)
 ==113707==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==113707==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==113707==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==113707==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind662
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/9/server/imap_server.pid" --logfile "log/9/imap_server.log" --logdir "log/9" --portfile "log/9/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 38847 (log/9/server/imap_server.port)
RUN: IMAP server is PID 113573 port 38847
* pid imap => 113573 113573
test 0660 [IMAP CONNECT_ONLY option]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:38847/660 > log/9/stdout660 2> log/9/stderr660

 660: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 660
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:38847/660 > log/9/stdout660 2> log/9/stderr660
=== End of file commands.log
=== Start of file imap_server.log
 19:27:18.442763 IMAP server listens on port IPv4/38847
 19:27:18.443088 logged pid 113573 in log/9/server/imap_server.pid
 19:27:18.443155 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:18.046494 Running IPv4 version
 19:27:18.046593 Listening on port 38847
 19:27:18.046653 Wrote pid 113640 to log/9/server/imap_sockfilt.pid
 19:27:18.046690 Wrote port 38847 to log/9/server/imap_server.port
 19:27:18.051972 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 660
=== End of file server.cmd
=== Start of file valgrind660
 ==114661== 
 ==114661== Process terminating with default action of signal 4 (SIGILL)
 ==114661==  Illegal opcode at address 0x51CC63F
 ==114661==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==114661==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==114661==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==114661==    by 0x40041AF: main (first.c:264)
=== End of file valgrind660
test 0663 [HTTP redirect with dotdots and whitespaces in absolute Location: URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind663 ../src/curl -q --output log/21/curl663.out  --include --trace-ascii log/21/trace663 --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:39881 > log/21/stdout663 2> log/21/stderr663

 663: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 663
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind663 ../src/curl -q --output log/21/curl663.out  --include --trace-ascii log/21/trace663 --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:39881 > log/21/stdout663 2> log/21/stderr663
=== End of file commands.log
=== Start of file http_server.log
 19:27:18.360511 ====> Client connect
 19:27:18.360543 accept_connection 3 returned 4
 19:27:18.360565 Read 93 bytes
 19:27:18.360574 Process 93 bytes request
 19:27:18.360586 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.360595 Are-we-friendly question received
 19:27:18.360621 Wrote request (93 bytes) input to log/21/server.input
 19:27:18.360637 Identifying ourselves as friends
 19:27:18.360702 Response sent (56 bytes) and written to log/21/server.response
 19:27:18.360712 special request received, no persistency
 19:27:18.360720 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 51568 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 663
=== End of file CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind647 ../src/curl -q --output log/24/curl647.out  --include --trace-ascii log/24/trace647 --trace-time imap://127.0.0.1:34999/647 -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/24/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar <foobar@example.com>" -H "To: joe@example.com" -H "Message-Id: <B27397-0100000@example.com>" -H "Subject: afternoon meeting" -u user:secret > log/24/stdout647 2> log/24/stderr647
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind649 ../src/curl -q --output log/4/curl649.out  --include --trace-ascii log/4/trace649 --trace-time smtp://127.0.0.1:32885/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/4/test649.txt;encoder=7bit" -H "From: different" -H "To: another" <log/4/stdin-for-649 > log/4/stdout649 2> log/4/stderr649
server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind663
 ==113929== 
 ==113929== Process terminating with default action of signal 4 (SIGILL)
 ==113929==  Illegal opcode at address 0x492B75F
 ==113929==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==113929==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==113929==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==113929==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==113929==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==113929==    by 0x49908EB: curl_version_info (version.c:600)
 ==113929==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==113929==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==113929==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==113929==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind663
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/24/server/imap_server.pid" --logfile "log/24/imap_server.log" --logdir "log/24" --portfile "log/24/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 34999 (log/24/server/imap_server.port)
RUN: IMAP server is PID 113205 port 34999
* pid imap => 113205 113205
test 0647 [IMAP APPEND multipart using mime API]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind647 ../src/curl -q --output log/24/curl647.out  --include --trace-ascii log/24/trace647 --trace-time imap://127.0.0.1:34999/647 -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/24/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar <foobar@example.com>" -H "To: joe@example.com" -H "Message-Id: <B27397-0100000@example.com>" -H "Subject: afternoon meeting" -u user:secret > log/24/stdout647 2> log/24/stderr647

 647: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 647
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind647 ../src/curl -q --output log/24/curl647.out  --include --trace-ascii log/24/trace647 --trace-time imap://127.0.0.1:34999/647 -F "=(;type=multipart/alternative" -F "= <body>This is the html version</body>;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/24/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar <foobar@example.com>" -H "To: joe@example.com" -H "Message-Id: <B27397-0100000@example.com>" -H "Subject: afternoon meeting" -u user:secret > log/24/stdout647 2> log/24/stderr647
=== End of file commands.log
=== Start of file imap_server.log
 19:27:17.763629 IMAP server listens on port IPv4/34999
 19:27:17.763752 logged pid 113205 in log/24/server/imap_server.pid
 19:27:17.763811 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:17.372766 Running IPv4 version
 19:27:17.372872 Listening on port 34999
 19:27:17.372919 Wrote pid 113209 to log/24/server/imap_sockfilt.pid
 19:27:17.372955 Wrote port 34999 to log/24/server/imap_server.port
 19:27:17.372979 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 647
=== End of file server.cmd
=== Start of file test647.txt
 This is an attached file.
 It may contain any type of data.
=== End of file test647.txt
=== Start of file valgrind647
 ==113874== 
 ==113874== Process terminating with default action of signal 4 (SIGILL)
 ==113874==  Illegal opcode at address 0x492B75F
 ==113874==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==113874==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==113874==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==113874==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==113874==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==113874==    by 0x49908EB: curl_version_info (version.c:600)
 ==113874==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==113874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==113874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==113874==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind647
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/4/server/smtp_server.pid" --logfile "log/4/smtp_server.log" --logdir "log/4" --portfile "log/4/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 32885 (log/4/server/smtp_server.port)
RUN: SMTP server is PID 113210 port 32885
* pid smtp => 113210 113210
test 0649 [SMTP multipart with 7-bit encoder error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind649 ../src/curl -q --output log/4/curl649.out  --include --trace-ascii log/4/trace649 --trace-time smtp://127.0.0.1:32885/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/4/test649.txt;encoder=7bit" -H "From: different" -H "To: another" <log/4/stdin-for-649 > log/4/stdout649 2> log/4/stderr649

 649: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 649
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind649 ../src/curl -q --output log/4/curl649.out  --include --trace-ascii log/4/trace649 --trace-time smtp://127.0.0.1:32885/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/4/test649.txt;encoder=7bit" -H "From: different" -H "To: another" <log/4/stdin-for-649 > log/4/stdout649 2> log/4/stderr649
=== End of file commands.log
=== Start of file server.cmd
 Testnum 649
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:17.850371 SMTP server listens on port IPv4/32885
 19:27:17.850479 logged pid 113210 in log/4/server/smtp_server.pid
 19:27:17.850528 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:17.459370 Running IPv4 version
 19:27:17.459487 Listening on port 32885
 19:27:17.459531 Wrote pid 113211 to log/4/server/smtp_sockfilt.pid
 19:27:17.459566 Wrote port 32885 to log/4/server/smtp_server.port
 19:27:17.459726 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-649
 From: different
 To: another
 body
=== End of file stdin-for-649
=== Start of file test649.txt
 This is an attached file (in french: pièce jointe).
 It contains at least an 8-bit byte value.
=== End of file test649.txt
=== Start of file valgrind649
 ==114001== 
 ==114001== Process terminating with default action of signal 4 (SIGILL)
 ==114001==  Illegal opcode at address 0x492B75F
 ==114001==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==114001==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==114001==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==114001==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==114001==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==114001==    by 0x49908EB: curl_version_info (version.c:600)
 ==114001==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==114001==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==114001==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==114001==    by 0x4003269CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind669 ../src/curl -q --output log/10/curl669.out  --include --trace-ascii log/10/trace669 --trace-time http://127.0.0.1:40913/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/10/stdout669 2> log/10/stderr669
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind680 ../src/curl -q --output log/11/curl680.out  --include --trace-ascii log/11/trace680 --trace-time --netrc --netrc-file log/11/netrc680 http://user1@http.example/ > log/11/stdout680 2> log/11/stderr680
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind675 ../src/curl -q --output log/12/curl675.out  --include --trace-ascii log/12/trace675 --trace-time http://user1:foo1@127.0.0.1:40921/user1/675 http://user2:foo2@127.0.0.1:40921/user2/675 > log/12/stdout675 2> log/12/stderr675
: main (tool_main.c:195)
=== End of file valgrind649
test 0669 [HTTP custom Content-Type with parameter]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind669 ../src/curl -q --output log/10/curl669.out  --include --trace-ascii log/10/trace669 --trace-time http://127.0.0.1:40913/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/10/stdout669 2> log/10/stderr669

 669: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 669
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind669 ../src/curl -q --output log/10/curl669.out  --include --trace-ascii log/10/trace669 --trace-time http://127.0.0.1:40913/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/10/stdout669 2> log/10/stderr669
=== End of file commands.log
=== Start of file http_server.log
 19:27:18.481353 ====> Client connect
 19:27:18.481392 accept_connection 3 returned 4
 19:27:18.481413 Read 93 bytes
 19:27:18.481423 Process 93 bytes request
 19:27:18.481436 Got request: GET /verifiedserver HTTP/1.1
 19:27:18.481445 Are-we-friendly question received
 19:27:18.481480 Wrote request (93 bytes) input to log/10/server.input
 19:27:18.481496 Identifying ourselves as friends
 19:27:18.484972 Response sent (56 bytes) and written to log/10/server.response
 19:27:18.484990 special request received, no persistency
 19:27:18.484998 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 36204 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 669
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind669
 ==114175== 
 ==114175== Process terminating with default action of signal 4 (SIGILL)
 ==114175==  Illegal opcode at address 0x492B75F
 ==114175==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==114175==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==114175==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==114175==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==114175==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==114175==    by 0x49908EB: curl_version_info (version.c:600)
 ==114175==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==114175==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==114175==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==114175==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind669
test 0680 [netrc with quoted password but missing end quote]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind680 ../src/curl -q --output log/11/curl680.out  --include --trace-ascii log/11/trace680 --trace-time --netrc --netrc-file log/11/netrc680 http://user1@http.example/ > log/11/stdout680 2> log/11/stderr680

curl returned 132, when expecting 26
 680: exit FAILED
== Contents of files in the log/11/ directory after test 680
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind680 ../src/curl -q --output log/11/curl680.out  --include --trace-ascii log/11/trace680 --trace-time --netrc --netrc-file log/11/netrc680 http://user1@http.example/ > log/11/stdout680 2> log/11/stderr680
=== End of file commands.log
=== Start of file netrc680
 machine 127.0.0.1 login user1 password "with spaces and \"\n\r\t\a
=== End of file netrc680
=== Start of file server.cmd
 Testnum 680
=== End of file server.cmd
=== Start of file valgrind680
 ==114860== 
 ==114860== Process terminating with default action of signal 4 (SIGILL)
 ==114860==  Illegal opcode at address 0x492B75F
 ==114860==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==114860==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==114860==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==114860==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==114860==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==114860==    by 0x49908EB: curl_version_info (version.c:600)
 ==114860==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==114860==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==114860==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==114860==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind680
test 0675 [HTTP connection reuse and different credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind675 ../src/curl -q --output log/12/curl675.out  --include --trace-ascii log/12/trace675 --trace-time http://user1:foo1@127.0.0.1:40921/user1/675 http://user2:foo2@127.0.0.1:40921/user2/675 > log/12/stdout675 2> log/12/stderr675

 675: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 675
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind675 ../src/curl -q --output log/12/curl675.out  --include --trace-ascii log/12/trace675 --trace-time http://user1:foo1@127.0.0.1:40921/user1/675 http://user2:foo2@127.0.0.1:40921/user2/675 > log/12/stdout675 2> log/12/stderr675
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.126611 ====> Client connect
 19:27:19.126647 accept_connection 3 returned 4
 19:27:19.126666 Read 93 bytes
 19:27:19.126675 Process 93 bytes request
 19:27:19.126687 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.126695 Are-we-friendly question received
 19:27:19.126722 Wrote request (93 bytes) input to log/12/server.input
 19:27:19.126737 Identifying ourselves as friends
 19:27:19.126885 Response sent (56 bytes) and written to log/12/server.response
 19:27:19.126894 special request received, no persistency
 19:27:19.126902 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 57524 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 675
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind675
 ==114766== 
 ==114766== Process terminating with default action of signal 4 (SIGILL)
 ==114766==  Illegal opcode at address 0x492B75F
 ==114766==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:46461/677 > log/2/stdout677 2> log/2/stderr677
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind681 ../src/curl -q --trace-ascii log/22/trace681 --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:35989/681 > log/22/stdout681 2> log/22/stderr681
14766==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==114766==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==114766==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==114766==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==114766==    by 0x49908EB: curl_version_info (version.c:600)
 ==114766==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==114766==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==114766==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==114766==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind675
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/2/server/imap_server.pid" --logfile "log/2/imap_server.log" --logdir "log/2" --portfile "log/2/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 46461 (log/2/server/imap_server.port)
RUN: IMAP server is PID 114810 port 46461
* pid imap => 114810 114810
test 0677 [IMAP with CONNECT_ONLY, custom command then exit]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:46461/677 > log/2/stdout677 2> log/2/stderr677

 677: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 677
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:46461/677 > log/2/stdout677 2> log/2/stderr677
=== End of file commands.log
=== Start of file imap_server.log
 19:27:19.647149 IMAP server listens on port IPv4/46461
 19:27:19.647239 logged pid 114810 in log/2/server/imap_server.pid
 19:27:19.647281 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:19.255915 Running IPv4 version
 19:27:19.256017 Listening on port 46461
 19:27:19.256057 Wrote pid 114838 to log/2/server/imap_sockfilt.pid
 19:27:19.256086 Wrote port 46461 to log/2/server/imap_server.port
 19:27:19.256234 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 677
=== End of file server.cmd
=== Start of file valgrind677
 ==115339== 
 ==115339== Process terminating with default action of signal 4 (SIGILL)
 ==115339==  Illegal opcode at address 0x51CC63F
 ==115339==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==115339==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==115339==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==115339==    by 0x40041AF: main (first.c:264)
=== End of file valgrind677
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind679 ../src/curl -q --output log/17/curl679.out  --include --trace-ascii log/17/trace679 --trace-time --netrc-optional --netrc-file log/17/netrc679 http://127.0.0.1:35993/ > log/17/stdout679 2> log/17/stderr679
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:33897 > log/20/stdout696 2> log/20/stderr696
test 0681 [--remote-name-all with --no-remote-name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind681 ../src/curl -q --trace-ascii log/22/trace681 --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:35989/681 > log/22/stdout681 2> log/22/stderr681

 681: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:27:22.076563457 +0000
+++ log/22/check-generated	2026-10-15 19:27:22.072711197 +0000
@@ -1 +0,0 @@
--foo-[LF]
== Contents of files in the log/22/ directory after test 681
=== Start of file check-expected
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind681 ../src/curl -q --trace-ascii log/22/trace681 --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:35989/681 > log/22/stdout681 2> log/22/stderr681
=== End of file commands.log
=== Start of file http_server.log
 19:27:19.500197 ====> Client connect
 19:27:19.500228 accept_connection 3 returned 4
 19:27:19.500249 Read 93 bytes
 19:27:19.500258 Process 93 bytes request
 19:27:19.500270 Got request: GET /verifiedserver HTTP/1.1
 19:27:19.500278 Are-we-friendly question received
 19:27:19.500302 Wrote request (93 bytes) input to log/22/server.input
 19:27:19.500316 Identifying ourselves as friends
 19:27:19.500379 Response sent (56 bytes) and written to log/22/server.response
 19:27:19.500387 special request received, no persistency
 19:27:19.500395 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 44720 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 681
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind681
 ==115064== 
 ==115064== Process terminating with default action of signal 4 (SIGILL)
 ==115064==  Illegal opcode at address 0x492B75F
 ==115064==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115064==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115064==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115064==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115064==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115064==    by 0x49908EB: curl_version_info (version.c:600)
 ==115064==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115064==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115064==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115064==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind681
test 0679 [netrc with quoted username and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind679 ../src/curl -q --output log/17/curl679.out  --include --trace-ascii log/17/trace679 --trace-time --netrc-optional --netrc-file log/17/netrc679 http://127.0.0.1:35993/ > log/17/stdout679 2> log/17/stderr679

 679: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 679
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind679 ../src/curl -q --output log/17/curl679.out  --include --trace-ascii log/17/trace679 --trace-time --netrc-optional --netrc-file log/17/netrc679 http://127.0.0.1:35993/ > log/17/stdout679 2> log/17/stderr679
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.367005 ====> Client connect
 19:27:20.367043 accept_connection 3 returned 4
 19:27:20.367066 Read 93 bytes
 19:27:20.367076 Process 93 bytes request
 19:27:20.367089 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.367098 Are-we-friendly question received
 19:27:20.367128 Wrote request (93 bytes) input to log/17/server.input
 19:27:20.367147 Identifying ourselves as friends
 19:27:20.367219 Response sent (56 bytes) and written to log/17/server.response
 19:27:20.367231 special request received, no persistency
 19:27:20.367239 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 50270 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file netrc679
 machine 127.0.0.1 login "user one" password "with spaces and \"\n\r\t\a"
=== End of file netrc679
=== Start of file server.cmd
 Testnum 679
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind679
 ==114960== 
 ==114960== Process terminating with default action of signal 4 (SIGILL)
 ==114960==  Illegal opcode at address 0x492B75F
 ==114960==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==114960==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==114960==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==114960==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==114960==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==114960==    by 0x49908EB: curl_version_info (version.c:600)
 ==114960==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==114960==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==114960==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==114960==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind679
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:38821/we/want/695 > log/13/stdout695 2> log/13/stderr695
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind682 ../src/curl -q --output log/3/curl682.out  --include --trace-ascii log/3/trace682 --trace-time --netrc-optional --netrc-file log/3/netrc682 http://user1@127.0.0.1:36161/ > log/3/stdout682 2> log/3/stderr682
test 0696 [CONNECT_ONLY and doing a second curl_easy_perform]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:33897 > log/20/stdout696 2> log/20/stderr696

 696: stdout FAILED:
--- log/20/check-expected	2026-10-15 19:27:22.243630642 +0000
+++ log/20/check-generated	2026-10-15 19:27:22.239402732 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 200 OK swsclose[CR][LF]
-Server: test-server/fake[CR][LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
--foo-[LF]
-HTTP/1.1 200 OK swsclose[CR][LF]
-Server: test-server/fake[CR][LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
--foo-[LF]
== Contents of files in the log/20/ directory after test 696
=== Start of file check-expected
 HTTP/1.1 200 OK swsclose[CR][LF]
 Server: test-server/fake[CR][LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 -foo-[LF]
 HTTP/1.1 200 OK swsclose[CR][LF]
 Server: test-server/fake[CR][LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:33897 > log/20/stdout696 2> log/20/stderr696
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.704299 ====> Client connect
 19:27:20.704351 accept_connection 3 returned 4
 19:27:20.704381 Read 93 bytes
 19:27:20.704391 Process 93 bytes request
 19:27:20.704405 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.704413 Are-we-friendly question received
 19:27:20.704441 Wrote request (93 bytes) input to log/20/server.input
 19:27:20.704457 Identifying ourselves as friends
 19:27:20.704516 Response sent (56 bytes) and written to log/20/server.response
 19:27:20.704525 special request received, no persistency
 19:27:20.704533 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 56136 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 696
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind696
 ==115880== 
 ==115880== Process terminating with default action of signal 4 (SIGILL)
 ==115880==  Illegal opcode at address 0x51CC63F
 ==115880==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==115880==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==115880==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==115880==    by 0x40041AF: main (first.c:264)
=== End of file valgrind696
test 0695 [MIME parts reuse as a child part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:38821/we/want/695 > log/13/stdout695 2> log/13/stderr695

 695: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 695
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:38821/we/want/695 > log/13/stdout695 2> log/13/stderr695
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.539382 ====> Client connect
 19:27:20.539420 accept_connection 3 returned 4
 19:27:20.539443 Read 93 bytes
 19:27:20.539451 Process 93 bytes request
 19:27:20.539463 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.539470 Are-we-friendly question received
 19:27:20.539493 Wrote request (93 bytes) input to log/13/server.input
 19:27:20.539507 Identifying ourselves as friends
 19:27:20.539585 Response sent (56 bytes) and written to log/13/server.response
 19:27:20.539593 special request received, no persistency
 19:27:20.539600 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 60800 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 695
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind695
 ==115662== 
 ==115662== Process terminating with default action of signal 4 (SIGILL)
 ==115662==  Illegal opcode at address 0x51CC63F
 ==115662==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==115662==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==115662==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==115662==    by 0x40041AF: main (first.c:264)
=== End of file valgrind695
test 0682 [netrc with multiple logins - pick first]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind682 ../src/curl -q --output log/3/curl682.out  --include --trace-ascii log/3/trace682 --trace-time --netrc-optional --netrc-file log/3/netrc682 http://user1@127.0.0.1:36161/ > log/3/stdout682 2> log/3/stderr682

 682: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 682
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind682 ../src/curl -q --output log/3/curl682.out  --include --trace-ascii log/3/trace682 --trace-time --netrc-optional --netrc-file log/3/netrc682 http://user1@127.0.0.1:36161/ > log/3/stdout682 2> log/3/stderr682
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.753008 ====> Client connect
 19:27:20.753042 accept_connection 3 returned 4
 19:27:20.753063 Read 93 bytes
 19:27:20.753073 Process 93 bytes request
 19:27:20.753085 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.753094 Are-we-friendly question received
 19:27:20.753120 Wrote request (93 bytes) input to log/3/server.input
 19:27:20.753136 Identifying ourselves as friends
 19:27:20.753196 Response sent (56 bytes) and written to log/3/server.response
 19:27:20.753205 special request received, no persistency
 19:27:20.753213 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 41922 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 >CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind690 ../src/curl -q --include --trace-ascii log/16/trace690 --trace-time http://127.0.0.1:35903/ -O --output-dir log/16 > log/16/stdout690 2> log/16/stderr690
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind685 ../src/curl -q --output log/23/curl685.out  --include --trace-ascii log/23/trace685 --trace-time --netrc-optional --netrc-file log/23/netrc685 http://user@127.0.0.1:44711/ > log/23/stdout685 2> log/23/stderr685
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind684 ../src/curl -q --output log/1/curl684.out  --include --trace-ascii log/1/trace684 --trace-time --netrc-optional --netrc-file log/1/netrc684 http://127.0.0.1:38815/ > log/1/stdout684 2> log/1/stderr684
 Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file netrc682
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
=== End of file netrc682
=== Start of file server.cmd
 Testnum 682
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind682
 ==115160== 
 ==115160== Process terminating with default action of signal 4 (SIGILL)
 ==115160==  Illegal opcode at address 0x492B75F
 ==115160==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115160==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115160==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115160==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115160==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115160==    by 0x49908EB: curl_version_info (version.c:600)
 ==115160==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115160==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115160==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115160==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind682
test 0690 [-O with URL without path using trailing slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind690 ../src/curl -q --include --trace-ascii log/16/trace690 --trace-time http://127.0.0.1:35903/ -O --output-dir log/16 > log/16/stdout690 2> log/16/stderr690

 690: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 690
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind690 ../src/curl -q --include --trace-ascii log/16/trace690 --trace-time http://127.0.0.1:35903/ -O --output-dir log/16 > log/16/stdout690 2> log/16/stderr690
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.269369 ====> Client connect
 19:27:21.269402 accept_connection 3 returned 4
 19:27:21.269421 Read 93 bytes
 19:27:21.269430 Process 93 bytes request
 19:27:21.269442 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.269450 Are-we-friendly question received
 19:27:21.269474 Wrote request (93 bytes) input to log/16/server.input
 19:27:21.269488 Identifying ourselves as friends
 19:27:21.269544 Response sent (56 bytes) and written to log/16/server.response
 19:27:21.269553 special request received, no persistency
 19:27:21.269561 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 50344 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 690
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind690
 ==115426== 
 ==115426== Process terminating with default action of signal 4 (SIGILL)
 ==115426==  Illegal opcode at address 0x492B75F
 ==115426==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115426==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115426==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115426==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115426==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115426==    by 0x49908EB: curl_version_info (version.c:600)
 ==115426==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115426==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115426==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115426==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind690
test 0685 [netrc with no login - but provided user in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind685 ../src/curl -q --output log/23/curl685.out  --include --trace-ascii log/23/trace685 --trace-time --netrc-optional --netrc-file log/23/netrc685 http://user@127.0.0.1:44711/ > log/23/stdout685 2> log/23/stderr685

 685: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 685
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind685 ../src/curl -q --output log/23/curl685.out  --include --trace-ascii log/23/trace685 --trace-time --netrc-optional --netrc-file log/23/netrc685 http://user@127.0.0.1:44711/ > log/23/stdout685 2> log/23/stderr685
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.202188 ====> Client connect
 19:27:20.202228 accept_connection 3 returned 4
 19:27:20.202249 Read 93 bytes
 19:27:20.202259 Process 93 bytes request
 19:27:20.202270 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.202278 Are-we-friendly question received
 19:27:20.202330 Wrote request (93 bytes) input to log/23/server.input
 19:27:20.202348 Identifying ourselves as friends
 19:27:20.202411 Response sent (56 bytes) and written to log/23/server.response
 19:27:20.202421 special request received, no persistency
 19:27:20.202429 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 43454 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file netrc685
 machine 127.0.0.1 password firstthis login unknown
 machine 127.0.0.1 password 5up3r53cr37
 machine 127.0.0.1 password d1ff3r3nt login anotherone
=== End of file netrc685
=== Start of file server.cmd
 Testnum 685
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind685
 ==115321== 
 ==115321== Process terminating with default action of signal 4 (SIGILL)
 ==115321==  Illegal opcode at address 0x492B75F
 ==115321==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115321==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115321==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115321==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115321==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115321==    by 0x49908EB: curl_version_info (version.c:600)
 ==115321==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115321==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115321==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115321==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind685
test 0684 [netrc with no login]
../libtool --mode=execute /usr/binCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind683 ../src/curl -q --output log/6/curl683.out  --include --trace-ascii log/6/trace683 --trace-time --netrc-optional --netrc-file log/6/netrc683 http://user2@127.0.0.1:33935/ > log/6/stdout683 2> log/6/stderr683
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind686 ../src/curl -q --output log/15/curl686.out  --include --trace-ascii log/15/trace686 --trace-time htdhdhdtp://localhost --next > log/15/stdout686 2> log/15/stderr686
/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind684 ../src/curl -q --output log/1/curl684.out  --include --trace-ascii log/1/trace684 --trace-time --netrc-optional --netrc-file log/1/netrc684 http://127.0.0.1:38815/ > log/1/stdout684 2> log/1/stderr684

 684: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 684
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind684 ../src/curl -q --output log/1/curl684.out  --include --trace-ascii log/1/trace684 --trace-time --netrc-optional --netrc-file log/1/netrc684 http://127.0.0.1:38815/ > log/1/stdout684 2> log/1/stderr684
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.200367 ====> Client connect
 19:27:21.200404 accept_connection 3 returned 4
 19:27:21.200426 Read 93 bytes
 19:27:21.200436 Process 93 bytes request
 19:27:21.200450 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.200459 Are-we-friendly question received
 19:27:21.200488 Wrote request (93 bytes) input to log/1/server.input
 19:27:21.200505 Identifying ourselves as friends
 19:27:21.200574 Response sent (56 bytes) and written to log/1/server.response
 19:27:21.200585 special request received, no persistency
 19:27:21.200594 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 60196 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file netrc684
 machine 127.0.0.1 password 5up3r53cr37
=== End of file netrc684
=== Start of file server.cmd
 Testnum 684
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind684
 ==115322== 
 ==115322== Process terminating with default action of signal 4 (SIGILL)
 ==115322==  Illegal opcode at address 0x492B75F
 ==115322==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115322==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115322==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115322==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115322==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115322==    by 0x49908EB: curl_version_info (version.c:600)
 ==115322==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115322==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115322==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115322==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind684
test 0683 [netrc with multiple logins - pick second]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind683 ../src/curl -q --output log/6/curl683.out  --include --trace-ascii log/6/trace683 --trace-time --netrc-optional --netrc-file log/6/netrc683 http://user2@127.0.0.1:33935/ > log/6/stdout683 2> log/6/stderr683

 683: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 683
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind683 ../src/curl -q --output log/6/curl683.out  --include --trace-ascii log/6/trace683 --trace-time --netrc-optional --netrc-file log/6/netrc683 http://user2@127.0.0.1:33935/ > log/6/stdout683 2> log/6/stderr683
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.069799 ====> Client connect
 19:27:20.069837 accept_connection 3 returned 4
 19:27:20.069862 Read 93 bytes
 19:27:20.069872 Process 93 bytes request
 19:27:20.069886 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.069895 Are-we-friendly question received
 19:27:20.069924 Wrote request (93 bytes) input to log/6/server.input
 19:27:20.069940 Identifying ourselves as friends
 19:27:20.070001 Response sent (56 bytes) and written to log/6/server.response
 19:27:20.070010 special request received, no persistency
 19:27:20.070019 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 37422 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file netrc683
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
=== End of file netrc683
=== Start of file server.cmd
 Testnum 683
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind683
 ==115234== 
 ==115234== Process terminating with default action of signal 4 (SIGILL)
 ==115234==  Illegal opcode at address 0x492B75F
 ==115234==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115234==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115234==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115234==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115234==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115234==    by 0x49908EB: curl_version_info (version.c:600)
 ==115234==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115234==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115234==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115234==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind683
test 0686 [verify return code for missing URL after --next]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind686 ../src/curl -q --output log/15/curl686.out  --include --trace-ascii log/15/trace686 --trace-time htdhdhdtp://localhost --next > log/15/stdout686 2> log/15/stderr686

curl returned 132, when expecting 2
 686: exit FAILED
== Contents of files in the log/15/ directory after test 686
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind686 ../src/curl -q --output log/15/curl686.out  --include --trace-ascii log/15/trace686 --trace-time htdhdhdtp://localhost --next > log/15/stdout686 2> log/15/stderr686
=== End of file commands.log
=== Start of file server.cmd
 Testnum 686
=== End of file server.cmd
=== Start of file valgrind686
 ==115294== 
 ==115294== Process terminating with default action of signal 4 (SIGILL)
 ==115294==  Illegal opcode at address 0x492B75F
 ==115294==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115294==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115294==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115294==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115294==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==11CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind691 ../src/curl -q --include --trace-ascii log/8/trace691 --trace-time http://127.0.0.1:44467/path/to/here/ -O --output-dir log/8 > log/8/stdout691 2> log/8/stderr691
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:37539/689 > log/19/stdout689 2> log/19/stderr689
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind693 ../src/curl -q --output log/14/curl693.out  --include --trace-ascii log/14/trace693 --trace-time http://127.0.0.1:45467/693 --etag-save log/14/moo/boo/etag693 --create-dirs > log/14/stdout693 2> log/14/stderr693
5294==    by 0x49908EB: curl_version_info (version.c:600)
 ==115294==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115294==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind686
test 0691 [-O with URL with path using trailing slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind691 ../src/curl -q --include --trace-ascii log/8/trace691 --trace-time http://127.0.0.1:44467/path/to/here/ -O --output-dir log/8 > log/8/stdout691 2> log/8/stderr691

 691: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 691
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind691 ../src/curl -q --include --trace-ascii log/8/trace691 --trace-time http://127.0.0.1:44467/path/to/here/ -O --output-dir log/8 > log/8/stdout691 2> log/8/stderr691
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.457726 ====> Client connect
 19:27:20.457768 accept_connection 3 returned 4
 19:27:20.457790 Read 93 bytes
 19:27:20.457799 Process 93 bytes request
 19:27:20.457812 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.457821 Are-we-friendly question received
 19:27:20.457849 Wrote request (93 bytes) input to log/8/server.input
 19:27:20.457865 Identifying ourselves as friends
 19:27:20.457936 Response sent (56 bytes) and written to log/8/server.response
 19:27:20.457945 special request received, no persistency
 19:27:20.457953 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 42446 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 691
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind691
 ==115633== 
 ==115633== Process terminating with default action of signal 4 (SIGILL)
 ==115633==  Illegal opcode at address 0x492B75F
 ==115633==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115633==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115633==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115633==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115633==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115633==    by 0x49908EB: curl_version_info (version.c:600)
 ==115633==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115633==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind691
test 0693 [--etag-save with --create-dirs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind693 ../src/curl -q --output log/14/curl693.out  --include --trace-ascii log/14/trace693 --trace-time http://127.0.0.1:45467/693 --etag-save log/14/moo/boo/etag693 --create-dirs > log/14/stdout693 2> log/14/stderr693

 693: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 693
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind693 ../src/curl -q --output log/14/curl693.out  --include --trace-ascii log/14/trace693 --trace-time http://127.0.0.1:45467/693 --etag-save log/14/moo/boo/etag693 --create-dirs > log/14/stdout693 2> log/14/stderr693
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.549901 ====> Client connect
 19:27:20.549935 accept_connection 3 returned 4
 19:27:20.549956 Read 93 bytes
 19:27:20.549965 Process 93 bytes request
 19:27:20.549977 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.549986 Are-we-friendly question received
 19:27:20.550012 Wrote request (93 bytes) input to log/14/server.input
 19:27:20.550028 Identifying ourselves as friends
 19:27:20.550091 Response sent (56 bytes) and written to log/14/server.response
 19:27:20.550101 special request received, no persistency
 19:27:20.550109 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 42786 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 693
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind693
 ==115664== 
 ==115664== Process terminating with default action of signal 4 (SIGILL)
 ==115664==  Illegal opcode at address 0x492B75F
 ==115664==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115664==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115664==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115664==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115664==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115664==    by 0x49908EB: curl_version_info (version.c:600)
 ==115664==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115664==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115664==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115664==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind693
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/19/server/rtsp_server.pid" --portfile "log/19/server/rtsp_server.port" --logfile "log/19/rtsp_server.log" --logdir "log/19" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 115289 port 37539
* pid rtsp => 115289 115289
test 0689 [fuzzing crash issue #12701]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:37539/689 > log/19/stdout689 2> log/19/stderr689

 689: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 689
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:37539/689 > log/19/stdout689 2> log/19/stderr689
=== End of file commands.log
=== Start of file rtsp_server.log
 19:27:20.210479 Running IPv4 version on port 37539
 19:27:20.210608 Wrote pid 115289 to log/19/server/rtsp_server.pid
 19:27:20.21CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind692 ../src/curl -q --trace-ascii log/18/trace692 --trace-time http://127.0.0.1:43739/ -JO --output-dir log/18 > log/18/stdout692 2> log/18/stderr692
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind698 ../src/curl -q --output log/5/curl698.out  --include --trace-ascii log/5/trace698 --trace-time ftp://127.0.0.1:39641/698 --ftp-account "one count" ftp://127.0.0.1:39641/698 > log/5/stdout698 2> log/5/stderr698
0650 Wrote port 37539 to log/19/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 689
=== End of file server.cmd
=== Start of file valgrind689
 ==116138== 
 ==116138== Process terminating with default action of signal 4 (SIGILL)
 ==116138==  Illegal opcode at address 0x51CC63F
 ==116138==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==116138==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==116138==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==116138==    by 0x40041AF: main (first.c:264)
=== End of file valgrind689
test 0692 [-JO with URL without path using trailing slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind692 ../src/curl -q --trace-ascii log/18/trace692 --trace-time http://127.0.0.1:43739/ -JO --output-dir log/18 > log/18/stdout692 2> log/18/stderr692

 692: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 692
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind692 ../src/curl -q --trace-ascii log/18/trace692 --trace-time http://127.0.0.1:43739/ -JO --output-dir log/18 > log/18/stdout692 2> log/18/stderr692
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.543425 ====> Client connect
 19:27:21.543465 accept_connection 3 returned 4
 19:27:21.543488 Read 93 bytes
 19:27:21.543498 Process 93 bytes request
 19:27:21.543510 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.543518 Are-we-friendly question received
 19:27:21.543548 Wrote request (93 bytes) input to log/18/server.input
 19:27:21.543564 Identifying ourselves as friends
 19:27:21.543630 Response sent (56 bytes) and written to log/18/server.response
 19:27:21.543642 special request received, no persistency
 19:27:21.543651 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45816 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 692
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind692
 ==115672== 
 ==115672== Process terminating with default action of signal 4 (SIGILL)
 ==115672==  Illegal opcode at address 0x492B75F
 ==115672==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115672==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115672==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115672==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115672==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115672==    by 0x49908EB: curl_version_info (version.c:600)
 ==115672==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115672==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115672==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115672==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind692
test 0698 [FTP with ACCT and connection reuse]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind698 ../src/curl -q --output log/5/curl698.out  --include --trace-ascii log/5/trace698 --trace-time ftp://127.0.0.1:39641/698 --ftp-account "one count" ftp://127.0.0.1:39641/698 > log/5/stdout698 2> log/5/stderr698

 698: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 698
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind698 ../src/curl -q --output log/5/curl698.out  --include --trace-ascii log/5/trace698 --trace-time ftp://127.0.0.1:39641/698 --ftp-account "one count" ftp://127.0.0.1:39641/698 > log/5/stdout698 2> log/5/stderr698
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:21.162161 ====> Client connect
 19:27:21.162387 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:21.166575 < "USER anonymous"
 19:27:21.166626 > "331 We are happy you popped in![CR][LF]"
 19:27:21.166812 < "PASS ftp@example.com"
 19:27:21.166839 > "230 Welcome you silly person[CR][LF]"
 19:27:21.167055 < "PWD"
 19:27:21.167089 > "257 "/" is current directory[CR][LF]"
 19:27:21.167243 < "EPSV"
 19:27:21.167269 ====> Passive DATA channel requested by client
 19:27:21.167283 DATA sockfilt for passive data channel starting...
 19:27:21.176947 DATA sockfilt for passive data channel started (pid 115904)
 19:27:21.177116 DATA sockfilt for passive data channel listens on port 37321
 19:27:21.177167 > "229 Entering Passive Mode (|||37321|)[CR][LF]"
 19:27:21.177185 Client has been notified that upcoming DATA connection is awaited on port 37321
 19:27:21.177481 Client connects to port 37321
 19:27:21.177513 ====> Client established passive DATA connection on port 37321
 19:27:21.177650 < "TYPE I"
 19:27:21.177686 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:21.178225 < "SIZE verifiedserver"
 19:27:21.178264 > "213 17[CR][LF]"
 19:27:21.178430 < "RETR verifiedserver"
 19:27:21.178465 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:21.178563 =====> Closing passive DATA connection...
 19:27:21.178582 Server disconnects passive DATA connection
 19:27:21.178717 Server disconnected passive DATA connection
 19:27:21.178741 DATA sockfilt for passive data channel quits (pid 115904)
 19:27:21.178997 DATA sockfilt for passive data channel quit (pid 115904)
 19:27:21.179019 =====> Closed passive DATA connection
 19:27:21.179042 > "226 File transfer complete[CR][LF]"
 19:27:21.235521 < "QUIT"
 19:27:21.235580 > "221 bye bye baby[CR][LF]"
 19:27:21.236563 MAIN sockfilt said DISC
 19:27:21.236595 ====> Client disconnected
 19:27:21.236672 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:20.770972 ====> Client connect
 19:27:20.771371 Received DATA (on stdin)
 19:27:20.771389 > 146 bytes data, server => client
 19:27:20.771401 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:20.771411 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:20.771420 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:20.775220 < 16 bytes data, client => server
 19:27:20.775247 'USER anonymous\r\n'
 19:27:20.775586 Received DATA (on stdin)
 19:27:20.775600 > 33 bytes data, server => client
 19:27:20.775609 '331 We are happy you popped in!\r\n'
 19:27:20.775667 < 22 bytes data, client => server
 19:27:20.775677 'PASS ftp@example.com\r\n'
 19:27:20.775789 Received DATA (on stdin)
 19:27:20.775798 > 30 bytes data, server => client
 19:27:20.775807 '230 Welcome you silly person\r\n'
 19:27:20.775853 < 5 bytes data, client => server
 19:27:20.775862 'PWD\r\n'
 19:27:20.776040 Received DATA (on stdin)
 19:27:20.776050 > 30 bytes data, server => client
 19:27:20.776059 '257 "/" is current directory\r\n'
 19:27:20.776118 < 6 bytes data, client => server
 19:27:20.776127 'EPSV\r\n'
 19:27:20.786147 Received DATA (on stdin)
 19:27:20.786164 > 39 bytes data, server => client
 19:27:20.786174 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind697 ../src/curl -q --output log/7/curl697.out  --include --trace-ascii log/7/trace697 --trace-time --netrc --netrc-file log/7/netrc697 http://user1@http.example/ > log/7/stdout697 2> log/7/stderr697
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind699 ../src/curl -q --output log/9/curl699.out  --include --trace-ascii log/9/trace699 --trace-time http://127.0.0.1:43733/699 -K log/9/cmd > log/9/stdout699 2> log/9/stderr699
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind705 ../src/curl -q --output log/12/curl705.out  --include --trace-ascii log/12/trace705 --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:40921/705 > log/12/stdout705 2> log/12/stderr705
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind704 ../src/curl -q --output log/11/curl704.out  --include --trace-ascii log/11/trace704 --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:40989/704 > log/11/stdout704 2> log/11/stderr704
'229 Entering Passive Mode (|||37321|)\r\n'
 19:27:20.786485 < 8 bytes data, client => server
 19:27:20.786497 'TYPE I\r\n'
 19:27:20.786640 Received DATA (on stdin)
 19:27:20.786650 > 33 bytes data, server => client
 19:27:20.786661 '200 I modify TYPE as you wanted\r\n'
 19:27:20.787078 < 21 bytes data, client => server
 19:27:20.787095 'SIZE verifiedserver\r\n'
 19:27:20.787218 Received DATA (on stdin)
 19:27:20.787231 > 8 bytes data, server => client
 19:27:20.787241 '213 17\r\n'
 19:27:20.787294 < 21 bytes data, client => server
 19:27:20.787305 'RETR verifiedserver\r\n'
 19:27:20.787992 Received DATA (on stdin)
 19:27:20.788003 > 29 bytes data, server => client
 19:27:20.788012 '150 Binary junk (17 bytes).\r\n'
 19:27:20.788035 Received DATA (on stdin)
 19:27:20.788044 > 28 bytes data, server => client
 19:27:20.788053 '226 File transfer complete\r\n'
 19:27:20.844274 < 6 bytes data, client => server
 19:27:20.844301 'QUIT\r\n'
 19:27:20.844528 Received DATA (on stdin)
 19:27:20.844540 > 18 bytes data, server => client
 19:27:20.844550 '221 bye bye baby\r\n'
 19:27:20.845452 ====> Client disconnect
 19:27:20.845618 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:21.785122 Running IPv4 version
 19:27:21.785253 Listening on port 37321
 19:27:21.785294 Wrote pid 115904 to log/5/server/ftp_sockdata.pid
 19:27:21.785828 Received PING (on stdin)
 19:27:21.785964 Received PORT (on stdin)
 19:27:21.786379 ====> Client connect
 19:27:21.787534 Received DATA (on stdin)
 19:27:21.787546 > 17 bytes data, server => client
 19:27:21.787556 'WE ROOLZ: 85245\r\n'
 19:27:21.787585 Received DISC (on stdin)
 19:27:21.787612 ====> Client forcibly disconnected
 19:27:21.787697 Received QUIT (on stdin)
 19:27:21.787706 quits
 19:27:21.787770 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 332 please provide account name
 REPLY ACCT 230 thank you
 Testnum 698
=== End of file server.cmd
=== Start of file valgrind698
 ==115999== 
 ==115999== Process terminating with default action of signal 4 (SIGILL)
 ==115999==  Illegal opcode at address 0x492B75F
 ==115999==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115999==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115999==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115999==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115999==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115999==    by 0x49908EB: curl_version_info (version.c:600)
 ==115999==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115999==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115999==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115999==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind698
test 0697 [netrc with missing netrc file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind697 ../src/curl -q --output log/7/curl697.out  --include --trace-ascii log/7/trace697 --trace-time --netrc --netrc-file log/7/netrc697 http://user1@http.example/ > log/7/stdout697 2> log/7/stderr697

curl returned 132, when expecting 2
 697: exit FAILED
== Contents of files in the log/7/ directory after test 697
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind697 ../src/curl -q --output log/7/curl697.out  --include --trace-ascii log/7/trace697 --trace-time --netrc --netrc-file log/7/netrc697 http://user1@http.example/ > log/7/stdout697 2> log/7/stderr697
=== End of file commands.log
=== Start of file server.cmd
 Testnum 697
=== End of file server.cmd
=== Start of file valgrind697
 ==115747== 
 ==115747== Process terminating with default action of signal 4 (SIGILL)
 ==115747==  Illegal opcode at address 0x492B75F
 ==115747==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==115747==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==115747==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==115747==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==115747==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==115747==    by 0x49908EB: curl_version_info (version.c:600)
 ==115747==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==115747==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==115747==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==115747==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind697
test 0699 [--config with single-letter options plus one that is cleared]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind699 ../src/curl -q --output log/9/curl699.out  --include --trace-ascii log/9/trace699 --trace-time http://127.0.0.1:43733/699 -K log/9/cmd > log/9/stdout699 2> log/9/stderr699

 699: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 699
=== Start of file cmd
 -Lfuhej:you
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind699 ../src/curl -q --output log/9/curl699.out  --include --trace-ascii log/9/trace699 --trace-time http://127.0.0.1:43733/699 -K log/9/cmd > log/9/stdout699 2> log/9/stderr699
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.844350 ====> Client connect
 19:27:20.844394 accept_connection 3 returned 4
 19:27:20.844420 Read 93 bytes
 19:27:20.844430 Process 93 bytes request
 19:27:20.844443 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.844451 Are-we-friendly question received
 19:27:20.844481 Wrote request (93 bytes) input to log/9/server.input
 19:27:20.844498 Identifying ourselves as friends
 19:27:20.844588 Response sent (56 bytes) and written to log/9/server.response
 19:27:20.844599 special request received, no persistency
 19:27:20.844607 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35908 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 699
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind699
 ==116008== 
 ==116008== Process terminating with default action of signal 4 (SIGILL)
 ==116008==  Illegal opcode at address 0x492B75F
 ==116008==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116008==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116008==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116008==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116008==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116008==    by 0x49908EB: curl_version_info (version.c:600)
 ==116008==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116008==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116008==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116008==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind699
test 0705 [Attempt connect to non-listening SOCKS5 proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-calCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind702 ../src/curl -q --output log/4/curl702.out  --include --trace-ascii log/4/trace702 --trace-time --socks4 127.0.0.1:44355 http://127.0.0.1:47 > log/4/stdout702 2> log/4/stderr702
lers=16 --log-file=log/12/valgrind705 ../src/curl -q --output log/12/curl705.out  --include --trace-ascii log/12/trace705 --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:40921/705 > log/12/stdout705 2> log/12/stderr705

curl returned 132, when expecting 7
 705: exit FAILED
== Contents of files in the log/12/ directory after test 705
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind705 ../src/curl -q --output log/12/curl705.out  --include --trace-ascii log/12/trace705 --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:40921/705 > log/12/stdout705 2> log/12/stderr705
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.632642 ====> Client connect
 19:27:21.632681 accept_connection 3 returned 4
 19:27:21.632703 Read 93 bytes
 19:27:21.632712 Process 93 bytes request
 19:27:21.632725 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.632733 Are-we-friendly question received
 19:27:21.634154 Wrote request (93 bytes) input to log/12/server.input
 19:27:21.634240 Identifying ourselves as friends
 19:27:21.634324 Response sent (56 bytes) and written to log/12/server.response
 19:27:21.634335 special request received, no persistency
 19:27:21.634343 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 51172 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 705
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind705
 ==116244== 
 ==116244== Process terminating with default action of signal 4 (SIGILL)
 ==116244==  Illegal opcode at address 0x492B75F
 ==116244==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116244==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116244==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116244==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116244==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116244==    by 0x49908EB: curl_version_info (version.c:600)
 ==116244==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116244==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116244==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116244==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind705
test 0704 [Attempt connect to non-listening SOCKS4 proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind704 ../src/curl -q --output log/11/curl704.out  --include --trace-ascii log/11/trace704 --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:40989/704 > log/11/stdout704 2> log/11/stderr704

curl returned 132, when expecting 7
 704: exit FAILED
== Contents of files in the log/11/ directory after test 704
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind704 ../src/curl -q --output log/11/curl704.out  --include --trace-ascii log/11/trace704 --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:40989/704 > log/11/stdout704 2> log/11/stderr704
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.623271 ====> Client connect
 19:27:21.623323 accept_connection 3 returned 4
 19:27:21.623348 Read 93 bytes
 19:27:21.623358 Process 93 bytes request
 19:27:21.623370 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.623379 Are-we-friendly question received
 19:27:21.623405 Wrote request (93 bytes) input to log/11/server.input
 19:27:21.623422 Identifying ourselves as friends
 19:27:21.623484 Response sent (56 bytes) and written to log/11/server.response
 19:27:21.623494 special request received, no persistency
 19:27:21.623503 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 35342 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 704
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind704
 ==116235== 
 ==116235== Process terminating with default action of signal 4 (SIGILL)
 ==116235==  Illegal opcode at address 0x492B75F
 ==116235==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116235==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116235==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116235==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116235==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116235==    by 0x49908EB: curl_version_info (version.c:600)
 ==116235==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116235==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116235==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116235==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind704
startnew: ./server/servers socksd --port 0 --pidfile log/4/server/socks_server.pid --portfile log/4/server/socks_server.port --reqfile log/4/socksd-request.log --logfile log/4/socks_server.log --backend 127.0.0.1 --config log/4/server.cmd
RUN: SOCKS server is now running PID 116118
* pid socks => 116118 116118
test 0702 [Attempt connect to non-listening HTTP server via SOCKS4 proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind702 ../src/curl -q --output log/4/curl702.out  --include --trace-ascii log/4/trace702 --trace-time --socks4 127.0.0.1:44355 http://127.0.0.1:47 > log/4/stdout702 2> log/4/stderr702

curl returned 132, when expecting 97
 702: exit FAILED
== Contents of files in the log/4/ directory after test 702
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind702 ../src/curl -q --output log/4/curl702.out  --include --trace-ascii log/4/trace702 --trace-time --socks4 127.0.0.1:44355 http://127.0.0.1:47 > log/4/stdout702 2> log/4/stderr702
=== End of file commands.log
=== Start of file server.cmd
 response 91
 Testnum 702
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:21.073484 Running IPv4 version
 19:27:21.073586 Listening on port 44355
 19:27:21.073621 Wrote pid 116118 to log/4/server/socks_server.pid
 19:27:21.073648 Wrote port 44355 to log/4/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind702
 ==116485== 
 ==116485== Process terminating with default action of signal 4 (SIGILL)
 ==116485==  Illegal opcode at address 0x492B75F
 ==116485==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116485==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116485==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116485==    by 0x49A9B9E: Curl_ossl_version (openssl.c:547CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind701 ../src/curl -q --output log/24/curl701.out  --include --trace-ascii log/24/trace701 --trace-time --socks5 127.0.0.1:44947 http://127.0.0.1:38895/701 > log/24/stdout701 2> log/24/stderr701
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind703 ../src/curl -q --output log/10/curl703.out  --include --trace-ascii log/10/trace703 --trace-time --socks5 127.0.0.1:36847 http://127.0.0.1:47 > log/10/stdout703 2> log/10/stderr703
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind700 ../src/curl -q --output log/21/curl700.out  --include --trace-ascii log/21/trace700 --trace-time --socks4 127.0.0.1:36491 http://127.0.0.1:39881/700 > log/21/stdout700 2> log/21/stderr700
3)
 ==116485==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116485==    by 0x49908EB: curl_version_info (version.c:600)
 ==116485==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116485==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind702
startnew: ./server/servers socksd --port 0 --pidfile log/24/server/socks_server.pid --portfile log/24/server/socks_server.port --reqfile log/24/socksd-request.log --logfile log/24/socks_server.log --backend 127.0.0.1 --config log/24/server.cmd
RUN: SOCKS server is now running PID 116104
* pid socks => 116104 116104
test 0701 [HTTP GET via SOCKS5 proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind701 ../src/curl -q --output log/24/curl701.out  --include --trace-ascii log/24/trace701 --trace-time --socks5 127.0.0.1:44947 http://127.0.0.1:38895/701 > log/24/stdout701 2> log/24/stderr701

 701: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 701
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind701 ../src/curl -q --output log/24/curl701.out  --include --trace-ascii log/24/trace701 --trace-time --socks5 127.0.0.1:44947 http://127.0.0.1:38895/701 > log/24/stdout701 2> log/24/stderr701
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.023901 ====> Client connect
 19:27:21.023938 accept_connection 3 returned 4
 19:27:21.023961 Read 93 bytes
 19:27:21.023971 Process 93 bytes request
 19:27:21.023983 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.023992 Are-we-friendly question received
 19:27:21.024022 Wrote request (93 bytes) input to log/24/server.input
 19:27:21.024040 Identifying ourselves as friends
 19:27:21.024107 Response sent (56 bytes) and written to log/24/server.response
 19:27:21.024118 special request received, no persistency
 19:27:21.024127 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 42402 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 701
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file socks_server.log
 19:27:21.041436 Running IPv4 version
 19:27:21.044289 Listening on port 44947
 19:27:21.044340 Wrote pid 116104 to log/24/server/socks_server.pid
 19:27:21.044398 Wrote port 44947 to log/24/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind701
 ==116469== 
 ==116469== Process terminating with default action of signal 4 (SIGILL)
 ==116469==  Illegal opcode at address 0x492B75F
 ==116469==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116469==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116469==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116469==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116469==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116469==    by 0x49908EB: curl_version_info (version.c:600)
 ==116469==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116469==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind701
startnew: ./server/servers socksd --port 0 --pidfile log/10/server/socks_server.pid --portfile log/10/server/socks_server.port --reqfile log/10/socksd-request.log --logfile log/10/socks_server.log --backend 127.0.0.1 --config log/10/server.cmd
RUN: SOCKS server is now running PID 116160
* pid socks => 116160 116160
test 0703 [Attempt connect to non-listening HTTP server via SOCKS5 proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind703 ../src/curl -q --output log/10/curl703.out  --include --trace-ascii log/10/trace703 --trace-time --socks5 127.0.0.1:36847 http://127.0.0.1:47 > log/10/stdout703 2> log/10/stderr703

curl returned 132, when expecting 97
 703: exit FAILED
== Contents of files in the log/10/ directory after test 703
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind703 ../src/curl -q --output log/10/curl703.out  --include --trace-ascii log/10/trace703 --trace-time --socks5 127.0.0.1:36847 http://127.0.0.1:47 > log/10/stdout703 2> log/10/stderr703
=== End of file commands.log
=== Start of file server.cmd
 response 1
 Testnum 703
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:21.296975 Running IPv4 version
 19:27:21.297081 Listening on port 36847
 19:27:21.297128 Wrote pid 116160 to log/10/server/socks_server.pid
 19:27:21.297165 Wrote port 36847 to log/10/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind703
 ==116599== 
 ==116599== Process terminating with default action of signal 4 (SIGILL)
 ==116599==  Illegal opcode at address 0x492B75F
 ==116599==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116599==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116599==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116599==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116599==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116599==    by 0x49908EB: curl_version_info (version.c:600)
 ==116599==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116599==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116599==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116599==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind703
startnew: ./server/servers socksd --port 0 --pidfile log/21/server/socks_server.pid --portfile log/21/server/socks_server.port --reqfile log/21/socksd-request.log --logfile log/21/socks_server.log --backend 127.0.0.1 --config log/21/server.cmd
RUN: SOCKS server is now running PID 115986
* pid socks => 115986 115986
test 0700 [HTTP GET via SOCKS4 proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind700 ../src/curl -q --output log/21/curl700.out  --include --trace-ascii log/21/trace700 --trace-time --socks4 127.0.0.1:36491 http://127.0.0.1:39881/700 > log/21/stdout700 2> log/21/stderr700

 700: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 700
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind700 ../src/curl -q --output log/21/curl700.out  --include --trace-ascii log/21/trace700 --trace-time --socks4 127.0.0.1:36491 http://127.0.0.1:39881/700 > log/21/stdout700 2> log/21/stderr700
=== End of file commands.log
=== Start of file http_server.log
 19:27:20.837649 ====> Client connect
 19:27:20.837683 accepCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind706 ../src/curl -q --output log/2/curl706.out  --include --trace-ascii log/2/trace706 --trace-time --socks4 127.0.0.1:36107 ftp://127.0.0.1:38033/ > log/2/stdout706 2> log/2/stderr706
t_connection 3 returned 4
 19:27:20.837835 Read 93 bytes
 19:27:20.837846 Process 93 bytes request
 19:27:20.837858 Got request: GET /verifiedserver HTTP/1.1
 19:27:20.837867 Are-we-friendly question received
 19:27:20.837892 Wrote request (93 bytes) input to log/21/server.input
 19:27:20.837909 Identifying ourselves as friends
 19:27:20.837962 Response sent (56 bytes) and written to log/21/server.response
 19:27:20.837970 special request received, no persistency
 19:27:20.837977 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 51576 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 700
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file socks_server.log
 19:27:21.846583 Running IPv4 version
 19:27:21.846654 Listening on port 36491
 19:27:21.846691 Wrote pid 115986 to log/21/server/socks_server.pid
 19:27:21.846720 Wrote port 36491 to log/21/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind700
 ==116389== 
 ==116389== Process terminating with default action of signal 4 (SIGILL)
 ==116389==  Illegal opcode at address 0x492B75F
 ==116389==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116389==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116389==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116389==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116389==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116389==    by 0x49908EB: curl_version_info (version.c:600)
 ==116389==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116389==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116389==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116389==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind700
startnew: ./server/servers socksd --port 0 --pidfile log/2/server/socks_server.pid --portfile log/2/server/socks_server.port --reqfile log/2/socksd-request.log --logfile log/2/socks_server.log --backend 127.0.0.1 --config log/2/server.cmd
RUN: SOCKS server is now running PID 116357
* pid socks => 116357 116357
test 0706 [FTP dir list PASV via SOCKS4]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind706 ../src/curl -q --output log/2/curl706.out  --include --trace-ascii log/2/trace706 --trace-time --socks4 127.0.0.1:36107 ftp://127.0.0.1:38033/ > log/2/stdout706 2> log/2/stderr706

 706: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 706
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind706 ../src/curl -q --output log/2/curl706.out  --include --trace-ascii log/2/trace706 --trace-time --socks4 127.0.0.1:36107 ftp://127.0.0.1:38033/ > log/2/stdout706 2> log/2/stderr706
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.119601 ====> Client connect
 19:27:22.119817 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.125655 < "USER anonymous"
 19:27:22.125822 > "331 We are happy you popped in![CR][LF]"
 19:27:22.125887 < "PASS ftp@example.com"
 19:27:22.125912 > "230 Welcome you silly person[CR][LF]"
 19:27:22.127271 < "PWD"
 19:27:22.127308 > "257 "/" is current directory[CR][LF]"
 19:27:22.127500 < "EPSV"
 19:27:22.127523 ====> Passive DATA channel requested by client
 19:27:22.127536 DATA sockfilt for passive data channel starting...
 19:27:22.132808 DATA sockfilt for passive data channel started (pid 116309)
 19:27:22.132934 DATA sockfilt for passive data channel listens on port 46317
 19:27:22.132974 > "229 Entering Passive Mode (|||46317|)[CR][LF]"
 19:27:22.132991 Client has been notified that upcoming DATA connection is awaited on port 46317
 19:27:22.133266 Client connects to port 46317
 19:27:22.133300 ====> Client established passive DATA connection on port 46317
 19:27:22.133374 < "TYPE I"
 19:27:22.133401 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:22.133547 < "SIZE verifiedserver"
 19:27:22.133578 > "213 17[CR][LF]"
 19:27:22.133706 < "RETR verifiedserver"
 19:27:22.133737 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.133819 =====> Closing passive DATA connection...
 19:27:22.133833 Server disconnects passive DATA connection
 19:27:22.134039 Server disconnected passive DATA connection
 19:27:22.134067 DATA sockfilt for passive data channel quits (pid 116309)
 19:27:22.134287 DATA sockfilt for passive data channel quit (pid 116309)
 19:27:22.134316 =====> Closed passive DATA connection
 19:27:22.134344 > "226 File transfer complete[CR][LF]"
 19:27:22.185698 < "QUIT"
 19:27:22.185766 > "221 bye bye baby[CR][LF]"
 19:27:22.187121 MAIN sockfilt said DISC
 19:27:22.187164 ====> Client disconnected
 19:27:22.187253 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:21.728106 ====> Client connect
 19:27:21.728645 Received DATA (on stdin)
 19:27:21.728661 > 146 bytes data, server => client
 19:27:21.728673 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:21.728683 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:21.728692 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:21.734242 < 16 bytes data, client => server
 19:27:21.734269 'USER anonymous\r\n'
 19:27:21.734493 Received DATA (on stdin)
 19:27:21.734505 > 33 bytes data, server => client
 19:27:21.734523 '331 We are happy you popped in!\r\n'
 19:27:21.734576 < 22 bytes data, client => server
 19:27:21.734587 'PASS ftp@example.com\r\n'
 19:27:21.734719 Received DATA (on stdin)
 19:27:21.734729 > 30 bytes data, server => client
 19:27:21.734738 '230 Welcome you silly person\r\n'
 19:27:21.734791 < 5 bytes data, client => server
 19:27:21.734802 'PWD\r\n'
 19:27:21.736116 Received DATA (on stdin)
 19:27:21.736127 > 30 bytes data, server => client
 19:27:21.736137 '257 "/" is current directory\r\n'
 19:27:21.736203 < 6 bytes data, client => server
 19:27:21.736213 'EPSV\r\n'
 19:27:21.741803 Received DATA (on stdin)
 19:27:21.741815 > 39 bytes data, server => client
 19:27:21.741825 '229 Entering Passive Mode (|||46317|)\r\n'
 19:27:21.742020 < 8 bytes data, client => server
 19:27:21.742030 'TYPE I\r\n'
 19:27:21.742206 Received DATA (on stdin)
 19:27:21.742215 > 33 bytes data, server => client
 19:27:21.742225 '200 I modify TYPE as you wanted\r\n'
 19:27:21.742275 < 21 bytes data, client => server
 19:27:21.742283 'SIZE verifiedserver\r\n'
 19:27:21.742380 Received DATA (on stdin)
 19:27:21.742389 > 8 bytes data, server => client
 19:27:21.742397 '213 17\r\n'
 19:27:21.742439 < 21 bytes data, client => server
 19:27:21.742448 'RETR verifiedserver\r\n'
 19:27:21.742713 Received DATA (on stdin)
 19:27:21.742723 > 29 bytes data, server => client
 19:27:21.742732 '150 Binary junk (17 bytes).\r\n'
 19:27:21.743152 Received DATA (on stdin)
 19:27:21.743163 > 28 bytes data, server => client
 19:27:21.743172 '226 File transfer complete\r\n'
 19:27:21.794266 < 6 bytes data, client => server
 19:27:21.794302 'QUIT\r\n'
 19:27:21.794584 Received DATA (on stdin)
 19:27:21.794601 > 18 bytes data, server => client
 19:27:21.794611 '221 bye bye baby\r\n'
 19:27:21.795857 ====> Client disconnect
 19:27:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind718 ../src/curl -q --output log/19/curl718.out  --include --trace-ascii log/19/trace718 --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:46497 --proxytunnel > log/19/stdout718 2> log/19/stderr718
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind707 ../src/curl -q --output log/22/curl707.out  --include --trace-ascii log/22/trace707 --trace-time --socks5 127.0.0.1:33567 ftp://127.0.0.1:33255/ > log/22/stdout707 2> log/22/stderr707
21.796065 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.741102 Running IPv4 version
 19:27:22.741182 Listening on port 46317
 19:27:22.741217 Wrote pid 116309 to log/2/server/ftp_sockdata.pid
 19:27:22.741369 Received PING (on stdin)
 19:27:22.741646 Received PORT (on stdin)
 19:27:22.741993 ====> Client connect
 19:27:22.742637 Received DATA (on stdin)
 19:27:22.742648 > 17 bytes data, server => client
 19:27:22.742657 'WE ROOLZ: 85208\r\n'
 19:27:22.742681 Received DISC (on stdin)
 19:27:22.742691 ====> Client forcibly disconnected
 19:27:22.742882 Received QUIT (on stdin)
 19:27:22.742894 quits
 19:27:22.742959 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 706
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:22.817005 Running IPv4 version
 19:27:22.817209 Listening on port 36107
 19:27:22.817248 Wrote pid 116357 to log/2/server/socks_server.pid
 19:27:22.817280 Wrote port 36107 to log/2/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind706
 ==116826== 
 ==116826== Process terminating with default action of signal 4 (SIGILL)
 ==116826==  Illegal opcode at address 0x492B75F
 ==116826==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116826==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116826==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116826==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116826==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116826==    by 0x49908EB: curl_version_info (version.c:600)
 ==116826==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116826==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116826==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116826==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind706
test 0718 [HTTP proxy CONNECT (no auth) with proxy returning 407 and closing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind718 ../src/curl -q --output log/19/curl718.out  --include --trace-ascii log/19/trace718 --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:46497 --proxytunnel > log/19/stdout718 2> log/19/stderr718

 718: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 718
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind718 ../src/curl -q --output log/19/curl718.out  --include --trace-ascii log/19/trace718 --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:46497 --proxytunnel > log/19/stdout718 2> log/19/stderr718
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.760730 ====> Client connect
 19:27:22.760782 accept_connection 3 returned 4
 19:27:22.760813 Read 93 bytes
 19:27:22.760825 Process 93 bytes request
 19:27:22.760838 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.760847 Are-we-friendly question received
 19:27:22.760878 Wrote request (93 bytes) input to log/19/server.input
 19:27:22.760897 Identifying ourselves as friends
 19:27:22.760991 Response sent (56 bytes) and written to log/19/server.response
 19:27:22.761001 special request received, no persistency
 19:27:22.761009 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 58264 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 718
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind718
 ==116796== 
 ==116796== Process terminating with default action of signal 4 (SIGILL)
 ==116796==  Illegal opcode at address 0x492B75F
 ==116796==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116796==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116796==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116796==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116796==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116796==    by 0x49908EB: curl_version_info (version.c:600)
 ==116796==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116796==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116796==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116796==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind718
startnew: ./server/servers socksd --port 0 --pidfile log/22/server/socks_server.pid --portfile log/22/server/socks_server.port --reqfile log/22/socksd-request.log --logfile log/22/socks_server.log --backend 127.0.0.1 --config log/22/server.cmd
RUN: SOCKS server is now running PID 116373
* pid socks => 116373 116373
test 0707 [FTP dir list PASV via SOCKS5]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind707 ../src/curl -q --output log/22/curl707.out  --include --trace-ascii log/22/trace707 --trace-time --socks5 127.0.0.1:33567 ftp://127.0.0.1:33255/ > log/22/stdout707 2> log/22/stderr707

 707: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 707
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind707 ../src/curl -q --output log/22/curl707.out  --include --trace-ascii log/22/trace707 --trace-time --socks5 127.0.0.1:33567 ftp://127.0.0.1:33255/ > log/22/stdout707 2> log/22/stderr707
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.168039 ====> Client connect
 19:27:22.168271 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.168564 < "USER anonymous"
 19:27:22.168597 > "331 We are happy you popped in![CR][LF]"
 19:27:22.168788 < "PASS ftp@example.com"
 19:27:22.168815 > "230 Welcome you silly person[CR][LF]"
 19:27:22.168983 < "PWD"
 19:27:22.169018 > "257 "/" is current directory[CR][LF]"
 19:27:22.169177 < "EPSV"
 19:27:22.169201 ====> Passive DATA channel requested by client
 19:27:22.169216 DATA sockfilt for passive data channel starting...
 19:27:22.178766 DATA sockfilt for passive data channel started (pid 116348)
 19:27:22.178914 DATA sockfilt for passive data channel listens on port 37551
 19:27:22.178960 > "229 Entering Passive Mode (|||37551|)[CR][LF]"
 19:27:22.178977 Client has been notified that upcoming DATA connection is awaited on port 37551
 19:27:22.179297 Client connects to port 37551
 19:27:22.179328 ====> Client established passive DATA connection on port 37551
 19:27:22.179416 < "TYPE I"
 19:27:22.179446 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:22.179593 < "SIZE verifiedserver"
 19:27:22.179629 > "213 17[CR][LF]"
 19:27:22.179774 < "RETR verifiedserver"
 19:27:22.179807 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.179897 =====> Closing passive DATA connection...
 19:27:22.179914 Server disconnects passive DATA connection
 19:27:22.180126 Server disconCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind708 ../src/curl -q --output log/17/curl708.out  --include --trace-ascii log/17/trace708 --trace-time http://127.0.0.1:35993/708 > log/17/stdout708 2> log/17/stderr708
nected passive DATA connection
 19:27:22.180150 DATA sockfilt for passive data channel quits (pid 116348)
 19:27:22.180384 DATA sockfilt for passive data channel quit (pid 116348)
 19:27:22.180409 =====> Closed passive DATA connection
 19:27:22.180435 > "226 File transfer complete[CR][LF]"
 19:27:22.225777 < "QUIT"
 19:27:22.225845 > "221 bye bye baby[CR][LF]"
 19:27:22.227176 MAIN sockfilt said DISC
 19:27:22.227217 ====> Client disconnected
 19:27:22.227297 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:22.776692 ====> Client connect
 19:27:22.777088 Received DATA (on stdin)
 19:27:22.777102 > 146 bytes data, server => client
 19:27:22.777114 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:22.777124 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:22.777136 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:22.777218 < 16 bytes data, client => server
 19:27:22.777230 'USER anonymous\r\n'
 19:27:22.777401 Received DATA (on stdin)
 19:27:22.777412 > 33 bytes data, server => client
 19:27:22.777422 '331 We are happy you popped in!\r\n'
 19:27:22.777497 < 22 bytes data, client => server
 19:27:22.777509 'PASS ftp@example.com\r\n'
 19:27:22.777617 Received DATA (on stdin)
 19:27:22.777629 > 30 bytes data, server => client
 19:27:22.777640 '230 Welcome you silly person\r\n'
 19:27:22.777697 < 5 bytes data, client => server
 19:27:22.777708 'PWD\r\n'
 19:27:22.777819 Received DATA (on stdin)
 19:27:22.777829 > 30 bytes data, server => client
 19:27:22.777839 '257 "/" is current directory\r\n'
 19:27:22.777898 < 6 bytes data, client => server
 19:27:22.777908 'EPSV\r\n'
 19:27:22.787786 Received DATA (on stdin)
 19:27:22.787802 > 39 bytes data, server => client
 19:27:22.787813 '229 Entering Passive Mode (|||37551|)\r\n'
 19:27:22.788017 < 8 bytes data, client => server
 19:27:22.788031 'TYPE I\r\n'
 19:27:22.788245 Received DATA (on stdin)
 19:27:22.788255 > 33 bytes data, server => client
 19:27:22.788265 '200 I modify TYPE as you wanted\r\n'
 19:27:22.788315 < 21 bytes data, client => server
 19:27:22.788324 'SIZE verifiedserver\r\n'
 19:27:22.788426 Received DATA (on stdin)
 19:27:22.788436 > 8 bytes data, server => client
 19:27:22.788445 '213 17\r\n'
 19:27:22.788492 < 21 bytes data, client => server
 19:27:22.788502 'RETR verifiedserver\r\n'
 19:27:22.788714 Received DATA (on stdin)
 19:27:22.788725 > 29 bytes data, server => client
 19:27:22.788735 '150 Binary junk (17 bytes).\r\n'
 19:27:22.789234 Received DATA (on stdin)
 19:27:22.789246 > 28 bytes data, server => client
 19:27:22.789256 '226 File transfer complete\r\n'
 19:27:22.834339 < 6 bytes data, client => server
 19:27:22.834386 'QUIT\r\n'
 19:27:22.834640 Received DATA (on stdin)
 19:27:22.834652 > 18 bytes data, server => client
 19:27:22.834661 '221 bye bye baby\r\n'
 19:27:22.835909 ====> Client disconnect
 19:27:22.836091 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.781841 Running IPv4 version
 19:27:22.781925 Listening on port 37551
 19:27:22.781961 Wrote pid 116348 to log/22/server/ftp_sockdata.pid
 19:27:22.787463 Received PING (on stdin)
 19:27:22.787615 Received PORT (on stdin)
 19:27:22.788051 ====> Client connect
 19:27:22.788760 Received DATA (on stdin)
 19:27:22.788771 > 17 bytes data, server => client
 19:27:22.788781 'WE ROOLZ: 84714\r\n'
 19:27:22.788804 Received DISC (on stdin)
 19:27:22.788814 ====> Client forcibly disconnected
 19:27:22.788956 Received QUIT (on stdin)
 19:27:22.788967 quits
 19:27:22.789036 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 707
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:22.841483 Running IPv4 version
 19:27:22.841572 Listening on port 33567
 19:27:22.841618 Wrote pid 116373 to log/22/server/socks_server.pid
 19:27:22.841654 Wrote port 33567 to log/22/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind707
 ==116839== 
 ==116839== Process terminating with default action of signal 4 (SIGILL)
 ==116839==  Illegal opcode at address 0x492B75F
 ==116839==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116839==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116839==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116839==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116839==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116839==    by 0x49908EB: curl_version_info (version.c:600)
 ==116839==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116839==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116839==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116839==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind707
startnew: ./server/servers socksd --port 0 --pidfile log/17/server/socks_server.pid --portfile log/17/server/socks_server.port --reqfile log/17/socksd-request.log --logfile log/17/socks_server.log --backend 127.0.0.1 --config log/17/server.cmd
RUN: SOCKS server is now running PID 116436
* pid socks => 116436 116436
setenv all_proxy = socks4://127.0.0.1:46575
test 0708 [HTTP GET via SOCKS4 all_proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind708 ../src/curl -q --output log/17/curl708.out  --include --trace-ascii log/17/trace708 --trace-time http://127.0.0.1:35993/708 > log/17/stdout708 2> log/17/stderr708

 708: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 708
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind708 ../src/curl -q --output log/17/curl708.out  --include --trace-ascii log/17/trace708 --trace-time http://127.0.0.1:35993/708 > log/17/stdout708 2> log/17/stderr708
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.927499 ====> Client connect
 19:27:22.927549 accept_connection 3 returned 4
 19:27:22.927574 Read 93 bytes
 19:27:22.927585 Process 93 bytes request
 19:27:22.927599 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.927607 Are-we-friendly question received
 19:27:22.927637 Wrote request (93 bytes) input to log/17/server.input
 19:27:22.927655 Identifying ourselves as friends
 19:27:22.927728 Response sent (56 bytes) and written to log/17/server.response
 19:27:22.927739 special request received, no persistency
 19:27:22.927747 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 58906 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 708
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file socks_server.log
 19:27:22.943319 Running IPv4 version
 19:27:22.943412 Listening on port 46575
 19:27:22.943456 Wrote pid 116436 to log/17/server/socks_server.pid
 19:27:22.943531 Wrote port 46575 to log/17/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind708
 ==116970== 
 ==116970== Process terminating with default action of signal 4 (SIGILL)
 ==116970==  Illegal opcode at address 0x492B75F
 ==116970==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116970==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116970==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==1169CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind722 ../src/curl -q --output log/7/curl722.out  --include --trace-ascii log/7/trace722 --trace-time --ipfs-gateway http://127.0.0.1:40859 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/7/stdout722 2> log/7/stderr722
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind723 ../src/curl -q --output log/9/curl723.out  --include --trace-ascii log/9/trace723 --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/9/stdout723 2> log/9/stderr723
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind709 ../src/curl -q --output log/20/curl709.out  --include --trace-ascii log/20/trace709 --trace-time http://127.0.0.1:33897/709 > log/20/stdout709 2> log/20/stderr709
70==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116970==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116970==    by 0x49908EB: curl_version_info (version.c:600)
 ==116970==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116970==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116970==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116970==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind708
test 0722 [IPFS]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind722 ../src/curl -q --output log/7/curl722.out  --include --trace-ascii log/7/trace722 --trace-time --ipfs-gateway http://127.0.0.1:40859 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/7/stdout722 2> log/7/stderr722

 722: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 722
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind722 ../src/curl -q --output log/7/curl722.out  --include --trace-ascii log/7/trace722 --trace-time --ipfs-gateway http://127.0.0.1:40859 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/7/stdout722 2> log/7/stderr722
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.944013 ====> Client connect
 19:27:22.944054 accept_connection 3 returned 4
 19:27:22.944080 Read 93 bytes
 19:27:22.944090 Process 93 bytes request
 19:27:22.944102 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.944110 Are-we-friendly question received
 19:27:22.944137 Wrote request (93 bytes) input to log/7/server.input
 19:27:22.944154 Identifying ourselves as friends
 19:27:22.944242 Response sent (56 bytes) and written to log/7/server.response
 19:27:22.944254 special request received, no persistency
 19:27:22.944262 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 53976 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 722
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind722
 ==116965== 
 ==116965== Process terminating with default action of signal 4 (SIGILL)
 ==116965==  Illegal opcode at address 0x492B75F
 ==116965==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116965==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116965==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116965==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116965==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116965==    by 0x49908EB: curl_version_info (version.c:600)
 ==116965==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116965==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116965==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116965==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind722
test 0723 [IPFS with malformed gateway URL (bad function argument error)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind723 ../src/curl -q --output log/9/curl723.out  --include --trace-ascii log/9/trace723 --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/9/stdout723 2> log/9/stderr723

curl returned 132, when expecting 43
 723: exit FAILED
== Contents of files in the log/9/ directory after test 723
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind723 ../src/curl -q --output log/9/curl723.out  --include --trace-ascii log/9/trace723 --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/9/stdout723 2> log/9/stderr723
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.925571 ====> Client connect
 19:27:22.925606 accept_connection 3 returned 4
 19:27:22.925627 Read 93 bytes
 19:27:22.925637 Process 93 bytes request
 19:27:22.925649 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.925658 Are-we-friendly question received
 19:27:22.925685 Wrote request (93 bytes) input to log/9/server.input
 19:27:22.925701 Identifying ourselves as friends
 19:27:22.925795 Response sent (56 bytes) and written to log/9/server.response
 19:27:22.925806 special request received, no persistency
 19:27:22.925814 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 55654 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 723
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind723
 ==116943== 
 ==116943== Process terminating with default action of signal 4 (SIGILL)
 ==116943==  Illegal opcode at address 0x492B75F
 ==116943==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116943==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116943==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116943==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116943==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116943==    by 0x49908EB: curl_version_info (version.c:600)
 ==116943==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116943==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind723
startnew: ./server/servers socksd --port 0 --pidfile log/20/server/socks_server.pid --portfile log/20/server/socks_server.port --reqfile log/20/socksd-request.log --logfile log/20/socks_server.log --backend 127.0.0.1 --config log/20/server.cmd
RUN: SOCKS server is now running PID 116438
* pid socks => 116438 116438
setenv http_proxy = socks5://127.0.0.1:45691
test 0709 [HTTP GET via SOCKS5 set in http_proxy environment variable]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind709 ../src/curl -q --output log/20/curl709.out  --include --trace-ascii log/20/trace709 --trace-time http://127.0.0.1:33897/709 > log/20/stdout709 2> log/20/stderr709

 709: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 709
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind710 ../src/curl -q --output log/13/curl710.out  --include --trace-ascii log/13/trace710 --trace-time http://127.0.0.1:38821/710 --proxy socks5://127.0.0.1:41949 > log/13/stdout710 2> log/13/stderr710
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind716 ../src/curl -q --output log/15/curl716.out  --include --trace-ascii log/15/trace716 --trace-time http://localhost:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:38929 > log/15/stdout716 2> log/15/stderr716
l/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind709 ../src/curl -q --output log/20/curl709.out  --include --trace-ascii log/20/trace709 --trace-time http://127.0.0.1:33897/709 > log/20/stdout709 2> log/20/stderr709
=== End of file commands.log
=== Start of file http_server.log
 19:27:21.936087 ====> Client connect
 19:27:21.936126 accept_connection 3 returned 4
 19:27:21.936149 Read 93 bytes
 19:27:21.936159 Process 93 bytes request
 19:27:21.936173 Got request: GET /verifiedserver HTTP/1.1
 19:27:21.936182 Are-we-friendly question received
 19:27:21.936369 Wrote request (93 bytes) input to log/20/server.input
 19:27:21.936397 Identifying ourselves as friends
 19:27:21.936464 Response sent (56 bytes) and written to log/20/server.response
 19:27:21.936475 special request received, no persistency
 19:27:21.936484 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54106 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 709
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file socks_server.log
 19:27:22.946886 Running IPv4 version
 19:27:22.946976 Listening on port 45691
 19:27:22.947022 Wrote pid 116438 to log/20/server/socks_server.pid
 19:27:22.947057 Wrote port 45691 to log/20/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind709
 ==116967== 
 ==116967== Process terminating with default action of signal 4 (SIGILL)
 ==116967==  Illegal opcode at address 0x492B75F
 ==116967==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==116967==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==116967==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==116967==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==116967==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==116967==    by 0x49908EB: curl_version_info (version.c:600)
 ==116967==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==116967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==116967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==116967==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind709
startnew: ./server/servers socksd --port 0 --pidfile log/13/server/socks_server.pid --portfile log/13/server/socks_server.port --reqfile log/13/socksd-request.log --logfile log/13/socks_server.log --backend 127.0.0.1 --config log/13/server.cmd
RUN: SOCKS server is now running PID 116536
* pid socks => 116536 116536
test 0710 [HTTP GET via SOCKS5 set with --proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind710 ../src/curl -q --output log/13/curl710.out  --include --trace-ascii log/13/trace710 --trace-time http://127.0.0.1:38821/710 --proxy socks5://127.0.0.1:41949 > log/13/stdout710 2> log/13/stderr710

 710: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 710
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind710 ../src/curl -q --output log/13/curl710.out  --include --trace-ascii log/13/trace710 --trace-time http://127.0.0.1:38821/710 --proxy socks5://127.0.0.1:41949 > log/13/stdout710 2> log/13/stderr710
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.160812 ====> Client connect
 19:27:22.160853 accept_connection 3 returned 4
 19:27:22.161436 Read 93 bytes
 19:27:22.161456 Process 93 bytes request
 19:27:22.161470 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.161480 Are-we-friendly question received
 19:27:22.161516 Wrote request (93 bytes) input to log/13/server.input
 19:27:22.161536 Identifying ourselves as friends
 19:27:22.161608 Response sent (56 bytes) and written to log/13/server.response
 19:27:22.161620 special request received, no persistency
 19:27:22.161629 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 53580 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 710
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file socks_server.log
 19:27:22.171229 Running IPv4 version
 19:27:22.171325 Listening on port 41949
 19:27:22.171361 Wrote pid 116536 to log/13/server/socks_server.pid
 19:27:22.171393 Wrote port 41949 to log/13/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind710
 ==117193== 
 ==117193== Process terminating with default action of signal 4 (SIGILL)
 ==117193==  Illegal opcode at address 0x492B75F
 ==117193==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117193==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117193==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117193==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117193==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117193==    by 0x49908EB: curl_version_info (version.c:600)
 ==117193==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117193==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind710
startnew: ./server/servers socksd --port 0 --pidfile log/15/server/socks_server.pid --portfile log/15/server/socks_server.port --reqfile log/15/socksd-request.log --logfile log/15/socks_server.log --backend 127.0.0.1 --config log/15/server.cmd
RUN: SOCKS server is now running PID 116704
* pid socks => 116704 116704
test 0716 [SOCKS5 proxy with too long username]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind716 ../src/curl -q --output log/15/curl716.out  --include --trace-ascii log/15/trace716 --trace-time http://localhost:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:38929 > log/15/stdout716 2> log/15/stderr716

curl returned 132, when expecting 97
 716: exit FAILED
== Contents of files in the log/15/ directory after test 716
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind716 ../src/curl -q --output log/15/curl716.out  --include --trace-ascii log/15/trace716 --trace-time http://localhost:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind712 ../src/curl -q --output log/16/curl712.out  --include --trace-ascii log/16/trace712 --trace-time ftp://127.0.0.1:40031/712 --proxy socks5://127.0.0.1:38511 > log/16/stdout712 2> log/16/stderr712
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:38929 > log/15/stdout716 2> log/15/stderr716
=== End of file commands.log
=== Start of file server.cmd
 method 2
 Testnum 716
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:22.523288 Running IPv4 version
 19:27:22.523375 Listening on port 38929
 19:27:22.523417 Wrote pid 116704 to log/15/server/socks_server.pid
 19:27:22.523451 Wrote port 38929 to log/15/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind716
 ==117314== 
 ==117314== Process terminating with default action of signal 4 (SIGILL)
 ==117314==  Illegal opcode at address 0x492B75F
 ==117314==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117314==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117314==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117314==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117314==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117314==    by 0x49908EB: curl_version_info (version.c:600)
 ==117314==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117314==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117314==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117314==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind716
startnew: ./server/servers socksd --port 0 --pidfile log/16/server/socks_server.pid --portfile log/16/server/socks_server.port --reqfile log/16/socksd-request.log --logfile log/16/socks_server.log --backend 127.0.0.1 --config log/16/server.cmd
RUN: SOCKS server is now running PID 116731
* pid socks => 116731 116731
test 0712 [FTP fetch with --proxy set to socks5://]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind712 ../src/curl -q --output log/16/curl712.out  --include --trace-ascii log/16/trace712 --trace-time ftp://127.0.0.1:40031/712 --proxy socks5://127.0.0.1:38511 > log/16/stdout712 2> log/16/stderr712

 712: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 712
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind712 ../src/curl -q --output log/16/curl712.out  --include --trace-ascii log/16/trace712 --trace-time ftp://127.0.0.1:40031/712 --proxy socks5://127.0.0.1:38511 > log/16/stdout712 2> log/16/stderr712
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.898401 ====> Client connect
 19:27:22.898866 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.899015 < "USER anonymous"
 19:27:22.899094 > "331 We are happy you popped in![CR][LF]"
 19:27:22.899284 < "PASS ftp@example.com"
 19:27:22.899318 > "230 Welcome you silly person[CR][LF]"
 19:27:22.899508 < "PWD"
 19:27:22.899581 > "257 "/" is current directory[CR][LF]"
 19:27:22.899762 < "EPSV"
 19:27:22.899791 ====> Passive DATA channel requested by client
 19:27:22.899807 DATA sockfilt for passive data channel starting...
 19:27:22.917351 DATA sockfilt for passive data channel started (pid 116701)
 19:27:22.917480 DATA sockfilt for passive data channel listens on port 45297
 19:27:22.917524 > "229 Entering Passive Mode (|||45297|)[CR][LF]"
 19:27:22.917541 Client has been notified that upcoming DATA connection is awaited on port 45297
 19:27:22.917798 Client connects to port 45297
 19:27:22.917824 ====> Client established passive DATA connection on port 45297
 19:27:22.917905 < "TYPE I"
 19:27:22.917932 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:22.918064 < "SIZE verifiedserver"
 19:27:22.918095 > "213 17[CR][LF]"
 19:27:22.918219 < "RETR verifiedserver"
 19:27:22.918246 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.918323 =====> Closing passive DATA connection...
 19:27:22.918337 Server disconnects passive DATA connection
 19:27:22.918521 Server disconnected passive DATA connection
 19:27:22.918544 DATA sockfilt for passive data channel quits (pid 116701)
 19:27:22.922994 DATA sockfilt for passive data channel quit (pid 116701)
 19:27:22.923039 =====> Closed passive DATA connection
 19:27:22.923080 > "226 File transfer complete[CR][LF]"
 19:27:22.968819 < "QUIT"
 19:27:22.968888 > "221 bye bye baby[CR][LF]"
 19:27:22.971415 MAIN sockfilt said DISC
 19:27:22.971468 ====> Client disconnected
 19:27:22.972899 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:22.506958 ====> Client connect
 19:27:22.507342 Received DATA (on stdin)
 19:27:22.507364 > 146 bytes data, server => client
 19:27:22.507388 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:22.507400 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:22.507410 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:22.507495 < 16 bytes data, client => server
 19:27:22.507508 'USER anonymous\r\n'
 19:27:22.507729 Received DATA (on stdin)
 19:27:22.507743 > 33 bytes data, server => client
 19:27:22.507798 '331 We are happy you popped in!\r\n'
 19:27:22.507860 < 22 bytes data, client => server
 19:27:22.507875 'PASS ftp@example.com\r\n'
 19:27:22.508014 Received DATA (on stdin)
 19:27:22.508026 > 30 bytes data, server => client
 19:27:22.508037 '230 Welcome you silly person\r\n'
 19:27:22.508096 < 5 bytes data, client => server
 19:27:22.508110 'PWD\r\n'
 19:27:22.508220 Received DATA (on stdin)
 19:27:22.508232 > 30 bytes data, server => client
 19:27:22.508276 '257 "/" is current directory\r\n'
 19:27:22.508371 < 6 bytes data, client => server
 19:27:22.508388 'EPSV\r\n'
 19:27:22.526237 Received DATA (on stdin)
 19:27:22.526253 > 39 bytes data, server => client
 19:27:22.526261 '229 Entering Passive Mode (|||45297|)\r\n'
 19:27:22.526437 < 8 bytes data, client => server
 19:27:22.526446 'TYPE I\r\n'
 19:27:22.526619 Received DATA (on stdin)
 19:27:22.526628 > 33 bytes data, server => client
 19:27:22.526636 '200 I modify TYPE as you wanted\r\n'
 19:27:22.526680 < 21 bytes data, client => server
 19:27:22.526689 'SIZE verifiedserver\r\n'
 19:27:22.526780 Received DATA (on stdin)
 19:27:22.526789 > 8 bytes data, server => client
 19:27:22.526796 '213 17\r\n'
 19:27:22.526839 < 21 bytes data, client => server
 19:27:22.526847 'RETR verifiedserver\r\n'
 19:27:22.527025 Received DATA (on stdin)
 19:27:22.527034 > 29 bytes data, server => client
 19:27:22.527042 '150 Binary junk (17 bytes).\r\n'
 19:27:22.534010 Received DATA (on stdin)
 19:27:22.534034 > 28 bytes data, server => client
 19:27:22.534044 '226 File transfer complete\r\n'
 19:27:22.574092 < 6 bytes data, client => server
 19:27:22.574123 'QUIT\r\n'
 19:27:22.578859 Received DATA (on stdin)
 19:27:22.578885 > 18 bytes data, server => client
 19:27:22.578895 '221 bye bye baby\r\n'
 19:27:22.580032 ====> Client disconnect
 19:27:22.580177 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.523439 Running IPv4 version
 19:27:22.523498 Listening on port 45297
 19:27:22.523532 Wrote pid 116701 to log/16/server/ftp_sockdata.pid
 19:27:22.525968 Received PING (on stdin)
 19:27:22.526078 Received PORT (on stdin)
 19:27:22.526413 ====> Client connect
 19:27:22.527063 Received DATA (on stdin)
 19:27:22.527073 > 17 bytes data, server => client
 19:27:22.527081 'WE ROOLZ: 84702\r\n'
 19:27:22.527100 Received DISC (on stdin)
 19:27:22.527109 ====> Client forcibly disconnected
 19:27:22.527234 Received QUIT (on stdin)
 19:27:22.527243 quits
 19:27:22.527298 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 712
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:22.588365 Running IPv4 version
 19:27:22.588478 Listening on port 38511
 19:27:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind717 ../src/curl -q --output log/8/curl717.out  --include --trace-ascii log/8/trace717 --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:39719 > log/8/stdout717 2> log/8/stderr717
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind715 ../src/curl -q --output log/6/curl715.out  --include --trace-ascii log/6/trace715 --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:33989 --proxytunnel --proxy 127.0.0.1:40259 --preproxy socks5://127.0.0.1:45269 > log/6/stdout715 2> log/6/stderr715
2.588519 Wrote pid 116731 to log/16/server/socks_server.pid
 19:27:22.588555 Wrote port 38511 to log/16/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind712
 ==117376== 
 ==117376== Process terminating with default action of signal 4 (SIGILL)
 ==117376==  Illegal opcode at address 0x492B75F
 ==117376==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117376==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117376==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117376==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117376==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117376==    by 0x49908EB: curl_version_info (version.c:600)
 ==117376==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117376==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117376==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117376==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind712
startnew: ./server/servers socksd --port 0 --pidfile log/8/server/socks_server.pid --portfile log/8/server/socks_server.port --reqfile log/8/socksd-request.log --logfile log/8/socks_server.log --backend 127.0.0.1 --config log/8/server.cmd
RUN: SOCKS server is now running PID 116716
* pid socks => 116716 116716
test 0717 [SOCKS5 proxy auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind717 ../src/curl -q --output log/8/curl717.out  --include --trace-ascii log/8/trace717 --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:39719 > log/8/stdout717 2> log/8/stderr717

 717: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 717
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind717 ../src/curl -q --output log/8/curl717.out  --include --trace-ascii log/8/trace717 --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:39719 > log/8/stdout717 2> log/8/stderr717
=== End of file commands.log
=== Start of file http_server.log
 19:27:23.663913 ====> Client connect
 19:27:23.663959 accept_connection 3 returned 4
 19:27:23.663986 Read 93 bytes
 19:27:23.663997 Process 93 bytes request
 19:27:23.664009 Got request: GET /verifiedserver HTTP/1.1
 19:27:23.664018 Are-we-friendly question received
 19:27:23.664051 Wrote request (93 bytes) input to log/8/server.input
 19:27:23.664071 Identifying ourselves as friends
 19:27:23.664164 Response sent (56 bytes) and written to log/8/server.response
 19:27:23.664177 special request received, no persistency
 19:27:23.664186 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 49468 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 method 2
 user uz3r
 password p4ssworm
 backendport 44467
 Testnum 717
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file socks_server.log
 19:27:22.544572 Running IPv4 version
 19:27:22.544661 Listening on port 39719
 19:27:22.544697 Wrote pid 116716 to log/8/server/socks_server.pid
 19:27:22.544726 Wrote port 39719 to log/8/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind717
 ==117516== 
 ==117516== Process terminating with default action of signal 4 (SIGILL)
 ==117516==  Illegal opcode at address 0x492B75F
 ==117516==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117516==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117516==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117516==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117516==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117516==    by 0x49908EB: curl_version_info (version.c:600)
 ==117516==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117516==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117516==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117516==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind717
startnew: ./server/servers socksd --port 0 --pidfile log/6/server/socks_server.pid --portfile log/6/server/socks_server.port --reqfile log/6/socksd-request.log --logfile log/6/socks_server.log --backend 127.0.0.1 --config log/6/server.cmd
RUN: SOCKS server is now running PID 116766
* pid socks => 116766 116766
test 0715 [FTP fetch with --preproxy, --proxy and --connect-to]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind715 ../src/curl -q --output log/6/curl715.out  --include --trace-ascii log/6/trace715 --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:33989 --proxytunnel --proxy 127.0.0.1:40259 --preproxy socks5://127.0.0.1:45269 > log/6/stdout715 2> log/6/stderr715

 715: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 715
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind715 ../src/curl -q --output log/6/curl715.out  --include --trace-ascii log/6/trace715 --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:33989 --proxytunnel --proxy 127.0.0.1:40259 --preproxy socks5://127.0.0.1:45269 > log/6/stdout715 2> log/6/stderr715
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.961773 ====> Client connect
 19:27:22.962027 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.962388 < "USER anonymous"
 19:27:22.962437 > "331 We are happy you popped in![CR][LF]"
 19:27:22.962640 < "PASS ftp@example.com"
 19:27:22.962679 > "230 Welcome you silly person[CR][LF]"
 19:27:22.962875 < "PWD"
 19:27:22.962914 > "257 "/" is current directory[CR][LF]"
 19:27:22.963109 < "EPSV"
 19:27:22.963138 ====> Passive DATA channel requested by client
 19:27:22.963156 DATA sockfilt for passive data channel starting...
 19:27:22.978925 DATA sockfilt for passive data channel started (pid 116728)
 19:27:22.979075 DATA sockfilt for passive data channel listens on port 42083
 19:27:22.979125 > "229 Entering Passive Mode (|||42083|)[CR][LF]"
 19:27:22.979143 Client has been notified that upcoming DATA connection is awaited on port 42083
 19:27:22.979460 Client connects to port 42083
 19:27:22.979493 ====> Client established passive DATA connection on port 42083
 19:27:22.979585 < "TYPE I"
 19:27:22.979619 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:22.979792 < "SIZE verifiedserver"
 19:27:22.979836 > "213 17[CR][LF]"
 19:27:22.979989 < "RETR verifiedserver"
 19:27:22.980027 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.980117 =====> Closing passive DATA connection...
 19:27:22.980133 Server disconnects passive DATA connection
 19:27:22.980348 Server disconnected passive DATA connection
 19:27:22.980374 DATA sockfilt for passive data channel quits (pid 116728)
 19:27:22.980631 DATA sockfilt for passive data channel quit (pid 116728)
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind713 ../src/curl -q --output log/23/curl713.out  --include --trace-ascii log/23/trace713 --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:35523 --proxy socks5://127.0.0.1:42299 > log/23/stdout713 2> log/23/stderr713
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind711 ../src/curl -q --output log/3/curl711.out  --include --trace-ascii log/3/trace711 --trace-time ftp://127.0.0.1:42249/711 > log/3/stdout711 2> log/3/stderr711
7:22.980652 =====> Closed passive DATA connection
 19:27:22.980677 > "226 File transfer complete[CR][LF]"
 19:27:23.022376 < "QUIT"
 19:27:23.022438 > "221 bye bye baby[CR][LF]"
 19:27:23.023819 MAIN sockfilt said DISC
 19:27:23.023865 ====> Client disconnected
 19:27:23.023953 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:23.570310 ====> Client connect
 19:27:23.570741 Received DATA (on stdin)
 19:27:23.570759 > 146 bytes data, server => client
 19:27:23.570771 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:23.570781 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:23.570790 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:23.570897 < 16 bytes data, client => server
 19:27:23.570914 'USER anonymous\r\n'
 19:27:23.571131 Received DATA (on stdin)
 19:27:23.571145 > 33 bytes data, server => client
 19:27:23.571156 '331 We are happy you popped in!\r\n'
 19:27:23.571211 < 22 bytes data, client => server
 19:27:23.571224 'PASS ftp@example.com\r\n'
 19:27:23.571369 Received DATA (on stdin)
 19:27:23.571382 > 30 bytes data, server => client
 19:27:23.571394 '230 Welcome you silly person\r\n'
 19:27:23.571453 < 5 bytes data, client => server
 19:27:23.571468 'PWD\r\n'
 19:27:23.571599 Received DATA (on stdin)
 19:27:23.571611 > 30 bytes data, server => client
 19:27:23.571622 '257 "/" is current directory\r\n'
 19:27:23.571691 < 6 bytes data, client => server
 19:27:23.571706 'EPSV\r\n'
 19:27:23.587833 Received DATA (on stdin)
 19:27:23.587850 > 39 bytes data, server => client
 19:27:23.587860 '229 Entering Passive Mode (|||42083|)\r\n'
 19:27:23.588057 < 8 bytes data, client => server
 19:27:23.588070 'TYPE I\r\n'
 19:27:23.588299 Received DATA (on stdin)
 19:27:23.588311 > 33 bytes data, server => client
 19:27:23.588321 '200 I modify TYPE as you wanted\r\n'
 19:27:23.588380 < 21 bytes data, client => server
 19:27:23.588390 'SIZE verifiedserver\r\n'
 19:27:23.588516 Received DATA (on stdin)
 19:27:23.588526 > 8 bytes data, server => client
 19:27:23.588535 '213 17\r\n'
 19:27:23.588587 < 21 bytes data, client => server
 19:27:23.588597 'RETR verifiedserver\r\n'
 19:27:23.588813 Received DATA (on stdin)
 19:27:23.588823 > 29 bytes data, server => client
 19:27:23.588832 '150 Binary junk (17 bytes).\r\n'
 19:27:23.589356 Received DATA (on stdin)
 19:27:23.589367 > 28 bytes data, server => client
 19:27:23.589376 '226 File transfer complete\r\n'
 19:27:23.630836 < 6 bytes data, client => server
 19:27:23.630871 'QUIT\r\n'
 19:27:23.631126 Received DATA (on stdin)
 19:27:23.631142 > 18 bytes data, server => client
 19:27:23.631153 '221 bye bye baby\r\n'
 19:27:23.632431 ====> Client disconnect
 19:27:23.632639 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.584940 Running IPv4 version
 19:27:22.585023 Listening on port 42083
 19:27:22.585065 Wrote pid 116728 to log/6/server/ftp_sockdata.pid
 19:27:22.587516 Received PING (on stdin)
 19:27:22.587650 Received PORT (on stdin)
 19:27:22.588091 ====> Client connect
 19:27:22.588859 Received DATA (on stdin)
 19:27:22.588871 > 17 bytes data, server => client
 19:27:22.588882 'WE ROOLZ: 85558\r\n'
 19:27:22.588905 Received DISC (on stdin)
 19:27:22.588914 ====> Client forcibly disconnected
 19:27:22.589060 Received QUIT (on stdin)
 19:27:22.589070 quits
 19:27:22.589136 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http2_server.log
 19:27:23.733581 ====> Client connect
 19:27:23.733615 accept_connection 3 returned 4
 19:27:23.733634 Read 93 bytes
 19:27:23.733643 Process 93 bytes request
 19:27:23.733664 Got request: GET /verifiedserver HTTP/1.1
 19:27:23.733672 Are-we-friendly question received
 19:27:23.733697 Wrote request (93 bytes) input to log/6/proxy.input
 19:27:23.733713 Identifying ourselves as friends
 19:27:23.733771 Response sent (56 bytes) and written to log/6/proxy.response
 19:27:23.733779 special request received, no persistency
 19:27:23.733786 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:40259...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40259) from 127.0.0.1 port 54126 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40259
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40259 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 84342
=== End of file http2_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 84342
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 715
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:23.743852 Running IPv4 version
 19:27:23.743937 Listening on port 45269
 19:27:23.743994 Wrote pid 116766 to log/6/server/socks_server.pid
 19:27:23.744028 Wrote port 45269 to log/6/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind715
 ==117615== 
 ==117615== Process terminating with default action of signal 4 (SIGILL)
 ==117615==  Illegal opcode at address 0x492B75F
 ==117615==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117615==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117615==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117615==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117615==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117615==    by 0x49908EB: curl_version_info (version.c:600)
 ==117615==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117615==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117615==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117615==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind715
startnew: ./server/servers socksd --port 0 --pidfile log/3/server/socks_server.pid --portfile log/3/server/socks_server.port --reqfile log/3/socksd-request.log --logfile log/3/socks_server.log --backend 127.0.0.1 --config log/3/server.cmd
RUN: SOCKS server is now running PID 116629
* pid socks => 116629 116629
setenv all_proxy = socks5://127.0.0.1:46021
test 0711 [FTP fetch with all_proxy set to socks5]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind711 ../src/curl -q --output log/3/curl711.out  --include --trace-ascii log/3/trace711 --trace-time ftp://127.0.0.1:42249/711 > log/3/stdout711 2> log/3/stderr711

 711: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 711
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind711 ../src/curl -q --output log/3/curl711.out  --include --trace-ascii log/3/trace711 --trace-time ftp://127.0.0.1:42249/711 > log/3/stdout711 2> log/3/stderr711
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.729135 ====> Client connect
 19:27:22.729391 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.729659 < "USER anonymous"
 19:27:22.729696 > "331 We are happy you popped in![CR][LF]"
 19:27:22.729889 < "PASS ftp@example.com"
 19:27:22.729920 > "230 Welcome you silly person[CR][LF]"
 19:27:22.730096 < "PWD"
 19:27:22.730133 > "257 "/" is current directory[CR][LF]"
 19:27:22.730295 < "EPSV"
 19:27:22.730321 ====> Passive DATA channel requested by client
 19:27:22.730338 DATA sockfilt for passive data channel starting...
 19:27:22.743851 DATA sockfilt for passive data channel started (pid 116612)
 19:27:22.744013 DATA sockfilt for passive data channel listens on port 41659
 19:27:22.744066 > "229 Entering Passive Mode (|||41659|)[CR][LF]"
 19:27:22.744088 Client has been notified that upcoming DATA connection is awaited on port 41659
 19:27:22.744381 Client connects to port 41659
 19:27:22.744418 ====> Client established passive DATA connection on port 41659
 19:27:22.744571 < "TYPE I"
 19:27:22.744611 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:22.744798 < "SIZE verifiedserver"
 19:27:22.744840 > "213 17[CR][LF]"
 19:27:22.745010 < "RETR verifiedserver"
 19:27:22.745046 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.745137 =====> Closing passive DATA connection...
 19:27:22.745156 Server disconnects passive DATA connection
 19:27:22.745321 Server disconnected passive DATA connection
 19:27:22.745353 DATA sockfilt for passive data channel quits (pid 116612)
 19:27:22.745600 DATA sockfilt for passive data channel quit (pid 116612)
 19:27:22.745626 =====> Closed passive DATA connection
 19:27:22.745657 > "226 File transfer complete[CR][LF]"
 19:27:22.788924 < "QUIT"
 19:27:22.788977 > "221 bye bye baby[CR][LF]"
 19:27:22.790182 MAIN sockfilt said DISC
 19:27:22.790226 ====> Client disconnected
 19:27:22.790291 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:23.337715 ====> Client connect
 19:27:23.338041 Received DATA (on stdin)
 19:27:23.338059 > 146 bytes data, server => client
 19:27:23.338116 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:23.338127 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:23.338136 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:23.338219 < 16 bytes data, client => server
 19:27:23.338236 'USER anonymous\r\n'
 19:27:23.338412 Received DATA (on stdin)
 19:27:23.338424 > 33 bytes data, server => client
 19:27:23.338435 '331 We are happy you popped in!\r\n'
 19:27:23.338506 < 22 bytes data, client => server
 19:27:23.338520 'PASS ftp@example.com\r\n'
 19:27:23.338640 Received DATA (on stdin)
 19:27:23.338652 > 30 bytes data, server => client
 19:27:23.338662 '230 Welcome you silly person\r\n'
 19:27:23.338717 < 5 bytes data, client => server
 19:27:23.338731 'PWD\r\n'
 19:27:23.338850 Received DATA (on stdin)
 19:27:23.338861 > 30 bytes data, server => client
 19:27:23.338871 '257 "/" is current directory\r\n'
 19:27:23.338931 < 6 bytes data, client => server
 19:27:23.338941 'EPSV\r\n'
 19:27:23.352816 Received DATA (on stdin)
 19:27:23.352833 > 39 bytes data, server => client
 19:27:23.352843 '229 Entering Passive Mode (|||41659|)\r\n'
 19:27:23.353155 < 8 bytes data, client => server
 19:27:23.353170 'TYPE I\r\n'
 19:27:23.353329 Received DATA (on stdin)
 19:27:23.353341 > 33 bytes data, server => client
 19:27:23.353352 '200 I modify TYPE as you wanted\r\n'
 19:27:23.353416 < 21 bytes data, client => server
 19:27:23.353428 'SIZE verifiedserver\r\n'
 19:27:23.353557 Received DATA (on stdin)
 19:27:23.353569 > 8 bytes data, server => client
 19:27:23.353578 '213 17\r\n'
 19:27:23.353634 < 21 bytes data, client => server
 19:27:23.353646 'RETR verifiedserver\r\n'
 19:27:23.353966 Received DATA (on stdin)
 19:27:23.353978 > 29 bytes data, server => client
 19:27:23.353988 '150 Binary junk (17 bytes).\r\n'
 19:27:23.354375 Received DATA (on stdin)
 19:27:23.354387 > 28 bytes data, server => client
 19:27:23.354397 '226 File transfer complete\r\n'
 19:27:23.397476 < 6 bytes data, client => server
 19:27:23.397501 'QUIT\r\n'
 19:27:23.397693 Received DATA (on stdin)
 19:27:23.397707 > 18 bytes data, server => client
 19:27:23.397717 '221 bye bye baby\r\n'
 19:27:23.398830 ====> Client disconnect
 19:27:23.399003 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.348125 Running IPv4 version
 19:27:22.348213 Listening on port 41659
 19:27:22.348255 Wrote pid 116612 to log/3/server/ftp_sockdata.pid
 19:27:22.352203 Received PING (on stdin)
 19:27:22.352620 Received PORT (on stdin)
 19:27:22.353043 ====> Client connect
 19:27:22.353876 Received DATA (on stdin)
 19:27:22.353889 > 17 bytes data, server => client
 19:27:22.353899 'WE ROOLZ: 84710\r\n'
 19:27:22.353928 Received DISC (on stdin)
 19:27:22.353941 ====> Client forcibly disconnected
 19:27:22.354077 Received QUIT (on stdin)
 19:27:22.354088 quits
 19:27:22.354165 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 711
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:22.403306 Running IPv4 version
 19:27:22.427426 Listening on port 46021
 19:27:22.427484 Wrote pid 116629 to log/3/server/socks_server.pid
 19:27:22.427525 Wrote port 46021 to log/3/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind711
 ==117253== 
 ==117253== Process terminating with default action of signal 4 (SIGILL)
 ==117253==  Illegal opcode at address 0x492B75F
 ==117253==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117253==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117253==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117253==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117253==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117253==    by 0x49908EB: curl_version_info (version.c:600)
 ==117253==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117253==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117253==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117253==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind711
startnew: ./server/servers socksd --port 0 --pidfile log/23/server/socks_server.pid --portfile log/23/server/socks_server.port --reqfile log/23/socksd-request.log --logfile log/23/socks_server.log --backend 127.0.0.1 --config log/23/server.cmd
RUN: SOCKS server is now running PID 116717
* pid socks => 116717 116717
test 0713 [FTP fetch with --proxy set to socks5:// and with --connect-to]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind713 ../src/curl -q --output log/23/curl713.out  --include --trace-ascii log/23/trace713 --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:35523 --proxy socks5://127.0.0.1:42299 > log/23/stdout713 2> log/23/stderr713

 713: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 713
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind713 ../src/curl -q --output log/23/curl713.out  --include --trace-ascii log/23/trace713 --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:35523 --proxy socks5://127.0.0.1:42299 > log/23/stdout713 2> log/23/stderr713
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.853636 ====> Client connect
 19:27:22.853843 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.854139 < "USER anonymous"
 19:27:22.854178 > "331 We are happy you popped in![CR][LF]"
 19:27:22.854372 < "PASS ftp@example.com"
 19:27:22.854404 > "230 Welcome you silly person[CR][LF]"
 19:27:22.854557 < "PWD"
 19:27:22.854587 > "257 "/" is current directory[CR][LF]"
 19:27:22.854749 < "EPSV"
 19:27:22.854777 ====> Passive DATA channel requested by client
 19:27:22.854790 DATA sockfilt for passive data channel starting...
 19:27:22.872629 DATA sockfilt for passive data channel started (pid 116673)
 19:27:22.872787 DATA sockfilt for passive data channel listens on port 34989
 19:27:22.872846 > "229 Entering Passive Mode (|||34989|)[CR][LF]"
 19:27:22.872866 Client has been notified that upcoming DATA connection is awaited on port 34989
 19:27:22.873208 Client connects to port 34989
 19:27:22.873243 ====> Client established passive DATA connection on port 34989
 19:27:22.873347 < "TYPE I"
 19:27:22.873386 > "200 I modify TYPE as you wanted[CR][LF]"
 1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind721 ../src/curl -q --output log/14/curl721.out  --include --trace-ascii log/14/trace721 --trace-time http://this.is.a.host.name:45467/721 --proxy socks5h://127.0.0.1:46367 > log/14/stdout721 2> log/14/stderr721
9:27:22.873577 < "SIZE verifiedserver"
 19:27:22.873619 > "213 17[CR][LF]"
 19:27:22.873791 < "RETR verifiedserver"
 19:27:22.873829 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.873924 =====> Closing passive DATA connection...
 19:27:22.873943 Server disconnects passive DATA connection
 19:27:22.874560 Server disconnected passive DATA connection
 19:27:22.874592 DATA sockfilt for passive data channel quits (pid 116673)
 19:27:22.874869 DATA sockfilt for passive data channel quit (pid 116673)
 19:27:22.874895 =====> Closed passive DATA connection
 19:27:22.874924 > "226 File transfer complete[CR][LF]"
 19:27:22.918989 < "QUIT"
 19:27:22.919057 > "221 bye bye baby[CR][LF]"
 19:27:22.920268 MAIN sockfilt said DISC
 19:27:22.920307 ====> Client disconnected
 19:27:22.920391 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:23.462202 ====> Client connect
 19:27:23.462558 Received DATA (on stdin)
 19:27:23.462573 > 146 bytes data, server => client
 19:27:23.462584 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:23.462593 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:23.462601 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:23.462680 < 16 bytes data, client => server
 19:27:23.462691 'USER anonymous\r\n'
 19:27:23.462878 Received DATA (on stdin)
 19:27:23.462890 > 33 bytes data, server => client
 19:27:23.462900 '331 We are happy you popped in!\r\n'
 19:27:23.462958 < 22 bytes data, client => server
 19:27:23.462969 'PASS ftp@example.com\r\n'
 19:27:23.463102 Received DATA (on stdin)
 19:27:23.463111 > 30 bytes data, server => client
 19:27:23.463121 '230 Welcome you silly person\r\n'
 19:27:23.463172 < 5 bytes data, client => server
 19:27:23.463181 'PWD\r\n'
 19:27:23.463283 Received DATA (on stdin)
 19:27:23.463293 > 30 bytes data, server => client
 19:27:23.463303 '257 "/" is current directory\r\n'
 19:27:23.463361 < 6 bytes data, client => server
 19:27:23.463372 'EPSV\r\n'
 19:27:23.481576 Received DATA (on stdin)
 19:27:23.481593 > 39 bytes data, server => client
 19:27:23.481604 '229 Entering Passive Mode (|||34989|)\r\n'
 19:27:23.481813 < 8 bytes data, client => server
 19:27:23.481830 'TYPE I\r\n'
 19:27:23.482089 Received DATA (on stdin)
 19:27:23.482101 > 33 bytes data, server => client
 19:27:23.482111 '200 I modify TYPE as you wanted\r\n'
 19:27:23.482175 < 21 bytes data, client => server
 19:27:23.482189 'SIZE verifiedserver\r\n'
 19:27:23.482318 Received DATA (on stdin)
 19:27:23.482330 > 8 bytes data, server => client
 19:27:23.482339 '213 17\r\n'
 19:27:23.482396 < 21 bytes data, client => server
 19:27:23.482408 'RETR verifiedserver\r\n'
 19:27:23.482642 Received DATA (on stdin)
 19:27:23.482653 > 29 bytes data, server => client
 19:27:23.482663 '150 Binary junk (17 bytes).\r\n'
 19:27:23.483624 Received DATA (on stdin)
 19:27:23.483636 > 28 bytes data, server => client
 19:27:23.483647 '226 File transfer complete\r\n'
 19:27:23.527486 < 6 bytes data, client => server
 19:27:23.527514 'QUIT\r\n'
 19:27:23.527762 Received DATA (on stdin)
 19:27:23.527778 > 18 bytes data, server => client
 19:27:23.527789 '221 bye bye baby\r\n'
 19:27:23.528898 ====> Client disconnect
 19:27:23.529089 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.480038 Running IPv4 version
 19:27:22.480110 Listening on port 34989
 19:27:22.480148 Wrote pid 116673 to log/23/server/ftp_sockdata.pid
 19:27:22.481246 Received PING (on stdin)
 19:27:22.481378 Received PORT (on stdin)
 19:27:22.481853 ====> Client connect
 19:27:22.483063 Received DATA (on stdin)
 19:27:22.483081 > 17 bytes data, server => client
 19:27:22.483092 'WE ROOLZ: 84709\r\n'
 19:27:22.483121 Received DISC (on stdin)
 19:27:22.483133 ====> Client forcibly disconnected
 19:27:22.483299 Received QUIT (on stdin)
 19:27:22.483311 quits
 19:27:22.483383 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 713
=== End of file server.cmd
=== Start of file socks_server.log
 19:27:22.547943 Running IPv4 version
 19:27:22.548055 Listening on port 42299
 19:27:22.548104 Wrote pid 116717 to log/23/server/socks_server.pid
 19:27:22.548142 Wrote port 42299 to log/23/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind713
 ==117329== 
 ==117329== Process terminating with default action of signal 4 (SIGILL)
 ==117329==  Illegal opcode at address 0x492B75F
 ==117329==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117329==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117329==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117329==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117329==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117329==    by 0x49908EB: curl_version_info (version.c:600)
 ==117329==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117329==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117329==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117329==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind713
startnew: ./server/servers socksd --port 0 --pidfile log/14/server/socks_server.pid --portfile log/14/server/socks_server.port --reqfile log/14/socksd-request.log --logfile log/14/socks_server.log --backend 127.0.0.1 --config log/14/server.cmd
RUN: SOCKS server is now running PID 116853
* pid socks => 116853 116853
test 0721 [HTTP GET with hostname using SOCKS5h]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind721 ../src/curl -q --output log/14/curl721.out  --include --trace-ascii log/14/trace721 --trace-time http://this.is.a.host.name:45467/721 --proxy socks5h://127.0.0.1:46367 > log/14/stdout721 2> log/14/stderr721

 721: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 721
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind721 ../src/curl -q --output log/14/curl721.out  --include --trace-ascii log/14/trace721 --trace-time http://this.is.a.host.name:45467/721 --proxy socks5h://127.0.0.1:46367 > log/14/stdout721 2> log/14/stderr721
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.865753 ====> Client connect
 19:27:22.865795 accept_connection 3 returned 4
 19:27:22.866076 Read 93 bytes
 19:27:22.866099 Process 93 bytes request
 19:27:22.866114 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.866124 Are-we-friendly question received
 19:27:22.866158 Wrote request (93 bytes) input to log/14/server.input
 19:27:22.866178 Identifying ourselves as friends
 19:27:22.866272 Response sent (56 bytes) and written to log/14/server.response
 19:27:22.866286 special request received, no persistency
 19:27:22.866296 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 57446 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 721
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file socks_server.log
 19:27:23.873321 Running IPv4 version
 19:27:23.873495 Listening on port 46367
 19:27:23.873533 Wrote pid 116853 to log/14/server/socks_server.pid
 19:27:23.873570 Wrote port 46367 to log/14/server/socks_server.port
=== End of file socks_CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind726 ../src/curl -q --output log/4/curl726.out  --include --trace-ascii log/4/trace726 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout726 2> log/4/stderr726
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind720 ../src/curl -q --output log/5/curl720.out  --include --trace-ascii log/5/trace720 --trace-time http://12.34.56.78:37089/720 --proxy socks5h://127.0.0.1:45243 > log/5/stdout720 2> log/5/stderr720
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind714 ../src/curl -q --output log/1/curl714.out  --include --trace-ascii log/1/trace714 --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:40221 --proxytunnel --proxy http://127.0.0.1:38255 > log/1/stdout714 2> log/1/stderr714
server.log
=== Start of file valgrind721
 ==117753== 
 ==117753== Process terminating with default action of signal 4 (SIGILL)
 ==117753==  Illegal opcode at address 0x492B75F
 ==117753==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117753==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117753==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117753==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117753==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117753==    by 0x49908EB: curl_version_info (version.c:600)
 ==117753==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117753==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117753==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117753==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind721
setenv HOME = /startdir/src/build-curl/tests
test 0726 [IPFS with no gateway URL (no environment or home file either)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind726 ../src/curl -q --output log/4/curl726.out  --include --trace-ascii log/4/trace726 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout726 2> log/4/stderr726

curl returned 132, when expecting 37
 726: exit FAILED
== Contents of files in the log/4/ directory after test 726
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind726 ../src/curl -q --output log/4/curl726.out  --include --trace-ascii log/4/trace726 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout726 2> log/4/stderr726
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.015476 ====> Client connect
 19:27:25.015518 accept_connection 3 returned 4
 19:27:25.015542 Read 93 bytes
 19:27:25.015553 Process 93 bytes request
 19:27:25.015564 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.015573 Are-we-friendly question received
 19:27:25.015606 Wrote request (93 bytes) input to log/4/server.input
 19:27:25.015624 Identifying ourselves as friends
 19:27:25.015694 Response sent (56 bytes) and written to log/4/server.response
 19:27:25.015706 special request received, no persistency
 19:27:25.015715 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 33692 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 726
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind726
 ==117909== 
 ==117909== Process terminating with default action of signal 4 (SIGILL)
 ==117909==  Illegal opcode at address 0x492B75F
 ==117909==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117909==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117909==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117909==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117909==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117909==    by 0x49908EB: curl_version_info (version.c:600)
 ==117909==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117909==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117909==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117909==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind726
startnew: ./server/servers socksd --port 0 --pidfile log/5/server/socks_server.pid --portfile log/5/server/socks_server.port --reqfile log/5/socksd-request.log --logfile log/5/socks_server.log --backend 127.0.0.1 --config log/5/server.cmd
RUN: SOCKS server is now running PID 116827
* pid socks => 116827 116827
test 0720 [HTTP GET with IPv4 numerical via SOCKS5h]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind720 ../src/curl -q --output log/5/curl720.out  --include --trace-ascii log/5/trace720 --trace-time http://12.34.56.78:37089/720 --proxy socks5h://127.0.0.1:45243 > log/5/stdout720 2> log/5/stderr720

 720: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 720
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind720 ../src/curl -q --output log/5/curl720.out  --include --trace-ascii log/5/trace720 --trace-time http://12.34.56.78:37089/720 --proxy socks5h://127.0.0.1:45243 > log/5/stdout720 2> log/5/stderr720
=== End of file commands.log
=== Start of file http_server.log
 19:27:22.820697 ====> Client connect
 19:27:22.820745 accept_connection 3 returned 4
 19:27:22.820943 Read 93 bytes
 19:27:22.820959 Process 93 bytes request
 19:27:22.820973 Got request: GET /verifiedserver HTTP/1.1
 19:27:22.820982 Are-we-friendly question received
 19:27:22.821014 Wrote request (93 bytes) input to log/5/server.input
 19:27:22.821032 Identifying ourselves as friends
 19:27:22.821097 Response sent (56 bytes) and written to log/5/server.response
 19:27:22.821106 special request received, no persistency
 19:27:22.821114 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 59892 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 720
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file socks_server.log
 19:27:23.833279 Running IPv4 version
 19:27:23.833489 Listening on port 45243
 19:27:23.833531 Wrote pid 116827 to log/5/server/socks_server.pid
 19:27:23.833564 Wrote port 45243 to log/5/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind720
 ==117710== 
 ==117710== Process terminating with default action of signal 4 (SIGILL)
 ==117710==  Illegal opcode at address 0x492B75F
 ==117710==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117710==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117710==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117710==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117710==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117710==    by 0x49908EB: curl_version_info (version.c:600)
 ==117710==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117710==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117710==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117710==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind720
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/1/server/http2_server.pid" --logfile "log/1/http2_server.log" --logdir "log/1" --portfile log/1/server/http2_sCMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test745.pl /startdir/src/curl/tests/.. > log/4/stdout745 2> log/4/stderr745
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind727 ../src/curl -q --output log/24/curl727.out  --include --trace-ascii log/24/trace727 --trace-time --ipfs-gateway http://127.0.0.1:38895 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/24/stdout727 2> log/24/stderr727
erver.port --config log/1/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 116732 port 38255
* pid http-proxy => 116732 116732
test 0714 [FTP fetch with --proxy set to http:// and with --connect-to]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind714 ../src/curl -q --output log/1/curl714.out  --include --trace-ascii log/1/trace714 --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:40221 --proxytunnel --proxy http://127.0.0.1:38255 > log/1/stdout714 2> log/1/stderr714

 714: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 714
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind714 ../src/curl -q --output log/1/curl714.out  --include --trace-ascii log/1/trace714 --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:40221 --proxytunnel --proxy http://127.0.0.1:38255 > log/1/stdout714 2> log/1/stderr714
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:22.908797 ====> Client connect
 19:27:22.909024 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:22.915542 < "USER anonymous"
 19:27:22.915761 > "331 We are happy you popped in![CR][LF]"
 19:27:22.916005 < "PASS ftp@example.com"
 19:27:22.916038 > "230 Welcome you silly person[CR][LF]"
 19:27:22.916216 < "PWD"
 19:27:22.916253 > "257 "/" is current directory[CR][LF]"
 19:27:22.916446 < "EPSV"
 19:27:22.916476 ====> Passive DATA channel requested by client
 19:27:22.916494 DATA sockfilt for passive data channel starting...
 19:27:22.923237 DATA sockfilt for passive data channel started (pid 116710)
 19:27:22.923388 DATA sockfilt for passive data channel listens on port 37005
 19:27:22.923448 > "229 Entering Passive Mode (|||37005|)[CR][LF]"
 19:27:22.923471 Client has been notified that upcoming DATA connection is awaited on port 37005
 19:27:22.925411 Client connects to port 37005
 19:27:22.925451 ====> Client established passive DATA connection on port 37005
 19:27:22.925571 < "TYPE I"
 19:27:22.925615 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:22.928913 < "SIZE verifiedserver"
 19:27:22.928970 > "213 17[CR][LF]"
 19:27:22.929151 < "RETR verifiedserver"
 19:27:22.929194 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:22.929293 =====> Closing passive DATA connection...
 19:27:22.929312 Server disconnects passive DATA connection
 19:27:22.935371 Server disconnected passive DATA connection
 19:27:22.935439 DATA sockfilt for passive data channel quits (pid 116710)
 19:27:22.938959 DATA sockfilt for passive data channel quit (pid 116710)
 19:27:22.939003 =====> Closed passive DATA connection
 19:27:22.939047 > "226 File transfer complete[CR][LF]"
 19:27:22.978829 < "QUIT"
 19:27:22.978883 > "221 bye bye baby[CR][LF]"
 19:27:22.979011 MAIN sockfilt said DISC
 19:27:22.979037 ====> Client disconnected
 19:27:22.979115 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:23.517354 ====> Client connect
 19:27:23.517734 Received DATA (on stdin)
 19:27:23.517750 > 146 bytes data, server => client
 19:27:23.517761 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:23.517770 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:23.517778 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:23.524022 < 16 bytes data, client => server
 19:27:23.524044 'USER anonymous\r\n'
 19:27:23.524468 Received DATA (on stdin)
 19:27:23.524481 > 33 bytes data, server => client
 19:27:23.524492 '331 We are happy you popped in!\r\n'
 19:27:23.524590 < 22 bytes data, client => server
 19:27:23.524605 'PASS ftp@example.com\r\n'
 19:27:23.524730 Received DATA (on stdin)
 19:27:23.524743 > 30 bytes data, server => client
 19:27:23.524753 '230 Welcome you silly person\r\n'
 19:27:23.524810 < 5 bytes data, client => server
 19:27:23.524824 'PWD\r\n'
 19:27:23.524946 Received DATA (on stdin)
 19:27:23.524957 > 30 bytes data, server => client
 19:27:23.524968 '257 "/" is current directory\r\n'
 19:27:23.525040 < 6 bytes data, client => server
 19:27:23.525053 'EPSV\r\n'
 19:27:23.532112 Received DATA (on stdin)
 19:27:23.532132 > 39 bytes data, server => client
 19:27:23.532142 '229 Entering Passive Mode (|||37005|)\r\n'
 19:27:23.532325 < 8 bytes data, client => server
 19:27:23.532341 'TYPE I\r\n'
 19:27:23.537348 Received DATA (on stdin)
 19:27:23.537372 > 33 bytes data, server => client
 19:27:23.537382 '200 I modify TYPE as you wanted\r\n'
 19:27:23.537474 < 21 bytes data, client => server
 19:27:23.537487 'SIZE verifiedserver\r\n'
 19:27:23.537660 Received DATA (on stdin)
 19:27:23.537672 > 8 bytes data, server => client
 19:27:23.537681 '213 17\r\n'
 19:27:23.537742 < 21 bytes data, client => server
 19:27:23.537753 'RETR verifiedserver\r\n'
 19:27:23.538004 Received DATA (on stdin)
 19:27:23.538016 > 29 bytes data, server => client
 19:27:23.538026 '150 Binary junk (17 bytes).\r\n'
 19:27:23.557343 Received DATA (on stdin)
 19:27:23.557376 > 28 bytes data, server => client
 19:27:23.557389 '226 File transfer complete\r\n'
 19:27:23.587347 < 6 bytes data, client => server
 19:27:23.587369 'QUIT\r\n'
 19:27:23.587569 Received DATA (on stdin)
 19:27:23.587581 > 18 bytes data, server => client
 19:27:23.587591 '221 bye bye baby\r\n'
 19:27:23.587648 ====> Client disconnect
 19:27:23.587794 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:22.531523 Running IPv4 version
 19:27:22.531622 Listening on port 37005
 19:27:22.531664 Wrote pid 116710 to log/1/server/ftp_sockdata.pid
 19:27:22.531858 Received PING (on stdin)
 19:27:22.531969 Received PORT (on stdin)
 19:27:22.534039 ====> Client connect
 19:27:22.538119 Received DATA (on stdin)
 19:27:22.538139 > 17 bytes data, server => client
 19:27:22.538155 'WE ROOLZ: 84935\r\n'
 19:27:22.538193 Received DISC (on stdin)
 19:27:22.538210 ====> Client forcibly disconnected
 19:27:22.547347 Received QUIT (on stdin)
 19:27:22.547370 quits
 19:27:22.547441 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http2_server.log
 19:27:23.651331 Run as proxy, CONNECT to host 127.0.0.1
 19:27:23.651511 Running HTTP IPv4 version on port 38255
 19:27:23.651562 Wrote pid 116732 to log/1/server/http2_server.pid
 19:27:23.651593 Wrote port 38255 to log/1/server/http2_server.port
=== End of file http2_server.log
=== Start of file server.cmd
 Testnum 714
=== End of file server.cmd
=== Start of file valgrind714
 ==117430== 
 ==117430== Process terminating with default action of signal 4 (SIGILL)
 ==117430==  Illegal opcode at address 0x492B75F
 ==117430==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117430==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117430==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117430==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117430==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117430==    by 0x49908EB: curl_version_info (version.c:600)
 ==117430==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117430==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind714
test 0745 [Verify that typecheck-gcc and curl.h are in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test745.pl /startdir/src/curl/tests/.. > log/4/stdout745 2> log/4/stderr745
 valgrind SKIPPED
s------e--- OK (688 out of 1890, remaining: 02:36, took 0.044s, duration: 01:29)
test 0727 [IPNS]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind728 ../src/curl -q --output log/10/curl728.out  --include --trace-ascii log/10/trace728 --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:36847 http://127.0.0.1:40913/728 > log/10/stdout728 2> log/10/stderr728
-leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind727 ../src/curl -q --output log/24/curl727.out  --include --trace-ascii log/24/trace727 --trace-time --ipfs-gateway http://127.0.0.1:38895 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/24/stdout727 2> log/24/stderr727

 727: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 727
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind727 ../src/curl -q --output log/24/curl727.out  --include --trace-ascii log/24/trace727 --trace-time --ipfs-gateway http://127.0.0.1:38895 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/24/stdout727 2> log/24/stderr727
=== End of file commands.log
=== Start of file http_server.log
 19:27:24.051863 ====> Client connect
 19:27:24.051912 accept_connection 3 returned 4
 19:27:24.051942 Read 93 bytes
 19:27:24.051954 Process 93 bytes request
 19:27:24.051968 Got request: GET /verifiedserver HTTP/1.1
 19:27:24.051977 Are-we-friendly question received
 19:27:24.052008 Wrote request (93 bytes) input to log/24/server.input
 19:27:24.052027 Identifying ourselves as friends
 19:27:24.052123 Response sent (56 bytes) and written to log/24/server.response
 19:27:24.052137 special request received, no persistency
 19:27:24.052146 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 39328 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 727
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind727
 ==117975== 
 ==117975== Process terminating with default action of signal 4 (SIGILL)
 ==117975==  Illegal opcode at address 0x492B75F
 ==117975==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117975==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117975==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117975==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117975==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117975==    by 0x49908EB: curl_version_info (version.c:600)
 ==117975==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117975==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117975==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117975==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind727
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind729 ../src/curl -q --output log/21/curl729.out  --include --trace-ascii log/21/trace729 --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:36491 > log/21/stdout729 2> log/21/stderr729
test 0728 [SOCKS5h with HTTP redirect to hostname too long]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind728 ../src/curl -q --output log/10/curl728.out  --include --trace-ascii log/10/trace728 --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:36847 http://127.0.0.1:40913/728 > log/10/stdout728 2> log/10/stderr728

 728: stderr FAILED:
--- log/10/check-expected	2026-10-15 19:27:26.893596544 +0000
+++ log/10/check-generated	2026-10-15 19:27:26.890076294 +0000
@@ -1 +0,0 @@
-curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.[CR][LF]
== Contents of files in the log/10/ directory after test 728
=== Start of file check-expected
 curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind728 ../src/curl -q --output log/10/curl728.out  --include --trace-ascii log/10/trace728 --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:36847 http://127.0.0.1:40913/728 > log/10/stdout728 2> log/10/stderr728
=== End of file commands.log
=== Start of file http_server.log
 19:27:24.163697 ====> Client connect
 19:27:24.163735 accept_connection 3 returned 4
 19:27:24.166073 Read 93 bytes
 19:27:24.166094 Process 93 bytes request
 19:27:24.166107 Got request: GET /verifiedserver HTTP/1.1
 19:27:24.166116 Are-we-friendly question received
 19:27:24.166158 Wrote request (93 bytes) input to log/10/server.input
 19:27:24.166178 Identifying ourselves as friends
 19:27:24.166250 Response sent (56 bytes) and written to log/10/server.response
 19:27:24.166262 special request received, no persistency
 19:27:24.166271 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56472 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 728
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind728
 ==118034== 
 ==118034== Process terminating with default action of signal 4 (SIGILL)
 ==118034==  Illegal opcode at address 0x492B75F
 ==118034==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118034==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118034==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118034==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118034==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118034==    by 0x49908EB: curl_version_info (version.c:600)
 ==118034==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118034==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118034==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118034==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind728
test 0729 [SOCKS4 with long proxy username]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind729 ../src/curl -q --output log/21/curl729.out  --include --trace-ascii log/21/trace729 --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:36491 > log/21/stdout729 2> log/21/stderr729

curl returned 132, when expecting 97
 729: exit FAILED
== Contents of files in the log/21/ directory after test 729
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind729 ../src/curl -q --output log/21/curl729.out  --include --trace-ascii log/21/trace729 --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:36491 > log/21/stdout729 2> log/21/stderr729
=== End of file commands.log
=== Start of file http_server.log
 19:27:24.140701 ====> Client connect
 19:27:24.140752 accept_connection 3 returned 4
 19:27:24.140779 Read 93 bytes
 19:27:24.140790 Process 93 bytes request
 19:27:24.140804 Got request: GET /verifiedserver HTTP/1.1
 19:27:24.140812 Are-we-friendly question received
 19:27:24.140846 Wrote request (93 bytes) input to log/21/server.input
 19:27:24.140864 Identifying ourselves as friends
 19:27:24.140937 Response sent (56 bytes) and written to log/21/server.response
 19:27:24.140947 special request received, no persistency
 19:27:24.140955 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49410 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 729
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind729
 ==118020== 
 ==118020== Process terminating with default action of signal 4 (SIGILL)
 ==118020==  Illegal opcode at address 0x492B75F
 ==118020==    at 0x492CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind719 ../src/curl -q --output log/18/curl719.out  --include --trace-ascii log/18/trace719 --trace-time http://[2200::33]:43739/719 --proxy socks5h://127.0.0.1:46369 > log/18/stdout719 2> log/18/stderr719
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind730 ../src/curl -q --output log/2/curl730.out  --include --trace-ascii log/2/trace730 --trace-time --ipfs-gateway http://127.0.0.1:34531/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind734 ../src/curl -q --output log/7/curl734.out  --include --trace-ascii log/7/trace734 --trace-time --ipfs-gateway http://127.0.0.1:40859/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/7/stdout734 2> log/7/stderr734
B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118020==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118020==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118020==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118020==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118020==    by 0x49908EB: curl_version_info (version.c:600)
 ==118020==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118020==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118020==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118020==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind729
startnew: ./server/servers socksd --port 0 --pidfile log/18/server/socks_server.pid --portfile log/18/server/socks_server.port --reqfile log/18/socksd-request.log --logfile log/18/socks_server.log --backend 127.0.0.1 --config log/18/server.cmd
RUN: SOCKS server is now running PID 116818
* pid socks => 116818 116818
test 0719 [HTTP GET with IPv6 numerical via SOCKS5h]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind719 ../src/curl -q --output log/18/curl719.out  --include --trace-ascii log/18/trace719 --trace-time http://[2200::33]:43739/719 --proxy socks5h://127.0.0.1:46369 > log/18/stdout719 2> log/18/stderr719

 719: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 719
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind719 ../src/curl -q --output log/18/curl719.out  --include --trace-ascii log/18/trace719 --trace-time http://[2200::33]:43739/719 --proxy socks5h://127.0.0.1:46369 > log/18/stdout719 2> log/18/stderr719
=== End of file commands.log
=== Start of file http_server.log
 19:27:23.804030 ====> Client connect
 19:27:23.804070 accept_connection 3 returned 4
 19:27:23.804094 Read 93 bytes
 19:27:23.804104 Process 93 bytes request
 19:27:23.804117 Got request: GET /verifiedserver HTTP/1.1
 19:27:23.804126 Are-we-friendly question received
 19:27:23.804152 Wrote request (93 bytes) input to log/18/server.input
 19:27:23.804168 Identifying ourselves as friends
 19:27:23.804235 Response sent (56 bytes) and written to log/18/server.response
 19:27:23.804244 special request received, no persistency
 19:27:23.804252 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46492 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 719
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file socks_server.log
 19:27:23.823361 Running IPv4 version
 19:27:23.823433 Listening on port 46369
 19:27:23.823474 Wrote pid 116818 to log/18/server/socks_server.pid
 19:27:23.823506 Wrote port 46369 to log/18/server/socks_server.port
=== End of file socks_server.log
=== Start of file valgrind719
 ==117697== 
 ==117697== Process terminating with default action of signal 4 (SIGILL)
 ==117697==  Illegal opcode at address 0x492B75F
 ==117697==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117697==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117697==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117697==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117697==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117697==    by 0x49908EB: curl_version_info (version.c:600)
 ==117697==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117697==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117697==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117697==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind719
test 0730 [IPFS arg gateway with path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind730 ../src/curl -q --output log/2/curl730.out  --include --trace-ascii log/2/trace730 --trace-time --ipfs-gateway http://127.0.0.1:34531/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730

 730: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 730
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind730 ../src/curl -q --output log/2/curl730.out  --include --trace-ascii log/2/trace730 --trace-time --ipfs-gateway http://127.0.0.1:34531/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.689134 ====> Client connect
 19:27:25.689172 accept_connection 3 returned 4
 19:27:25.689194 Read 93 bytes
 19:27:25.689204 Process 93 bytes request
 19:27:25.689216 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.689225 Are-we-friendly question received
 19:27:25.689251 Wrote request (93 bytes) input to log/2/server.input
 19:27:25.689268 Identifying ourselves as friends
 19:27:25.689328 Response sent (56 bytes) and written to log/2/server.response
 19:27:25.689337 special request received, no persistency
 19:27:25.689345 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 59752 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 730
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind730
 ==118199== 
 ==118199== Process terminating with default action of signal 4 (SIGILL)
 ==118199==  Illegal opcode at address 0x492B75F
 ==118199==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118199==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118199==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118199==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118199==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118199==    by 0x49908EB: curl_version_info (version.c:600)
 ==118199==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118199==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118199==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118199==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind730
test 0734 [IPFS with path, query args and gateway with path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind734 ../src/curl -q --output log/7/curl734.out  --include --trace-ascii log/7/trace734 --trace-time --iCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind732 ../src/curl -q --output log/22/curl732.out  --include --trace-ascii log/22/trace732 --trace-time --ipfs-gateway http://127.0.0.1:35989 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/22/stdout732 2> log/22/stderr732
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind733 ../src/curl -q --output log/17/curl733.out  --include --trace-ascii log/17/trace733 --trace-time --ipfs-gateway http://127.0.0.1:35993 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/17/stdout733 2> log/17/stderr733
pfs-gateway http://127.0.0.1:40859/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/7/stdout734 2> log/7/stderr734

 734: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 734
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind734 ../src/curl -q --output log/7/curl734.out  --include --trace-ascii log/7/trace734 --trace-time --ipfs-gateway http://127.0.0.1:40859/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/7/stdout734 2> log/7/stderr734
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.240884 ====> Client connect
 19:27:25.240923 accept_connection 3 returned 4
 19:27:25.240945 Read 93 bytes
 19:27:25.240956 Process 93 bytes request
 19:27:25.240967 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.240975 Are-we-friendly question received
 19:27:25.241005 Wrote request (93 bytes) input to log/7/server.input
 19:27:25.241023 Identifying ourselves as friends
 19:27:25.241093 Response sent (56 bytes) and written to log/7/server.response
 19:27:25.241106 special request received, no persistency
 19:27:25.241115 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 53984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 734
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind734
 ==118438== 
 ==118438== Process terminating with default action of signal 4 (SIGILL)
 ==118438==  Illegal opcode at address 0x492B75F
 ==118438==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118438==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118438==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118438==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118438==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118438==    by 0x49908EB: curl_version_info (version.c:600)
 ==118438==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118438==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118438==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118438==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind734
test 0732 [IPFS with path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind732 ../src/curl -q --output log/22/curl732.out  --include --trace-ascii log/22/trace732 --trace-time --ipfs-gateway http://127.0.0.1:35989 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/22/stdout732 2> log/22/stderr732

 732: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 732
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind732 ../src/curl -q --output log/22/curl732.out  --include --trace-ascii log/22/trace732 --trace-time --ipfs-gateway http://127.0.0.1:35989 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/22/stdout732 2> log/22/stderr732
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.082857 ====> Client connect
 19:27:25.082894 accept_connection 3 returned 4
 19:27:25.082916 Read 93 bytes
 19:27:25.082926 Process 93 bytes request
 19:27:25.082939 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.082947 Are-we-friendly question received
 19:27:25.082975 Wrote request (93 bytes) input to log/22/server.input
 19:27:25.082991 Identifying ourselves as friends
 19:27:25.083110 Response sent (56 bytes) and written to log/22/server.response
 19:27:25.083120 special request received, no persistency
 19:27:25.083128 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 58508 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 732
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind732
 ==118349== 
 ==118349== Process terminating with default action of signal 4 (SIGILL)
 ==118349==  Illegal opcode at address 0x492B75F
 ==118349==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118349==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118349==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118349==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118349==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118349==    by 0x49908EB: curl_version_info (version.c:600)
 ==118349==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118349==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118349==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118349==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind732
test 0733 [IPFS with path and query args]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind733 ../src/curl -q --output log/17/curl733.out  --include --trace-ascii log/17/trace733 --trace-time --ipfs-gateway http://127.0.0.1:35993 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/17/stdout733 2> log/17/stderr733

 733: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 733
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind733 ../src/curl -q --output log/17/curl733.out  --include --trace-ascii log/17/trace733 --trace-time --ipfs-gateway http://127.0.0.1:35993 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/17/stdout733 2> log/17/stderr733
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.223697 ====> Client connect
 19:27:26.223734 accept_connection 3 returned 4
 19:27:26.223756 Read 93 bytes
 19:27:26.223765 Process 93 bytes request
 19:27:26.223776 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.223783 Are-we-friendly question received
 19:27:26.223807 Wrote request (93 bytes) input to log/17/server.input
 19:27:26.223822 Identifying ourselves as friends
 19:27:26.223885 Response sent (56 bytes) and written to log/17/server.response
 19:27:26.223893 special request received, no persistency
 19:27:26.223900 ====> CCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind737 ../src/curl -q --output log/13/curl737.out  --include --trace-ascii log/13/trace737 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/13/stdout737 2> log/13/stderr737
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind742 ../src/curl -q --output log/23/curl742.out  --include --trace-ascii log/23/trace742 --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:44711 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:42299 > log/23/stdout742 2> log/23/stderr742
lient disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 58922 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 733
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind733
 ==118432== 
 ==118432== Process terminating with default action of signal 4 (SIGILL)
 ==118432==  Illegal opcode at address 0x492B75F
 ==118432==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118432==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118432==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118432==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118432==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118432==    by 0x49908EB: curl_version_info (version.c:600)
 ==118432==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118432==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118432==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118432==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind733
setenv IPFS_PATH = log/13/.ipfs/
test 0737 [IPFS with IPFS_PATH set, with trailing slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind737 ../src/curl -q --output log/13/curl737.out  --include --trace-ascii log/13/trace737 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/13/stdout737 2> log/13/stderr737

 737: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 737
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind737 ../src/curl -q --output log/13/curl737.out  --include --trace-ascii log/13/trace737 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/13/stdout737 2> log/13/stderr737
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.683646 ====> Client connect
 19:27:25.683686 accept_connection 3 returned 4
 19:27:25.683707 Read 93 bytes
 19:27:25.683716 Process 93 bytes request
 19:27:25.683728 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.683736 Are-we-friendly question received
 19:27:25.683759 Wrote request (93 bytes) input to log/13/server.input
 19:27:25.683774 Identifying ourselves as friends
 19:27:25.683858 Response sent (56 bytes) and written to log/13/server.response
 19:27:25.683867 special request received, no persistency
 19:27:25.683876 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 53594 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 737
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind737
 ==118670== 
 ==118670== Process terminating with default action of signal 4 (SIGILL)
 ==118670==  Illegal opcode at address 0x492B75F
 ==118670==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118670==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118670==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118670==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118670==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118670==    by 0x49908EB: curl_version_info (version.c:600)
 ==118670==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118670==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118670==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118670==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind737
test 0742 [SOCKS5-hostname with max length credentials and max hostname length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind742 ../src/curl -q --output log/23/curl742.out  --include --trace-ascii log/23/trace742 --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:44711 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:42299 > log/23/stdout742 2> log/23/stderr742

 742: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 742
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind742 ../src/curl -q --output log/23/curl742.out  --include --trace-ascii log/23/trace742 --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:44711 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:42299 > log/23/stdout742 2> log/23/stderr742
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.092207 ====> Client connect
 19:27:26.092241 accept_connection 3 returned 4
 19:27:26.092261 Read 93 bytes
 19:27:26.092271 Process 93 bytes request
 19:27:26.092284 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.092292 Are-we-friendly question received
 19:27:26.092318 Wrote request (93 bytes) input to log/23/server.input
 19:27:26.092334 Identifying ourselves as friends
 19:27:26.092393 Response sent (56 bytes) and written to log/23/server.response
 19:27:26.092402 special request received, no persistency
 19:27:26.092411 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 * CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind736 ../src/curl -q --output log/20/curl736.out  --include --trace-ascii log/20/trace736 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/20/stdout736 2> log/20/stderr736
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind751 ./libtest/libtests lib751 - > log/21/stdout751 2> log/21/stderr751
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind735 ../src/curl -q --output log/9/curl735.out  --include --trace-ascii log/9/trace735 --trace-time --ipfs-gateway http://127.0.0.1:43733/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/9/stdout735 2> log/9/stderr735
  Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 40004 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 method 2
 user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 backendport 44711
 Testnum 742
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind742
 ==118987== 
 ==118987== Process terminating with default action of signal 4 (SIGILL)
 ==118987==  Illegal opcode at address 0x492B75F
 ==118987==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118987==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118987==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118987==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118987==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118987==    by 0x49908EB: curl_version_info (version.c:600)
 ==118987==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118987==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118987==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118987==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind742
setenv IPFS_PATH = log/20/.ipfs
test 0736 [IPFS with IPFS_PATH set, no trailing slash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind736 ../src/curl -q --output log/20/curl736.out  --include --trace-ascii log/20/trace736 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/20/stdout736 2> log/20/stderr736

 736: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 736
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind736 ../src/curl -q --output log/20/curl736.out  --include --trace-ascii log/20/trace736 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/20/stdout736 2> log/20/stderr736
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.553815 ====> Client connect
 19:27:25.553858 accept_connection 3 returned 4
 19:27:25.553882 Read 93 bytes
 19:27:25.553893 Process 93 bytes request
 19:27:25.553907 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.553917 Are-we-friendly question received
 19:27:25.553948 Wrote request (93 bytes) input to log/20/server.input
 19:27:25.553967 Identifying ourselves as friends
 19:27:25.554044 Response sent (56 bytes) and written to log/20/server.response
 19:27:25.554056 special request received, no persistency
 19:27:25.554065 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54108 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 736
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind736
 ==118596== 
 ==118596== Process terminating with default action of signal 4 (SIGILL)
 ==118596==  Illegal opcode at address 0x492B75F
 ==118596==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118596==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118596==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118596==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118596==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118596==    by 0x49908EB: curl_version_info (version.c:600)
 ==118596==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118596==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind736
test 0751 [multi - add many easy handles]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind751 ./libtest/libtests lib751 - > log/21/stdout751 2> log/21/stderr751

libtests returned 132, when expecting 0
 751: exit FAILED
== Contents of files in the log/21/ directory after test 751
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind751 ./libtest/libtests lib751 - > log/21/stdout751 2> log/21/stderr751
=== End of file commands.log
=== Start of file server.cmd
 Testnum 751
=== End of file server.cmd
=== Start of file valgrind751
 ==119412== 
 ==119412== Process terminating with default action of signal 4 (SIGILL)
 ==119412==  Illegal opcode at address 0x51CC63F
 ==119412==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==119412==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==119412==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==119412==    by 0x40041AF: main (first.c:264)
=== End of file valgrind751
test 0735 [IPNS with path, query args and gateway with path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind735 ../src/curl -q --output log/9/curl735.out  --include --trace-ascii log/9/trace735 --trace-time --ipfs-gateway http://127.0.0.1:43733/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/9/stdout735 2> log/9/stderr735

 735: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 735
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind735 ../src/curl -q --output log/9/curl735.out  --include --trace-ascii log/9/trace735 --trace-time --ipfs-gateway http://127.0.0.1:43733/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/9/stdout735 2> log/9/stderr735
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.462481 ====> Client connect
 19:27:25.462514 accept_connection 3 returned 4
 19:27:25.462533 Read 93 bytes
 19:27:25.462542 Process 93 bytes request
 19:27:25.462554 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.462561 Are-we-friendly question received
 19:27:25.462585 Wrote request (93 bytes) input to log/9/server.input
 19:27:25.462599 Identifying ourselves as friends
 19:27:25.462652 Response sent (56CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind738 ../src/curl -q --output log/15/curl738.out  --include --trace-ascii log/15/trace738 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/15/stdout738 2> log/15/stderr738
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind743 ../src/curl -q --output log/3/curl743.out  --include --trace-ascii log/3/trace743 --trace-time http://127.0.0.1:36161/743 -K log/3/config > log/3/stdout743 2> log/3/stderr743
 bytes) and written to log/9/server.response
 19:27:25.462660 special request received, no persistency
 19:27:25.462668 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 55668 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 735
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind735
 ==118574== 
 ==118574== Process terminating with default action of signal 4 (SIGILL)
 ==118574==  Illegal opcode at address 0x492B75F
 ==118574==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118574==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118574==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118574==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118574==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118574==    by 0x49908EB: curl_version_info (version.c:600)
 ==118574==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118574==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118574==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118574==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind735
setenv IPFS_PATH = log/15/.ipfs/
test 0738 [IPFS with IPFS_PATH, no gateway file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind738 ../src/curl -q --output log/15/curl738.out  --include --trace-ascii log/15/trace738 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/15/stdout738 2> log/15/stderr738

curl returned 132, when expecting 37
 738: exit FAILED
== Contents of files in the log/15/ directory after test 738
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind738 ../src/curl -q --output log/15/curl738.out  --include --trace-ascii log/15/trace738 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/15/stdout738 2> log/15/stderr738
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.774660 ====> Client connect
 19:27:26.774695 accept_connection 3 returned 4
 19:27:26.774717 Read 93 bytes
 19:27:26.774727 Process 93 bytes request
 19:27:26.774739 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.774748 Are-we-friendly question received
 19:27:26.774773 Wrote request (93 bytes) input to log/15/server.input
 19:27:26.774790 Identifying ourselves as friends
 19:27:26.774855 Response sent (56 bytes) and written to log/15/server.response
 19:27:26.774865 special request received, no persistency
 19:27:26.774873 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 46560 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 738
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind738
 ==118751== 
 ==118751== Process terminating with default action of signal 4 (SIGILL)
 ==118751==  Illegal opcode at address 0x492B75F
 ==118751==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118751==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118751==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118751==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118751==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118751==    by 0x49908EB: curl_version_info (version.c:600)
 ==118751==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118751==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118751==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118751==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind738
test 0743 [--config with a 127-byte line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind743 ../src/curl -q --output log/3/curl743.out  --include --trace-ascii log/3/trace743 --trace-time http://127.0.0.1:36161/743 -K log/3/config > log/3/stdout743 2> log/3/stderr743

 743: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 743
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind743 ../src/curl -q --output log/3/curl743.out  --include --trace-ascii log/3/trace743 --trace-time http://127.0.0.1:36161/743 -K log/3/config > log/3/stdout743 2> log/3/stderr743
=== End of file commands.log
=== Start of file config
 -A pointless
 data = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
=== End of file config
=== Start of file http_server.log
 19:27:27.145964 ====> Client connect
 19:27:27.146010 accept_connection 3 returned 4
 19:27:27.146038 Read 93 bytes
 19:27:27.146050 Process 93 bytes request
 19:27:27.146063 Got request: GET /verifiedserver HTTP/1.1
 19:27:27.146073 Are-we-friendly question received
 19:27:27.146104 Wrote request (93 bytes) input to log/3/server.input
 19:27:27.146123 Identifying ourselves as friends
 19:27:27.146219 Response sent (56 bytes) and written to log/3/server.response
 19:27:27.146232 special request received, no persistency
 19:27:27.146241 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 46216 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 743
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind743
 ==119032== 
 ==119032== Process terminating with default action of signal 4 (SIGILL)
 ==119032==  Illegal opcode at address 0x492B75F
 ==119032==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119032==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119032==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119032==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119032==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119032==    by 0x49908EB: curl_version_info (version.c:600)
 ==119032==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119032==    by 0x4003269: UnknownInlinedFun (tool_cfCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind748 ../src/curl -q --output log/4/curl748.out  --include --trace-ascii log/4/trace748 --trace-time -K log/4/cmd > log/4/stdout748 2> log/4/stderr748
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind746 ../src/curl -q --output log/5/curl746.out  --include --trace-ascii log/5/trace746 --trace-time http://neverused.example/ -m 22222242222222222 > log/5/stdout746 2> log/5/stderr746
gable.c:339)
 ==119032==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119032==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind743
test 0748 [A --config file that uses -h and no URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind748 ../src/curl -q --output log/4/curl748.out  --include --trace-ascii log/4/trace748 --trace-time -K log/4/cmd > log/4/stdout748 2> log/4/stderr748

curl returned 132, when expecting 2
 748: exit FAILED
== Contents of files in the log/4/ directory after test 748
=== Start of file cmd
 -h all
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind748 ../src/curl -q --output log/4/curl748.out  --include --trace-ascii log/4/trace748 --trace-time -K log/4/cmd > log/4/stdout748 2> log/4/stderr748
=== End of file commands.log
=== Start of file server.cmd
 Testnum 748
=== End of file server.cmd
=== Start of file valgrind748
 ==119124== 
 ==119124== Process terminating with default action of signal 4 (SIGILL)
 ==119124==  Illegal opcode at address 0x492B75F
 ==119124==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119124==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119124==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119124==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119124==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119124==    by 0x49908EB: curl_version_info (version.c:600)
 ==119124==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119124==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119124==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119124==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind748
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind750 ../src/curl -q --output log/10/curl750.out  --include --trace-ascii log/10/trace750 --trace-time http://test.example --proxy http://127.0.0.1:40913 --proxytunnel -sS > log/10/stdout750 2> log/10/stderr750
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind739 ../src/curl -q --output log/16/curl739.out  --include --trace-ascii log/16/trace739 --trace-time --ipfs-gateway "http://127.0.0.1:35903/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/16/stdout739 2> log/16/stderr739
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind744 ../src/curl -q --output log/14/curl744.out  --include --trace-ascii log/14/trace744 --trace-time http://foo.host:45467/744 -p --proxy1.0 127.0.0.1:37729 -A "" --netrc-file log/14/netrc744 > log/14/stdout744 2> log/14/stderr744
test 0746 [too large numerical value passed to -m]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind746 ../src/curl -q --output log/5/curl746.out  --include --trace-ascii log/5/trace746 --trace-time http://neverused.example/ -m 22222242222222222 > log/5/stdout746 2> log/5/stderr746

 746: stderr FAILED:
--- log/5/check-expected	2026-10-15 19:27:28.832214019 +0000
+++ log/5/check-generated	2026-10-15 19:27:28.830343827 +0000
@@ -1,2 +0,0 @@
-curl: option -m: expected a proper numerical parameter[CR][LF]
-curl: try 'curl --help' for more information[CR][LF]
== Contents of files in the log/5/ directory after test 746
=== Start of file check-expected
 curl: option -m: expected a proper numerical parameter[CR][LF]
 curl: try 'curl --help' for more information[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind746 ../src/curl -q --output log/5/curl746.out  --include --trace-ascii log/5/trace746 --trace-time http://neverused.example/ -m 22222242222222222 > log/5/stdout746 2> log/5/stderr746
=== End of file commands.log
=== Start of file server.cmd
 Testnum 746
=== End of file server.cmd
=== Start of file valgrind746
 ==119114== 
 ==119114== Process terminating with default action of signal 4 (SIGILL)
 ==119114==  Illegal opcode at address 0x492B75F
 ==119114==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119114==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119114==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119114==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119114==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119114==    by 0x49908EB: curl_version_info (version.c:600)
 ==119114==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119114==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119114==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119114==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind746
test 0750 [HTTP CONNECT with proxy returning HTML and closing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind750 ../src/curl -q --output log/10/curl750.out  --include --trace-ascii log/10/trace750 --trace-time http://test.example --proxy http://127.0.0.1:40913 --proxytunnel -sS > log/10/stdout750 2> log/10/stderr750

 750: stderr FAILED:
--- log/10/check-expected	2026-10-15 19:27:28.935712506 +0000
+++ log/10/check-generated	2026-10-15 19:27:28.933691277 +0000
@@ -1 +0,0 @@
-curl: (8) Invalid response header[CR][LF]
== Contents of files in the log/10/ directory after test 750
=== Start of file check-expected
 curl: (8) Invalid response header[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind750 ../src/curl -q --output log/10/curl750.out  --include --trace-ascii log/10/trace750 --trace-time http://test.example --proxy http://127.0.0.1:40913 --proxytunnel -sS > log/10/stdout750 2> log/10/stderr750
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.543608 ====> Client connect
 19:27:26.543647 accept_connection 3 returned 4
 19:27:26.543671 Read 93 bytes
 19:27:26.543681 Process 93 bytes request
 19:27:26.543694 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.543702 Are-we-friendly question received
 19:27:26.543729 Wrote request (93 bytes) input to log/10/server.input
 19:27:26.543746 Identifying ourselves as friends
 19:27:26.543821 Response sent (56 bytes) and written to log/10/server.response
 19:27:26.543831 special request received, no persistency
 19:27:26.543839 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56482 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 750
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind750
 ==119430== 
 ==119430== Process terminating with default action of signal 4 (SIGILL)
 ==119430==  Illegal opcode at address 0x492B75F
 ==119430==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119430==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119430==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119430==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119430==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119430==    by 0x49908EB: curl_version_info (version.c:600)
 ==119430==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119430==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind750
test 0744 [--netrc-file with a 127-byte line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind744 ../src/curl -q --output log/14/curl744.out  --include --trace-ascii log/14/trace744 --trace-time http://foo.host:45467/744 -p --proxy1.0 127.0.0.1:37729 -A "" --netrc-file log/14/netrc744 > log/14/stdout744 2> log/14/stderr744

 744: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 744
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind744 ../src/curl -q --output log/14/curl744.out  --include --trace-ascii log/14/trace744 --trace-time http://foo.host:45467/744 -p --proxy1.0 127.0.0.1:37729 -A "" --netrc-file log/14/netrc744 > log/14/stdout744 2> log/14/stderr744
=== End of file commands.log
=== Start of file http2_server.log
 19:27:26.370288 ====> Client connect
 19:27:26.370336 accept_connection 3 returned 4
 19:27:26.370362 Read 93 bytes
 19:27:26.370372 Process 93 bytes request
 19:27:26.370396 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.370404 Are-we-friendly question received
 19:27:26.370435 Wrote request (93 bytes) input to log/14/proxy.input
 19:27:26.370463 Identifying ourselves as friends
 19:27:26.370565 Response sent (56 bytes) and written to log/14/proxy.response
 19:27:26.370576 special request received, no persistency
 19:27:26.370584 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:37729...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37729) from 127.0.0.1 port 54830 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37729
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37729 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 83621
=== End of file http2_verify.out
=== Start of file http_server.log
 19:27:26.276769 ====> Client connect
 19:27:26.276846 accept_connection 3 returned 4
 19:27:26.276871 Read 93 bytes
 19:27:26.276881 Process 93 bytes request
 19:27:26.276893 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.276902 Are-we-friendly question received
 19:27:26.276929 Wrote request (93 bytes) input to log/14/server.input
 19:27:26.276946 Identifying ourselves as friends
 19:27:26.277022 Response sent (56 bytes) and written to log/14/server.response
 19:27:26.277032 special request received, no persistency
 19:27:26.277040 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 57460 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file netrc744
 machine foo.host login foo password baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar
=== End of file netrc744
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 83621
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 744
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind744
 ==119262== 
 ==119262== Process terminating with default action of signal 4 (SIGILL)
 ==119262==  Illegal opcode at address 0x492B75F
 ==119262==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119262==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119262==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119262==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119262==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119262==    by 0x49908EB: curl_version_info (version.c:600)
 ==119262==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119262==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119262==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==11926CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind747 ../src/curl -q --output log/1/curl747.out  --include --trace-ascii log/1/trace747 --trace-time http://127.0.0.1:38815/747 > log/1/stdout747 2> log/1/stderr747
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind749 ../src/curl -q --output log/24/curl749.out  --include --trace-ascii log/24/trace749 --trace-time http://test.example --proxy http://127.0.0.1:38895 --proxytunnel -sS > log/24/stdout749 2> log/24/stderr749
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind752 ../src/curl -q --output log/18/curl752.out  --include --trace-ascii log/18/trace752 --trace-time http://127.0.0.1:43739/752 -f --retry 1 > log/18/stdout752 2> log/18/stderr752
2==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind744
test 0739 [IPNS path and query args for gw and IPFS URL (malformed gw URL)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind739 ../src/curl -q --output log/16/curl739.out  --include --trace-ascii log/16/trace739 --trace-time --ipfs-gateway "http://127.0.0.1:35903/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/16/stdout739 2> log/16/stderr739

curl returned 132, when expecting 3
 739: exit FAILED
== Contents of files in the log/16/ directory after test 739
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind739 ../src/curl -q --output log/16/curl739.out  --include --trace-ascii log/16/trace739 --trace-time --ipfs-gateway "http://127.0.0.1:35903/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/16/stdout739 2> log/16/stderr739
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.854352 ====> Client connect
 19:27:26.857014 accept_connection 3 returned 4
 19:27:26.857049 Read 93 bytes
 19:27:26.857060 Process 93 bytes request
 19:27:26.857074 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.857083 Are-we-friendly question received
 19:27:26.857115 Wrote request (93 bytes) input to log/16/server.input
 19:27:26.857133 Identifying ourselves as friends
 19:27:26.857225 Response sent (56 bytes) and written to log/16/server.response
 19:27:26.857236 special request received, no persistency
 19:27:26.857244 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43928 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 739
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind739
 ==118778== 
 ==118778== Process terminating with default action of signal 4 (SIGILL)
 ==118778==  Illegal opcode at address 0x492B75F
 ==118778==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118778==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118778==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118778==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118778==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118778==    by 0x49908EB: curl_version_info (version.c:600)
 ==118778==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118778==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118778==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118778==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind739
test 0747 [Reject too many HTTP response headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind747 ../src/curl -q --output log/1/curl747.out  --include --trace-ascii log/1/trace747 --trace-time http://127.0.0.1:38815/747 > log/1/stdout747 2> log/1/stderr747

 747: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 747
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind747 ../src/curl -q --output log/1/curl747.out  --include --trace-ascii log/1/trace747 --trace-time http://127.0.0.1:38815/747 > log/1/stdout747 2> log/1/stderr747
=== End of file commands.log
=== Start of file http_server.log
 19:27:27.300202 ====> Client connect
 19:27:27.300253 accept_connection 3 returned 4
 19:27:27.300280 Read 93 bytes
 19:27:27.300292 Process 93 bytes request
 19:27:27.300306 Got request: GET /verifiedserver HTTP/1.1
 19:27:27.300315 Are-we-friendly question received
 19:27:27.300349 Wrote request (93 bytes) input to log/1/server.input
 19:27:27.300370 Identifying ourselves as friends
 19:27:27.300466 Response sent (56 bytes) and written to log/1/server.response
 19:27:27.300479 special request received, no persistency
 19:27:27.300488 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 42502 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 747
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind747
 ==119321== 
 ==119321== Process terminating with default action of signal 4 (SIGILL)
 ==119321==  Illegal opcode at address 0x492B75F
 ==119321==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119321==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119321==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119321==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119321==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119321==    by 0x49908EB: curl_version_info (version.c:600)
 ==119321==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119321==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119321==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119321==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind747
test 0752 [--retry and -f on an HTTP 404 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind752 ../src/curl -q --output log/18/curl752.out  --include --trace-ascii log/18/trace752 --trace-time http://127.0.0.1:43739/752 -f --retry 1 > log/18/stdout752 2> log/18/stderr752

 752: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 752
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind752 ../src/curl -q --output log/18/curl752.out  --include --trace-ascii log/18/trace752 --trace-time http://127.0.0.1:43739/752 -f --retry 1 > log/18/stdout752 2> log/18/stderr752
=== End of file commands.log
=== Start of file http_server.log
 19:27:27.785906 ====> Client connect
 19:27:27.785945 accept_connection 3 returned 4
 19:27:27.785968 Read 93 bytes
 19:27:27.785980 Process 93 bytes request
 19:27:27.785992 Got request: GET /verifiedserver HTTP/1.1
 19:27:27.786002 Are-we-friendly question received
 19:27:27.786033 Wrote request (93 bytes) input to log/18/server.input
 19:27:27.786053 Identifying ourselves as friends
 19:27:27.786126 Response sent (56 bytes) and written to log/18/server.response
 19:27:27.786137 special request received, no persistency
 19:27:27.786147 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 752
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind752
 ==119598== 
 ==119598== Process terminating with default action of signal 4 (SIGILL)
 ==119598==  Illegal opcode at address 0x492B75F
 ==119598==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119598==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119598==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119598==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119598==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119598==    by 0x49908EB: curl_version_info (version.c:600)
 ==119598==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119598==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119598==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119598==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind752
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind757 ./libtest/libtests lib757 http://127.0.0.1:35993/we/want/757 > log/17/stdout757 2> log/17/stderr757
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind754 ../src/curl -q --output log/2/curl754.out  --include --trace-ascii log/2/trace754 --trace-time ftp://127.0.0.1:38033/path/ -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/2/stdout754 2> log/2/stderr754
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind755 ../src/curl -q --output log/7/curl755.out  --include --trace-ascii log/7/trace755 --trace-time http://foo.host/755 --proxy 127.0.0.1:40859 -A "" --netrc > log/7/stdout755 2> log/7/stderr755
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind756 ../src/curl -q --include --trace-ascii log/22/trace756 --trace-time http://127.0.0.1:35989/want/756 http://127.0.0.1:35989/want/7560002 --out-null -o - > log/22/stdout756 2> log/22/stderr756
test 0749 [HTTP CONNECT with proxy returning 400 and closing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind749 ../src/curl -q --output log/24/curl749.out  --include --trace-ascii log/24/trace749 --trace-time http://test.example --proxy http://127.0.0.1:38895 --proxytunnel -sS > log/24/stdout749 2> log/24/stderr749

 749: stderr FAILED:
--- log/24/check-expected	2026-10-15 19:27:29.403894401 +0000
+++ log/24/check-generated	2026-10-15 19:27:29.401680341 +0000
@@ -1 +0,0 @@
-curl: (7) CONNECT tunnel failed, response 400[CR][LF]
== Contents of files in the log/24/ directory after test 749
=== Start of file check-expected
 curl: (7) CONNECT tunnel failed, response 400[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind749 ../src/curl -q --output log/24/curl749.out  --include --trace-ascii log/24/trace749 --trace-time http://test.example --proxy http://127.0.0.1:38895 --proxytunnel -sS > log/24/stdout749 2> log/24/stderr749
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.413537 ====> Client connect
 19:27:26.413574 accept_connection 3 returned 4
 19:27:26.413593 Read 93 bytes
 19:27:26.413601 Process 93 bytes request
 19:27:26.413612 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.413619 Are-we-friendly question received
 19:27:26.413640 Wrote request (93 bytes) input to log/24/server.input
 19:27:26.413653 Identifying ourselves as friends
 19:27:26.413705 Response sent (56 bytes) and written to log/24/server.response
 19:27:26.413712 special request received, no persistency
 19:27:26.413719 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 39344 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 749
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind749
 ==119312== 
 ==119312== Process terminating with default action of signal 4 (SIGILL)
 ==119312==  Illegal opcode at address 0x492B75F
 ==119312==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119312==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119312==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119312==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119312==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119312==    by 0x49908EB: curl_version_info (version.c:600)
 ==119312==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119312==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119312==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119312==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind749
test 0754 [FTP list with quote ops]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind754 ../src/curl -q --output log/2/curl754.out  --include --trace-ascii log/2/trace754 --trace-time ftp://127.0.0.1:38033/path/ -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/2/stdout754 2> log/2/stderr754

 754: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 754
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind754 ../src/curl -q --output log/2/curl754.out  --include --trace-ascii log/2/trace754 --trace-time ftp://127.0.0.1:38033/path/ -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/2/stdout754 2> log/2/stderr754
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:27.507816 ====> Client connect
 19:27:27.508060 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:27.512435 < "USER anonymous"
 19:27:27.512512 > "331 We are happy you popped in![CR][LF]"
 19:27:27.515694 < "PASS ftp@example.com"
 19:27:27.515743 > "230 Welcome you silly person[CR][LF]"
 19:27:27.515898 < "PWD"
 19:27:27.515930 > "257 "/" is current directory[CR][LF]"
 19:27:27.516087 < "EPSV"
 19:27:27.516112 ====> Passive DATA channel requested by client
 19:27:27.516125 DATA sockfilt for passive data channel starting...
 19:27:27.525440 DATA sockfilt for passive data channel started (pid 119675)
 19:27:27.525606 DATA sockfilt for passive data channel listens on port 33603
 19:27:27.525665 > "229 Entering Passive Mode (|||33603|)[CR][LF]"
 19:27:27.525684 Client has been notified that upcoming DATA connection is awaited on port 33603
 19:27:27.526004 Client connects to port 33603
 19:27:27.526042 ====> Client established passive DATA connection on port 33603
 19:27:27.526144 < "TYPE I"
 19:27:27.526181 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:27.526373 < "SIZE verifiedserver"
 19:27:27.526415 > "213 17[CR][LF]"
 19:27:27.526582 < "RETR verifiedserver"
 19:27:27.526621 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:27.526715 =====> Closing passive DATA connection...
 19:27:27.526734 Server disconnects passive DATA connection
 19:27:27.526966 Server disconnected passive DATA connection
 19:27:27.526994 DATA sockfilt for passive data channel quits (pid 119675)
 19:27:27.527237 DATA sockfilt for passive data channel quit (pid 119675)
 19:27:27.527265 =====> Closed passive DATA connection
 19:27:27.527294 > "226 File transfer complete[CR][LF]"
 19:27:27.574811 < "QUIT"
 19:27:27.574875 > "221 bye bye baby[CR][LF]"
 19:27:27.576285 MAIN sockfilt said DISC
 19:27:27.576400 ====> Client disconnected
 19:27:27.576500 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:27.115716 ====> Client connect
 19:27:27.120034 Received DATA (on stdin)
 19:27:27.120073 > 146 bytes data, server => client
 19:27:27.120086 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:27.120097 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:27.120106 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:27.120225 < 16 bytes data, client => server
 19:27:27.120237 'USER anonymous\r\n'
 19:27:27.123411 Received DATA (on stdin)
 19:27:27.123442 > 33 bytes data, server => client
 19:27:27.123454 '331 We are happy you popped in!\r\n'
 19:27:27.123551 < 22 bytes data, client => server
 19:27:27.123563 'PASS ftp@example.com\r\n'
 19:27:27.123777 Received DATA (on stdin)
 19:27:27.123788 > 30 bytes data, server => client
 19:27:27.123798 '230 Welcome you silly person\r\n'
 19:27:27.123848 < 5 bytes data, client => server
 19:27:27.123858 'PWD\r\n'
 19:27:27.123958 Received DATA (on stdin)
 19:27:27.123968 > 30 bytes data, server => client
 19:27:27.123978 '257 "/" is current directory\r\n'
 19:27:27.124037 < 6 bytes data, client => server
 19:27:27.124048 'EPSV\r\n'
 19:27:27.133724 Received DATA (on stdin)
 19:27:27.133741 > 39 bytes data, server => client
 19:27:27.133751 '229 Entering Passive Mode (|||33603|)\r\n'
 19:27:27.133972 < 8 bytes data, client => server
 19:27:27.133984 'TYPE I\r\n'
 19:27:27.134214 Received DATA (on stdin)
 19:27:27.134226 > 33 bytes data, server => client
 19:27:27.134237 '200 I modify TYPE as you wanted\r\n'
 19:27:27.134299 < 21 bytes data, client => server
 19:27:27.134312 'SIZE verifiedserver\r\n'
 19:27:27.134444 Received DATA (on stdin)
 19:27:27.134455 > 8 bytes data, server => client
 19:27:27.134465 '213 17\r\n'
 19:27:27.134522 < 21 bytes data, client => server
 19:27:27.134533 'RETR verifiedserver\r\n'
 19:27:27.134763 Received DATA (on stdin)
 19:27:27.134775 > 29 bytes data, server => client
 19:27:27.134785 '150 Binary junk (17 bytes).\r\n'
 19:27:27.135323 Received DATA (on stdin)
 19:27:27.135336 > 28 bytes data, server => client
 19:27:27.135345 '226 File transfer complete\r\n'
 19:27:27.182547 < 6 bytes data, client => server
 19:27:27.182627 'QUIT\r\n'
 19:27:27.182911 Received DATA (on stdin)
 19:27:27.182926 > 18 bytes data, server => client
 19:27:27.182936 '221 bye bye baby\r\n'
 19:27:27.183342 ====> Client disconnect
 19:27:27.184337 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:27.127940 Running IPv4 version
 19:27:27.128035 Listening on port 33603
 19:27:27.128075 Wrote pid 119675 to log/2/server/ftp_sockdata.pid
 19:27:27.133360 Received PING (on stdin)
 19:27:27.133524 Received PORT (on stdin)
 19:27:27.133939 ====> Client connect
 19:27:27.134813 Received DATA (on stdin)
 19:27:27.134826 > 17 bytes data, server => client
 19:27:27.134836 'WE ROOLZ: 85208\r\n'
 19:27:27.134861 Received DISC (on stdin)
 19:27:27.134872 ====> Client forcibly disconnected
 19:27:27.135031 Received QUIT (on stdin)
 19:27:27.135042 quits
 19:27:27.135113 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY FAIL 500 this might not be a failure
 Testnum 754
=== End of file server.cmd
=== Start of file valgrind754
 ==119681== 
 ==119681== Process terminating with default action of signal 4 (SIGILL)
 ==119681==  Illegal opcode at address 0x492B75F
 ==119681==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119681==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119681==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119681==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119681==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119681==    by 0x49908EB: curl_version_info (version.c:600)
 ==119681==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119681==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119681==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119681==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind754
setenv NETRC = log/7/netrc755
test 0755 [netrc with NETRC pointing out the file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind755 ../src/curl -q --output log/7/curl755.out  --include --trace-ascii log/7/trace755 --trace-time http://foo.host/755 --proxy 127.0.0.1:40859 -A "" --netrc > log/7/stdout755 2> log/7/stderr755

 755: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 755
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind755 ../src/curl -q --output log/7/curl755.out  --include --trace-ascii log/7/trace755 --trace-time http://foo.host/755 --proxy 127.0.0.1:40859 -A "" --netrc > log/7/stdout755 2> log/7/stderr755
=== End of file commands.log
=== Start of file http_server.log
 19:27:27.320123 ====> Client connect
 19:27:27.320162 accept_connection 3 returned 4
 19:27:27.320320 Read 93 bytes
 19:27:27.320335 Process 93 bytes request
 19:27:27.320349 Got request: GET /verifiedserver HTTP/1.1
 19:27:27.320358 Are-we-friendly question received
 19:27:27.320392 Wrote request (93 bytes) input to log/7/server.input
 19:27:27.320409 Identifying ourselves as friends
 19:27:27.320471 Response sent (56 bytes) and written to log/7/server.response
 19:27:27.320481 special request received, no persistency
 19:27:27.320489 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 53986 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file netrc755
 machine foo.host login foo password alone-in-the-dark
=== End of file netrc755
=== Start of file server.cmd
 Testnum 755
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind755
 ==119760== 
 ==119760== Process terminating with default action of signal 4 (SIGILL)
 ==119760==  Illegal opcode at address 0x492B75F
 ==119760==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119760==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119760==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119760==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119760==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119760==    by 0x49908EB: curl_version_info (version.c:600)
 ==119760==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119760==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119760==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119760==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind755
test 0757 [MIME parts reused as a child part, using data_cb]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind757 ./libtest/libtests lib757 http://127.0.0.1:35993/we/want/757 > log/17/stdout757 2> log/17/stderr757

 757: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 757
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind757 ./libtest/libtests lib757 http://127.0.0.1:35993/we/want/757 > log/17/stdout757 2> log/17/stderr757
=== End of file commands.log
=== Start of file http_server.log
 19:27:28.643341 ====> Client connect
 19:27:28.643381 accept_connection 3 returned 4
 19:27:28.643534 Read 93 bytes
 19:27:28.643547 Process 93 bytes request
 19:27:28.643560 Got request: GET /verifiedserver HTTP/1.1
 19:27:28.643568 Are-we-friendly question received
 19:27:28.643596 Wrote request (93 bytes) input to log/17/server.input
 19:27:28.643613 Identifying ourselves as friends
 19:27:28.643667 Response sent (56 bytes) and written to log/17/server.response
 19:27:28.643676 special request received, no persistency
 19:27:28.643684 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 58924 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 757
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind757
 ==119896== 
 ==119896== Process terminating with default action of signal 4 (SIGILL)
 ==119896==  Illegal opcode at address 0x51CC63F
 ==119896==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==119896==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==119896==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==119896==    by 0x40041AF: main (first.c:264)
=== End of file valgrind757
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind759 ../src/curl -q --output log/13/curl759.out  --include --trace-ascii log/13/trace759 --trace-time "{,,,,,,,}" "{," "{,,," > log/13/stdout759 2> log/13/stderr759
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind760 ../src/curl -q --output log/23/curl760.out  --include --trace-ascii log/23/trace760 --trace-time -no1 -no2 --url "Qttp://internal.dxample.lol/status" -: --url "http" > log/23/stdout760 2> log/23/stderr760
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind762 ../src/curl -q --trace-ascii log/21/trace762 --trace-time http://127.0.0.1:39881/762 -O --remote-time --output-dir log/21 > log/21/stdout762 2> log/21/stderr762
CMD (256): /usr/bin/perl -e 'exit((stat("log/21/762"))[9] != -922349651)'
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind763 ../src/curl -q --output log/9/curl763.out  --include --trace-ascii log/9/trace763 --trace-time '​‌' > log/9/stdout763 2> log/9/stderr763
test 0756 [mix --output and --out-null]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind756 ../src/curl -q --include --trace-ascii log/22/trace756 --trace-time http://127.0.0.1:35989/want/756 http://127.0.0.1:35989/want/7560002 --out-null -o - > log/22/stdout756 2> log/22/stderr756

 756: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:27:29.766395310 +0000
+++ log/22/check-generated	2026-10-15 19:27:29.765884723 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Thu, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Response: 2[LF]
-Content-Type: text/html[LF]
-Content-Length: 8[LF]
-[LF]
-Hello2![LF]
== Contents of files in the log/22/ directory after test 756
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Thu, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Response: 2[LF]
 Content-Type: text/html[LF]
 Content-Length: 8[LF]
 [LF]
 Hello2![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind756 ../src/curl -q --include --trace-ascii log/22/trace756 --trace-time http://127.0.0.1:35989/want/756 http://127.0.0.1:35989/want/7560002 --out-null -o - > log/22/stdout756 2> log/22/stderr756
=== End of file commands.log
=== Start of file http_server.log
 19:27:27.380973 ====> Client connect
 19:27:27.381006 accept_connection 3 returned 4
 19:27:27.381026 Read 93 bytes
 19:27:27.381036 Process 93 bytes request
 19:27:27.381049 Got request: GET /verifiedserver HTTP/1.1
 19:27:27.381058 Are-we-friendly question received
 19:27:27.381087 Wrote request (93 bytes) input to log/22/server.input
 19:27:27.381103 Identifying ourselves as friends
 19:27:27.381159 Response sent (56 bytes) and written to log/22/server.response
 19:27:27.381167 special request received, no persistency
 19:27:27.381175 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 58520 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 756
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind756
 ==119785== 
 ==119785== Process terminating with default action of signal 4 (SIGILL)
 ==119785==  Illegal opcode at address 0x492B75F
 ==119785==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119785==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119785==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119785==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119785==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119785==    by 0x49908EB: curl_version_info (version.c:600)
 ==119785==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119785==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119785==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119785==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind756
test 0759 [glob '{,']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind759 ../src/curl -q --output log/13/curl759.out  --include --trace-ascii log/13/trace759 --trace-time "{,,,,,,,}" "{," "{,,," > log/13/stdout759 2> log/13/stderr759

curl returned 132, when expecting 3
 759: exit FAILED
== Contents of files in the log/13/ directory after test 759
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind759 ../src/curl -q --output log/13/curl759.out  --include --trace-ascii log/13/trace759 --trace-time "{,,,,,,,}" "{," "{,,," > log/13/stdout759 2> log/13/stderr759
=== End of file commands.log
=== Start of file server.cmd
 Testnum 759
=== End of file server.cmd
=== Start of file valgrind759
 ==119931== 
 ==119931== Process terminating with default action of signal 4 (SIGILL)
 ==119931==  Illegal opcode at address 0x492B75F
 ==119931==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119931==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119931==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119931==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119931==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119931==    by 0x49908EB: curl_version_info (version.c:600)
 ==119931==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119931==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119931==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119931==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind759
test 0760 [more cmdline options than URLs and --next]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind760 ../src/curl -q --output log/23/curl760.out  --include --trace-ascii log/23/trace760 --trace-time -no1 -no2 --url "Qttp://internal.dxample.lol/status" -: --url "http" > log/23/stdout760 2> log/23/stderr760

curl returned 132, when expecting 1
 760: exit FAILED
== Contents of files in the log/23/ directory after test 760
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind760 ../src/curl -q --output log/23/curl760.out  --include --trace-ascii log/23/trace760 --trace-time -no1 -no2 --url "Qttp://internal.dxample.lol/status" -: --url "http" > log/23/stdout760 2> log/23/stderr760
=== End of file commands.log
=== Start of file server.cmd
 Testnum 760
=== End of file server.cmd
=== Start of file valgrind760
 ==119996== 
 ==119996== Process terminating with default action of signal 4 (SIGILL)
 ==119996==  Illegal opcode at address 0x492B75F
 ==119996==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==119996==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==119996==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==119996==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==119996==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==119996==    by 0x49908EB: curl_version_info (version.c:600)
 ==119996==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==119996==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==119996==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==119996==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind760
test 0762 [HTTP GET with --remote-time with file date from 1940]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind762 ../src/curl -q --trace-ascii log/21/trace762 --trace-time http://127.0.0.1:39881/762 -O --remote-time --output-dir log/21 > log/21/stdout762 2> log/21/stderr762
postcheck /usr/bin/perl -e 'exit((stat("log/21/762"))[9] != -922349651)'
 762: postcheck FAILED
== Contents of files in the log/21/ directory after test 762
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind762 ../src/curl -q --tracCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind761 ../src/curl -q --output log/20/curl761.out  --include --trace-ascii log/20/trace761 --trace-time http://testingthis/{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b > log/20/stdout761 2> log/20/stderr761
e-ascii log/21/trace762 --trace-time http://127.0.0.1:39881/762 -O --remote-time --output-dir log/21 > log/21/stdout762 2> log/21/stderr762
=== End of file commands.log
=== Start of file http_server.log
 19:27:28.100182 ====> Client connect
 19:27:28.100218 accept_connection 3 returned 4
 19:27:28.100243 Read 93 bytes
 19:27:28.100258 Process 93 bytes request
 19:27:28.100271 Got request: GET /verifiedserver HTTP/1.1
 19:27:28.100280 Are-we-friendly question received
 19:27:28.100311 Wrote request (93 bytes) input to log/21/server.input
 19:27:28.100330 Identifying ourselves as friends
 19:27:28.100405 Response sent (56 bytes) and written to log/21/server.response
 19:27:28.100417 special request received, no persistency
 19:27:28.100426 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49420 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 762
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind762
 ==120139== 
 ==120139== Process terminating with default action of signal 4 (SIGILL)
 ==120139==  Illegal opcode at address 0x492B75F
 ==120139==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120139==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120139==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120139==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120139==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120139==    by 0x49908EB: curl_version_info (version.c:600)
 ==120139==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120139==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120139==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120139==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind762
test 0763 [Unicode hostname ending up in a blank name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind763 ../src/curl -q --output log/9/curl763.out  --include --trace-ascii log/9/trace763 --trace-time '​‌' > log/9/stdout763 2> log/9/stderr763

curl returned 132, when expecting 3
 763: exit FAILED
== Contents of files in the log/9/ directory after test 763
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind763 ../src/curl -q --output log/9/curl763.out  --include --trace-ascii log/9/trace763 --trace-time '​‌' > log/9/stdout763 2> log/9/stderr763
=== End of file commands.log
=== Start of file server.cmd
 Testnum 763
=== End of file server.cmd
=== Start of file valgrind763
 ==120085== 
 ==120085== Process terminating with default action of signal 4 (SIGILL)
 ==120085==  Illegal opcode at address 0x492B75F
 ==120085==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120085==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120085==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120085==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120085==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120085==    by 0x49908EB: curl_version_info (version.c:600)
 ==120085==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120085==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120085==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120085==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind763
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind766 ./libtest/libtests lib766 ftp://127.0.0.1:39739/path/766 > log/4/stdout766 2> log/4/stderr766
test 0761 [too many {} globs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind761 ../src/curl -q --output log/20/curl761.out  --include --trace-ascii log/20/trace761 --trace-time http://testingthis/{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b > log/20/stdout761 2> log/20/stderr761

 761: stderr FAILED:
--- log/20/check-expected	2026-10-15 19:27:30.445998536 +0000
+++ log/20/check-generated	2026-10-15 19:27:30.443893704 +0000
@@ -1,2 +0,0 @@
-curl: (3) too many {} sets in position 403:[CR][LF]
-http://testingthis/{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a[CR][LF]
== Contents of files in the log/20/ directory after test 761
=== Start of file check-expected
 curl: (3) too many {} sets in position 403:[CR][LF]
 http://testingthis/{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind761 ../src/curl -q --output log/20/curl761.out  --include --trace-ascii log/20/trace761 --trace-time http://testingthis/{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b{a}b > log/20/stdout761 2> log/20/stderr761
=== End of file commands.log
=== Start of file server.cmd
 Testnum 761
=== End of file server.cmd
=== Start of file valgrind761
 ==120040== 
 ==120040== Process terminating with default action of signal 4 (SIGILL)
 ==120040==  Illegal opcode at address 0x492B75F
 ==120040==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120040==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120040==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120040==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120040==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120040==    by 0x49908EB: curl_version_info (version.c:600)
 ==120040==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120040==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120040==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120040==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind761
test 0766 [FTP PORT with sockopt callback refusing the accept]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind766 ./libtest/libtests lib766 ftp://127.0.0.1:39739/path/766 > log/4/stdout766 2> log/4/stderr766

 766: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 766
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind766 ./libtest/libtests lib766 ftp://127.0.0.1:39739/path/766 > log/4/stdout766 2> log/4/stderr766
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:28.925656 ====> Client connect
 19:27:28.962489 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:28.992649 < "USER anonymous"
 19:27:28.992722 > "331 We are happy you popped in![CR][LF]"
 19:27:28.997187 < "PASS ftp@example.com"
 19:27:28.997250 > "230 Welcome you silly person[CR][LF]"
 19:27:28.997471 < "PWD"
 19:27:28.997503 > "257 "/" is current directory[CR][LF]"
 19:27:28.997666 < "EPSV"
 19:27:28.997692 ====> Passive DATA channel requested by client
 19:27:28.997706 DATA sockfilt for passive data channel starting...
 19:27:29.045373 DATA sockfilt for passive data channel started (pid 120395)
 19:27:29.045599 DATA sockfilt for passive data channel listens on port 41385
 19:27:29.045653 > "229 Entering Passive Mode (|||41385|)[CR][LF]"
 19:27:29.045675 Client has been notified that upcoming DATA connection is awaited on port 41385
 19:27:29.046007 Client connects to port 41385
 19:27:29.046040 ====> Client established passive DATA connection on port 41385
 19:27:29.046146 < "TYPE I"
 19:27:29.046188 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:29.046375 < "SIZE verifiedserver"
 19:27:29.046418 > "213 17[CR][LF]"
 19:27:29.046603 < "RETR verifiedserver"
 19:27:29.046644 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:29.046740 =====> Closing passive DATA connection...
 19:27:29.046757 Server disconnects passive DATA connection
 19:27:29.047023 Server disconnected passive DATA connection
 19:27:29.047057 DATA sockfilt for passive data channel quits (pid 120395)
 19:27:29.085367 DATA sockfilt for passive data channel quit (pid 120395)
 19:27:29.085433 =====> Closed passive DATA connection
 19:27:29.085477 > "226 File transfer complete[CR][LF]"
 19:27:29.092306 < "QUIT"
 19:27:29.092370 > "221 bye bye baby[CR][LF]"
 19:27:29.093730 MAIN sockfilt said DISC
 19:27:29.093771 ====> Client disconnected
 19:27:29.093851 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:28.515458 ====> Client connect
 19:27:28.570348 Received DATA (on stdin)
 19:27:28.576600 > 146 bytes data, server => client
 19:27:28.576645 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:28.576665 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:28.576672 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:28.579823 < 16 bytes data, client => server
 19:27:28.579841 'USER anonymous\r\n'
 19:27:28.600565 Received DATA (on stdin)
 19:27:28.600587 > 33 bytes data, server => client
 19:27:28.600597 '331 We are CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind764 ../src/curl -q --include --trace-ascii log/15/trace764 --trace-time http://127.0.0.1:40321/764 -L -w '%header{this:all:***}\n' -o log/15/764.out > log/15/stdout764 2> log/15/stderr764
happy you popped in!\r\n'
 19:27:28.600714 < 22 bytes data, client => server
 19:27:28.600725 'PASS ftp@example.com\r\n'
 19:27:28.605087 Received DATA (on stdin)
 19:27:28.605104 > 30 bytes data, server => client
 19:27:28.605115 '230 Welcome you silly person\r\n'
 19:27:28.605193 < 5 bytes data, client => server
 19:27:28.605204 'PWD\r\n'
 19:27:28.605327 Received DATA (on stdin)
 19:27:28.605337 > 30 bytes data, server => client
 19:27:28.605347 '257 "/" is current directory\r\n'
 19:27:28.605410 < 6 bytes data, client => server
 19:27:28.605420 'EPSV\r\n'
 19:27:28.653509 Received DATA (on stdin)
 19:27:28.653527 > 39 bytes data, server => client
 19:27:28.653538 '229 Entering Passive Mode (|||41385|)\r\n'
 19:27:28.653740 < 8 bytes data, client => server
 19:27:28.653757 'TYPE I\r\n'
 19:27:28.654014 Received DATA (on stdin)
 19:27:28.654027 > 33 bytes data, server => client
 19:27:28.654039 '200 I modify TYPE as you wanted\r\n'
 19:27:28.654098 < 21 bytes data, client => server
 19:27:28.654113 'SIZE verifiedserver\r\n'
 19:27:28.654242 Received DATA (on stdin)
 19:27:28.654255 > 8 bytes data, server => client
 19:27:28.654265 '213 17\r\n'
 19:27:28.654324 < 21 bytes data, client => server
 19:27:28.654339 'RETR verifiedserver\r\n'
 19:27:28.654580 Received DATA (on stdin)
 19:27:28.654591 > 29 bytes data, server => client
 19:27:28.654601 '150 Binary junk (17 bytes).\r\n'
 19:27:28.693314 Received DATA (on stdin)
 19:27:28.693335 > 28 bytes data, server => client
 19:27:28.693346 '226 File transfer complete\r\n'
 19:27:28.699939 < 6 bytes data, client => server
 19:27:28.699969 'QUIT\r\n'
 19:27:28.700201 Received DATA (on stdin)
 19:27:28.700216 > 18 bytes data, server => client
 19:27:28.700226 '221 bye bye baby\r\n'
 19:27:28.701482 ====> Client disconnect
 19:27:28.701674 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:28.607700 Running IPv4 version
 19:27:28.626956 Listening on port 41385
 19:27:28.650105 Wrote pid 120395 to log/4/server/ftp_sockdata.pid
 19:27:28.650143 Received PING (on stdin)
 19:27:28.653289 Received PORT (on stdin)
 19:27:28.653778 ====> Client connect
 19:27:28.654664 Received DATA (on stdin)
 19:27:28.654677 > 17 bytes data, server => client
 19:27:28.654686 'WE ROOLZ: 85249\r\n'
 19:27:28.654714 Received DISC (on stdin)
 19:27:28.654727 ====> Client forcibly disconnected
 19:27:28.654889 Received QUIT (on stdin)
 19:27:28.654900 quits
 19:27:28.689934 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 766
=== End of file server.cmd
=== Start of file valgrind766
 ==120449== 
 ==120449== Process terminating with default action of signal 4 (SIGILL)
 ==120449==  Illegal opcode at address 0x51CC63F
 ==120449==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==120449==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==120449==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==120449==    by 0x40041AF: main (first.c:264)
=== End of file valgrind766
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind765 ../src/curl -q --include --trace-ascii log/3/trace765 --trace-time http://127.0.0.1:36161/765 -L -w '%header{this:all:-{\}-}\n' -o log/3/765.out > log/3/stdout765 2> log/3/stderr765
test 0764 [-w with multiple header output]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind764 ../src/curl -q --include --trace-ascii log/15/trace764 --trace-time http://127.0.0.1:40321/764 -L -w '%header{this:all:***}\n' -o log/15/764.out > log/15/stdout764 2> log/15/stderr764

 764: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:27:30.703756876 +0000
+++ log/15/check-generated	2026-10-15 19:27:30.700594385 +0000
@@ -1 +0,0 @@
-one***two***three***four[CR][LF]
== Contents of files in the log/15/ directory after test 764
=== Start of file check-expected
 one***two***three***four[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind764 ../src/curl -q --include --trace-ascii log/15/trace764 --trace-time http://127.0.0.1:40321/764 -L -w '%header{this:all:***}\n' -o log/15/764.out > log/15/stdout764 2> log/15/stderr764
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.146421 ====> Client connect
 19:27:29.146456 accept_connection 3 returned 4
 19:27:29.146478 Read 93 bytes
 19:27:29.146488 Process 93 bytes request
 19:27:29.146500 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.146509 Are-we-friendly question received
 19:27:29.146565 Wrote request (93 bytes) input to log/15/server.input
 19:27:29.146584 Identifying ourselves as friends
 19:27:29.146651 Response sent (56 bytes) and written to log/15/server.response
 19:27:29.146662 special request received, no persistency
 19:27:29.146670 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 46562 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 764
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind764
 ==120182== 
 ==120182== Process terminating with default action of signal 4 (SIGILL)
 ==120182==  Illegal opcode at address 0x492B75F
 ==120182==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120182==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120182==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120182==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120182==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120182==    by 0x49908EB: curl_version_info (version.c:600)
 ==120182==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120182==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120182==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120182==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind764
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind767 ../src/curl -q --output log/5/curl767.out  --include --trace-ascii log/5/trace767 --trace-time http://127.0.0.1:37089/767 > log/5/stdout767 2> log/5/stderr767
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind768 ../src/curl -q --output log/16/curl768.out  --include --trace-ascii log/16/trace768 --trace-time http://127.0.0.1:35903/768 > log/16/stdout768 2> log/16/stderr768
test 0765 [-w with multiple header output using } in separator]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind765 ../src/curl -q --include --trace-ascii log/3/trace765 --trace-time http://127.0.0.1:36161/765 -L -w '%header{this:all:-{\}-}\n' -o log/3/765.out > log/3/stdout765 2> log/3/stderr765

 765: stdout FAILED:
--- log/3/check-expected	2026-10-15 19:27:31.036040339 +0000
+++ log/3/check-generated	2026-10-15 19:27:31.033971831 +0000
@@ -1 +0,0 @@
-one-{}-two-{}-three-{}-four[CR][LF]
== Contents of files in the log/3/ directory after test 765
=== Start of file check-expected
 one-{}-two-{}-three-{}-four[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind765 ../src/curl -q --include --trace-ascii log/3/trace765 --trace-time http://127.0.0.1:36161/765 -L -w '%header{this:all:-{\}-}\n' -o log/3/765.out > log/3/stdout765 2> log/3/stderr765
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.323221 ====> Client connect
 19:27:29.323286 accept_connection 3 returned 4
 19:27:29.323318 Read 93 bytes
 19:27:29.323328 Process 93 bytes request
 19:27:29.323343 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.323351 Are-we-friendly question received
 19:27:29.323376 Wrote request (93 bytes) input to log/3/server.input
 19:27:29.323391 Identifying ourselves as friends
 19:27:29.323493 Response sent (56 bytes) and written to log/3/server.response
 19:27:29.323501 special request received, no persistency
 19:27:29.323508 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 46228 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 765
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind765
 ==120322== 
 ==120322== Process terminating with default action of signal 4 (SIGILL)
 ==120322==  Illegal opcode at address 0x492B75F
 ==120322==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120322==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120322==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120322==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120322==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120322==    by 0x49908EB: curl_version_info (version.c:600)
 ==120322==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120322==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120322==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120322==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind765
test 0767 [HTTP with two Content-Length response header fields same size]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind767 ../src/curl -q --output log/5/curl767.out  --include --trace-ascii log/5/trace767 --trace-time http://127.0.0.1:37089/767 > log/5/stdout767 2> log/5/stderr767

 767: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 767
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind767 ../src/curl -q --output log/5/curl767.out  --include --trace-ascii log/5/trace767 --trace-time http://127.0.0.1:37089/767 > log/5/stdout767 2> log/5/stderr767
=== End of file commands.log
=== Start of file http_server.log
 19:27:28.626567 ====> Client connect
 19:27:28.626616 accept_connection 3 returned 4
 19:27:28.626647 Read 93 bytes
 19:27:28.626693 Process 93 bytes request
 19:27:28.626705 Got request: GET /verifiedserver HTTP/1.1
 19:27:28.626732 Are-we-friendly question received
 19:27:28.626766 Wrote request (93 bytes) input to log/5/server.input
 19:27:28.626783 Identifying ourselves as friends
 19:27:28.626866 Response sent (56 bytes) and written to log/5/server.response
 19:27:28.626876 special request received, no persistency
 19:27:28.626884 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 59904 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 767
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind767
 ==120453== 
 ==120453== Process terminating with default action of signal 4 (SIGILL)
 ==120453==  Illegal opcode at address 0x492B75F
 ==120453==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120453==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120453==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120453==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120453==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120453==    by 0x49908EB: curl_version_info (version.c:600)
 ==120453==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120453==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120453==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120453==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind767
test 0768 [HTTP with letters after the number in Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind768 ../src/curl -q --output log/16/curl768.out  --include --trace-ascii log/16/trace768 --trace-time http://127.0.0.1:35903/768 > log/16/stdout768 2> log/16/stderr768

 768: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 768
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind768 ../src/curl -q --output log/16/curl768.out  --include --trace-ascii log/16/trace768 --trace-time http://127.0.0.1:35903/768 > log/16/stdout768 2> log/16/stderr768
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.712162 ====> Client connect
 19:27:29.712194 accept_connection 3 returned 4
 19:27:29.712211 Read 93 bytes
 19:27:29.712220 Process 93 bytes request
 19:27:29.712230 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.712237 Are-we-friendly question received
 19:27:29.712261 Wrote request (93 bytes) input to log/16/server.input
 19:27:29.712274 Identifying ourselves as friends
 19:27:29.712328 Response sent (56 bytes) and written to log/16/server.response
 19:27:29.712336 special request received, no persistency
 1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind769 ../src/curl -q --output log/14/curl769.out  --include --trace-ascii log/14/trace769 --trace-time http://127.0.0.1:45467/769 > log/14/stdout769 2> log/14/stderr769
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind784 ../src/curl -q --output log/18/curl784.out  --include --trace-ascii log/18/trace784 --trace-time http://127.0.0.1:43739/784 --variable "name[5-15]@log/18/in784" --expand-data '{{name}}' > log/18/stdout784 2> log/18/stderr784
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind778 ../src/curl -q --output log/7/curl778.out  --include --trace-ascii log/7/trace778 --trace-time http://first.host.it.is/we/want/that/page/778 -x 127.0.0.1:40859 --oauth2-bearer s3cr3t --proxy-user testing:this --location > log/7/stdout778 2> log/7/stderr778
9:27:29.712343 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43942 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 768
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind768
 ==120574== 
 ==120574== Process terminating with default action of signal 4 (SIGILL)
 ==120574==  Illegal opcode at address 0x492B75F
 ==120574==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120574==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120574==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120574==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120574==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120574==    by 0x49908EB: curl_version_info (version.c:600)
 ==120574==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120574==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120574==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120574==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind768
test 0769 [HTTP with space after Content-Length number]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind769 ../src/curl -q --output log/14/curl769.out  --include --trace-ascii log/14/trace769 --trace-time http://127.0.0.1:45467/769 > log/14/stdout769 2> log/14/stderr769

 769: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 769
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind769 ../src/curl -q --output log/14/curl769.out  --include --trace-ascii log/14/trace769 --trace-time http://127.0.0.1:45467/769 > log/14/stdout769 2> log/14/stderr769
=== End of file commands.log
=== Start of file http_server.log
 19:27:28.782351 ====> Client connect
 19:27:28.782391 accept_connection 3 returned 4
 19:27:28.782414 Read 93 bytes
 19:27:28.782425 Process 93 bytes request
 19:27:28.782438 Got request: GET /verifiedserver HTTP/1.1
 19:27:28.782447 Are-we-friendly question received
 19:27:28.782480 Wrote request (93 bytes) input to log/14/server.input
 19:27:28.782498 Identifying ourselves as friends
 19:27:28.782571 Response sent (56 bytes) and written to log/14/server.response
 19:27:28.782582 special request received, no persistency
 19:27:28.782592 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 57468 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 769
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind769
 ==120570== 
 ==120570== Process terminating with default action of signal 4 (SIGILL)
 ==120570==  Illegal opcode at address 0x492B75F
 ==120570==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120570==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120570==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120570==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120570==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120570==    by 0x49908EB: curl_version_info (version.c:600)
 ==120570==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120570==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120570==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120570==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind769
test 0778 [HTTP --oauth2-bearer redirect to new host (not passed on)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind778 ../src/curl -q --output log/7/curl778.out  --include --trace-ascii log/7/trace778 --trace-time http://first.host.it.is/we/want/that/page/778 -x 127.0.0.1:40859 --oauth2-bearer s3cr3t --proxy-user testing:this --location > log/7/stdout778 2> log/7/stderr778

 778: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 778
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind778 ../src/curl -q --output log/7/curl778.out  --include --trace-ascii log/7/trace778 --trace-time http://first.host.it.is/we/want/that/page/778 -x 127.0.0.1:40859 --oauth2-bearer s3cr3t --proxy-user testing:this --location > log/7/stdout778 2> log/7/stderr778
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.539761 ====> Client connect
 19:27:29.539806 accept_connection 3 returned 4
 19:27:29.539832 Read 93 bytes
 19:27:29.539842 Process 93 bytes request
 19:27:29.539854 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.539863 Are-we-friendly question received
 19:27:29.539890 Wrote request (93 bytes) input to log/7/server.input
 19:27:29.539908 Identifying ourselves as friends
 19:27:29.540000 Response sent (56 bytes) and written to log/7/server.response
 19:27:29.540010 special request received, no persistency
 19:27:29.540019 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 53998 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 778
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind778
 ==120961== 
 ==120961== Process terminating with default action of signal 4 (SIGILL)
 ==120961==  Illegal opcode at address 0x492B75F
 ==120961==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120961==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120961==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120961==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120961==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120961==    by 0x49908EB: curl_version_info (version.c:600)
 ==120961==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120961==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120961==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120961==    by 0x4003269: main (tool_main.c:19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind770 ../src/curl -q --output log/1/curl770.out  --include --trace-ascii log/1/trace770 --trace-time http://127.0.0.1:38815/770 > log/1/stdout770 2> log/1/stderr770
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind774 ../src/curl -q --output log/17/curl774.out  --include --trace-ascii log/17/trace774 --trace-time http://127.0.0.1:35993/ -K log/17/cmd > log/17/stdout774 2> log/17/stderr774
5)
=== End of file valgrind778
test 0784 [--variable with a file byte range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind784 ../src/curl -q --output log/18/curl784.out  --include --trace-ascii log/18/trace784 --trace-time http://127.0.0.1:43739/784 --variable "name[5-15]@log/18/in784" --expand-data '{{name}}' > log/18/stdout784 2> log/18/stderr784

 784: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 784
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind784 ../src/curl -q --output log/18/curl784.out  --include --trace-ascii log/18/trace784 --trace-time http://127.0.0.1:43739/784 --variable "name[5-15]@log/18/in784" --expand-data '{{name}}' > log/18/stdout784 2> log/18/stderr784
=== End of file commands.log
=== Start of file http_server.log
 19:27:30.665428 ====> Client connect
 19:27:30.665467 accept_connection 3 returned 4
 19:27:30.665487 Read 93 bytes
 19:27:30.665496 Process 93 bytes request
 19:27:30.665508 Got request: GET /verifiedserver HTTP/1.1
 19:27:30.665517 Are-we-friendly question received
 19:27:30.665543 Wrote request (93 bytes) input to log/18/server.input
 19:27:30.665559 Identifying ourselves as friends
 19:27:30.665618 Response sent (56 bytes) and written to log/18/server.response
 19:27:30.665627 special request received, no persistency
 19:27:30.665635 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46512 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file in784
 On the first Monday of the month of April, 1625, the market town of Meung
=== End of file in784
=== Start of file server.cmd
 Testnum 784
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind784
 ==121049== 
 ==121049== Process terminating with default action of signal 4 (SIGILL)
 ==121049==  Illegal opcode at address 0x492B75F
 ==121049==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121049==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121049==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121049==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121049==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121049==    by 0x49908EB: curl_version_info (version.c:600)
 ==121049==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121049==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121049==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121049==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind784
test 0770 [HTTP with Content-Length headers using comma separated list]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind770 ../src/curl -q --output log/1/curl770.out  --include --trace-ascii log/1/trace770 --trace-time http://127.0.0.1:38815/770 > log/1/stdout770 2> log/1/stderr770

 770: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 770
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind770 ../src/curl -q --output log/1/curl770.out  --include --trace-ascii log/1/trace770 --trace-time http://127.0.0.1:38815/770 > log/1/stdout770 2> log/1/stderr770
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.773474 ====> Client connect
 19:27:29.773511 accept_connection 3 returned 4
 19:27:29.773530 Read 93 bytes
 19:27:29.773543 Process 93 bytes request
 19:27:29.773554 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.773562 Are-we-friendly question received
 19:27:29.773589 Wrote request (93 bytes) input to log/1/server.input
 19:27:29.773603 Identifying ourselves as friends
 19:27:29.786565 Response sent (56 bytes) and written to log/1/server.response
 19:27:29.786581 special request received, no persistency
 19:27:29.786590 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 42510 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 770
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind770
 ==120569== 
 ==120569== Process terminating with default action of signal 4 (SIGILL)
 ==120569==  Illegal opcode at address 0x492B75F
 ==120569==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120569==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120569==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120569==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120569==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120569==    by 0x49908EB: curl_version_info (version.c:600)
 ==120569==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120569==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120569==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120569==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind770
test 0774 [config file recursively including itself]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind774 ../src/curl -q --output log/17/curl774.out  --include --trace-ascii log/17/trace774 --trace-time http://127.0.0.1:35993/ -K log/17/cmd > log/17/stdout774 2> log/17/stderr774

curl returned 132, when expecting 2
 774: exit FAILED
== Contents of files in the log/17/ directory after test 774
=== Start of file cmd
 --config log/17/cmd
=== End of file cmd
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind774 ../src/curl -q --output log/17/curl774.out  --include --trace-ascii log/17/trace774 --trace-time http://127.0.0.1:35993/ -K log/17/cmd > log/17/stdout774 2> log/17/stderr774
=== End of file commands.log
=== Start of file server.cmd
 Testnum 774
=== End of file server.cmd
=== Start of file valgrind774
 ==120797== 
 ==120797== Process terminating with default action of signal 4 (SIGILL)
 ==120797==  Illegal opcode at address 0x492B75F
 ==120797==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120797==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120797==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120797==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120797==    by 0x49CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind772 ../src/curl -q --output log/24/curl772.out  --include --trace-ascii log/24/trace772 --trace-time http://127.0.0.1:38895/772 > log/24/stdout772 2> log/24/stderr772
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind771 ../src/curl -q --output log/10/curl771.out  --include --trace-ascii log/10/trace771 --trace-time http://127.0.0.1:40913/771 > log/10/stdout771 2> log/10/stderr771
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind773 ../src/curl -q --output log/22/curl773.out  --include --trace-ascii log/22/trace773 --trace-time http://127.0.0.1:35989/773 > log/22/stdout773 2> log/22/stderr773
908EB: UnknownInlinedFun (vtls.c:292)
 ==120797==    by 0x49908EB: curl_version_info (version.c:600)
 ==120797==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120797==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120797==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120797==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind774
test 0772 [HTTP with two Location: headers triggers error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind772 ../src/curl -q --output log/24/curl772.out  --include --trace-ascii log/24/trace772 --trace-time http://127.0.0.1:38895/772 > log/24/stdout772 2> log/24/stderr772

 772: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 772
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind772 ../src/curl -q --output log/24/curl772.out  --include --trace-ascii log/24/trace772 --trace-time http://127.0.0.1:38895/772 > log/24/stdout772 2> log/24/stderr772
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.446916 ====> Client connect
 19:27:29.446958 accept_connection 3 returned 4
 19:27:29.446985 Read 93 bytes
 19:27:29.446996 Process 93 bytes request
 19:27:29.447009 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.447018 Are-we-friendly question received
 19:27:29.447052 Wrote request (93 bytes) input to log/24/server.input
 19:27:29.447073 Identifying ourselves as friends
 19:27:29.447148 Response sent (56 bytes) and written to log/24/server.response
 19:27:29.447161 special request received, no persistency
 19:27:29.447170 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 39358 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 772
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind772
 ==120794== 
 ==120794== Process terminating with default action of signal 4 (SIGILL)
 ==120794==  Illegal opcode at address 0x492B75F
 ==120794==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120794==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120794==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120794==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120794==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120794==    by 0x49908EB: curl_version_info (version.c:600)
 ==120794==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120794==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120794==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120794==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind772
test 0771 [HTTP with two Content-Length headers using different sizes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind771 ../src/curl -q --output log/10/curl771.out  --include --trace-ascii log/10/trace771 --trace-time http://127.0.0.1:40913/771 > log/10/stdout771 2> log/10/stderr771

 771: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 771
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind771 ../src/curl -q --output log/10/curl771.out  --include --trace-ascii log/10/trace771 --trace-time http://127.0.0.1:40913/771 > log/10/stdout771 2> log/10/stderr771
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.149774 ====> Client connect
 19:27:29.149838 accept_connection 3 returned 4
 19:27:29.159835 Read 93 bytes
 19:27:29.159857 Process 93 bytes request
 19:27:29.159869 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.159878 Are-we-friendly question received
 19:27:29.199757 Wrote request (93 bytes) input to log/10/server.input
 19:27:29.199791 Identifying ourselves as friends
 19:27:29.224012 Response sent (56 bytes) and written to log/10/server.response
 19:27:29.224032 special request received, no persistency
 19:27:29.224041 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 56496 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 771
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind771
 ==120742== 
 ==120742== Process terminating with default action of signal 4 (SIGILL)
 ==120742==  Illegal opcode at address 0x492B75F
 ==120742==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120742==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120742==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120742==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120742==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120742==    by 0x49908EB: curl_version_info (version.c:600)
 ==120742==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120742==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120742==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind771
test 0773 [HTTP with two identical Location: headers triggers no error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind773 ../src/curl -q --output log/22/curl773.out  --include --trace-ascii log/22/trace773 --trace-time http://127.0.0.1:35989/773 > log/22/stdout773 2> log/22/stderr773

 773: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 773
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind773 ../src/curl -q --output log/22/curl773.out  --include --trace-ascii log/22/trace773 --trace-time http://127.0.0.1:35989/773 > log/22/stdout773 2> log/22/stderr773
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.469034 ====> Client connect
 19:27:29.469076 accept_connection 3 returned 4
 19:27:29.469101 Read 93 bytes
 19:27:29.469111 Process 93 bytes request
 19:27:29.469125 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.469134 Are-we-friendly question received
 19:27:29.469164 Wrote request (93 bytes) input to log/2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind786 ../src/curl -q --output log/23/curl786.out  --include --trace-ascii log/23/trace786 --trace-time http://127.0.0.1:44711/786 --variable "name[5-15]@-" --expand-data '{{name}}' <log/23/stdin-for-786 > log/23/stdout786 2> log/23/stderr786
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind785 ../src/curl -q --output log/13/curl785.out  --include --trace-ascii log/13/trace785 --trace-time http://127.0.0.1:38821/785 --variable "name[5-]@log/13/in785" --expand-data '{{name}}' > log/13/stdout785 2> log/13/stderr785
2/server.input
 19:27:29.469184 Identifying ourselves as friends
 19:27:29.469255 Response sent (56 bytes) and written to log/22/server.response
 19:27:29.469268 special request received, no persistency
 19:27:29.469277 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 58522 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 773
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind773
 ==120824== 
 ==120824== Process terminating with default action of signal 4 (SIGILL)
 ==120824==  Illegal opcode at address 0x492B75F
 ==120824==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==120824==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==120824==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==120824==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==120824==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==120824==    by 0x49908EB: curl_version_info (version.c:600)
 ==120824==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==120824==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==120824==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==120824==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind773
test 0786 [--variable with a file byte range, reading from stdin]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind786 ../src/curl -q --output log/23/curl786.out  --include --trace-ascii log/23/trace786 --trace-time http://127.0.0.1:44711/786 --variable "name[5-15]@-" --expand-data '{{name}}' <log/23/stdin-for-786 > log/23/stdout786 2> log/23/stderr786

 786: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 786
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind786 ../src/curl -q --output log/23/curl786.out  --include --trace-ascii log/23/trace786 --trace-time http://127.0.0.1:44711/786 --variable "name[5-15]@-" --expand-data '{{name}}' <log/23/stdin-for-786 > log/23/stdout786 2> log/23/stderr786
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.806395 ====> Client connect
 19:27:29.806444 accept_connection 3 returned 4
 19:27:29.806475 Read 93 bytes
 19:27:29.806486 Process 93 bytes request
 19:27:29.806500 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.806509 Are-we-friendly question received
 19:27:29.806545 Wrote request (93 bytes) input to log/23/server.input
 19:27:29.806566 Identifying ourselves as friends
 19:27:29.806667 Response sent (56 bytes) and written to log/23/server.response
 19:27:29.806680 special request received, no persistency
 19:27:29.806689 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 40008 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 786
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file stdin-for-786
 On the first Monday of the month of April, 1625, the market town of Meung
=== End of file stdin-for-786
=== Start of file valgrind786
 ==121201== 
 ==121201== Process terminating with default action of signal 4 (SIGILL)
 ==121201==  Illegal opcode at address 0x492B75F
 ==121201==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121201==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121201==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121201==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121201==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121201==    by 0x49908EB: curl_version_info (version.c:600)
 ==121201==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121201==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121201==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121201==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind786
test 0785 [--variable with a file byte range without end]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind785 ../src/curl -q --output log/13/curl785.out  --include --trace-ascii log/13/trace785 --trace-time http://127.0.0.1:38821/785 --variable "name[5-]@log/13/in785" --expand-data '{{name}}' > log/13/stdout785 2> log/13/stderr785

 785: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 785
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind785 ../src/curl -q --output log/13/curl785.out  --include --trace-ascii log/13/trace785 --trace-time http://127.0.0.1:38821/785 --variable "name[5-]@log/13/in785" --expand-data '{{name}}' > log/13/stdout785 2> log/13/stderr785
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.744420 ====> Client connect
 19:27:29.744456 accept_connection 3 returned 4
 19:27:29.744479 Read 93 bytes
 19:27:29.744488 Process 93 bytes request
 19:27:29.744500 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.744507 Are-we-friendly question received
 19:27:29.744532 Wrote request (93 bytes) input to log/13/server.input
 19:27:29.744548 Identifying ourselves as friends
 19:27:29.744613 Response sent (56 bytes) and written to log/13/server.response
 19:27:29.744623 special request received, no persistency
 19:27:29.744630 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 53610 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file in785
 On the first Monday of the month of April, 1625, the market town of Meung
=== End of file in785
=== Start of file server.cmd
 Testnum 785
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind785
 ==121127== 
 ==121127== Process terminating with default action of signal 4 (SIGILL)
 ==121127==  Illegal opcode at address 0x492B75F
 ==121127==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121127==    by CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind787 ../src/curl -q --output log/21/curl787.out  --include --trace-ascii log/21/trace787 --trace-time http://127.0.0.1:39881/787 --variable "name[15-14]@log/21/fooo" --expand-data '{{name}}' > log/21/stdout787 2> log/21/stderr787
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind790 ../src/curl -q --output log/4/curl790.out  --include --trace-ascii log/4/trace790 --trace-time http://127.0.0.1:35735/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/4/stdout790 2> log/4/stderr790
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind788 ../src/curl -q --output log/9/curl788.out  --include --trace-ascii log/9/trace788 --trace-time http://127.0.0.1:43733/788 --variable "name[15-15]@log/9/in788" --expand-data '{{name}}' > log/9/stdout788 2> log/9/stderr788
0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121127==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121127==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121127==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121127==    by 0x49908EB: curl_version_info (version.c:600)
 ==121127==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121127==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121127==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121127==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind785
test 0787 [--variable with a file byte range, bad range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind787 ../src/curl -q --output log/21/curl787.out  --include --trace-ascii log/21/trace787 --trace-time http://127.0.0.1:39881/787 --variable "name[15-14]@log/21/fooo" --expand-data '{{name}}' > log/21/stdout787 2> log/21/stderr787

curl returned 132, when expecting 2
 787: exit FAILED
== Contents of files in the log/21/ directory after test 787
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind787 ../src/curl -q --output log/21/curl787.out  --include --trace-ascii log/21/trace787 --trace-time http://127.0.0.1:39881/787 --variable "name[15-14]@log/21/fooo" --expand-data '{{name}}' > log/21/stdout787 2> log/21/stderr787
=== End of file commands.log
=== Start of file http_server.log
 19:27:30.062993 ====> Client connect
 19:27:30.063038 accept_connection 3 returned 4
 19:27:30.063212 Read 93 bytes
 19:27:30.063229 Process 93 bytes request
 19:27:30.063244 Got request: GET /verifiedserver HTTP/1.1
 19:27:30.063253 Are-we-friendly question received
 19:27:30.063285 Wrote request (93 bytes) input to log/21/server.input
 19:27:30.063303 Identifying ourselves as friends
 19:27:30.063373 Response sent (56 bytes) and written to log/21/server.response
 19:27:30.063385 special request received, no persistency
 19:27:30.063393 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49436 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 787
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind787
 ==121385== 
 ==121385== Process terminating with default action of signal 4 (SIGILL)
 ==121385==  Illegal opcode at address 0x492B75F
 ==121385==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121385==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121385==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121385==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121385==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121385==    by 0x49908EB: curl_version_info (version.c:600)
 ==121385==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121385==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121385==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121385==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind787
test 0790 [--variable with a byte range using plain assign]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind790 ../src/curl -q --output log/4/curl790.out  --include --trace-ascii log/4/trace790 --trace-time http://127.0.0.1:35735/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/4/stdout790 2> log/4/stderr790

 790: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 790
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind790 ../src/curl -q --output log/4/curl790.out  --include --trace-ascii log/4/trace790 --trace-time http://127.0.0.1:35735/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/4/stdout790 2> log/4/stderr790
=== End of file commands.log
=== Start of file http_server.log
 19:27:31.159949 ====> Client connect
 19:27:31.159987 accept_connection 3 returned 4
 19:27:31.160008 Read 93 bytes
 19:27:31.160017 Process 93 bytes request
 19:27:31.160029 Got request: GET /verifiedserver HTTP/1.1
 19:27:31.160038 Are-we-friendly question received
 19:27:31.160065 Wrote request (93 bytes) input to log/4/server.input
 19:27:31.160082 Identifying ourselves as friends
 19:27:31.160148 Response sent (56 bytes) and written to log/4/server.response
 19:27:31.160158 special request received, no persistency
 19:27:31.160166 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 33694 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 790
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind790
 ==121448== 
 ==121448== Process terminating with default action of signal 4 (SIGILL)
 ==121448==  Illegal opcode at address 0x492B75F
 ==121448==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121448==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121448==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121448==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121448==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121448==    by 0x49908EB: curl_version_info (version.c:600)
 ==121448==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121448==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121448==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121448==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind790
test 0788 [--variable with a file and single-byte byte range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind788 ../src/curl -q --output log/9/curl788.out  --include --trace-ascii log/9/trace788 --trace-time http://127.0.0.1:43733/788 --variable "name[15-15]@log/9/in788" --expand-data '{{name}}' > log/9/stdout788 2> log/9/stderr788

 788: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 788
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind788 ../src/curl -q --output log/9/curl788.out  --include --trace-ascii log/9/trace788 --trace-time http://127.0.0.1:43733/788 --variable "name[15-15]@log/9/in788" --expand-daCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind779 ../src/curl -q --output log/2/curl779.out  --include --trace-ascii log/2/trace779 --trace-time http://127.0.0.1:34531/page/779 --oauth2-bearer s3cr3t --location --proto-redir imap --resolve host:46461:127.0.0.1 > log/2/stdout779 2> log/2/stderr779
ta '{{name}}' > log/9/stdout788 2> log/9/stderr788
=== End of file commands.log
=== Start of file http_server.log
 19:27:29.993029 ====> Client connect
 19:27:29.993076 accept_connection 3 returned 4
 19:27:29.993100 Read 93 bytes
 19:27:29.993110 Process 93 bytes request
 19:27:29.993124 Got request: GET /verifiedserver HTTP/1.1
 19:27:29.993133 Are-we-friendly question received
 19:27:29.993162 Wrote request (93 bytes) input to log/9/server.input
 19:27:29.993179 Identifying ourselves as friends
 19:27:29.993244 Response sent (56 bytes) and written to log/9/server.response
 19:27:29.993254 special request received, no persistency
 19:27:29.993263 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 55680 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file in788
 On the first Monday of the month of April, 1625, the market town of Meung
=== End of file in788
=== Start of file server.cmd
 Testnum 788
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind788
 ==121338== 
 ==121338== Process terminating with default action of signal 4 (SIGILL)
 ==121338==  Illegal opcode at address 0x492B75F
 ==121338==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121338==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121338==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121338==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121338==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121338==    by 0x49908EB: curl_version_info (version.c:600)
 ==121338==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121338==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121338==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121338==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind788
test 0779 [HTTP --oauth2-bearer redirects to IMAP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind779 ../src/curl -q --output log/2/curl779.out  --include --trace-ascii log/2/trace779 --trace-time http://127.0.0.1:34531/page/779 --oauth2-bearer s3cr3t --location --proto-redir imap --resolve host:46461:127.0.0.1 > log/2/stdout779 2> log/2/stderr779

 779: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 779
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind779 ../src/curl -q --output log/2/curl779.out  --include --trace-ascii log/2/trace779 --trace-time http://127.0.0.1:34531/page/779 --oauth2-bearer s3cr3t --location --proto-redir imap --resolve host:46461:127.0.0.1 > log/2/stdout779 2> log/2/stderr779
=== End of file commands.log
=== Start of file http_server.log
 19:27:30.546406 ====> Client connect
 19:27:30.546444 accept_connection 3 returned 4
 19:27:30.546468 Read 93 bytes
 19:27:30.546478 Process 93 bytes request
 19:27:30.546489 Got request: GET /verifiedserver HTTP/1.1
 19:27:30.546498 Are-we-friendly question received
 19:27:30.546562 Wrote request (93 bytes) input to log/2/server.input
 19:27:30.546582 Identifying ourselves as friends
 19:27:30.546657 Response sent (56 bytes) and written to log/2/server.response
 19:27:30.546668 special request received, no persistency
 19:27:30.546677 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 59756 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file imap_server.log
 19:27:30.038318 ====> Client connect
 19:27:30.038551 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:30.039845 < "A001 CAPABILITY"
 19:27:30.039889 > "A001 BAD Command[CR][LF]"
 19:27:30.040100 < "A002 LIST "verifiedserver" *"
 19:27:30.040142 LIST_imap got "verifiedserver" *
 19:27:30.040171 > "* LIST () "/" "WE ROOLZ: 114810"[CR][LF]"
 19:27:30.040193 > "A002 OK LIST Completed[CR][LF]"
 19:27:30.040208 return proof we are we
 19:27:30.089021 < "A003 LOGOUT"
 19:27:30.089088 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:30.089115 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:30.090492 MAIN sockfilt said DISC
 19:27:30.090537 ====> Client disconnected
 19:27:30.090626 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:29.645889 ====> Client connect
 19:27:29.646453 Received DATA (on stdin)
 19:27:29.646540 > 164 bytes data, server => client
 19:27:29.646553 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:29.646564 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:29.646574 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:29.647329 < 17 bytes data, client => server
 19:27:29.647344 'A001 CAPABILITY\r\n'
 19:27:29.647597 Received DATA (on stdin)
 19:27:29.647610 > 18 bytes data, server => client
 19:27:29.647619 'A001 BAD Command\r\n'
 19:27:29.647687 < 30 bytes data, client => server
 19:27:29.647702 'A002 LIST "verifiedserver" *\r\n'
 19:27:29.647898 Received DATA (on stdin)
 19:27:29.647910 > 34 bytes data, server => client
 19:27:29.647920 '* LIST () "/" "WE ROOLZ: 114810"\r\n'
 19:27:29.647944 Received DATA (on stdin)
 19:27:29.647955 > 24 bytes data, server => client
 19:27:29.647964 'A002 OK LIST Completed\r\n'
 19:27:29.696491 < 13 bytes data, client => server
 19:27:29.696526 'A003 LOGOUT\r\n'
 19:27:29.696799 Received DATA (on stdin)
 19:27:29.696812 > 36 bytes data, server => client
 19:27:29.696823 '* BYE curl IMAP server signing off\r\n'
 19:27:29.696848 Received DATA (on stdin)
 19:27:29.696858 > 26 bytes data, server => client
 19:27:29.696868 'A003 OK LOGOUT completed\r\n'
 19:27:29.698100 ====> Client disconnect
 19:27:29.698312 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH XOAUTH2
 REPLY AUTHENTICATE +
 REPLY dXNlcj12AWF1dGg9QmVhcmVyIHMzY3IzdAEB B002 OK AUTHENTICATE completed
 Testnum 779
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind779
 ==121077== 
 ==121077== Process terminating with default action of signal 4 (SIGILL)
 ==121077==  Illegal opcode at address 0x492B75F
 ==121077==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121077==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121077==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121077==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121077==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121077==    by 0x49908EB: curl_version_info (version.c:600)
 ==121077==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121077==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121077==    by 0x4003269: UnknownInCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind789 ../src/curl -q --output log/20/curl789.out  --include --trace-ascii log/20/trace789 --trace-time http://127.0.0.1:33897/789 --variable "name[75-85]@log/20/in789" --expand-data '{{name}}' > log/20/stdout789 2> log/20/stderr789
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind791 ../src/curl -q --output log/15/curl791.out  --include --trace-ascii log/15/trace791 --trace-time http://127.0.0.1:40321/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/15/stdout791 2> log/15/stderr791
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind792 ../src/curl -q --output log/3/curl792.out  --include --trace-ascii log/3/trace792 --trace-time --netrc --netrc-file log/3/netrc792 ftp://127.0.0.1:42249/792 > log/3/stdout792 2> log/3/stderr792
linedFun (tool_cfgable.c:310)
 ==121077==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind779
test 0789 [--variable with a file and byte range out of file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind789 ../src/curl -q --output log/20/curl789.out  --include --trace-ascii log/20/trace789 --trace-time http://127.0.0.1:33897/789 --variable "name[75-85]@log/20/in789" --expand-data '{{name}}' > log/20/stdout789 2> log/20/stderr789

 789: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 789
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind789 ../src/curl -q --output log/20/curl789.out  --include --trace-ascii log/20/trace789 --trace-time http://127.0.0.1:33897/789 --variable "name[75-85]@log/20/in789" --expand-data '{{name}}' > log/20/stdout789 2> log/20/stderr789
=== End of file commands.log
=== Start of file http_server.log
 19:27:30.139687 ====> Client connect
 19:27:30.139728 accept_connection 3 returned 4
 19:27:30.139749 Read 93 bytes
 19:27:30.139759 Process 93 bytes request
 19:27:30.139771 Got request: GET /verifiedserver HTTP/1.1
 19:27:30.139780 Are-we-friendly question received
 19:27:30.139805 Wrote request (93 bytes) input to log/20/server.input
 19:27:30.139821 Identifying ourselves as friends
 19:27:30.139889 Response sent (56 bytes) and written to log/20/server.response
 19:27:30.139899 special request received, no persistency
 19:27:30.139907 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54122 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file in789
 On the first Monday of the month of April, 1625, the market town of Meung
=== End of file in789
=== Start of file server.cmd
 Testnum 789
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind789
 ==121440== 
 ==121440== Process terminating with default action of signal 4 (SIGILL)
 ==121440==  Illegal opcode at address 0x492B75F
 ==121440==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121440==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121440==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121440==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121440==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121440==    by 0x49908EB: curl_version_info (version.c:600)
 ==121440==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121440==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121440==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121440==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind789
test 0791 [--variable with a byte range using plain assign, out of range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind791 ../src/curl -q --output log/15/curl791.out  --include --trace-ascii log/15/trace791 --trace-time http://127.0.0.1:40321/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/15/stdout791 2> log/15/stderr791

 791: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 791
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind791 ../src/curl -q --output log/15/curl791.out  --include --trace-ascii log/15/trace791 --trace-time http://127.0.0.1:40321/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/15/stdout791 2> log/15/stderr791
=== End of file commands.log
=== Start of file http_server.log
 19:27:31.386310 ====> Client connect
 19:27:31.386354 accept_connection 3 returned 4
 19:27:31.386378 Read 93 bytes
 19:27:31.386388 Process 93 bytes request
 19:27:31.386402 Got request: GET /verifiedserver HTTP/1.1
 19:27:31.386412 Are-we-friendly question received
 19:27:31.386442 Wrote request (93 bytes) input to log/15/server.input
 19:27:31.386461 Identifying ourselves as friends
 19:27:31.386539 Response sent (56 bytes) and written to log/15/server.response
 19:27:31.386550 special request received, no persistency
 19:27:31.386560 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 46578 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 791
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind791
 ==121613== 
 ==121613== Process terminating with default action of signal 4 (SIGILL)
 ==121613==  Illegal opcode at address 0x492B75F
 ==121613==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121613==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121613==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121613==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121613==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121613==    by 0x49908EB: curl_version_info (version.c:600)
 ==121613==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121613==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121613==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121613==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind791
test 0792 [.netrc with embedded NUL byte]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind792 ../src/curl -q --output log/3/curl792.out  --include --trace-ascii log/3/trace792 --trace-time --netrc --netrc-file log/3/netrc792 ftp://127.0.0.1:42249/792 > log/3/stdout792 2> log/3/stderr792

 792: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 792
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind792 ../src/curl -q --output log/3/curl792.out  --include --trace-ascii log/3/trace792 --trace-time --netrc --netrc-file log/3/netrc792 ftp://127.0.0.1:42249/792 > log/3/stdout792 2> log/3/stderr792
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:31.158805 ====> Client connect
 19:27:31.159052 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |_CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind793 ../src/curl -q --output log/5/curl793.out  --include --trace-ascii log/5/trace793 --trace-time --netrc --netrc-file log/5/netrc793 ftp://127.0.0.1:39641/793 > log/5/stdout793 2> log/5/stderr793
__[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:31.165530 < "USER anonymous"
 19:27:31.165583 > "331 We are happy you popped in![CR][LF]"
 19:27:31.165815 < "PASS ftp@example.com"
 19:27:31.165849 > "230 Welcome you silly person[CR][LF]"
 19:27:31.166018 < "PWD"
 19:27:31.166056 > "257 "/" is current directory[CR][LF]"
 19:27:31.166258 < "EPSV"
 19:27:31.166289 ====> Passive DATA channel requested by client
 19:27:31.166305 DATA sockfilt for passive data channel starting...
 19:27:31.170415 DATA sockfilt for passive data channel started (pid 121701)
 19:27:31.170557 DATA sockfilt for passive data channel listens on port 39355
 19:27:31.170612 > "229 Entering Passive Mode (|||39355|)[CR][LF]"
 19:27:31.170639 Client has been notified that upcoming DATA connection is awaited on port 39355
 19:27:31.170972 Client connects to port 39355
 19:27:31.171007 ====> Client established passive DATA connection on port 39355
 19:27:31.171107 < "TYPE I"
 19:27:31.171148 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:31.171348 < "SIZE verifiedserver"
 19:27:31.171396 > "213 17[CR][LF]"
 19:27:31.171589 < "RETR verifiedserver"
 19:27:31.171631 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:31.171742 =====> Closing passive DATA connection...
 19:27:31.171767 Server disconnects passive DATA connection
 19:27:31.172235 Server disconnected passive DATA connection
 19:27:31.172272 DATA sockfilt for passive data channel quits (pid 121701)
 19:27:31.172555 DATA sockfilt for passive data channel quit (pid 121701)
 19:27:31.172584 =====> Closed passive DATA connection
 19:27:31.172619 > "226 File transfer complete[CR][LF]"
 19:27:31.218993 < "QUIT"
 19:27:31.219055 > "221 bye bye baby[CR][LF]"
 19:27:31.219809 MAIN sockfilt said DISC
 19:27:31.219846 ====> Client disconnected
 19:27:31.219934 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:31.766211 ====> Client connect
 19:27:31.766616 Received DATA (on stdin)
 19:27:31.766635 > 146 bytes data, server => client
 19:27:31.766647 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:31.766657 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:31.766666 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:31.772866 < 16 bytes data, client => server
 19:27:31.772888 'USER anonymous\r\n'
 19:27:31.773133 Received DATA (on stdin)
 19:27:31.773147 > 33 bytes data, server => client
 19:27:31.773158 '331 We are happy you popped in!\r\n'
 19:27:31.773232 < 22 bytes data, client => server
 19:27:31.773247 'PASS ftp@example.com\r\n'
 19:27:31.773387 Received DATA (on stdin)
 19:27:31.773399 > 30 bytes data, server => client
 19:27:31.773409 '230 Welcome you silly person\r\n'
 19:27:31.773466 < 5 bytes data, client => server
 19:27:31.773475 'PWD\r\n'
 19:27:31.773599 Received DATA (on stdin)
 19:27:31.773611 > 30 bytes data, server => client
 19:27:31.773622 '257 "/" is current directory\r\n'
 19:27:31.773696 < 6 bytes data, client => server
 19:27:31.773711 'EPSV\r\n'
 19:27:31.778189 Received DATA (on stdin)
 19:27:31.778207 > 39 bytes data, server => client
 19:27:31.778218 '229 Entering Passive Mode (|||39355|)\r\n'
 19:27:31.778449 < 8 bytes data, client => server
 19:27:31.778464 'TYPE I\r\n'
 19:27:31.778691 Received DATA (on stdin)
 19:27:31.778705 > 33 bytes data, server => client
 19:27:31.778716 '200 I modify TYPE as you wanted\r\n'
 19:27:31.778782 < 21 bytes data, client => server
 19:27:31.778797 'SIZE verifiedserver\r\n'
 19:27:31.778938 Received DATA (on stdin)
 19:27:31.778951 > 8 bytes data, server => client
 19:27:31.778961 '213 17\r\n'
 19:27:31.779023 < 21 bytes data, client => server
 19:27:31.779039 'RETR verifiedserver\r\n'
 19:27:31.779312 Received DATA (on stdin)
 19:27:31.779325 > 29 bytes data, server => client
 19:27:31.779336 '150 Binary junk (17 bytes).\r\n'
 19:27:31.780160 Received DATA (on stdin)
 19:27:31.780173 > 28 bytes data, server => client
 19:27:31.780184 '226 File transfer complete\r\n'
 19:27:31.826309 < 6 bytes data, client => server
 19:27:31.826339 'QUIT\r\n'
 19:27:31.826593 Received DATA (on stdin)
 19:27:31.826607 > 18 bytes data, server => client
 19:27:31.826617 '221 bye bye baby\r\n'
 19:27:31.827285 ====> Client disconnect
 19:27:31.827463 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:31.777700 Running IPv4 version
 19:27:31.777810 Listening on port 39355
 19:27:31.777859 Wrote pid 121701 to log/3/server/ftp_sockdata.pid
 19:27:31.777886 Received PING (on stdin)
 19:27:31.777993 Received PORT (on stdin)
 19:27:31.778414 ====> Client connect
 19:27:31.779404 Received DATA (on stdin)
 19:27:31.779420 > 17 bytes data, server => client
 19:27:31.779431 'WE ROOLZ: 84710\r\n'
 19:27:31.779464 Received DISC (on stdin)
 19:27:31.779478 ====> Client forcibly disconnected
 19:27:31.779825 Received QUIT (on stdin)
 19:27:31.779838 quits
 19:27:31.779910 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc792
 machine 127.0.0.1 login username password  hello
=== End of file netrc792
=== Start of file server.cmd
 Testnum 792
=== End of file server.cmd
=== Start of file valgrind792
 ==121706== 
 ==121706== Process terminating with default action of signal 4 (SIGILL)
 ==121706==  Illegal opcode at address 0x492B75F
 ==121706==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121706==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121706==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121706==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121706==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121706==    by 0x49908EB: curl_version_info (version.c:600)
 ==121706==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121706==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121706==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121706==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind792
test 0793 [.netrc with embedded NUL byte, with quoted token]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind793 ../src/curl -q --output log/5/curl793.out  --include --trace-ascii log/5/trace793 --trace-time --netrc --netrc-file log/5/netrc793 ftp://127.0.0.1:39641/793 > log/5/stdout793 2> log/5/stderr793

 793: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 793
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind793 ../src/curl -q --output log/5/curl793.out  --include --trace-ascii log/5/trace793 --trace-time --netrc --netrc-file log/5/netrc793 ftp://127.0.0.1:39641/793 > log/5/stdout793 2> log/5/stderr793
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:31.368821 ====> Client connect
 19:27:31.369031 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:31.369669 < "USER anonymous"
 19:27:31.369723 > "331 We are happy you popped in![CR][LF]"
 19:27:31.369932 < "PASS ftp@example.com"
 19:27:31.369967 > "230 Welcome you silly person[CR][LF]"
 19:27:31.370129 < "PWD"
 19:27:31.370168 > "257 "/" is current directory[CR][LF]"
 19:27:31.370350 < "EPSV"
 19:27:31.370380 ====> Passive DATA channel requested by client
 19:27:31.370394 DATA sockfilt for passive data channel starting...
 19:27:31.374283 DATA sockfilt for passive data channel started (pid 121760)
 19:27:31.374420 DATA sockfilt for passive data channel listens on port 33357
 19:27:31.374462 > "229 Entering Passive Mode (|||33357|)[CR][LF]"
 19:27:31.374476 Client has been notified that upcoming DATA connection is awaited on port 33357
 19:27:31.374712 Client connects to port 33357
 19:27:31.374739 ====> Client established passive DATA cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind798 ../src/curl -q --output log/17/curl798.out  --include --trace-ascii log/17/trace798 --trace-time -4 http://localhost:35993/we/want/798 -b none -c log/17/jar798.txt > log/17/stdout798 2> log/17/stderr798
onnection on port 33357
 19:27:31.374847 < "TYPE I"
 19:27:31.374875 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:31.375007 < "SIZE verifiedserver"
 19:27:31.375035 > "213 17[CR][LF]"
 19:27:31.375167 < "RETR verifiedserver"
 19:27:31.375194 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:31.375289 =====> Closing passive DATA connection...
 19:27:31.375303 Server disconnects passive DATA connection
 19:27:31.375529 Server disconnected passive DATA connection
 19:27:31.375560 DATA sockfilt for passive data channel quits (pid 121760)
 19:27:31.375803 DATA sockfilt for passive data channel quit (pid 121760)
 19:27:31.375833 =====> Closed passive DATA connection
 19:27:31.375863 > "226 File transfer complete[CR][LF]"
 19:27:31.432229 < "QUIT"
 19:27:31.432284 > "221 bye bye baby[CR][LF]"
 19:27:31.433614 MAIN sockfilt said DISC
 19:27:31.433654 ====> Client disconnected
 19:27:31.433748 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:30.976183 ====> Client connect
 19:27:30.976559 Received DATA (on stdin)
 19:27:30.976575 > 146 bytes data, server => client
 19:27:30.976587 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:30.976597 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:30.976606 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:30.976945 < 16 bytes data, client => server
 19:27:30.976976 'USER anonymous\r\n'
 19:27:30.977246 Received DATA (on stdin)
 19:27:30.977260 > 33 bytes data, server => client
 19:27:30.977271 '331 We are happy you popped in!\r\n'
 19:27:30.977333 < 22 bytes data, client => server
 19:27:30.977344 'PASS ftp@example.com\r\n'
 19:27:30.977479 Received DATA (on stdin)
 19:27:30.977490 > 30 bytes data, server => client
 19:27:30.977500 '230 Welcome you silly person\r\n'
 19:27:30.977553 < 5 bytes data, client => server
 19:27:30.977563 'PWD\r\n'
 19:27:30.977682 Received DATA (on stdin)
 19:27:30.977694 > 30 bytes data, server => client
 19:27:30.977703 '257 "/" is current directory\r\n'
 19:27:30.977774 < 6 bytes data, client => server
 19:27:30.977786 'EPSV\r\n'
 19:27:30.981991 Received DATA (on stdin)
 19:27:30.982006 > 39 bytes data, server => client
 19:27:30.982016 '229 Entering Passive Mode (|||33357|)\r\n'
 19:27:30.982261 < 8 bytes data, client => server
 19:27:30.982270 'TYPE I\r\n'
 19:27:30.982381 Received DATA (on stdin)
 19:27:30.982390 > 33 bytes data, server => client
 19:27:30.982399 '200 I modify TYPE as you wanted\r\n'
 19:27:30.982444 < 21 bytes data, client => server
 19:27:30.982453 'SIZE verifiedserver\r\n'
 19:27:30.982541 Received DATA (on stdin)
 19:27:30.982550 > 8 bytes data, server => client
 19:27:30.982559 '213 17\r\n'
 19:27:30.982605 < 21 bytes data, client => server
 19:27:30.982613 'RETR verifiedserver\r\n'
 19:27:30.982824 Received DATA (on stdin)
 19:27:30.982834 > 29 bytes data, server => client
 19:27:30.982843 '150 Binary junk (17 bytes).\r\n'
 19:27:30.983376 Received DATA (on stdin)
 19:27:30.983388 > 28 bytes data, server => client
 19:27:30.983399 '226 File transfer complete\r\n'
 19:27:31.039534 < 6 bytes data, client => server
 19:27:31.039572 'QUIT\r\n'
 19:27:31.039788 Received DATA (on stdin)
 19:27:31.039799 > 18 bytes data, server => client
 19:27:31.039808 '221 bye bye baby\r\n'
 19:27:31.041052 ====> Client disconnect
 19:27:31.041261 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:31.981373 Running IPv4 version
 19:27:31.981453 Listening on port 33357
 19:27:31.981489 Wrote pid 121760 to log/5/server/ftp_sockdata.pid
 19:27:31.981729 Received PING (on stdin)
 19:27:31.981828 Received PORT (on stdin)
 19:27:31.982173 ====> Client connect
 19:27:31.982866 Received DATA (on stdin)
 19:27:31.982877 > 17 bytes data, server => client
 19:27:31.982894 'WE ROOLZ: 85245\r\n'
 19:27:31.982916 Received DISC (on stdin)
 19:27:31.982926 ====> Client forcibly disconnected
 19:27:31.983077 Received QUIT (on stdin)
 19:27:31.983088 quits
 19:27:31.983148 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc793
 machine 127.0.0.1 login username "password"  hello
=== End of file netrc793
=== Start of file server.cmd
 Testnum 793
=== End of file server.cmd
=== Start of file valgrind793
 ==121780== 
 ==121780== Process terminating with default action of signal 4 (SIGILL)
 ==121780==  Illegal opcode at address 0x492B75F
 ==121780==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121780==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121780==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121780==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121780==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121780==    by 0x49908EB: curl_version_info (version.c:600)
 ==121780==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121780==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121780==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121780==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind793
test 0798 [HTTP cookies in a folded header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind798 ../src/curl -q --output log/17/curl798.out  --include --trace-ascii log/17/trace798 --trace-time -4 http://localhost:35993/we/want/798 -b none -c log/17/jar798.txt > log/17/stdout798 2> log/17/stderr798

 798: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 798
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind798 ../src/curl -q --output log/17/curl798.out  --include --trace-ascii log/17/trace798 --trace-time -4 http://localhost:35993/we/want/798 -b none -c log/17/jar798.txt > log/17/stdout798 2> log/17/stderr798
=== End of file commands.log
=== Start of file http_server.log
 19:27:32.659459 ====> Client connect
 19:27:32.659492 accept_connection 3 returned 4
 19:27:32.659514 Read 93 bytes
 19:27:32.659524 Process 93 bytes request
 19:27:32.659534 Got request: GET /verifiedserver HTTP/1.1
 19:27:32.659543 Are-we-friendly question received
 19:27:32.659568 Wrote request (93 bytes) input to log/17/server.input
 19:27:32.659584 Identifying ourselves as friends
 19:27:32.659650 Response sent (56 bytes) and written to log/17/server.response
 19:27:32.659660 special request received, no persistency
 19:27:32.659669 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 36074 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 20
 Testnum 798
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind798
 ==122016== 
 ==122016== Process terminating with default action of signal 4 (SIGILL)
 ==122016==  Illegal opcode at address 0x492B75F
 ==122016==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122016==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122016==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122016==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122016==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122016==    by 0x49908EB: curl_version_info (version.c:600)
 ==122016==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122016==    by 0x4003269: UnknownInlinedCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind796 ../src/curl -q --output log/18/curl796.out  --include --trace-ascii log/18/trace796 --trace-time http://127.0.0.1:43739/796 -X IGLOO -d moo --follow > log/18/stdout796 2> log/18/stderr796
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind799 ../src/curl -q --output log/24/curl799.out  --include --trace-ascii log/24/trace799 --trace-time 'imap://127.0.0.1:34999/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/24/stdout799 2> log/24/stderr799
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind794 ../src/curl -q --output log/16/curl794.out  --include --trace-ascii log/16/trace794 --trace-time http://127.0.0.1:35903/794 --no-progress-meter -X IGLOO -d moo --location --follow > log/16/stdout794 2> log/16/stderr794
Fun (tool_cfgable.c:339)
 ==122016==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122016==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind798
test 0796 [--follow with custom POST method, 302 => GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind796 ../src/curl -q --output log/18/curl796.out  --include --trace-ascii log/18/trace796 --trace-time http://127.0.0.1:43739/796 -X IGLOO -d moo --follow > log/18/stdout796 2> log/18/stderr796

 796: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 796
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind796 ../src/curl -q --output log/18/curl796.out  --include --trace-ascii log/18/trace796 --trace-time http://127.0.0.1:43739/796 -X IGLOO -d moo --follow > log/18/stdout796 2> log/18/stderr796
=== End of file commands.log
=== Start of file http_server.log
 19:27:32.635439 ====> Client connect
 19:27:32.635472 accept_connection 3 returned 4
 19:27:32.635491 Read 93 bytes
 19:27:32.635501 Process 93 bytes request
 19:27:32.635513 Got request: GET /verifiedserver HTTP/1.1
 19:27:32.635521 Are-we-friendly question received
 19:27:32.635549 Wrote request (93 bytes) input to log/18/server.input
 19:27:32.635564 Identifying ourselves as friends
 19:27:32.635625 Response sent (56 bytes) and written to log/18/server.response
 19:27:32.635634 special request received, no persistency
 19:27:32.635642 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 37356 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 796
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind796
 ==121997== 
 ==121997== Process terminating with default action of signal 4 (SIGILL)
 ==121997==  Illegal opcode at address 0x492B75F
 ==121997==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121997==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121997==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121997==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121997==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121997==    by 0x49908EB: curl_version_info (version.c:600)
 ==121997==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121997==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121997==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121997==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind796
test 0799 [IMAP with --login-options 'AUTH=+LOGIN']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind799 ../src/curl -q --output log/24/curl799.out  --include --trace-ascii log/24/trace799 --trace-time 'imap://127.0.0.1:34999/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/24/stdout799 2> log/24/stderr799

 799: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 799
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind799 ../src/curl -q --output log/24/curl799.out  --include --trace-ascii log/24/trace799 --trace-time 'imap://127.0.0.1:34999/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/24/stdout799 2> log/24/stderr799
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.078812 ====> Client connect
 19:27:32.079034 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:32.088936 < "A001 CAPABILITY"
 19:27:32.088994 > "A001 BAD Command[CR][LF]"
 19:27:32.089240 < "A002 LIST "verifiedserver" *"
 19:27:32.089280 LIST_imap got "verifiedserver" *
 19:27:32.089314 > "* LIST () "/" "WE ROOLZ: 113205"[CR][LF]"
 19:27:32.089338 > "A002 OK LIST Completed[CR][LF]"
 19:27:32.089354 return proof we are we
 19:27:32.139011 < "A003 LOGOUT"
 19:27:32.139071 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:32.139093 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:32.140385 MAIN sockfilt said DISC
 19:27:32.140433 ====> Client disconnected
 19:27:32.140526 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:31.686087 ====> Client connect
 19:27:31.686472 Received DATA (on stdin)
 19:27:31.686488 > 164 bytes data, server => client
 19:27:31.686499 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:31.686510 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:31.686519 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:31.696091 < 17 bytes data, client => server
 19:27:31.696130 'A001 CAPABILITY\r\n'
 19:27:31.696413 Received DATA (on stdin)
 19:27:31.696426 > 18 bytes data, server => client
 19:27:31.696435 'A001 BAD Command\r\n'
 19:27:31.696536 < 30 bytes data, client => server
 19:27:31.696548 'A002 LIST "verifiedserver" *\r\n'
 19:27:31.696772 Received DATA (on stdin)
 19:27:31.696784 > 34 bytes data, server => client
 19:27:31.696794 '* LIST () "/" "WE ROOLZ: 113205"\r\n'
 19:27:31.696821 Received DATA (on stdin)
 19:27:31.696832 > 24 bytes data, server => client
 19:27:31.696842 'A002 OK LIST Completed\r\n'
 19:27:31.746221 < 13 bytes data, client => server
 19:27:31.746258 'A003 LOGOUT\r\n'
 19:27:31.746506 Received DATA (on stdin)
 19:27:31.746518 > 36 bytes data, server => client
 19:27:31.746528 '* BYE curl IMAP server signing off\r\n'
 19:27:31.746554 Received DATA (on stdin)
 19:27:31.746564 > 26 bytes data, server => client
 19:27:31.746574 'A003 OK LOGOUT completed\r\n'
 19:27:31.747720 ====> Client disconnect
 19:27:31.747950 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY LOGIN A002 OK LOGIN completed
 Testnum 799
=== End of file server.cmd
=== Start of file valgrind799
 ==122116== 
 ==122116== Process terminating with default action of signal 4 (SIGILL)
 ==122116==  Illegal opcode at address 0x492B75F
 ==122116==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122116==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122116==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122116==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122116==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122116==    by 0x49908EB: curl_version_info (version.c:600)
 ==122116==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122116==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind799
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind797 ../src/curl -q --output log/1/curl797.out  --include --trace-ascii log/1/trace797 --trace-time http://127.0.0.1:38815/797 -X IGLOO -d moo --follow > log/1/stdout797 2> log/1/stderr797
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind808 ../src/curl -q --output log/2/curl808.out  --include --trace-ascii log/2/trace808 --trace-time imap://127.0.0.1:46461 -u user:secret -X 'EXAMINE 808' > log/2/stdout808 2> log/2/stderr808
test 0794 [--follow + --location with custom POST method, 302 => GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind794 ../src/curl -q --output log/16/curl794.out  --include --trace-ascii log/16/trace794 --trace-time http://127.0.0.1:35903/794 --no-progress-meter -X IGLOO -d moo --location --follow > log/16/stdout794 2> log/16/stderr794

 794: stderr FAILED:
--- log/16/check-expected	2026-10-15 19:27:33.748275162 +0000
+++ log/16/check-generated	2026-10-15 19:27:33.745812962 +0000
@@ -1 +0,0 @@
-Warning: --follow overrides --location[CR][LF]
== Contents of files in the log/16/ directory after test 794
=== Start of file check-expected
 Warning: --follow overrides --location[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind794 ../src/curl -q --output log/16/curl794.out  --include --trace-ascii log/16/trace794 --trace-time http://127.0.0.1:35903/794 --no-progress-meter -X IGLOO -d moo --location --follow > log/16/stdout794 2> log/16/stderr794
=== End of file commands.log
=== Start of file http_server.log
 19:27:32.249543 ====> Client connect
 19:27:32.249594 accept_connection 3 returned 4
 19:27:32.249624 Read 93 bytes
 19:27:32.249634 Process 93 bytes request
 19:27:32.249648 Got request: GET /verifiedserver HTTP/1.1
 19:27:32.249657 Are-we-friendly question received
 19:27:32.249686 Wrote request (93 bytes) input to log/16/server.input
 19:27:32.249703 Identifying ourselves as friends
 19:27:32.249791 Response sent (56 bytes) and written to log/16/server.response
 19:27:32.249802 special request received, no persistency
 19:27:32.249810 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 43944 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 794
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind794
 ==121858== 
 ==121858== Process terminating with default action of signal 4 (SIGILL)
 ==121858==  Illegal opcode at address 0x492B75F
 ==121858==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==121858==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==121858==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==121858==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==121858==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==121858==    by 0x49908EB: curl_version_info (version.c:600)
 ==121858==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==121858==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==121858==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==121858==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind794
test 0797 [--follow with custom POST method, 308 => custom]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind797 ../src/curl -q --output log/1/curl797.out  --include --trace-ascii log/1/trace797 --trace-time http://127.0.0.1:38815/797 -X IGLOO -d moo --follow > log/1/stdout797 2> log/1/stderr797

 797: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 797
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind797 ../src/curl -q --output log/1/curl797.out  --include --trace-ascii log/1/trace797 --trace-time http://127.0.0.1:38815/797 -X IGLOO -d moo --follow > log/1/stdout797 2> log/1/stderr797
=== End of file commands.log
=== Start of file http_server.log
 19:27:32.657979 ====> Client connect
 19:27:32.658016 accept_connection 3 returned 4
 19:27:32.658040 Read 93 bytes
 19:27:32.658053 Process 93 bytes request
 19:27:32.658067 Got request: GET /verifiedserver HTTP/1.1
 19:27:32.658076 Are-we-friendly question received
 19:27:32.658106 Wrote request (93 bytes) input to log/1/server.input
 19:27:32.658123 Identifying ourselves as friends
 19:27:32.658189 Response sent (56 bytes) and written to log/1/server.response
 19:27:32.658200 special request received, no persistency
 19:27:32.658208 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 37342 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 797
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind797
 ==122011== 
 ==122011== Process terminating with default action of signal 4 (SIGILL)
 ==122011==  Illegal opcode at address 0x492B75F
 ==122011==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122011==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122011==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122011==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122011==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122011==    by 0x49908EB: curl_version_info (version.c:600)
 ==122011==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122011==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind797
test 0808 [IMAP EXAMINE mailbox (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind808 ../src/curl -q --output log/2/curl808.out  --include --trace-ascii log/2/trace808 --trace-time imap://127.0.0.1:46461 -u user:secret -X 'EXAMINE 808' > log/2/stdout808 2> log/2/stderr808

 808: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 808
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind808 ../src/curl -q --output log/2/curl808.out  --include --trace-ascii log/2/trace808 --trace-time imap://127.0.0.1:46461 -u user:secret -X 'EXAMINE 808' > log/2/stdout808 2> log/2/stderr808
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.562034 ====> Client connect
 19:27:32.562236 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:32.565558 < "A001 CAPABILITY"
 19:27:32.565613 > "A001 BAD Command[CR][LF]"
 19:27:32.565CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind802 ../src/curl -q --output log/7/curl802.out  --include --trace-ascii log/7/trace802 --trace-time 'imap://127.0.0.1:42601/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/7/stdout802 2> log/7/stderr802
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind807 ../src/curl -q --output log/9/curl807.out  --include --trace-ascii log/9/trace807 --trace-time imap://127.0.0.1:38847 -u user:secret -X 'LSUB "807" *' > log/9/stdout807 2> log/9/stderr807
821 < "A002 LIST "verifiedserver" *"
 19:27:32.565847 LIST_imap got "verifiedserver" *
 19:27:32.565872 > "* LIST () "/" "WE ROOLZ: 114810"[CR][LF]"
 19:27:32.565889 > "A002 OK LIST Completed[CR][LF]"
 19:27:32.565902 return proof we are we
 19:27:32.615699 < "A003 LOGOUT"
 19:27:32.615762 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:32.615789 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:32.617146 MAIN sockfilt said DISC
 19:27:32.617186 ====> Client disconnected
 19:27:32.617274 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.166033 ====> Client connect
 19:27:32.169608 Received DATA (on stdin)
 19:27:32.169629 > 164 bytes data, server => client
 19:27:32.169641 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:32.169651 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:32.169661 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:32.172690 < 17 bytes data, client => server
 19:27:32.172716 'A001 CAPABILITY\r\n'
 19:27:32.172971 Received DATA (on stdin)
 19:27:32.172982 > 18 bytes data, server => client
 19:27:32.172992 'A001 BAD Command\r\n'
 19:27:32.173086 < 30 bytes data, client => server
 19:27:32.173097 'A002 LIST "verifiedserver" *\r\n'
 19:27:32.173255 Received DATA (on stdin)
 19:27:32.173265 > 34 bytes data, server => client
 19:27:32.173274 '* LIST () "/" "WE ROOLZ: 114810"\r\n'
 19:27:32.173294 Received DATA (on stdin)
 19:27:32.173303 > 24 bytes data, server => client
 19:27:32.173312 'A002 OK LIST Completed\r\n'
 19:27:32.222838 < 13 bytes data, client => server
 19:27:32.222875 'A003 LOGOUT\r\n'
 19:27:32.223147 Received DATA (on stdin)
 19:27:32.223162 > 36 bytes data, server => client
 19:27:32.223172 '* BYE curl IMAP server signing off\r\n'
 19:27:32.223199 Received DATA (on stdin)
 19:27:32.223209 > 26 bytes data, server => client
 19:27:32.223219 'A003 OK LOGOUT completed\r\n'
 19:27:32.224436 ====> Client disconnect
 19:27:32.224633 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 808
=== End of file server.cmd
=== Start of file valgrind808
 ==122261== 
 ==122261== Process terminating with default action of signal 4 (SIGILL)
 ==122261==  Illegal opcode at address 0x492B75F
 ==122261==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122261==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122261==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122261==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122261==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122261==    by 0x49908EB: curl_version_info (version.c:600)
 ==122261==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122261==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122261==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122261==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind808
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/7/server/imap_server.pid" --logfile "log/7/imap_server.log" --logdir "log/7" --portfile "log/7/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 42601 (log/7/server/imap_server.port)
RUN: IMAP server is PID 122008 port 42601
* pid imap => 122008 122008
test 0802 [IMAP SELECT UIDVALIDITY Success]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind802 ../src/curl -q --output log/7/curl802.out  --include --trace-ascii log/7/trace802 --trace-time 'imap://127.0.0.1:42601/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/7/stdout802 2> log/7/stderr802

 802: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 802
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind802 ../src/curl -q --output log/7/curl802.out  --include --trace-ascii log/7/trace802 --trace-time 'imap://127.0.0.1:42601/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/7/stdout802 2> log/7/stderr802
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.147650 IMAP server listens on port IPv4/42601
 19:27:32.147750 logged pid 122008 in log/7/server/imap_server.pid
 19:27:32.147787 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.753834 Running IPv4 version
 19:27:32.753924 Listening on port 42601
 19:27:32.753964 Wrote pid 122100 to log/7/server/imap_sockfilt.pid
 19:27:32.753995 Wrote port 42601 to log/7/server/imap_server.port
 19:27:32.754955 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 802
=== End of file server.cmd
=== Start of file valgrind802
 ==122449== 
 ==122449== Process terminating with default action of signal 4 (SIGILL)
 ==122449==  Illegal opcode at address 0x492B75F
 ==122449==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122449==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122449==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122449==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122449==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122449==    by 0x49908EB: curl_version_info (version.c:600)
 ==122449==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122449==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122449==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122449==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind802
test 0807 [IMAP LSUB mailbox]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind807 ../src/curl -q --output log/9/curl807.out  --include --trace-ascii log/9/trace807 --trace-time imap://127.0.0.1:38847 -u user:secret -X 'LSUB "807" *' > log/9/stdout807 2> log/9/stderr807

 807: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 807
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind807 ../src/curl -q --output log/9/curl807.out  --include --trace-ascii log/9/trace807 --trace-time imap://127.0.0.1:38847 -u user:secret -X 'LSUB "807" *' > log/9/stdout807 2> log/9/stderr807
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.562138 ====> Client connect
 19:27:32.562474 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:32.562684 < "A001 CAPABILITY"
 19:27:32.562731 > "A001 BAD Command[CR][LF]"
 19:27:32.562932 < "A002 LIST "verifiedserver" *"
 19:27:32.562970 LIST_imap got "verifiedserver" *
 19:27:32.563004 > "* LIST () "/" "WE ROOLZ: 113573"[CR][LF]"
 19:27:32.563029 > "A002 OK LIST Completed[CR][LF]"
 19:27:32.563045 return proof we are we
 19:27:32.609065 < "A003 LOGOUT"
 19:27:32.609140 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:32.609169 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:32.610675 MAIN sockfilt said DISC
 19:27:32.610722 ====> Client disconnected
 19:27:32.610825 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.169360 ====> Client connect
 19:27:32.169692 Received DATA (on stdin)
 19:27:32.169712 > 164 bytes data, server => client
 19:27:32.169732 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:32.169743 ' | | |_CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind795 ../src/curl -q --output log/14/curl795.out  --include --trace-ascii log/14/trace795 --trace-time http://@127.0.0.1:45467/page/795 -u user:secret --location --proto-redir imap --resolve host:40245:127.0.0.1 > log/14/stdout795 2> log/14/stderr795
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind801 ../src/curl -q --output log/22/curl801.out  --include --trace-ascii log/22/trace801 --trace-time 'imap://127.0.0.1:37605/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/22/stdout801 2> log/22/stderr801
) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:32.169752 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:32.169849 < 17 bytes data, client => server
 19:27:32.169867 'A001 CAPABILITY\r\n'
 19:27:32.170088 Received DATA (on stdin)
 19:27:32.170099 > 18 bytes data, server => client
 19:27:32.170109 'A001 BAD Command\r\n'
 19:27:32.170174 < 30 bytes data, client => server
 19:27:32.170186 'A002 LIST "verifiedserver" *\r\n'
 19:27:32.170402 Received DATA (on stdin)
 19:27:32.170414 > 34 bytes data, server => client
 19:27:32.170425 '* LIST () "/" "WE ROOLZ: 113573"\r\n'
 19:27:32.170447 Received DATA (on stdin)
 19:27:32.170456 > 24 bytes data, server => client
 19:27:32.170465 'A002 OK LIST Completed\r\n'
 19:27:32.216175 < 13 bytes data, client => server
 19:27:32.216223 'A003 LOGOUT\r\n'
 19:27:32.216527 Received DATA (on stdin)
 19:27:32.216543 > 36 bytes data, server => client
 19:27:32.216553 '* BYE curl IMAP server signing off\r\n'
 19:27:32.216582 Received DATA (on stdin)
 19:27:32.216593 > 26 bytes data, server => client
 19:27:32.216603 'A003 OK LOGOUT completed\r\n'
 19:27:32.217945 ====> Client disconnect
 19:27:32.218188 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 807
=== End of file server.cmd
=== Start of file valgrind807
 ==122258== 
 ==122258== Process terminating with default action of signal 4 (SIGILL)
 ==122258==  Illegal opcode at address 0x492B75F
 ==122258==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122258==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122258==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122258==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122258==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122258==    by 0x49908EB: curl_version_info (version.c:600)
 ==122258==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122258==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122258==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122258==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind807
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/14/server/imap_server.pid" --logfile "log/14/imap_server.log" --logdir "log/14" --portfile "log/14/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 40245 (log/14/server/imap_server.port)
RUN: IMAP server is PID 121906 port 40245
* pid imap => 121906 121906
test 0795 [HTTP with credentials redirects to IMAP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind795 ../src/curl -q --output log/14/curl795.out  --include --trace-ascii log/14/trace795 --trace-time http://@127.0.0.1:45467/page/795 -u user:secret --location --proto-redir imap --resolve host:40245:127.0.0.1 > log/14/stdout795 2> log/14/stderr795

 795: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 795
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind795 ../src/curl -q --output log/14/curl795.out  --include --trace-ascii log/14/trace795 --trace-time http://@127.0.0.1:45467/page/795 -u user:secret --location --proto-redir imap --resolve host:40245:127.0.0.1 > log/14/stdout795 2> log/14/stderr795
=== End of file commands.log
=== Start of file http_server.log
 19:27:31.376184 ====> Client connect
 19:27:31.376229 accept_connection 3 returned 4
 19:27:31.376254 Read 93 bytes
 19:27:31.376264 Process 93 bytes request
 19:27:31.376277 Got request: GET /verifiedserver HTTP/1.1
 19:27:31.376286 Are-we-friendly question received
 19:27:31.376501 Wrote request (93 bytes) input to log/14/server.input
 19:27:31.376528 Identifying ourselves as friends
 19:27:31.376613 Response sent (56 bytes) and written to log/14/server.response
 19:27:31.376623 special request received, no persistency
 19:27:31.376631 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 50572 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file imap_server.log
 19:27:31.846538 IMAP server listens on port IPv4/40245
 19:27:31.846637 logged pid 121906 in log/14/server/imap_server.pid
 19:27:31.846680 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:31.453545 Running IPv4 version
 19:27:31.453642 Listening on port 40245
 19:27:31.453680 Wrote pid 121926 to log/14/server/imap_sockfilt.pid
 19:27:31.453709 Wrote port 40245 to log/14/server/imap_server.port
 19:27:31.453881 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 CAPA SASL-IR
 REPLY AUTHENTICATE B002 OK AUTHENTICATE completed
 Testnum 795
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind795
 ==122348== 
 ==122348== Process terminating with default action of signal 4 (SIGILL)
 ==122348==  Illegal opcode at address 0x492B75F
 ==122348==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122348==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122348==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122348==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122348==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122348==    by 0x49908EB: curl_version_info (version.c:600)
 ==122348==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122348==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122348==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122348==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind795
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/22/server/imap_server.pid" --logfile "log/22/imap_server.log" --logdir "log/22" --portfile "log/22/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 37605 (log/22/server/imap_server.port)
RUN: IMAP server is PID 121995 port 37605
* pid imap => 121995 121995
test 0801 [IMAP FETCH message by MAILINDEX and SECTION]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind801 ../src/curl -q --output log/22/curl801.out  --include --trace-ascii log/22/trace801 --trace-time 'imap://127.0.0.1:37605/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/22/stdout801 2> log/22/stderr801

 801: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 801
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind801 ../src/curl -q --output log/22/curl801.out  --include --trace-ascii log/22/trace801 --trace-time 'imap://127.0.0.1:37605/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/22/stdout801 2> log/22/stderr801
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.122948 IMAP server listens on port CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind800 ../src/curl -q --output log/10/curl800.out  --include --trace-ascii log/10/trace800 --trace-time 'imap://127.0.0.1:43825/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/10/stdout800 2> log/10/stderr800
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind805 ../src/curl -q --output log/21/curl805.out  --include --trace-ascii log/21/trace805 --trace-time imap://127.0.0.1:39665/805 -T log/21/upload805 -u user:secret > log/21/stdout805 2> log/21/stderr805
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind806 ../src/curl -q --output log/4/curl806.out  --include --trace-ascii log/4/trace806 --trace-time imap://127.0.0.1:34045/806 -u user:secret > log/4/stdout806 2> log/4/stderr806
IPv4/37605
 19:27:32.123092 logged pid 121995 in log/22/server/imap_server.pid
 19:27:32.123136 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.728540 Running IPv4 version
 19:27:32.728646 Listening on port 37605
 19:27:32.728689 Wrote pid 122065 to log/22/server/imap_sockfilt.pid
 19:27:32.728721 Wrote port 37605 to log/22/server/imap_server.port
 19:27:32.730236 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 801
=== End of file server.cmd
=== Start of file valgrind801
 ==122434== 
 ==122434== Process terminating with default action of signal 4 (SIGILL)
 ==122434==  Illegal opcode at address 0x492B75F
 ==122434==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122434==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122434==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122434==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122434==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122434==    by 0x49908EB: curl_version_info (version.c:600)
 ==122434==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122434==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122434==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122434==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind801
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/10/server/imap_server.pid" --logfile "log/10/imap_server.log" --logdir "log/10" --portfile "log/10/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 43825 (log/10/server/imap_server.port)
RUN: IMAP server is PID 121977 port 43825
* pid imap => 121977 121977
test 0800 [IMAP FETCH message with MAILINDEX]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind800 ../src/curl -q --output log/10/curl800.out  --include --trace-ascii log/10/trace800 --trace-time 'imap://127.0.0.1:43825/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/10/stdout800 2> log/10/stderr800

 800: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 800
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind800 ../src/curl -q --output log/10/curl800.out  --include --trace-ascii log/10/trace800 --trace-time 'imap://127.0.0.1:43825/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/10/stdout800 2> log/10/stderr800
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.152314 IMAP server listens on port IPv4/43825
 19:27:32.152445 logged pid 121977 in log/10/server/imap_server.pid
 19:27:32.152494 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.754660 Running IPv4 version
 19:27:32.754725 Listening on port 43825
 19:27:32.754761 Wrote pid 122102 to log/10/server/imap_sockfilt.pid
 19:27:32.754790 Wrote port 43825 to log/10/server/imap_server.port
 19:27:32.759578 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 800
=== End of file server.cmd
=== Start of file valgrind800
 ==122426== 
 ==122426== Process terminating with default action of signal 4 (SIGILL)
 ==122426==  Illegal opcode at address 0x492B75F
 ==122426==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122426==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122426==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122426==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122426==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122426==    by 0x49908EB: curl_version_info (version.c:600)
 ==122426==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122426==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122426==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122426==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind800
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/21/server/imap_server.pid" --logfile "log/21/imap_server.log" --logdir "log/21" --portfile "log/21/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 39665 (log/21/server/imap_server.port)
RUN: IMAP server is PID 122217 port 39665
* pid imap => 122217 122217
test 0805 [IMAP APPEND message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind805 ../src/curl -q --output log/21/curl805.out  --include --trace-ascii log/21/trace805 --trace-time imap://127.0.0.1:39665/805 -T log/21/upload805 -u user:secret > log/21/stdout805 2> log/21/stderr805

 805: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 805
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind805 ../src/curl -q --output log/21/curl805.out  --include --trace-ascii log/21/trace805 --trace-time imap://127.0.0.1:39665/805 -T log/21/upload805 -u user:secret > log/21/stdout805 2> log/21/stderr805
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.468926 IMAP server listens on port IPv4/39665
 19:27:32.469033 logged pid 122217 in log/21/server/imap_server.pid
 19:27:32.469075 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.074054 Running IPv4 version
 19:27:32.074168 Listening on port 39665
 19:27:32.074214 Wrote pid 122219 to log/21/server/imap_sockfilt.pid
 19:27:32.074249 Wrote port 39665 to log/21/server/imap_server.port
 19:27:32.076173 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 805
=== End of file server.cmd
=== Start of file upload805
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
 From: Fred Foobar <foobar@example.COM>
 Subject: afternoon meeting
 To: joe@example.com
 Message-Id: <B27397-0100000@example.COM>
 MIME-Version: 1.0
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
 Hello Joe, do you think we can meet at 3:30 tomorrow?
=== End of file upload805
=== Start of file valgrind805
 ==122659== 
 ==122659== Process terminating with default action of signal 4 (SIGILL)
 ==122659==  Illegal opcode at address 0x492B75F
 ==122659==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122659==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122659==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122659==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122659==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122659==    by 0x49908EB: curl_version_info (version.c:600)
 ==122659==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122659==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind805
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/4/server/imap_server.pid" --logfile "log/4/imap_server.log" --logdir "log/4" --portfile "log/4/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 34045 (log/4/server/imap_server.port)
RUN: IMAP server is PID 122222 port 34045
* pid imap => 122222 122222
test 0806 [IMAP LIST mailbox]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind803 ../src/curl -q --output log/23/curl803.out  --include --trace-ascii log/23/trace803 --trace-time 'imap://127.0.0.1:42569/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/23/stdout803 2> log/23/stderr803
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind804 ../src/curl -q --output log/13/curl804.out  --include --trace-ascii log/13/trace804 --trace-time 'imap://127.0.0.1:42773/Private/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:42773/private/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/13/stdout804 2> log/13/stderr804
ons=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind806 ../src/curl -q --output log/4/curl806.out  --include --trace-ascii log/4/trace806 --trace-time imap://127.0.0.1:34045/806 -u user:secret > log/4/stdout806 2> log/4/stderr806

 806: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 806
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind806 ../src/curl -q --output log/4/curl806.out  --include --trace-ascii log/4/trace806 --trace-time imap://127.0.0.1:34045/806 -u user:secret > log/4/stdout806 2> log/4/stderr806
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.571812 IMAP server listens on port IPv4/34045
 19:27:32.571946 logged pid 122222 in log/4/server/imap_server.pid
 19:27:32.572005 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.173992 Running IPv4 version
 19:27:32.174080 Listening on port 34045
 19:27:32.174124 Wrote pid 122256 to log/4/server/imap_sockfilt.pid
 19:27:32.174156 Wrote port 34045 to log/4/server/imap_server.port
 19:27:32.179001 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 806
=== End of file server.cmd
=== Start of file valgrind806
 ==122692== 
 ==122692== Process terminating with default action of signal 4 (SIGILL)
 ==122692==  Illegal opcode at address 0x492B75F
 ==122692==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122692==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122692==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122692==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122692==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122692==    by 0x49908EB: curl_version_info (version.c:600)
 ==122692==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122692==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122692==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122692==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind806
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/13/server/imap_server.pid" --logfile "log/13/imap_server.log" --logdir "log/13" --portfile "log/13/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 42773 (log/13/server/imap_server.port)
RUN: IMAP server is PID 122183 port 42773
* pid imap => 122183 122183
test 0804 [IMAP selects a mailbox when its case changes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind804 ../src/curl -q --output log/13/curl804.out  --include --trace-ascii log/13/trace804 --trace-time 'imap://127.0.0.1:42773/Private/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:42773/private/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/13/stdout804 2> log/13/stderr804

 804: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 804
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind804 ../src/curl -q --output log/13/curl804.out  --include --trace-ascii log/13/trace804 --trace-time 'imap://127.0.0.1:42773/Private/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:42773/private/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/13/stdout804 2> log/13/stderr804
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.389921 IMAP server listens on port IPv4/42773
 19:27:32.390038 logged pid 122183 in log/13/server/imap_server.pid
 19:27:32.390089 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.996823 Running IPv4 version
 19:27:32.996909 Listening on port 42773
 19:27:32.996949 Wrote pid 122211 to log/13/server/imap_sockfilt.pid
 19:27:32.996979 Wrote port 42773 to log/13/server/imap_server.port
 19:27:32.997179 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 804
=== End of file server.cmd
=== Start of file valgrind804
 ==122607== 
 ==122607== Process terminating with default action of signal 4 (SIGILL)
 ==122607==  Illegal opcode at address 0x492B75F
 ==122607==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122607==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122607==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122607==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122607==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122607==    by 0x49908EB: curl_version_info (version.c:600)
 ==122607==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122607==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122607==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122607==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind804
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/23/server/imap_server.pid" --logfile "log/23/imap_server.log" --logdir "log/23" --portfile "log/23/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 42569 (log/23/server/imap_server.port)
RUN: IMAP server is PID 122113 port 42569
* pid imap => 122113 122113
test 0803 [IMAP SELECT UIDVALIDITY Failure]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind803 ../src/curl -q --output log/23/curl803.out  --include --trace-ascii log/23/trace803 --trace-time 'imap://127.0.0.1:42569/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/23/stdout803 2> log/23/stderr803

 803: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 803
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind803 ../src/curl -q --output log/23/curl803.out  --include --trace-ascii log/23/trace803 --trace-time 'imap://127.0.0.1:42569/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/23/stdout803 2> log/23/stderr803
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.235496 IMAP server listens on port IPv4/42569
 19:27:32.235673 logged pid 122113 in log/23/server/imap_server.pid
 19:27:32.235738 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.833630 Running IPv4 version
 19:27:32.833739 Listening on port 42569
 19:27:32.833784 Wrote pid 122163 to log/23/server/imap_sockfilt.pid
 19:27:32.833820 Wrote port 42569 to log/23/server/imap_server.port
 19:27:32.840406 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 803
=== End of file server.cmd
=== Start of file valgrind803
 ==122511== 
 ==122511== Process terminating with default action of signal 4 (SIGILL)
 ==122511==  Illegal opcode at address 0x492B75F
 ==122511==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122511==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122511==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122511==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122511==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122511==    by 0x49908EB: curl_version_info (version.c:600)
 ==122511==    by 0x4003269: UnknownInlinedFunCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind809 ../src/curl -q --output log/20/curl809.out  --include --trace-ascii log/20/trace809 --trace-time imap://127.0.0.1:46793 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/20/stdout809 2> log/20/stderr809
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind811 ../src/curl -q --output log/3/curl811.out  --include --trace-ascii log/3/trace811 --trace-time imap://127.0.0.1:46883 -u user:secret -X 'CREATE 811' > log/3/stdout811 2> log/3/stderr811
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind815 ../src/curl -q --output log/24/curl815.out  --include --trace-ascii log/24/trace815 --trace-time imap://127.0.0.1:34999/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:34999/815 -X CLOSE -u user:secret > log/24/stdout815 2> log/24/stderr815
 (tool_libinfo.c:140)
 ==122511==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122511==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122511==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind803
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/20/server/imap_server.pid" --logfile "log/20/imap_server.log" --logdir "log/20" --portfile "log/20/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 46793 (log/20/server/imap_server.port)
RUN: IMAP server is PID 122291 port 46793
* pid imap => 122291 122291
test 0809 [IMAP mailbox STATUS (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind809 ../src/curl -q --output log/20/curl809.out  --include --trace-ascii log/20/trace809 --trace-time imap://127.0.0.1:46793 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/20/stdout809 2> log/20/stderr809

 809: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 809
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind809 ../src/curl -q --output log/20/curl809.out  --include --trace-ascii log/20/trace809 --trace-time imap://127.0.0.1:46793 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/20/stdout809 2> log/20/stderr809
=== End of file commands.log
=== Start of file imap_server.log
 19:27:32.743961 IMAP server listens on port IPv4/46793
 19:27:32.744092 logged pid 122291 in log/20/server/imap_server.pid
 19:27:32.744152 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:32.350764 Running IPv4 version
 19:27:32.350889 Listening on port 46793
 19:27:32.350943 Wrote pid 122307 to log/20/server/imap_sockfilt.pid
 19:27:32.350978 Wrote port 46793 to log/20/server/imap_server.port
 19:27:32.351168 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 809
=== End of file server.cmd
=== Start of file valgrind809
 ==122795== 
 ==122795== Process terminating with default action of signal 4 (SIGILL)
 ==122795==  Illegal opcode at address 0x492B75F
 ==122795==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122795==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122795==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122795==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122795==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122795==    by 0x49908EB: curl_version_info (version.c:600)
 ==122795==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122795==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122795==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122795==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind809
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/3/server/imap_server.pid" --logfile "log/3/imap_server.log" --logdir "log/3" --portfile "log/3/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 46883 (log/3/server/imap_server.port)
RUN: IMAP server is PID 122611 port 46883
* pid imap => 122611 122611
test 0811 [IMAP CREATE mailbox (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind811 ../src/curl -q --output log/3/curl811.out  --include --trace-ascii log/3/trace811 --trace-time imap://127.0.0.1:46883 -u user:secret -X 'CREATE 811' > log/3/stdout811 2> log/3/stderr811

 811: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 811
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind811 ../src/curl -q --output log/3/curl811.out  --include --trace-ascii log/3/trace811 --trace-time imap://127.0.0.1:46883 -u user:secret -X 'CREATE 811' > log/3/stdout811 2> log/3/stderr811
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.382836 IMAP server listens on port IPv4/46883
 19:27:33.382987 logged pid 122611 in log/3/server/imap_server.pid
 19:27:33.383031 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.986955 Running IPv4 version
 19:27:33.987066 Listening on port 46883
 19:27:33.987111 Wrote pid 122645 to log/3/server/imap_sockfilt.pid
 19:27:33.987144 Wrote port 46883 to log/3/server/imap_server.port
 19:27:33.989965 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 811
=== End of file server.cmd
=== Start of file valgrind811
 ==122984== 
 ==122984== Process terminating with default action of signal 4 (SIGILL)
 ==122984==  Illegal opcode at address 0x492B75F
 ==122984==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122984==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122984==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122984==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122984==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122984==    by 0x49908EB: curl_version_info (version.c:600)
 ==122984==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122984==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122984==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122984==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind811
test 0815 [IMAP STORE - delete message (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind815 ../src/curl -q --output log/24/curl815.out  --include --trace-ascii log/24/trace815 --trace-time imap://127.0.0.1:34999/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:34999/815 -X CLOSE -u user:secret > log/24/stdout815 2> log/24/stderr815

 815: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 815
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind815 ../src/curl -q --output log/24/curl815.out  --include --trace-ascii log/24/trace815 --trace-time imap://127.0.0.1:34999/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:34999/815 -X CLOSE -u user:secret > log/24/stdout815 2> log/24/stderr815
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.798795 ====> Client connect
 19:27:33.798943 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:33.805559 < "A001 CAPABILITY"
 19:27:33.805607 > "A001 BAD Command[CR][LF]"
 19:27:33.822113 < "A002 LIST "verifiedserver" *"
 19:27:33.822156 LIST_imap got "verifiedserver" *
 19:27:33.822191 > "* LIST () "/" "WE ROOLZ: 113205"[CR][LF]"
 19:27:33.822209 > "A002 OK LIST Completed[CR][LF]"
 19:27:33.822222 return proof we are we
 19:27:33.875533 < "A003 LOGOUT"
 19:27:33.875587 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:33.875606 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:33.882088 MAIN sockfilt said DISC
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind810 ../src/curl -q --output log/15/curl810.out  --include --trace-ascii log/15/trace810 --trace-time imap://127.0.0.1:33501/810?NEW -u user:secret > log/15/stdout810 2> log/15/stderr810
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind812 ../src/curl -q --output log/5/curl812.out  --include --trace-ascii log/5/trace812 --trace-time imap://127.0.0.1:37639 -u user:secret -X 'DELETE 812' > log/5/stdout812 2> log/5/stderr812
:27:33.882151 ====> Client disconnected
 19:27:33.882238 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.405860 ====> Client connect
 19:27:33.406151 Received DATA (on stdin)
 19:27:33.406164 > 164 bytes data, server => client
 19:27:33.406174 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:33.406184 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:33.406193 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:33.412534 < 17 bytes data, client => server
 19:27:33.412574 'A001 CAPABILITY\r\n'
 19:27:33.412806 Received DATA (on stdin)
 19:27:33.412818 > 18 bytes data, server => client
 19:27:33.412827 'A001 BAD Command\r\n'
 19:27:33.422530 < 30 bytes data, client => server
 19:27:33.422557 'A002 LIST "verifiedserver" *\r\n'
 19:27:33.429421 Received DATA (on stdin)
 19:27:33.429437 > 34 bytes data, server => client
 19:27:33.429447 '* LIST () "/" "WE ROOLZ: 113205"\r\n'
 19:27:33.429484 Received DATA (on stdin)
 19:27:33.429493 > 24 bytes data, server => client
 19:27:33.429502 'A002 OK LIST Completed\r\n'
 19:27:33.482525 < 13 bytes data, client => server
 19:27:33.482561 'A003 LOGOUT\r\n'
 19:27:33.482793 Received DATA (on stdin)
 19:27:33.482802 > 36 bytes data, server => client
 19:27:33.482811 '* BYE curl IMAP server signing off\r\n'
 19:27:33.482844 Received DATA (on stdin)
 19:27:33.482852 > 26 bytes data, server => client
 19:27:33.482861 'A003 OK LOGOUT completed\r\n'
 19:27:33.489174 ====> Client disconnect
 19:27:33.489427 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 815
=== End of file server.cmd
=== Start of file valgrind815
 ==122872== 
 ==122872== Process terminating with default action of signal 4 (SIGILL)
 ==122872==  Illegal opcode at address 0x492B75F
 ==122872==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122872==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122872==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122872==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122872==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122872==    by 0x49908EB: curl_version_info (version.c:600)
 ==122872==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122872==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122872==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122872==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind815
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/15/server/imap_server.pid" --logfile "log/15/imap_server.log" --logdir "log/15" --portfile "log/15/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33501 (log/15/server/imap_server.port)
RUN: IMAP server is PID 122502 port 33501
* pid imap => 122502 122502
test 0810 [IMAP SEARCH for NEW messages]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind810 ../src/curl -q --output log/15/curl810.out  --include --trace-ascii log/15/trace810 --trace-time imap://127.0.0.1:33501/810?NEW -u user:secret > log/15/stdout810 2> log/15/stderr810

 810: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 810
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind810 ../src/curl -q --output log/15/curl810.out  --include --trace-ascii log/15/trace810 --trace-time imap://127.0.0.1:33501/810?NEW -u user:secret > log/15/stdout810 2> log/15/stderr810
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.223775 IMAP server listens on port IPv4/33501
 19:27:33.223897 logged pid 122502 in log/15/server/imap_server.pid
 19:27:33.223945 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.830739 Running IPv4 version
 19:27:33.830843 Listening on port 33501
 19:27:33.830884 Wrote pid 122550 to log/15/server/imap_sockfilt.pid
 19:27:33.830912 Wrote port 33501 to log/15/server/imap_server.port
 19:27:33.830931 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 810
=== End of file server.cmd
=== Start of file valgrind810
 ==122938== 
 ==122938== Process terminating with default action of signal 4 (SIGILL)
 ==122938==  Illegal opcode at address 0x492B75F
 ==122938==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==122938==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==122938==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==122938==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==122938==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==122938==    by 0x49908EB: curl_version_info (version.c:600)
 ==122938==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==122938==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==122938==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==122938==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind810
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/5/server/imap_server.pid" --logfile "log/5/imap_server.log" --logdir "log/5" --portfile "log/5/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 37639 (log/5/server/imap_server.port)
RUN: IMAP server is PID 122670 port 37639
* pid imap => 122670 122670
test 0812 [IMAP DELETE mailbox (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind812 ../src/curl -q --output log/5/curl812.out  --include --trace-ascii log/5/trace812 --trace-time imap://127.0.0.1:37639 -u user:secret -X 'DELETE 812' > log/5/stdout812 2> log/5/stderr812

 812: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 812
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind812 ../src/curl -q --output log/5/curl812.out  --include --trace-ascii log/5/trace812 --trace-time imap://127.0.0.1:37639 -u user:secret -X 'DELETE 812' > log/5/stdout812 2> log/5/stderr812
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.480449 IMAP server listens on port IPv4/37639
 19:27:33.480555 logged pid 122670 in log/5/server/imap_server.pid
 19:27:33.480603 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.087378 Running IPv4 version
 19:27:33.087485 Listening on port 37639
 19:27:33.087528 Wrote pid 122672 to log/5/server/imap_sockfilt.pid
 19:27:33.087559 Wrote port 37639 to log/5/server/imap_server.port
 19:27:33.087580 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 812
=== End of file server.cmd
=== Start of file valgrind812
 ==123049== 
 ==123049== Process terminating with default action of signal 4 (SIGILL)
 ==123049==  Illegal opcode at address 0x492B75F
 ==123049==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123049==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123049==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123049==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123049==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123049==    by 0x49908EB: curl_version_info (version.c:600)
 ==123049==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123049==    by 0x4003269: UnknownInlineCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind818 ../src/curl -q --output log/2/curl818.out  --include --trace-ascii log/2/trace818 --trace-time imap://127.0.0.1:46461 -X NOOP -u user:secret > log/2/stdout818 2> log/2/stderr818
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind824 ../src/curl -q --output log/22/curl824.out  --include --trace-ascii log/22/trace824 --trace-time 'imap://127.0.0.1:37605/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/22/stdout824 2> log/22/stderr824
dFun (tool_cfgable.c:339)
 ==123049==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123049==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind812
test 0818 [IMAP NOOP (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind818 ../src/curl -q --output log/2/curl818.out  --include --trace-ascii log/2/trace818 --trace-time imap://127.0.0.1:46461 -X NOOP -u user:secret > log/2/stdout818 2> log/2/stderr818

 818: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 818
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind818 ../src/curl -q --output log/2/curl818.out  --include --trace-ascii log/2/trace818 --trace-time imap://127.0.0.1:46461 -X NOOP -u user:secret > log/2/stdout818 2> log/2/stderr818
=== End of file commands.log
=== Start of file imap_server.log
 19:27:34.588825 ====> Client connect
 19:27:34.589013 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:34.592304 < "A001 CAPABILITY"
 19:27:34.592389 > "A001 BAD Command[CR][LF]"
 19:27:34.592552 < "A002 LIST "verifiedserver" *"
 19:27:34.592580 LIST_imap got "verifiedserver" *
 19:27:34.592681 > "* LIST () "/" "WE ROOLZ: 114810"[CR][LF]"
 19:27:34.592747 > "A002 OK LIST Completed[CR][LF]"
 19:27:34.592762 return proof we are we
 19:27:34.640769 < "A003 LOGOUT"
 19:27:34.640830 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:34.640854 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:34.642454 MAIN sockfilt said DISC
 19:27:34.642497 ====> Client disconnected
 19:27:34.642570 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:34.195777 ====> Client connect
 19:27:34.196130 Received DATA (on stdin)
 19:27:34.196146 > 164 bytes data, server => client
 19:27:34.196158 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:34.196168 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:34.196178 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:34.199176 < 17 bytes data, client => server
 19:27:34.199205 'A001 CAPABILITY\r\n'
 19:27:34.199433 Received DATA (on stdin)
 19:27:34.199445 > 18 bytes data, server => client
 19:27:34.199489 'A001 BAD Command\r\n'
 19:27:34.199553 < 30 bytes data, client => server
 19:27:34.199564 'A002 LIST "verifiedserver" *\r\n'
 19:27:34.199681 Received DATA (on stdin)
 19:27:34.199691 > 34 bytes data, server => client
 19:27:34.199708 '* LIST () "/" "WE ROOLZ: 114810"\r\n'
 19:27:34.199782 Received DATA (on stdin)
 19:27:34.199792 > 24 bytes data, server => client
 19:27:34.199808 'A002 OK LIST Completed\r\n'
 19:27:34.247665 < 13 bytes data, client => server
 19:27:34.247693 'A003 LOGOUT\r\n'
 19:27:34.247950 Received DATA (on stdin)
 19:27:34.247964 > 36 bytes data, server => client
 19:27:34.247974 '* BYE curl IMAP server signing off\r\n'
 19:27:34.248007 Received DATA (on stdin)
 19:27:34.248017 > 26 bytes data, server => client
 19:27:34.248027 'A003 OK LOGOUT completed\r\n'
 19:27:34.249489 ====> Client disconnect
 19:27:34.249669 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 818
=== End of file server.cmd
=== Start of file valgrind818
 ==123130== 
 ==123130== Process terminating with default action of signal 4 (SIGILL)
 ==123130==  Illegal opcode at address 0x492B75F
 ==123130==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123130==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123130==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123130==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123130==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123130==    by 0x49908EB: curl_version_info (version.c:600)
 ==123130==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123130==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123130==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123130==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind818
test 0824 [IMAP OAuth 2.0 (XOAUTH2) authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind824 ../src/curl -q --output log/22/curl824.out  --include --trace-ascii log/22/trace824 --trace-time 'imap://127.0.0.1:37605/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/22/stdout824 2> log/22/stderr824

 824: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 824
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind824 ../src/curl -q --output log/22/curl824.out  --include --trace-ascii log/22/trace824 --trace-time 'imap://127.0.0.1:37605/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/22/stdout824 2> log/22/stderr824
=== End of file commands.log
=== Start of file imap_server.log
 19:27:34.862432 ====> Client connect
 19:27:34.862670 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:34.869371 < "A001 CAPABILITY"
 19:27:34.869430 > "A001 BAD Command[CR][LF]"
 19:27:34.869633 < "A002 LIST "verifiedserver" *"
 19:27:34.869669 LIST_imap got "verifiedserver" *
 19:27:34.869700 > "* LIST () "/" "WE ROOLZ: 121995"[CR][LF]"
 19:27:34.869723 > "A002 OK LIST Completed[CR][LF]"
 19:27:34.869739 return proof we are we
 19:27:34.915658 < "A003 LOGOUT"
 19:27:34.918709 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:34.918759 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:34.919882 MAIN sockfilt said DISC
 19:27:34.919929 ====> Client disconnected
 19:27:34.920016 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:35.469160 ====> Client connect
 19:27:35.475721 Received DATA (on stdin)
 19:27:35.475760 > 164 bytes data, server => client
 19:27:35.475773 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:35.475784 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:35.475793 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:35.476195 < 17 bytes data, client => server
 19:27:35.476216 'A001 CAPABILITY\r\n'
 19:27:35.476499 Received DATA (on stdin)
 19:27:35.476512 > 18 bytes data, server => client
 19:27:35.476521 'A001 BAD Command\r\n'
 19:27:35.476589 < 30 bytes data, client => server
 19:27:35.476601 'A002 LIST "verifiedserver" *\r\n'
 19:27:35.476803 Received DATA (on stdin)
 19:27:35.476815 > 34 bytes data, server => client
 19:27:35.476824 '* LIST () "/" "WE ROOLZ: 121995"\r\n'
 19:27:35.476848 Received DATA (on stdin)
 19:27:35.476858 > 24 bytes data, server => client
 19:27:35.476868 'A002 OK LIST Completed\r\n'
 19:27:35.522512 < 13 bytes data, client => server
 19:27:35.522545 'A003 LOGOUT\r\n'
 19:27:35.525721 Received DATA (on stdin)
 19:27:35.525746 > 36 bytes data, server => client
 19:27:35.525756 '* BYE curl IMAP server signing off\r\n'
 19:27:35.525796 Received DATA (on stdin)
 19:27:35.525806 > 26 bytes data, server => client
 19:27:35.525816 'A003 OK LOGOUT completed\r\n'
 19:27:35.525887 ====> Client disconnect
 19:27:35.527090 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH XOAUTH2
 REPLY AUTHENTICATE +
 REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind813 ../src/curl -q --output log/17/curl813.out  --include --trace-ascii log/17/trace813 --trace-time imap://127.0.0.1:39883 -u user:secret -X 'RENAME 666 813' > log/17/stdout813 2> log/17/stderr813
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind816 ../src/curl -q --output log/16/curl816.out  --include --trace-ascii log/16/trace816 --trace-time imap://127.0.0.1:45869/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:45869/816 -X EXPUNGE -u user:secret > log/16/stdout816 2> log/16/stderr816
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind820 ../src/curl -q --output log/9/curl820.out  --include --trace-ascii log/9/trace820 --trace-time 'imap://127.0.0.1:38847/820/;MAILINDEX=1' -u user:secret > log/9/stdout820 2> log/9/stderr820
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind819 ../src/curl -q --output log/7/curl819.out  --include --trace-ascii log/7/trace819 --trace-time 'imap://127.0.0.1:42601/819/;MAILINDEX=1' -u user:secret > log/7/stdout819 2> log/7/stderr819
IG1GXzkuQjVmLTQuMUpxTQEB A002 OK AUTHENTICATE completed
 Testnum 824
=== End of file server.cmd
=== Start of file valgrind824
 ==123382== 
 ==123382== Process terminating with default action of signal 4 (SIGILL)
 ==123382==  Illegal opcode at address 0x492B75F
 ==123382==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123382==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123382==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123382==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123382==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123382==    by 0x49908EB: curl_version_info (version.c:600)
 ==123382==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123382==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123382==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123382==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind824
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/17/server/imap_server.pid" --logfile "log/17/imap_server.log" --logdir "log/17" --portfile "log/17/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 39883 (log/17/server/imap_server.port)
RUN: IMAP server is PID 122784 port 39883
* pid imap => 122784 122784
test 0813 [IMAP RENAME mailbox (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind813 ../src/curl -q --output log/17/curl813.out  --include --trace-ascii log/17/trace813 --trace-time imap://127.0.0.1:39883 -u user:secret -X 'RENAME 666 813' > log/17/stdout813 2> log/17/stderr813

 813: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 813
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind813 ../src/curl -q --output log/17/curl813.out  --include --trace-ascii log/17/trace813 --trace-time imap://127.0.0.1:39883 -u user:secret -X 'RENAME 666 813' > log/17/stdout813 2> log/17/stderr813
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.745709 IMAP server listens on port IPv4/39883
 19:27:33.745775 logged pid 122784 in log/17/server/imap_server.pid
 19:27:33.745806 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.352694 Running IPv4 version
 19:27:33.352760 Listening on port 39883
 19:27:33.352790 Wrote pid 122810 to log/17/server/imap_sockfilt.pid
 19:27:33.352813 Wrote port 39883 to log/17/server/imap_server.port
 19:27:33.352830 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 813
=== End of file server.cmd
=== Start of file valgrind813
 ==123123== 
 ==123123== Process terminating with default action of signal 4 (SIGILL)
 ==123123==  Illegal opcode at address 0x492B75F
 ==123123==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123123==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123123==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123123==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123123==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123123==    by 0x49908EB: curl_version_info (version.c:600)
 ==123123==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123123==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123123==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123123==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind813
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/16/server/imap_server.pid" --logfile "log/16/imap_server.log" --logdir "log/16" --portfile "log/16/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45869 (log/16/server/imap_server.port)
RUN: IMAP server is PID 122830 port 45869
* pid imap => 122830 122830
test 0816 [IMAP STORE - delete message with confirmation (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind816 ../src/curl -q --output log/16/curl816.out  --include --trace-ascii log/16/trace816 --trace-time imap://127.0.0.1:45869/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:45869/816 -X EXPUNGE -u user:secret > log/16/stdout816 2> log/16/stderr816

 816: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 816
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind816 ../src/curl -q --output log/16/curl816.out  --include --trace-ascii log/16/trace816 --trace-time imap://127.0.0.1:45869/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:45869/816 -X EXPUNGE -u user:secret > log/16/stdout816 2> log/16/stderr816
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.830901 IMAP server listens on port IPv4/45869
 19:27:33.831008 logged pid 122830 in log/16/server/imap_server.pid
 19:27:33.831053 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.437647 Running IPv4 version
 19:27:33.437751 Listening on port 45869
 19:27:33.437802 Wrote pid 122861 to log/16/server/imap_sockfilt.pid
 19:27:33.437839 Wrote port 45869 to log/16/server/imap_server.port
 19:27:33.437988 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 816
=== End of file server.cmd
=== Start of file valgrind816
 ==123227== 
 ==123227== Process terminating with default action of signal 4 (SIGILL)
 ==123227==  Illegal opcode at address 0x492B75F
 ==123227==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123227==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123227==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123227==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123227==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123227==    by 0x49908EB: curl_version_info (version.c:600)
 ==123227==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123227==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123227==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123227==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind816
test 0820 [IMAP login authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind820 ../src/curl -q --output log/9/curl820.out  --include --trace-ascii log/9/trace820 --trace-time 'imap://127.0.0.1:38847/820/;MAILINDEX=1' -u user:secret > log/9/stdout820 2> log/9/stderr820

 820: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 820
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind820 ../src/curl -q --output log/9/curl820.out  --include --trace-ascii log/9/trace820 --trace-time 'imap://127.0.0.1:38847/820/;MAILINDEX=1' -u user:secret > log/9/stdout820 2> log/9/stderr820
=== End of file commands.log
=== Start of file imap_server.log
 19:27:34.844662 ====> Client connect
 19:27:34.844860 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR]CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind817 ../src/curl -q --output log/1/curl817.out  --include --trace-ascii log/1/trace817 --trace-time imap://127.0.0.1:35739 -u user:secret -X 'COPY 123 817' > log/1/stdout817 2> log/1/stderr817
[LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:34.845180 < "A001 CAPABILITY"
 19:27:34.845219 > "A001 BAD Command[CR][LF]"
 19:27:34.845450 < "A002 LIST "verifiedserver" *"
 19:27:34.845482 LIST_imap got "verifiedserver" *
 19:27:34.845513 > "* LIST () "/" "WE ROOLZ: 113573"[CR][LF]"
 19:27:34.845535 > "A002 OK LIST Completed[CR][LF]"
 19:27:34.845550 return proof we are we
 19:27:34.892288 < "A003 LOGOUT"
 19:27:34.892343 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:34.892364 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:34.893551 MAIN sockfilt said DISC
 19:27:34.893586 ====> Client disconnected
 19:27:34.893668 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:34.451599 ====> Client connect
 19:27:34.451945 Received DATA (on stdin)
 19:27:34.451961 > 164 bytes data, server => client
 19:27:34.451973 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:34.451983 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:34.451993 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:34.452075 < 17 bytes data, client => server
 19:27:34.452090 'A001 CAPABILITY\r\n'
 19:27:34.452289 Received DATA (on stdin)
 19:27:34.452300 > 18 bytes data, server => client
 19:27:34.452310 'A001 BAD Command\r\n'
 19:27:34.452410 < 30 bytes data, client => server
 19:27:34.452426 'A002 LIST "verifiedserver" *\r\n'
 19:27:34.452618 Received DATA (on stdin)
 19:27:34.452630 > 34 bytes data, server => client
 19:27:34.452641 '* LIST () "/" "WE ROOLZ: 113573"\r\n'
 19:27:34.452665 Received DATA (on stdin)
 19:27:34.452676 > 24 bytes data, server => client
 19:27:34.452686 'A002 OK LIST Completed\r\n'
 19:27:34.499164 < 13 bytes data, client => server
 19:27:34.499205 'A003 LOGOUT\r\n'
 19:27:34.499426 Received DATA (on stdin)
 19:27:34.499438 > 36 bytes data, server => client
 19:27:34.499448 '* BYE curl IMAP server signing off\r\n'
 19:27:34.499472 Received DATA (on stdin)
 19:27:34.499481 > 26 bytes data, server => client
 19:27:34.499491 'A003 OK LOGOUT completed\r\n'
 19:27:34.500559 ====> Client disconnect
 19:27:34.500731 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH LOGIN
 REPLY AUTHENTICATE + VXNlcm5hbWU6
 REPLY dXNlcg== + UGFzc3dvcmQ6
 REPLY c2VjcmV0 A002 OK AUTHENTICATE completed
 Testnum 820
=== End of file server.cmd
=== Start of file valgrind820
 ==123354== 
 ==123354== Process terminating with default action of signal 4 (SIGILL)
 ==123354==  Illegal opcode at address 0x492B75F
 ==123354==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123354==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123354==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123354==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123354==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123354==    by 0x49908EB: curl_version_info (version.c:600)
 ==123354==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123354==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123354==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123354==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind820
test 0819 [IMAP plain authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind819 ../src/curl -q --output log/7/curl819.out  --include --trace-ascii log/7/trace819 --trace-time 'imap://127.0.0.1:42601/819/;MAILINDEX=1' -u user:secret > log/7/stdout819 2> log/7/stderr819

 819: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 819
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind819 ../src/curl -q --output log/7/curl819.out  --include --trace-ascii log/7/trace819 --trace-time 'imap://127.0.0.1:42601/819/;MAILINDEX=1' -u user:secret > log/7/stdout819 2> log/7/stderr819
=== End of file commands.log
=== Start of file imap_server.log
 19:27:34.808813 ====> Client connect
 19:27:34.809065 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:34.812464 < "A001 CAPABILITY"
 19:27:34.812530 > "A001 BAD Command[CR][LF]"
 19:27:34.812729 < "A002 LIST "verifiedserver" *"
 19:27:34.812764 LIST_imap got "verifiedserver" *
 19:27:34.812793 > "* LIST () "/" "WE ROOLZ: 122008"[CR][LF]"
 19:27:34.812814 > "A002 OK LIST Completed[CR][LF]"
 19:27:34.812828 return proof we are we
 19:27:34.855983 < "A003 LOGOUT"
 19:27:34.856432 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:34.856480 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:34.857796 MAIN sockfilt said DISC
 19:27:34.857838 ====> Client disconnected
 19:27:34.857928 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:35.415745 ====> Client connect
 19:27:35.416165 Received DATA (on stdin)
 19:27:35.416183 > 164 bytes data, server => client
 19:27:35.416195 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:35.416205 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:35.416214 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:35.419253 < 17 bytes data, client => server
 19:27:35.419287 'A001 CAPABILITY\r\n'
 19:27:35.419607 Received DATA (on stdin)
 19:27:35.419620 > 18 bytes data, server => client
 19:27:35.419630 'A001 BAD Command\r\n'
 19:27:35.419698 < 30 bytes data, client => server
 19:27:35.419713 'A002 LIST "verifiedserver" *\r\n'
 19:27:35.419898 Received DATA (on stdin)
 19:27:35.419909 > 34 bytes data, server => client
 19:27:35.419919 '* LIST () "/" "WE ROOLZ: 122008"\r\n'
 19:27:35.419941 Received DATA (on stdin)
 19:27:35.419951 > 24 bytes data, server => client
 19:27:35.419960 'A002 OK LIST Completed\r\n'
 19:27:35.462859 < 13 bytes data, client => server
 19:27:35.462886 'A003 LOGOUT\r\n'
 19:27:35.463085 Received DATA (on stdin)
 19:27:35.463101 > 36 bytes data, server => client
 19:27:35.463552 '* BYE curl IMAP server signing off\r\n'
 19:27:35.463585 Received DATA (on stdin)
 19:27:35.463595 > 26 bytes data, server => client
 19:27:35.463605 'A003 OK LOGOUT completed\r\n'
 19:27:35.464792 ====> Client disconnect
 19:27:35.465011 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTHENTICATE +
 REPLY AHVzZXIAc2VjcmV0 A002 OK AUTHENTICATE completed
 Testnum 819
=== End of file server.cmd
=== Start of file valgrind819
 ==123353== 
 ==123353== Process terminating with default action of signal 4 (SIGILL)
 ==123353==  Illegal opcode at address 0x492B75F
 ==123353==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123353==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123353==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123353==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123353==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123353==    by 0x49908EB: curl_version_info (version.c:600)
 ==123353==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123353==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123353==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123353==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind819
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/1/server/imap_server.pid" --logfile "log/1/imap_server.log" --logdir "log/1" --portfile "log/1/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 35739 (log/1/server/imap_server.port)
RUN: IMAP server is PID 122891 port 3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind814 ../src/curl -q --output log/18/curl814.out  --include --trace-ascii log/18/trace814 --trace-time imap://127.0.0.1:32857/814 -u user:secret -X 'CHECK' > log/18/stdout814 2> log/18/stderr814
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind821 ../src/curl -q --output log/14/curl821.out  --include --trace-ascii log/14/trace821 --trace-time 'imap://127.0.0.1:40245/821/;MAILINDEX=1' -u user:secret > log/14/stdout821 2> log/14/stderr821
5739
* pid imap => 122891 122891
test 0817 [IMAP COPY message to mailbox (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind817 ../src/curl -q --output log/1/curl817.out  --include --trace-ascii log/1/trace817 --trace-time imap://127.0.0.1:35739 -u user:secret -X 'COPY 123 817' > log/1/stdout817 2> log/1/stderr817

 817: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 817
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind817 ../src/curl -q --output log/1/curl817.out  --include --trace-ascii log/1/trace817 --trace-time imap://127.0.0.1:35739 -u user:secret -X 'COPY 123 817' > log/1/stdout817 2> log/1/stderr817
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.996400 IMAP server listens on port IPv4/35739
 19:27:33.996501 logged pid 122891 in log/1/server/imap_server.pid
 19:27:33.996540 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.603130 Running IPv4 version
 19:27:33.603242 Listening on port 35739
 19:27:33.603285 Wrote pid 122900 to log/1/server/imap_sockfilt.pid
 19:27:33.603316 Wrote port 35739 to log/1/server/imap_server.port
 19:27:33.603469 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 817
=== End of file server.cmd
=== Start of file valgrind817
 ==123431== 
 ==123431== Process terminating with default action of signal 4 (SIGILL)
 ==123431==  Illegal opcode at address 0x492B75F
 ==123431==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123431==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123431==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123431==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123431==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123431==    by 0x49908EB: curl_version_info (version.c:600)
 ==123431==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123431==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123431==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123431==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind817
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/18/server/imap_server.pid" --logfile "log/18/imap_server.log" --logdir "log/18" --portfile "log/18/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 32857 (log/18/server/imap_server.port)
RUN: IMAP server is PID 122785 port 32857
* pid imap => 122785 122785
test 0814 [IMAP CHECK mailbox (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind814 ../src/curl -q --output log/18/curl814.out  --include --trace-ascii log/18/trace814 --trace-time imap://127.0.0.1:32857/814 -u user:secret -X 'CHECK' > log/18/stdout814 2> log/18/stderr814

 814: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 814
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind814 ../src/curl -q --output log/18/curl814.out  --include --trace-ascii log/18/trace814 --trace-time imap://127.0.0.1:32857/814 -u user:secret -X 'CHECK' > log/18/stdout814 2> log/18/stderr814
=== End of file commands.log
=== Start of file imap_server.log
 19:27:33.733777 IMAP server listens on port IPv4/32857
 19:27:33.733876 logged pid 122785 in log/18/server/imap_server.pid
 19:27:33.733929 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:33.340556 Running IPv4 version
 19:27:33.340650 Listening on port 32857
 19:27:33.340696 Wrote pid 122799 to log/18/server/imap_sockfilt.pid
 19:27:33.340729 Wrote port 32857 to log/18/server/imap_server.port
 19:27:33.340884 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 814
=== End of file server.cmd
=== Start of file valgrind814
 ==123131== 
 ==123131== Process terminating with default action of signal 4 (SIGILL)
 ==123131==  Illegal opcode at address 0x492B75F
 ==123131==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123131==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123131==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123131==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123131==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123131==    by 0x49908EB: curl_version_info (version.c:600)
 ==123131==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123131==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123131==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123131==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind814
test 0821 [IMAP CRAM-MD5 authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind821 ../src/curl -q --output log/14/curl821.out  --include --trace-ascii log/14/trace821 --trace-time 'imap://127.0.0.1:40245/821/;MAILINDEX=1' -u user:secret > log/14/stdout821 2> log/14/stderr821

 821: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 821
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind821 ../src/curl -q --output log/14/curl821.out  --include --trace-ascii log/14/trace821 --trace-time 'imap://127.0.0.1:40245/821/;MAILINDEX=1' -u user:secret > log/14/stdout821 2> log/14/stderr821
=== End of file commands.log
=== Start of file imap_server.log
 19:27:34.849197 ====> Client connect
 19:27:34.849424 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:34.849793 < "A001 CAPABILITY"
 19:27:34.849843 > "A001 BAD Command[CR][LF]"
 19:27:34.850027 < "A002 LIST "verifiedserver" *"
 19:27:34.850059 LIST_imap got "verifiedserver" *
 19:27:34.850086 > "* LIST () "/" "WE ROOLZ: 121906"[CR][LF]"
 19:27:34.850104 > "A002 OK LIST Completed[CR][LF]"
 19:27:34.850118 return proof we are we
 19:27:34.898791 < "A003 LOGOUT"
 19:27:34.898853 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:34.898875 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:34.900183 MAIN sockfilt said DISC
 19:27:34.900222 ====> Client disconnected
 19:27:34.900304 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:34.456140 ====> Client connect
 19:27:34.456505 Received DATA (on stdin)
 19:27:34.456520 > 164 bytes data, server => client
 19:27:34.456532 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:34.456542 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:34.456551 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:34.456667 < 17 bytes data, client => server
 19:27:34.456683 'A001 CAPABILITY\r\n'
 19:27:34.456917 Received DATA (on stdin)
 19:27:34.456929 > 18 bytes data, server => client
 19:27:34.456939 'A001 BAD Command\r\n'
 19:27:34.457001 < 30 bytes data, client => server
 19:27:34.457012 'A002 LIST "verifiedserver" *\rCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind825 ../src/curl -q --output log/10/curl825.out  --include --trace-ascii log/10/trace825 --trace-time 'imap://127.0.0.1:43825/825/;MAILINDEX=1' -u user:secret > log/10/stdout825 2> log/10/stderr825
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind830 ../src/curl -q --output log/13/curl830.out  --include --trace-ascii log/13/trace830 --trace-time 'imap://127.0.0.1:42773/830/;MAILINDEX=1' -u user:secret > log/13/stdout830 2> log/13/stderr830
\n'
 19:27:34.457182 Received DATA (on stdin)
 19:27:34.457193 > 34 bytes data, server => client
 19:27:34.457202 '* LIST () "/" "WE ROOLZ: 121906"\r\n'
 19:27:34.457224 Received DATA (on stdin)
 19:27:34.457233 > 24 bytes data, server => client
 19:27:34.457242 'A002 OK LIST Completed\r\n'
 19:27:34.500690 < 13 bytes data, client => server
 19:27:34.500721 'A003 LOGOUT\r\n'
 19:27:34.505942 Received DATA (on stdin)
 19:27:34.505960 > 36 bytes data, server => client
 19:27:34.505971 '* BYE curl IMAP server signing off\r\n'
 19:27:34.506005 Received DATA (on stdin)
 19:27:34.506016 > 26 bytes data, server => client
 19:27:34.506026 'A003 OK LOGOUT completed\r\n'
 19:27:34.507180 ====> Client disconnect
 19:27:34.507381 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 REPLY AUTHENTICATE + PDE5NzIuOTg3NjU0MzIxQGN1cmw+
 REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== A002 OK AUTHENTICATE completed
 Testnum 821
=== End of file server.cmd
=== Start of file valgrind821
 ==123379== 
 ==123379== Process terminating with default action of signal 4 (SIGILL)
 ==123379==  Illegal opcode at address 0x492B75F
 ==123379==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123379==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123379==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123379==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123379==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123379==    by 0x49908EB: curl_version_info (version.c:600)
 ==123379==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123379==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123379==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123379==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind821
test 0825 [IMAP plain authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind825 ../src/curl -q --output log/10/curl825.out  --include --trace-ascii log/10/trace825 --trace-time 'imap://127.0.0.1:43825/825/;MAILINDEX=1' -u user:secret > log/10/stdout825 2> log/10/stderr825

 825: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 825
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind825 ../src/curl -q --output log/10/curl825.out  --include --trace-ascii log/10/trace825 --trace-time 'imap://127.0.0.1:43825/825/;MAILINDEX=1' -u user:secret > log/10/stdout825 2> log/10/stderr825
=== End of file commands.log
=== Start of file imap_server.log
 19:27:35.206847 ====> Client connect
 19:27:35.207078 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:35.207399 < "A001 CAPABILITY"
 19:27:35.207444 > "A001 BAD Command[CR][LF]"
 19:27:35.207617 < "A002 LIST "verifiedserver" *"
 19:27:35.207648 LIST_imap got "verifiedserver" *
 19:27:35.207673 > "* LIST () "/" "WE ROOLZ: 121977"[CR][LF]"
 19:27:35.207691 > "A002 OK LIST Completed[CR][LF]"
 19:27:35.207703 return proof we are we
 19:27:35.255554 < "A003 LOGOUT"
 19:27:35.255628 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:35.255651 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:35.257539 MAIN sockfilt said DISC
 19:27:35.257585 ====> Client disconnected
 19:27:35.257656 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:35.813742 ====> Client connect
 19:27:35.814118 Received DATA (on stdin)
 19:27:35.814134 > 164 bytes data, server => client
 19:27:35.814149 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:35.814158 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:35.814167 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:35.814249 < 17 bytes data, client => server
 19:27:35.814261 'A001 CAPABILITY\r\n'
 19:27:35.814467 Received DATA (on stdin)
 19:27:35.814477 > 18 bytes data, server => client
 19:27:35.814486 'A001 BAD Command\r\n'
 19:27:35.814542 < 30 bytes data, client => server
 19:27:35.814552 'A002 LIST "verifiedserver" *\r\n'
 19:27:35.814723 Received DATA (on stdin)
 19:27:35.814732 > 34 bytes data, server => client
 19:27:35.814742 '* LIST () "/" "WE ROOLZ: 121977"\r\n'
 19:27:35.814762 Received DATA (on stdin)
 19:27:35.814770 > 24 bytes data, server => client
 19:27:35.814779 'A002 OK LIST Completed\r\n'
 19:27:35.862387 < 13 bytes data, client => server
 19:27:35.862422 'A003 LOGOUT\r\n'
 19:27:35.862671 Received DATA (on stdin)
 19:27:35.862685 > 36 bytes data, server => client
 19:27:35.862695 '* BYE curl IMAP server signing off\r\n'
 19:27:35.862732 Received DATA (on stdin)
 19:27:35.862742 > 26 bytes data, server => client
 19:27:35.862751 'A003 OK LOGOUT completed\r\n'
 19:27:35.863983 ====> Client disconnect
 19:27:35.864676 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 CAPA SASL-IR
 REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
 Testnum 825
=== End of file server.cmd
=== Start of file valgrind825
 ==123699== 
 ==123699== Process terminating with default action of signal 4 (SIGILL)
 ==123699==  Illegal opcode at address 0x492B75F
 ==123699==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123699==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123699==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123699==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123699==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123699==    by 0x49908EB: curl_version_info (version.c:600)
 ==123699==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123699==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123699==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123699==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind825
test 0830 [IMAP CRAM-MD5 graceful cancellation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind830 ../src/curl -q --output log/13/curl830.out  --include --trace-ascii log/13/trace830 --trace-time 'imap://127.0.0.1:42773/830/;MAILINDEX=1' -u user:secret > log/13/stdout830 2> log/13/stderr830

 830: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 830
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind830 ../src/curl -q --output log/13/curl830.out  --include --trace-ascii log/13/trace830 --trace-time 'imap://127.0.0.1:42773/830/;MAILINDEX=1' -u user:secret > log/13/stdout830 2> log/13/stderr830
=== End of file commands.log
=== Start of file imap_server.log
 19:27:35.405479 ====> Client connect
 19:27:35.405698 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:35.406030 < "A001 CAPABILITY"
 19:27:35.406074 > "A001 BAD Command[CR][LF]"
 19:27:35.406266 < "A002 LIST "verifiedserver" *"
 19:27:35.406298 LIST_imap got "verifiedserver" *
 19:27:35.406325 > "* LIST () "/" "WE ROOLZ: 122183"[CR][LF]"
 19:27:35.406344 > "A002 OK LIST Completed[CR][LF]"
 19:27:35.406357 return proof we are we
 19:27:35.455667 < "A003 LOGOUT"
 19:27:35.455727 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:35.455748 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:35.457274 MCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind829 ../src/curl -q --output log/23/curl829.out  --include --trace-ascii log/23/trace829 --trace-time imap://127.0.0.1:42569/%0d%0a/829 > log/23/stdout829 2> log/23/stderr829
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind826 ../src/curl -q --output log/21/curl826.out  --include --trace-ascii log/21/trace826 --trace-time 'imap://127.0.0.1:39665/826/;MAILINDEX=1' -u user:secret > log/21/stdout826 2> log/21/stderr826
AIN sockfilt said DISC
 19:27:35.457307 ====> Client disconnected
 19:27:35.457392 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.012342 ====> Client connect
 19:27:36.012714 Received DATA (on stdin)
 19:27:36.012730 > 164 bytes data, server => client
 19:27:36.012741 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.012751 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.012760 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.012863 < 17 bytes data, client => server
 19:27:36.012874 'A001 CAPABILITY\r\n'
 19:27:36.013075 Received DATA (on stdin)
 19:27:36.013087 > 18 bytes data, server => client
 19:27:36.013096 'A001 BAD Command\r\n'
 19:27:36.013162 < 30 bytes data, client => server
 19:27:36.013174 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.013354 Received DATA (on stdin)
 19:27:36.013365 > 34 bytes data, server => client
 19:27:36.013376 '* LIST () "/" "WE ROOLZ: 122183"\r\n'
 19:27:36.013397 Received DATA (on stdin)
 19:27:36.013407 > 24 bytes data, server => client
 19:27:36.013416 'A002 OK LIST Completed\r\n'
 19:27:36.062467 < 13 bytes data, client => server
 19:27:36.062502 'A003 LOGOUT\r\n'
 19:27:36.062740 Received DATA (on stdin)
 19:27:36.062751 > 36 bytes data, server => client
 19:27:36.062762 '* BYE curl IMAP server signing off\r\n'
 19:27:36.062784 Received DATA (on stdin)
 19:27:36.062793 > 26 bytes data, server => client
 19:27:36.062803 'A003 OK LOGOUT completed\r\n'
 19:27:36.064203 ====> Client disconnect
 19:27:36.064382 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 CAPA LOGINDISABLED
 REPLY AUTHENTICATE + Rubbish
 REPLY * A002 NO AUTH exchange cancelled by client
 Testnum 830
=== End of file server.cmd
=== Start of file valgrind830
 ==123820== 
 ==123820== Process terminating with default action of signal 4 (SIGILL)
 ==123820==  Illegal opcode at address 0x492B75F
 ==123820==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123820==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123820==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123820==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123820==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123820==    by 0x49908EB: curl_version_info (version.c:600)
 ==123820==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123820==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123820==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123820==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind830
test 0829 [IMAP with URL-encoded CR LF in the URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind829 ../src/curl -q --output log/23/curl829.out  --include --trace-ascii log/23/trace829 --trace-time imap://127.0.0.1:42569/%0d%0a/829 > log/23/stdout829 2> log/23/stderr829

curl returned 132, when expecting 3
 829: exit FAILED
== Contents of files in the log/23/ directory after test 829
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind829 ../src/curl -q --output log/23/curl829.out  --include --trace-ascii log/23/trace829 --trace-time imap://127.0.0.1:42569/%0d%0a/829 > log/23/stdout829 2> log/23/stderr829
=== End of file commands.log
=== Start of file imap_server.log
 19:27:35.388708 ====> Client connect
 19:27:35.389084 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:35.389620 < "A001 CAPABILITY"
 19:27:35.389681 > "A001 BAD Command[CR][LF]"
 19:27:35.389923 < "A002 LIST "verifiedserver" *"
 19:27:35.389965 LIST_imap got "verifiedserver" *
 19:27:35.390003 > "* LIST () "/" "WE ROOLZ: 122113"[CR][LF]"
 19:27:35.390023 > "A002 OK LIST Completed[CR][LF]"
 19:27:35.390038 return proof we are we
 19:27:35.436915 < "A003 LOGOUT"
 19:27:35.436980 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:35.437009 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:35.438357 MAIN sockfilt said DISC
 19:27:35.438393 ====> Client disconnected
 19:27:35.438485 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:35.992372 ====> Client connect
 19:27:35.996138 Received DATA (on stdin)
 19:27:35.996162 > 164 bytes data, server => client
 19:27:35.996174 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:35.996185 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:35.996196 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:35.996357 < 17 bytes data, client => server
 19:27:35.996376 'A001 CAPABILITY\r\n'
 19:27:35.996692 Received DATA (on stdin)
 19:27:35.996706 > 18 bytes data, server => client
 19:27:35.996716 'A001 BAD Command\r\n'
 19:27:35.996798 < 30 bytes data, client => server
 19:27:35.996814 'A002 LIST "verifiedserver" *\r\n'
 19:27:35.997041 Received DATA (on stdin)
 19:27:35.997053 > 34 bytes data, server => client
 19:27:35.997064 '* LIST () "/" "WE ROOLZ: 122113"\r\n'
 19:27:35.997091 Received DATA (on stdin)
 19:27:35.997101 > 24 bytes data, server => client
 19:27:35.997111 'A002 OK LIST Completed\r\n'
 19:27:36.043709 < 13 bytes data, client => server
 19:27:36.043744 'A003 LOGOUT\r\n'
 19:27:36.044008 Received DATA (on stdin)
 19:27:36.044021 > 36 bytes data, server => client
 19:27:36.044032 '* BYE curl IMAP server signing off\r\n'
 19:27:36.044059 Received DATA (on stdin)
 19:27:36.044070 > 26 bytes data, server => client
 19:27:36.044080 'A003 OK LOGOUT completed\r\n'
 19:27:36.045289 ====> Client disconnect
 19:27:36.045491 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 829
=== End of file server.cmd
=== Start of file valgrind829
 ==123772== 
 ==123772== Process terminating with default action of signal 4 (SIGILL)
 ==123772==  Illegal opcode at address 0x492B75F
 ==123772==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123772==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123772==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123772==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123772==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123772==    by 0x49908EB: curl_version_info (version.c:600)
 ==123772==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123772==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123772==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123772==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind829
test 0826 [IMAP login authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind826 ../src/curl -q --output log/21/curl826.out  --include --trace-ascii log/21/trace826 --trace-time 'imap://127.0.0.1:39665/826/;MAILINDEX=1' -u user:secret > log/21/stdout826 2> log/21/stderr826

 826: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 826
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind826 ../src/curl -q --output log/21/curl826.out  --include --trace-ascii log/21/trace826 --trace-time 'imap://127.0.0.1:39665/826/;MAILINDEX=1' -u user:secret > log/21/stdout826 2> log/21/stderr826
=== End of file commands.log
=== Start of file imap_server.log
 19:27:35.358541 ====> Client connect
 19:27:35.358763 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind828 ../src/curl -q --output log/4/curl828.out  --include --trace-ascii log/4/trace828 --trace-time 'imap://127.0.0.1:34045/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/4/stdout828 2> log/4/stderr828
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind833 ../src/curl -q --output log/20/curl833.out  --include --trace-ascii log/20/trace833 --trace-time 'imap://127.0.0.1:46793/833/;MAILINDEX=1' -u user:secret > log/20/stdout833 2> log/20/stderr833
__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:35.365663 < "A001 CAPABILITY"
 19:27:35.365721 > "A001 BAD Command[CR][LF]"
 19:27:35.365928 < "A002 LIST "verifiedserver" *"
 19:27:35.365962 LIST_imap got "verifiedserver" *
 19:27:35.365991 > "* LIST () "/" "WE ROOLZ: 122217"[CR][LF]"
 19:27:35.366009 > "A002 OK LIST Completed[CR][LF]"
 19:27:35.366023 return proof we are we
 19:27:35.415542 < "A003 LOGOUT"
 19:27:35.415599 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:35.415619 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:35.422100 MAIN sockfilt said DISC
 19:27:35.422157 ====> Client disconnected
 19:27:35.422250 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:34.965433 ====> Client connect
 19:27:34.965800 Received DATA (on stdin)
 19:27:34.965817 > 164 bytes data, server => client
 19:27:34.965828 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:34.965838 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:34.965847 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:34.972426 < 17 bytes data, client => server
 19:27:34.972456 'A001 CAPABILITY\r\n'
 19:27:34.972729 Received DATA (on stdin)
 19:27:34.972742 > 18 bytes data, server => client
 19:27:34.972751 'A001 BAD Command\r\n'
 19:27:34.972821 < 30 bytes data, client => server
 19:27:34.972832 'A002 LIST "verifiedserver" *\r\n'
 19:27:34.973024 Received DATA (on stdin)
 19:27:34.973034 > 34 bytes data, server => client
 19:27:34.973044 '* LIST () "/" "WE ROOLZ: 122217"\r\n'
 19:27:34.973063 Received DATA (on stdin)
 19:27:34.973071 > 24 bytes data, server => client
 19:27:34.973080 'A002 OK LIST Completed\r\n'
 19:27:35.022337 < 13 bytes data, client => server
 19:27:35.022374 'A003 LOGOUT\r\n'
 19:27:35.022615 Received DATA (on stdin)
 19:27:35.022627 > 36 bytes data, server => client
 19:27:35.022637 '* BYE curl IMAP server signing off\r\n'
 19:27:35.022669 Received DATA (on stdin)
 19:27:35.022678 > 26 bytes data, server => client
 19:27:35.022687 'A003 OK LOGOUT completed\r\n'
 19:27:35.028988 ====> Client disconnect
 19:27:35.029247 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH LOGIN
 CAPA SASL-IR
 REPLY AUTHENTICATE + UGFzc3dvcmQ6
 REPLY c2VjcmV0 A002 OK AUTHENTICATE completed
 Testnum 826
=== End of file server.cmd
=== Start of file valgrind826
 ==123764== 
 ==123764== Process terminating with default action of signal 4 (SIGILL)
 ==123764==  Illegal opcode at address 0x492B75F
 ==123764==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123764==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123764==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123764==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123764==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123764==    by 0x49908EB: curl_version_info (version.c:600)
 ==123764==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123764==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123764==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123764==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind826
test 0828 [IMAP OAuth 2.0 (XOAUTH2) authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind828 ../src/curl -q --output log/4/curl828.out  --include --trace-ascii log/4/trace828 --trace-time 'imap://127.0.0.1:34045/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/4/stdout828 2> log/4/stderr828

 828: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 828
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind828 ../src/curl -q --output log/4/curl828.out  --include --trace-ascii log/4/trace828 --trace-time 'imap://127.0.0.1:34045/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/4/stdout828 2> log/4/stderr828
=== End of file commands.log
=== Start of file imap_server.log
 19:27:35.352116 ====> Client connect
 19:27:35.352531 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:35.358831 < "A001 CAPABILITY"
 19:27:35.358893 > "A001 BAD Command[CR][LF]"
 19:27:35.359387 < "A002 LIST "verifiedserver" *"
 19:27:35.359428 LIST_imap got "verifiedserver" *
 19:27:35.359459 > "* LIST () "/" "WE ROOLZ: 122222"[CR][LF]"
 19:27:35.359476 > "A002 OK LIST Completed[CR][LF]"
 19:27:35.359488 return proof we are we
 19:27:35.405543 < "A003 LOGOUT"
 19:27:35.405598 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:35.405618 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:35.406990 MAIN sockfilt said DISC
 19:27:35.407036 ====> Client disconnected
 19:27:35.407109 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:34.958953 ====> Client connect
 19:27:34.959567 Received DATA (on stdin)
 19:27:34.959588 > 164 bytes data, server => client
 19:27:34.959604 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:34.959615 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:34.959625 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:34.959725 < 17 bytes data, client => server
 19:27:34.959742 'A001 CAPABILITY\r\n'
 19:27:34.966150 Received DATA (on stdin)
 19:27:34.966170 > 18 bytes data, server => client
 19:27:34.966181 'A001 BAD Command\r\n'
 19:27:34.966265 < 30 bytes data, client => server
 19:27:34.966279 'A002 LIST "verifiedserver" *\r\n'
 19:27:34.966492 Received DATA (on stdin)
 19:27:34.966503 > 34 bytes data, server => client
 19:27:34.966511 '* LIST () "/" "WE ROOLZ: 122222"\r\n'
 19:27:34.966533 Received DATA (on stdin)
 19:27:34.966542 > 24 bytes data, server => client
 19:27:34.966550 'A002 OK LIST Completed\r\n'
 19:27:35.012350 < 13 bytes data, client => server
 19:27:35.012381 'A003 LOGOUT\r\n'
 19:27:35.012618 Received DATA (on stdin)
 19:27:35.012630 > 36 bytes data, server => client
 19:27:35.012640 '* BYE curl IMAP server signing off\r\n'
 19:27:35.012672 Received DATA (on stdin)
 19:27:35.012681 > 26 bytes data, server => client
 19:27:35.012690 'A003 OK LOGOUT completed\r\n'
 19:27:35.013904 ====> Client disconnect
 19:27:35.014111 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH XOAUTH2
 CAPA SASL-IR
 REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
 Testnum 828
=== End of file server.cmd
=== Start of file valgrind828
 ==123761== 
 ==123761== Process terminating with default action of signal 4 (SIGILL)
 ==123761==  Illegal opcode at address 0x492B75F
 ==123761==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123761==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123761==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123761==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123761==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123761==    by 0x49908EB: curl_version_info (version.c:600)
 ==123761==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123761==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123761==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123761==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind828
test 0833 [IMAP CRAM-MD5 authentication with SASL downgrade]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind833 ../src/curl -q --output log/20/curl833.out  --include --trace-ascii log/20/trace833 --trace-time 'imap://127.0.0.1:46793/833/;MAILINDEX=1' -u CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind837 ../src/curl -q --output log/3/curl837.out  --include --trace-ascii log/3/trace837 --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:46883/837/;MAILINDEX=1' > log/3/stdout837 2> log/3/stderr837
user:secret > log/20/stdout833 2> log/20/stderr833

 833: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 833
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind833 ../src/curl -q --output log/20/curl833.out  --include --trace-ascii log/20/trace833 --trace-time 'imap://127.0.0.1:46793/833/;MAILINDEX=1' -u user:secret > log/20/stdout833 2> log/20/stderr833
=== End of file commands.log
=== Start of file imap_server.log
 19:27:35.615988 ====> Client connect
 19:27:35.616248 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:35.616602 < "A001 CAPABILITY"
 19:27:35.616803 > "A001 BAD Command[CR][LF]"
 19:27:35.616890 < "A002 LIST "verifiedserver" *"
 19:27:35.616924 LIST_imap got "verifiedserver" *
 19:27:35.616988 > "* LIST () "/" "WE ROOLZ: 122291"[CR][LF]"
 19:27:35.617012 > "A002 OK LIST Completed[CR][LF]"
 19:27:35.617028 return proof we are we
 19:27:35.665695 < "A003 LOGOUT"
 19:27:35.665769 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:35.665799 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:35.667162 MAIN sockfilt said DISC
 19:27:35.667205 ====> Client disconnected
 19:27:35.667296 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:35.222827 ====> Client connect
 19:27:35.223254 Received DATA (on stdin)
 19:27:35.223269 > 164 bytes data, server => client
 19:27:35.223279 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:35.223288 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:35.223296 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:35.223384 < 17 bytes data, client => server
 19:27:35.223400 'A001 CAPABILITY\r\n'
 19:27:35.223613 Received DATA (on stdin)
 19:27:35.223629 > 18 bytes data, server => client
 19:27:35.223649 'A001 BAD Command\r\n'
 19:27:35.223712 < 30 bytes data, client => server
 19:27:35.223727 'A002 LIST "verifiedserver" *\r\n'
 19:27:35.223905 Received DATA (on stdin)
 19:27:35.223919 > 34 bytes data, server => client
 19:27:35.223998 '* LIST () "/" "WE ROOLZ: 122291"\r\n'
 19:27:35.224053 Received DATA (on stdin)
 19:27:35.224064 > 24 bytes data, server => client
 19:27:35.224074 'A002 OK LIST Completed\r\n'
 19:27:35.272451 < 13 bytes data, client => server
 19:27:35.272480 'A003 LOGOUT\r\n'
 19:27:35.272777 Received DATA (on stdin)
 19:27:35.272793 > 36 bytes data, server => client
 19:27:35.272803 '* BYE curl IMAP server signing off\r\n'
 19:27:35.272831 Received DATA (on stdin)
 19:27:35.272842 > 26 bytes data, server => client
 19:27:35.272852 'A003 OK LOGOUT completed\r\n'
 19:27:35.274059 ====> Client disconnect
 19:27:35.274276 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5 PLAIN
 REPLY "AUTHENTICATE CRAM-MD5" + Rubbish
 REPLY * A002 NO AUTH exchange cancelled by client
 REPLY "AUTHENTICATE PLAIN" +
 REPLY AHVzZXIAc2VjcmV0 A003 OK AUTHENTICATE completed
 Testnum 833
=== End of file server.cmd
=== Start of file valgrind833
 ==123975== 
 ==123975== Process terminating with default action of signal 4 (SIGILL)
 ==123975==  Illegal opcode at address 0x492B75F
 ==123975==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==123975==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==123975==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==123975==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==123975==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==123975==    by 0x49908EB: curl_version_info (version.c:600)
 ==123975==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==123975==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==123975==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==123975==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind833
test 0837 [IMAP external authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind837 ../src/curl -q --output log/3/curl837.out  --include --trace-ascii log/3/trace837 --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:46883/837/;MAILINDEX=1' > log/3/stdout837 2> log/3/stderr837

 837: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 837
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind837 ../src/curl -q --output log/3/curl837.out  --include --trace-ascii log/3/trace837 --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:46883/837/;MAILINDEX=1' > log/3/stdout837 2> log/3/stderr837
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.307691 ====> Client connect
 19:27:36.307907 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.308198 < "A001 CAPABILITY"
 19:27:36.308235 > "A001 BAD Command[CR][LF]"
 19:27:36.308393 < "A002 LIST "verifiedserver" *"
 19:27:36.308422 LIST_imap got "verifiedserver" *
 19:27:36.308445 > "* LIST () "/" "WE ROOLZ: 122611"[CR][LF]"
 19:27:36.308462 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.308474 return proof we are we
 19:27:36.352889 < "A003 LOGOUT"
 19:27:36.352941 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:36.352959 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:36.354138 MAIN sockfilt said DISC
 19:27:36.354174 ====> Client disconnected
 19:27:36.354249 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.914442 ====> Client connect
 19:27:36.914807 Received DATA (on stdin)
 19:27:36.914819 > 164 bytes data, server => client
 19:27:36.914833 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.914843 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.914851 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.914928 < 17 bytes data, client => server
 19:27:36.914939 'A001 CAPABILITY\r\n'
 19:27:36.915122 Received DATA (on stdin)
 19:27:36.915133 > 18 bytes data, server => client
 19:27:36.915142 'A001 BAD Command\r\n'
 19:27:36.915194 < 30 bytes data, client => server
 19:27:36.915205 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.915359 Received DATA (on stdin)
 19:27:36.915369 > 34 bytes data, server => client
 19:27:36.915377 '* LIST () "/" "WE ROOLZ: 122611"\r\n'
 19:27:36.915397 Received DATA (on stdin)
 19:27:36.915405 > 24 bytes data, server => client
 19:27:36.915414 'A002 OK LIST Completed\r\n'
 19:27:36.959608 < 13 bytes data, client => server
 19:27:36.959633 'A003 LOGOUT\r\n'
 19:27:36.959841 Received DATA (on stdin)
 19:27:36.959851 > 36 bytes data, server => client
 19:27:36.959860 '* BYE curl IMAP server signing off\r\n'
 19:27:36.959880 Received DATA (on stdin)
 19:27:36.959889 > 26 bytes data, server => client
 19:27:36.959897 'A003 OK LOGOUT completed\r\n'
 19:27:36.960960 ====> Client disconnect
 19:27:36.961134 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTHENTICATE +
 REPLY dXNlcg== A002 OK AUTHENTICATE completed
 Testnum 837
=== End of file server.cmd
=== Start of file valgrind837
 ==124123== 
 ==124123== Process terminating with default action of signal 4 (SIGILL)
 ==124123==  Illegal opcode at address 0x492B75F
 ==124123==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124123==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124123==    by 0x492B67BCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind838 ../src/curl -q --output log/24/curl838.out  --include --trace-ascii log/24/trace838 --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:34999/838/;MAILINDEX=1' > log/24/stdout838 2> log/24/stderr838
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind839 ../src/curl -q --output log/15/curl839.out  --include --trace-ascii log/15/trace839 --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:33501/839/;MAILINDEX=1' > log/15/stdout839 2> log/15/stderr839
: curl_msnprintf (mprintf.c:1277)
 ==124123==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124123==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124123==    by 0x49908EB: curl_version_info (version.c:600)
 ==124123==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124123==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124123==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124123==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind837
test 0838 [IMAP external authentication without credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind838 ../src/curl -q --output log/24/curl838.out  --include --trace-ascii log/24/trace838 --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:34999/838/;MAILINDEX=1' > log/24/stdout838 2> log/24/stderr838

 838: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 838
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind838 ../src/curl -q --output log/24/curl838.out  --include --trace-ascii log/24/trace838 --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:34999/838/;MAILINDEX=1' > log/24/stdout838 2> log/24/stderr838
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.277983 ====> Client connect
 19:27:36.278178 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.278717 < "A001 CAPABILITY"
 19:27:36.278768 > "A001 BAD Command[CR][LF]"
 19:27:36.278967 < "A002 LIST "verifiedserver" *"
 19:27:36.278997 LIST_imap got "verifiedserver" *
 19:27:36.279027 > "* LIST () "/" "WE ROOLZ: 113205"[CR][LF]"
 19:27:36.279047 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.279063 return proof we are we
 19:27:36.325698 < "A003 LOGOUT"
 19:27:36.325764 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:36.325795 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:36.332083 MAIN sockfilt said DISC
 19:27:36.332143 ====> Client disconnected
 19:27:36.332239 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:35.884728 ====> Client connect
 19:27:35.885085 Received DATA (on stdin)
 19:27:35.885100 > 164 bytes data, server => client
 19:27:35.885111 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:35.885121 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:35.885131 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:35.885243 < 17 bytes data, client => server
 19:27:35.885257 'A001 CAPABILITY\r\n'
 19:27:35.885665 Received DATA (on stdin)
 19:27:35.885677 > 18 bytes data, server => client
 19:27:35.885687 'A001 BAD Command\r\n'
 19:27:35.885750 < 30 bytes data, client => server
 19:27:35.885765 'A002 LIST "verifiedserver" *\r\n'
 19:27:35.885953 Received DATA (on stdin)
 19:27:35.885965 > 34 bytes data, server => client
 19:27:35.885976 '* LIST () "/" "WE ROOLZ: 113205"\r\n'
 19:27:35.885998 Received DATA (on stdin)
 19:27:35.886008 > 24 bytes data, server => client
 19:27:35.886018 'A002 OK LIST Completed\r\n'
 19:27:35.932358 < 13 bytes data, client => server
 19:27:35.932403 'A003 LOGOUT\r\n'
 19:27:35.932687 Received DATA (on stdin)
 19:27:35.932701 > 36 bytes data, server => client
 19:27:35.932713 '* BYE curl IMAP server signing off\r\n'
 19:27:35.932744 Received DATA (on stdin)
 19:27:35.932755 > 26 bytes data, server => client
 19:27:35.932765 'A003 OK LOGOUT completed\r\n'
 19:27:35.938874 ====> Client disconnect
 19:27:35.939141 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTHENTICATE +
 REPLY  A002 OK AUTHENTICATE completed
 Testnum 838
=== End of file server.cmd
=== Start of file valgrind838
 ==124116== 
 ==124116== Process terminating with default action of signal 4 (SIGILL)
 ==124116==  Illegal opcode at address 0x492B75F
 ==124116==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124116==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124116==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124116==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124116==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124116==    by 0x49908EB: curl_version_info (version.c:600)
 ==124116==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124116==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind838
test 0839 [IMAP external authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind839 ../src/curl -q --output log/15/curl839.out  --include --trace-ascii log/15/trace839 --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:33501/839/;MAILINDEX=1' > log/15/stdout839 2> log/15/stderr839

 839: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 839
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind839 ../src/curl -q --output log/15/curl839.out  --include --trace-ascii log/15/trace839 --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:33501/839/;MAILINDEX=1' > log/15/stdout839 2> log/15/stderr839
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.348688 ====> Client connect
 19:27:36.348943 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.349332 < "A001 CAPABILITY"
 19:27:36.349374 > "A001 BAD Command[CR][LF]"
 19:27:36.349558 < "A002 LIST "verifiedserver" *"
 19:27:36.349589 LIST_imap got "verifiedserver" *
 19:27:36.349615 > "* LIST () "/" "WE ROOLZ: 122502"[CR][LF]"
 19:27:36.349634 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.349648 return proof we are we
 19:27:36.399267 < "A003 LOGOUT"
 19:27:36.399327 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:36.399350 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:36.400568 MAIN sockfilt said DISC
 19:27:36.400602 ====> Client disconnected
 19:27:36.400684 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.952220 ====> Client connect
 19:27:36.955851 Received DATA (on stdin)
 19:27:36.955876 > 164 bytes data, server => client
 19:27:36.955888 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.955898 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.955908 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.956036 < 17 bytes data, client => server
 19:27:36.956051 'A001 CAPABILITY\r\n'
 19:27:36.956260 Received DATA (on stdin)
 19:27:36.956271 > 18 bytes data, server => client
 19:27:36.956280 'A001 BAD Command\r\n'
 19:27:36.956345 < 30 bytes data, client => server
 19:27:36.956358 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.956530 Received DATA (on stdin)
 19:27:36.956541 > 34 bytes data, server => client
 19:27:36.956551 '* LIST () "/" "WE ROOLZ: 122502"\r\n'
 19:27:36.956574 Received DATA (on stdin)
 19:27:36.956583 > 24 bytes data, server => client
 19:27:36.956592 'A002 OK LIST Completed\r\n'
 19:27:37.005928 < 13 bytes data, client => server
 19:27:37.005957 'A003 LOGOUT\r\n'
 19:27:37.006228 Received DATA (on stdin)
 19:27:37.006240 > 36 bytes data, CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind840 ../src/curl -q --output log/5/curl840.out  --include --trace-ascii log/5/trace840 --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:37639/840/;MAILINDEX=1' > log/5/stdout840 2> log/5/stderr840
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind842 ../src/curl -q --output log/22/curl842.out  --include --trace-ascii log/22/trace842 --trace-time 'imap://127.0.0.1:37605/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/22/stdout842 2> log/22/stderr842
server => client
 19:27:37.006250 '* BYE curl IMAP server signing off\r\n'
 19:27:37.006274 Received DATA (on stdin)
 19:27:37.006283 > 26 bytes data, server => client
 19:27:37.006293 'A003 OK LOGOUT completed\r\n'
 19:27:37.007387 ====> Client disconnect
 19:27:37.007563 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 CAPA SASL-IR
 REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
 Testnum 839
=== End of file server.cmd
=== Start of file valgrind839
 ==124171== 
 ==124171== Process terminating with default action of signal 4 (SIGILL)
 ==124171==  Illegal opcode at address 0x492B75F
 ==124171==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124171==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124171==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124171==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124171==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124171==    by 0x49908EB: curl_version_info (version.c:600)
 ==124171==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124171==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124171==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124171==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind839
test 0840 [IMAP external authentication with initial response without credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind840 ../src/curl -q --output log/5/curl840.out  --include --trace-ascii log/5/trace840 --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:37639/840/;MAILINDEX=1' > log/5/stdout840 2> log/5/stderr840

 840: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 840
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind840 ../src/curl -q --output log/5/curl840.out  --include --trace-ascii log/5/trace840 --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:37639/840/;MAILINDEX=1' > log/5/stdout840 2> log/5/stderr840
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.428792 ====> Client connect
 19:27:36.429041 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.435544 < "A001 CAPABILITY"
 19:27:36.435602 > "A001 BAD Command[CR][LF]"
 19:27:36.439101 < "A002 LIST "verifiedserver" *"
 19:27:36.439146 LIST_imap got "verifiedserver" *
 19:27:36.439180 > "* LIST () "/" "WE ROOLZ: 122670"[CR][LF]"
 19:27:36.439197 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.439210 return proof we are we
 19:27:36.485687 < "A003 LOGOUT"
 19:27:36.485760 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:36.485787 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:36.487107 MAIN sockfilt said DISC
 19:27:36.487145 ====> Client disconnected
 19:27:36.487225 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.035539 ====> Client connect
 19:27:36.035939 Received DATA (on stdin)
 19:27:36.035957 > 164 bytes data, server => client
 19:27:36.035969 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.035980 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.035990 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.042201 < 17 bytes data, client => server
 19:27:36.042226 'A001 CAPABILITY\r\n'
 19:27:36.042479 Received DATA (on stdin)
 19:27:36.042493 > 18 bytes data, server => client
 19:27:36.042502 'A001 BAD Command\r\n'
 19:27:36.045801 < 30 bytes data, client => server
 19:27:36.045828 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.046084 Received DATA (on stdin)
 19:27:36.046095 > 34 bytes data, server => client
 19:27:36.046105 '* LIST () "/" "WE ROOLZ: 122670"\r\n'
 19:27:36.046128 Received DATA (on stdin)
 19:27:36.046137 > 24 bytes data, server => client
 19:27:36.046145 'A002 OK LIST Completed\r\n'
 19:27:36.092315 < 13 bytes data, client => server
 19:27:36.092358 'A003 LOGOUT\r\n'
 19:27:36.092663 Received DATA (on stdin)
 19:27:36.092679 > 36 bytes data, server => client
 19:27:36.092689 '* BYE curl IMAP server signing off\r\n'
 19:27:36.092718 Received DATA (on stdin)
 19:27:36.092729 > 26 bytes data, server => client
 19:27:36.092739 'A003 OK LOGOUT completed\r\n'
 19:27:36.093908 ====> Client disconnect
 19:27:36.094095 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 CAPA SASL-IR
 REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
 Testnum 840
=== End of file server.cmd
=== Start of file valgrind840
 ==124221== 
 ==124221== Process terminating with default action of signal 4 (SIGILL)
 ==124221==  Illegal opcode at address 0x492B75F
 ==124221==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124221==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124221==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124221==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124221==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124221==    by 0x49908EB: curl_version_info (version.c:600)
 ==124221==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124221==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124221==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124221==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind840
test 0842 [IMAP OAuth 2.0 (OAUTHBEARER) authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind842 ../src/curl -q --output log/22/curl842.out  --include --trace-ascii log/22/trace842 --trace-time 'imap://127.0.0.1:37605/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/22/stdout842 2> log/22/stderr842

 842: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 842
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind842 ../src/curl -q --output log/22/curl842.out  --include --trace-ascii log/22/trace842 --trace-time 'imap://127.0.0.1:37605/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/22/stdout842 2> log/22/stderr842
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.837260 ====> Client connect
 19:27:36.837674 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.837832 < "A001 CAPABILITY"
 19:27:36.837952 > "A001 BAD Command[CR][LF]"
 19:27:36.838128 < "A002 LIST "verifiedserver" *"
 19:27:36.838161 LIST_imap got "verifiedserver" *
 19:27:36.838191 > "* LIST () "/" "WE ROOLZ: 121995"[CR][LF]"
 19:27:36.838209 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.838223 return proof we are we
 19:27:36.884282 < "A003 LOGOUT"
 19:27:36.884339 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:36.884359 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:36.897956 MAIN sockfilt said DISC
 19:27:36.898009 ====> Client disconnected
 19:27:36.898073 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:37.443909 ====> Client connect
 19:27:37.444267 Received DATA (on stdin)
 19:27:37.444291 > 164 bytes data, server => client
 19:27:37.444314 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:37.444324 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind841 ../src/curl -q --output log/2/curl841.out  --include --trace-ascii log/2/trace841 --trace-time imap://127.0.0.1:46461/841/ -u user:secret -X 'FETCH 123 BODY[1]' > log/2/stdout841 2> log/2/stderr841
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind845 ../src/curl -q --output log/9/curl845.out  --include --trace-ascii log/9/trace845 --trace-time 'imap://127.0.0.1:38847/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout845 2> log/9/stderr845

 19:27:37.444335 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:37.444430 < 17 bytes data, client => server
 19:27:37.444446 'A001 CAPABILITY\r\n'
 19:27:37.444682 Received DATA (on stdin)
 19:27:37.444697 > 18 bytes data, server => client
 19:27:37.444717 'A001 BAD Command\r\n'
 19:27:37.444832 < 30 bytes data, client => server
 19:27:37.444847 'A002 LIST "verifiedserver" *\r\n'
 19:27:37.445048 Received DATA (on stdin)
 19:27:37.445060 > 34 bytes data, server => client
 19:27:37.445069 '* LIST () "/" "WE ROOLZ: 121995"\r\n'
 19:27:37.445092 Received DATA (on stdin)
 19:27:37.445102 > 24 bytes data, server => client
 19:27:37.445111 'A002 OK LIST Completed\r\n'
 19:27:37.490905 < 13 bytes data, client => server
 19:27:37.490932 'A003 LOGOUT\r\n'
 19:27:37.491180 Received DATA (on stdin)
 19:27:37.491193 > 36 bytes data, server => client
 19:27:37.491203 '* BYE curl IMAP server signing off\r\n'
 19:27:37.491230 Received DATA (on stdin)
 19:27:37.491245 > 26 bytes data, server => client
 19:27:37.491256 'A003 OK LOGOUT completed\r\n'
 19:27:37.504691 ====> Client disconnect
 19:27:37.504893 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTHENTICATE +
 REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9Mzc2MDUBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= A002 OK AUTHENTICATE completed
 Testnum 842
=== End of file server.cmd
=== Start of file valgrind842
 ==124439== 
 ==124439== Process terminating with default action of signal 4 (SIGILL)
 ==124439==  Illegal opcode at address 0x492B75F
 ==124439==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124439==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124439==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124439==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124439==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124439==    by 0x49908EB: curl_version_info (version.c:600)
 ==124439==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124439==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124439==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124439==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind842
test 0841 [IMAP custom request does not check continuation data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind841 ../src/curl -q --output log/2/curl841.out  --include --trace-ascii log/2/trace841 --trace-time imap://127.0.0.1:46461/841/ -u user:secret -X 'FETCH 123 BODY[1]' > log/2/stdout841 2> log/2/stderr841

 841: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 841
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind841 ../src/curl -q --output log/2/curl841.out  --include --trace-ascii log/2/trace841 --trace-time imap://127.0.0.1:46461/841/ -u user:secret -X 'FETCH 123 BODY[1]' > log/2/stdout841 2> log/2/stderr841
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.714820 ====> Client connect
 19:27:36.715117 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.715445 < "A001 CAPABILITY"
 19:27:36.715489 > "A001 BAD Command[CR][LF]"
 19:27:36.715689 < "A002 LIST "verifiedserver" *"
 19:27:36.715721 LIST_imap got "verifiedserver" *
 19:27:36.715750 > "* LIST () "/" "WE ROOLZ: 114810"[CR][LF]"
 19:27:36.715771 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.715786 return proof we are we
 19:27:36.765656 < "A003 LOGOUT"
 19:27:36.765718 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:36.765742 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:36.767108 MAIN sockfilt said DISC
 19:27:36.767153 ====> Client disconnected
 19:27:36.767238 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.321512 ====> Client connect
 19:27:36.321878 Received DATA (on stdin)
 19:27:36.321902 > 164 bytes data, server => client
 19:27:36.321978 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.321992 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.322002 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.322098 < 17 bytes data, client => server
 19:27:36.322114 'A001 CAPABILITY\r\n'
 19:27:36.322331 Received DATA (on stdin)
 19:27:36.322343 > 18 bytes data, server => client
 19:27:36.322353 'A001 BAD Command\r\n'
 19:27:36.322417 < 30 bytes data, client => server
 19:27:36.322430 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.322625 Received DATA (on stdin)
 19:27:36.322637 > 34 bytes data, server => client
 19:27:36.322647 '* LIST () "/" "WE ROOLZ: 114810"\r\n'
 19:27:36.322669 Received DATA (on stdin)
 19:27:36.322677 > 24 bytes data, server => client
 19:27:36.322686 'A002 OK LIST Completed\r\n'
 19:27:36.372296 < 13 bytes data, client => server
 19:27:36.372325 'A003 LOGOUT\r\n'
 19:27:36.372580 Received DATA (on stdin)
 19:27:36.372595 > 36 bytes data, server => client
 19:27:36.372605 '* BYE curl IMAP server signing off\r\n'
 19:27:36.372634 Received DATA (on stdin)
 19:27:36.372643 > 26 bytes data, server => client
 19:27:36.372653 'A003 OK LOGOUT completed\r\n'
 19:27:36.373878 ====> Client disconnect
 19:27:36.374082 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 841
=== End of file server.cmd
=== Start of file valgrind841
 ==124367== 
 ==124367== Process terminating with default action of signal 4 (SIGILL)
 ==124367==  Illegal opcode at address 0x492B75F
 ==124367==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124367==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124367==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124367==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124367==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124367==    by 0x49908EB: curl_version_info (version.c:600)
 ==124367==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124367==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124367==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124367==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind841
test 0845 [IMAP OAuth failure as continuation with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind845 ../src/curl -q --output log/9/curl845.out  --include --trace-ascii log/9/trace845 --trace-time 'imap://127.0.0.1:38847/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout845 2> log/9/stderr845

 845: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 845
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind845 ../src/curl -q --output log/9/curl845.out  --include --trace-ascii log/9/trace845 --trace-time 'imap://127.0.0.1:38847/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout845 2> log/9/stderr845
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.999636 ====> Client connect
 19:27:36.999792 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:37.000297 < "A001 CAPABILITY"
 19:27:37.000347 > "A001 BAD Command[CR][LF]"
 19:27:37.000566 < "A00CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind844 ../src/curl -q --output log/16/curl844.out  --include --trace-ascii log/16/trace844 --trace-time 'imap://127.0.0.1:45869/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/16/stdout844 2> log/16/stderr844
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind847 ../src/curl -q --output log/1/curl847.out  --include --trace-ascii log/1/trace847 --trace-time 'imap://127.0.0.1:35739/847/;UID=1' -u '"user:sec"ret{' > log/1/stdout847 2> log/1/stderr847
2 LIST "verifiedserver" *"
 19:27:37.000601 LIST_imap got "verifiedserver" *
 19:27:37.000633 > "* LIST () "/" "WE ROOLZ: 113573"[CR][LF]"
 19:27:37.000655 > "A002 OK LIST Completed[CR][LF]"
 19:27:37.000670 return proof we are we
 19:27:37.045481 < "A003 LOGOUT"
 19:27:37.045526 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.045546 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.048293 MAIN sockfilt said DISC
 19:27:37.048339 ====> Client disconnected
 19:27:37.048564 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.606339 ====> Client connect
 19:27:36.606609 Received DATA (on stdin)
 19:27:36.606625 > 164 bytes data, server => client
 19:27:36.606637 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.606647 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.606657 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.606933 < 17 bytes data, client => server
 19:27:36.606950 'A001 CAPABILITY\r\n'
 19:27:36.607159 Received DATA (on stdin)
 19:27:36.607172 > 18 bytes data, server => client
 19:27:36.607182 'A001 BAD Command\r\n'
 19:27:36.607250 < 30 bytes data, client => server
 19:27:36.607265 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.607475 Received DATA (on stdin)
 19:27:36.607487 > 34 bytes data, server => client
 19:27:36.607498 '* LIST () "/" "WE ROOLZ: 113573"\r\n'
 19:27:36.607521 Received DATA (on stdin)
 19:27:36.607535 > 24 bytes data, server => client
 19:27:36.607545 'A002 OK LIST Completed\r\n'
 19:27:36.652132 < 13 bytes data, client => server
 19:27:36.652155 'A003 LOGOUT\r\n'
 19:27:36.652346 Received DATA (on stdin)
 19:27:36.652357 > 36 bytes data, server => client
 19:27:36.652367 '* BYE curl IMAP server signing off\r\n'
 19:27:36.652390 Received DATA (on stdin)
 19:27:36.652398 > 26 bytes data, server => client
 19:27:36.652407 'A003 OK LOGOUT completed\r\n'
 19:27:36.655027 ====> Client disconnect
 19:27:36.655281 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 CAPA SASL-IR
 REPLY AUTHENTICATE + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0=
 REPLY AQ== A002 NO Authentication failed
 Testnum 845
=== End of file server.cmd
=== Start of file valgrind845
 ==124559== 
 ==124559== Process terminating with default action of signal 4 (SIGILL)
 ==124559==  Illegal opcode at address 0x492B75F
 ==124559==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124559==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124559==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124559==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124559==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124559==    by 0x49908EB: curl_version_info (version.c:600)
 ==124559==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124559==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind845
test 0844 [IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind844 ../src/curl -q --output log/16/curl844.out  --include --trace-ascii log/16/trace844 --trace-time 'imap://127.0.0.1:45869/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/16/stdout844 2> log/16/stderr844

 844: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 844
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind844 ../src/curl -q --output log/16/curl844.out  --include --trace-ascii log/16/trace844 --trace-time 'imap://127.0.0.1:45869/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/16/stdout844 2> log/16/stderr844
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.952996 ====> Client connect
 19:27:36.953235 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.953578 < "A001 CAPABILITY"
 19:27:36.953629 > "A001 BAD Command[CR][LF]"
 19:27:36.953839 < "A002 LIST "verifiedserver" *"
 19:27:36.953876 LIST_imap got "verifiedserver" *
 19:27:36.953908 > "* LIST () "/" "WE ROOLZ: 122830"[CR][LF]"
 19:27:36.953929 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.953945 return proof we are we
 19:27:37.005570 < "A003 LOGOUT"
 19:27:37.005628 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.005648 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.007007 MAIN sockfilt said DISC
 19:27:37.007044 ====> Client disconnected
 19:27:37.007124 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.559682 ====> Client connect
 19:27:36.560072 Received DATA (on stdin)
 19:27:36.560091 > 164 bytes data, server => client
 19:27:36.560101 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.560110 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.560119 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.560209 < 17 bytes data, client => server
 19:27:36.560225 'A001 CAPABILITY\r\n'
 19:27:36.560446 Received DATA (on stdin)
 19:27:36.560458 > 18 bytes data, server => client
 19:27:36.560468 'A001 BAD Command\r\n'
 19:27:36.560534 < 30 bytes data, client => server
 19:27:36.560548 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.560755 Received DATA (on stdin)
 19:27:36.560767 > 34 bytes data, server => client
 19:27:36.560776 '* LIST () "/" "WE ROOLZ: 122830"\r\n'
 19:27:36.560799 Received DATA (on stdin)
 19:27:36.560809 > 24 bytes data, server => client
 19:27:36.560819 'A002 OK LIST Completed\r\n'
 19:27:36.612148 < 13 bytes data, client => server
 19:27:36.612183 'A003 LOGOUT\r\n'
 19:27:36.612452 Received DATA (on stdin)
 19:27:36.612462 > 36 bytes data, server => client
 19:27:36.612497 '* BYE curl IMAP server signing off\r\n'
 19:27:36.612532 Received DATA (on stdin)
 19:27:36.612542 > 26 bytes data, server => client
 19:27:36.612551 'A003 OK LOGOUT completed\r\n'
 19:27:36.613752 ====> Client disconnect
 19:27:36.613930 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTHENTICATE +
 REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9NDU4NjkBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= A002 NO Authentication failed
 Testnum 844
=== End of file server.cmd
=== Start of file valgrind844
 ==124546== 
 ==124546== Process terminating with default action of signal 4 (SIGILL)
 ==124546==  Illegal opcode at address 0x492B75F
 ==124546==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124546==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124546==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124546==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124546==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124546==    by 0x49908EB: curl_version_info (version.c:600)
 ==124546==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124546==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124546==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124546==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind844
test 0847 [IMAP FETCH message with UID]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind847 ../src/curl -q --output log/1/curl847.out  --include --trace-ascii log/1/trace847 --trace-time 'imap://127.0.0.1:35739/847/;UIDCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind846 ../src/curl -q --output log/7/curl846.out  --include --trace-ascii log/7/trace846 --trace-time 'imap://127.0.0.1:42601/846/;MAILINDEX=1' -u notused:still-provided > log/7/stdout846 2> log/7/stderr846
=1' -u '"user:sec"ret{' > log/1/stdout847 2> log/1/stderr847

 847: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 847
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind847 ../src/curl -q --output log/1/curl847.out  --include --trace-ascii log/1/trace847 --trace-time 'imap://127.0.0.1:35739/847/;UID=1' -u '"user:sec"ret{' > log/1/stdout847 2> log/1/stderr847
=== End of file commands.log
=== Start of file imap_server.log
 19:27:37.012560 ====> Client connect
 19:27:37.012767 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:37.019022 < "A001 CAPABILITY"
 19:27:37.019091 > "A001 BAD Command[CR][LF]"
 19:27:37.019323 < "A002 LIST "verifiedserver" *"
 19:27:37.019362 LIST_imap got "verifiedserver" *
 19:27:37.019393 > "* LIST () "/" "WE ROOLZ: 122891"[CR][LF]"
 19:27:37.019414 > "A002 OK LIST Completed[CR][LF]"
 19:27:37.019428 return proof we are we
 19:27:37.072782 < "A003 LOGOUT"
 19:27:37.072843 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.072863 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.074234 MAIN sockfilt said DISC
 19:27:37.074277 ====> Client disconnected
 19:27:37.074363 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.619248 ====> Client connect
 19:27:36.622150 Received DATA (on stdin)
 19:27:36.622191 > 164 bytes data, server => client
 19:27:36.622204 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.622214 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.622224 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.625559 < 17 bytes data, client => server
 19:27:36.625591 'A001 CAPABILITY\r\n'
 19:27:36.625903 Received DATA (on stdin)
 19:27:36.625917 > 18 bytes data, server => client
 19:27:36.625927 'A001 BAD Command\r\n'
 19:27:36.626002 < 30 bytes data, client => server
 19:27:36.626016 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.626231 Received DATA (on stdin)
 19:27:36.626243 > 34 bytes data, server => client
 19:27:36.626253 '* LIST () "/" "WE ROOLZ: 122891"\r\n'
 19:27:36.626276 Received DATA (on stdin)
 19:27:36.626286 > 24 bytes data, server => client
 19:27:36.626296 'A002 OK LIST Completed\r\n'
 19:27:36.679352 < 13 bytes data, client => server
 19:27:36.679386 'A003 LOGOUT\r\n'
 19:27:36.679661 Received DATA (on stdin)
 19:27:36.679674 > 36 bytes data, server => client
 19:27:36.679684 '* BYE curl IMAP server signing off\r\n'
 19:27:36.679715 Received DATA (on stdin)
 19:27:36.679724 > 26 bytes data, server => client
 19:27:36.679734 'A003 OK LOGOUT completed\r\n'
 19:27:36.680961 ====> Client disconnect
 19:27:36.681161 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 847
=== End of file server.cmd
=== Start of file valgrind847
 ==124591== 
 ==124591== Process terminating with default action of signal 4 (SIGILL)
 ==124591==  Illegal opcode at address 0x492B75F
 ==124591==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124591==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124591==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124591==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124591==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124591==    by 0x49908EB: curl_version_info (version.c:600)
 ==124591==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124591==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124591==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124591==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind847
test 0846 [IMAP PREAUTH response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind846 ../src/curl -q --output log/7/curl846.out  --include --trace-ascii log/7/trace846 --trace-time 'imap://127.0.0.1:42601/846/;MAILINDEX=1' -u notused:still-provided > log/7/stdout846 2> log/7/stderr846

 846: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 846
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind846 ../src/curl -q --output log/7/curl846.out  --include --trace-ascii log/7/trace846 --trace-time 'imap://127.0.0.1:42601/846/;MAILINDEX=1' -u notused:still-provided > log/7/stdout846 2> log/7/stderr846
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.995364 ====> Client connect
 19:27:36.995572 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.996769 < "A001 CAPABILITY"
 19:27:36.996824 > "A001 BAD Command[CR][LF]"
 19:27:36.997060 < "A002 LIST "verifiedserver" *"
 19:27:36.997099 LIST_imap got "verifiedserver" *
 19:27:36.997129 > "* LIST () "/" "WE ROOLZ: 122008"[CR][LF]"
 19:27:36.997148 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.997162 return proof we are we
 19:27:37.045466 < "A003 LOGOUT"
 19:27:37.045520 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.045538 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.052058 MAIN sockfilt said DISC
 19:27:37.052104 ====> Client disconnected
 19:27:37.052178 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:37.598807 ====> Client connect
 19:27:37.602400 Received DATA (on stdin)
 19:27:37.602421 > 164 bytes data, server => client
 19:27:37.602433 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:37.602443 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:37.602453 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:37.603364 < 17 bytes data, client => server
 19:27:37.603386 'A001 CAPABILITY\r\n'
 19:27:37.603632 Received DATA (on stdin)
 19:27:37.603645 > 18 bytes data, server => client
 19:27:37.603653 'A001 BAD Command\r\n'
 19:27:37.603728 < 30 bytes data, client => server
 19:27:37.603738 'A002 LIST "verifiedserver" *\r\n'
 19:27:37.603911 Received DATA (on stdin)
 19:27:37.603922 > 34 bytes data, server => client
 19:27:37.603930 '* LIST () "/" "WE ROOLZ: 122008"\r\n'
 19:27:37.603949 Received DATA (on stdin)
 19:27:37.603957 > 24 bytes data, server => client
 19:27:37.603965 'A002 OK LIST Completed\r\n'
 19:27:37.648904 < 13 bytes data, client => server
 19:27:37.648927 'A003 LOGOUT\r\n'
 19:27:37.652304 Received DATA (on stdin)
 19:27:37.652323 > 36 bytes data, server => client
 19:27:37.652333 '* BYE curl IMAP server signing off\r\n'
 19:27:37.652361 Received DATA (on stdin)
 19:27:37.652370 > 26 bytes data, server => client
 19:27:37.652380 'A003 OK LOGOUT completed\r\n'
 19:27:37.658787 ====> Client disconnect
 19:27:37.658980 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 REPLY welcome * PREAUTH ready to serve already
 REPLY CAPABILITY * CAPABILITY IMAP4REV1 I18NLEVEL=1 LITERAL+ IDLE UIDPLUS NAMESPACE CHILDREN MAILBOX-REFERRALS BINARY UNSELECT ESEARCH WITHIN SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND SASL-IR LOGIN-REFERRALS STARTTLS LOGINDISABLED\r\nA001 OK CAPABILITY completed
 Testnum 846
=== End of file server.cmd
=== Start of file valgrind846
 ==124614== 
 ==124614== Process terminating with default action of signal 4 (SIGILL)
 ==124614==  Illegal opcode at address 0x492B75F
 ==124614==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124614==    by 0x492C53A: cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind843 ../src/curl -q --output log/17/curl843.out  --include --trace-ascii log/17/trace843 --trace-time 'imap://127.0.0.1:39883/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/17/stdout843 2> log/17/stderr843
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind848 ../src/curl -q --output log/18/curl848.out  --include --trace-ascii log/18/trace848 --trace-time 'imap://127.0.0.1:32857/848/;MAILINDEX=1' -u user:secret --sasl-authzid shared-mailbox > log/18/stdout848 2> log/18/stderr848
url_mvsnprintf (mprintf.c:1257)
 ==124614==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124614==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124614==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124614==    by 0x49908EB: curl_version_info (version.c:600)
 ==124614==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124614==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124614==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124614==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind846
test 0843 [IMAP OAuth 2.0 (OAUTHBEARER) authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind843 ../src/curl -q --output log/17/curl843.out  --include --trace-ascii log/17/trace843 --trace-time 'imap://127.0.0.1:39883/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/17/stdout843 2> log/17/stderr843

 843: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 843
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind843 ../src/curl -q --output log/17/curl843.out  --include --trace-ascii log/17/trace843 --trace-time 'imap://127.0.0.1:39883/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/17/stdout843 2> log/17/stderr843
=== End of file commands.log
=== Start of file imap_server.log
 19:27:36.962310 ====> Client connect
 19:27:36.962545 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:36.962907 < "A001 CAPABILITY"
 19:27:36.962949 > "A001 BAD Command[CR][LF]"
 19:27:36.963124 < "A002 LIST "verifiedserver" *"
 19:27:36.963155 LIST_imap got "verifiedserver" *
 19:27:36.963182 > "* LIST () "/" "WE ROOLZ: 122784"[CR][LF]"
 19:27:36.963201 > "A002 OK LIST Completed[CR][LF]"
 19:27:36.963214 return proof we are we
 19:27:37.018822 < "A003 LOGOUT"
 19:27:37.018887 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.018910 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.022774 MAIN sockfilt said DISC
 19:27:37.028689 ====> Client disconnected
 19:27:37.028836 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.568989 ====> Client connect
 19:27:36.569399 Received DATA (on stdin)
 19:27:36.569415 > 164 bytes data, server => client
 19:27:36.569426 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.569436 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.569446 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.569543 < 17 bytes data, client => server
 19:27:36.569557 'A001 CAPABILITY\r\n'
 19:27:36.569759 Received DATA (on stdin)
 19:27:36.569770 > 18 bytes data, server => client
 19:27:36.569780 'A001 BAD Command\r\n'
 19:27:36.569838 < 30 bytes data, client => server
 19:27:36.569849 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.570022 Received DATA (on stdin)
 19:27:36.570032 > 34 bytes data, server => client
 19:27:36.570042 '* LIST () "/" "WE ROOLZ: 122784"\r\n'
 19:27:36.570064 Received DATA (on stdin)
 19:27:36.570073 > 24 bytes data, server => client
 19:27:36.570082 'A002 OK LIST Completed\r\n'
 19:27:36.622147 < 13 bytes data, client => server
 19:27:36.622185 'A003 LOGOUT\r\n'
 19:27:36.625719 Received DATA (on stdin)
 19:27:36.625737 > 36 bytes data, server => client
 19:27:36.625748 '* BYE curl IMAP server signing off\r\n'
 19:27:36.625789 Received DATA (on stdin)
 19:27:36.625800 > 26 bytes data, server => client
 19:27:36.625810 'A003 OK LOGOUT completed\r\n'
 19:27:36.629498 ====> Client disconnect
 19:27:36.635659 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 CAPA SASL-IR
 REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
 Testnum 843
=== End of file server.cmd
=== Start of file valgrind843
 ==124577== 
 ==124577== Process terminating with default action of signal 4 (SIGILL)
 ==124577==  Illegal opcode at address 0x492B75F
 ==124577==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124577==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124577==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124577==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124577==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124577==    by 0x49908EB: curl_version_info (version.c:600)
 ==124577==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124577==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124577==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124577==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind843
test 0848 [IMAP plain authentication with alternative authorization identity]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind848 ../src/curl -q --output log/18/curl848.out  --include --trace-ascii log/18/trace848 --trace-time 'imap://127.0.0.1:32857/848/;MAILINDEX=1' -u user:secret --sasl-authzid shared-mailbox > log/18/stdout848 2> log/18/stderr848

 848: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 848
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind848 ../src/curl -q --output log/18/curl848.out  --include --trace-ascii log/18/trace848 --trace-time 'imap://127.0.0.1:32857/848/;MAILINDEX=1' -u user:secret --sasl-authzid shared-mailbox > log/18/stdout848 2> log/18/stderr848
=== End of file commands.log
=== Start of file imap_server.log
 19:27:37.029015 ====> Client connect
 19:27:37.029220 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:37.038555 < "A001 CAPABILITY"
 19:27:37.038634 > "A001 BAD Command[CR][LF]"
 19:27:37.039335 < "A002 LIST "verifiedserver" *"
 19:27:37.039378 LIST_imap got "verifiedserver" *
 19:27:37.039416 > "* LIST () "/" "WE ROOLZ: 122785"[CR][LF]"
 19:27:37.039437 > "A002 OK LIST Completed[CR][LF]"
 19:27:37.039453 return proof we are we
 19:27:37.085711 < "A003 LOGOUT"
 19:27:37.085779 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.085813 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.087211 MAIN sockfilt said DISC
 19:27:37.087246 ====> Client disconnected
 19:27:37.087315 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.635715 ====> Client connect
 19:27:36.636034 Received DATA (on stdin)
 19:27:36.636048 > 164 bytes data, server => client
 19:27:36.636059 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.636069 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.636079 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.645034 < 17 bytes data, client => server
 19:27:36.645075 'A001 CAPABILITY\r\n'
 19:27:36.645469 Received DATA (on stdin)
 19:27:36.645486 > 18 bytes data, server => client
 19:27:36.645497 'A001 BAD Command\r\n'
 19:27:36.645992 < 30 bytes data, client => server
 19:27:36.646010 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.646256 Received DATA (on stdin)
 19:27:36.646269 > 34 bytes data, server => client
 19:27:36.646279 '* LIST () "/" "WE ROOLZ: 122785"\r\n'
 19:27:36.646304 Received DATA (on stdin)
 19:27:36.646315 > 24 bytes data, server => client
 19:27:3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind849 ../src/curl -q --output log/14/curl849.out  --include --trace-ascii log/14/trace849 --trace-time 'imap://127.0.0.1:40245/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel > log/14/stdout849 2> log/14/stderr849
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind850 ../src/curl -q --output log/10/curl850.out  --include --trace-ascii log/10/trace850 --trace-time pop3://127.0.0.1:33971/850 -u user:secret > log/10/stdout850 2> log/10/stderr850
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind851 ../src/curl -q --output log/13/curl851.out  --include --trace-ascii log/13/trace851 --trace-time pop3://127.0.0.1:34899/851 -l -u user:secret > log/13/stdout851 2> log/13/stderr851
6.646326 'A002 OK LIST Completed\r\n'
 19:27:36.692325 < 13 bytes data, client => server
 19:27:36.692353 'A003 LOGOUT\r\n'
 19:27:36.692618 Received DATA (on stdin)
 19:27:36.692633 > 36 bytes data, server => client
 19:27:36.692644 '* BYE curl IMAP server signing off\r\n'
 19:27:36.692670 Received DATA (on stdin)
 19:27:36.692682 > 26 bytes data, server => client
 19:27:36.692693 'A003 OK LOGOUT completed\r\n'
 19:27:36.693939 ====> Client disconnect
 19:27:36.694110 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTHENTICATE +
 REPLY c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ= A002 OK AUTHENTICATE completed
 Testnum 848
=== End of file server.cmd
=== Start of file valgrind848
 ==124622== 
 ==124622== Process terminating with default action of signal 4 (SIGILL)
 ==124622==  Illegal opcode at address 0x492B75F
 ==124622==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124622==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124622==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124622==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124622==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124622==    by 0x49908EB: curl_version_info (version.c:600)
 ==124622==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124622==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124622==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124622==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind848
test 0849 [IMAP plain auth with alt authorization identity (Not authorized)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind849 ../src/curl -q --output log/14/curl849.out  --include --trace-ascii log/14/trace849 --trace-time 'imap://127.0.0.1:40245/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel > log/14/stdout849 2> log/14/stderr849

 849: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 849
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind849 ../src/curl -q --output log/14/curl849.out  --include --trace-ascii log/14/trace849 --trace-time 'imap://127.0.0.1:40245/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel > log/14/stdout849 2> log/14/stderr849
=== End of file commands.log
=== Start of file imap_server.log
 19:27:37.195450 ====> Client connect
 19:27:37.195632 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:37.195941 < "A001 CAPABILITY"
 19:27:37.195981 > "A001 BAD Command[CR][LF]"
 19:27:37.196156 < "A002 LIST "verifiedserver" *"
 19:27:37.196184 LIST_imap got "verifiedserver" *
 19:27:37.196209 > "* LIST () "/" "WE ROOLZ: 121906"[CR][LF]"
 19:27:37.196225 > "A002 OK LIST Completed[CR][LF]"
 19:27:37.196239 return proof we are we
 19:27:37.248894 < "A003 LOGOUT"
 19:27:37.248956 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:37.248980 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:37.250212 MAIN sockfilt said DISC
 19:27:37.250251 ====> Client disconnected
 19:27:37.250329 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:36.802113 ====> Client connect
 19:27:36.802428 Received DATA (on stdin)
 19:27:36.802443 > 164 bytes data, server => client
 19:27:36.802453 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:36.802462 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:36.802471 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:36.802559 < 17 bytes data, client => server
 19:27:36.802570 'A001 CAPABILITY\r\n'
 19:27:36.802763 Received DATA (on stdin)
 19:27:36.802774 > 18 bytes data, server => client
 19:27:36.802783 'A001 BAD Command\r\n'
 19:27:36.802842 < 30 bytes data, client => server
 19:27:36.802851 'A002 LIST "verifiedserver" *\r\n'
 19:27:36.803018 Received DATA (on stdin)
 19:27:36.803028 > 34 bytes data, server => client
 19:27:36.803037 '* LIST () "/" "WE ROOLZ: 121906"\r\n'
 19:27:36.803057 Received DATA (on stdin)
 19:27:36.803066 > 24 bytes data, server => client
 19:27:36.803075 'A002 OK LIST Completed\r\n'
 19:27:36.855451 < 13 bytes data, client => server
 19:27:36.855486 'A003 LOGOUT\r\n'
 19:27:36.855761 Received DATA (on stdin)
 19:27:36.855776 > 36 bytes data, server => client
 19:27:36.855786 '* BYE curl IMAP server signing off\r\n'
 19:27:36.855822 Received DATA (on stdin)
 19:27:36.855834 > 26 bytes data, server => client
 19:27:36.855844 'A003 OK LOGOUT completed\r\n'
 19:27:36.856927 ====> Client disconnect
 19:27:36.857115 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTHENTICATE +
 REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= A002 NO Not authorized
 Testnum 849
=== End of file server.cmd
=== Start of file valgrind849
 ==124851== 
 ==124851== Process terminating with default action of signal 4 (SIGILL)
 ==124851==  Illegal opcode at address 0x492B75F
 ==124851==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124851==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124851==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124851==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124851==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124851==    by 0x49908EB: curl_version_info (version.c:600)
 ==124851==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124851==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124851==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124851==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind849
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/10/server/pop3_server.pid" --logfile "log/10/pop3_server.log" --logdir "log/10" --portfile "log/10/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33971 (log/10/server/pop3_server.port)
RUN: POP3 server is PID 124839 port 33971
* pid pop3 => 124839 124839
test 0850 [POP3 RETR message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind850 ../src/curl -q --output log/10/curl850.out  --include --trace-ascii log/10/trace850 --trace-time pop3://127.0.0.1:33971/850 -u user:secret > log/10/stdout850 2> log/10/stderr850

 850: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 850
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind850 ../src/curl -q --output log/10/curl850.out  --include --trace-ascii log/10/trace850 --trace-time pop3://127.0.0.1:33971/850 -u user:secret > log/10/stdout850 2> log/10/stderr850
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:37.310214 POP3 server listens on port IPv4/33971
 19:27:37.310353 logged pid 124839 in log/10/server/pop3_server.pid
 19:27:37.310400 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:37.910586 Running IPv4 version
 19:27:37.910675 Listening on port 33971
 19:27:37.910719 Wrote pid 124876 to log/10/server/pop3_sockfilt.pid
 19:27:37.910751 Wrote port 33971 to log/10/server/pop3_server.port
 19:27:37.915422 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 850
=== End of file server.cmd
===CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind852 ../src/curl -q --output log/23/curl852.out  --include --trace-ascii log/23/trace852 --trace-time pop3://127.0.0.1:45155/852 -l -u user:secret > log/23/stdout852 2> log/23/stderr852
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind853 ../src/curl -q --output log/21/curl853.out  --include --trace-ascii log/21/trace853 --trace-time pop3://127.0.0.1:38317/ -u user:secret > log/21/stdout853 2> log/21/stderr853
 Start of file valgrind850
 ==124997== 
 ==124997== Process terminating with default action of signal 4 (SIGILL)
 ==124997==  Illegal opcode at address 0x492B75F
 ==124997==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==124997==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==124997==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==124997==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==124997==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==124997==    by 0x49908EB: curl_version_info (version.c:600)
 ==124997==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==124997==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==124997==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==124997==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind850
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/13/server/pop3_server.pid" --logfile "log/13/pop3_server.log" --logdir "log/13" --portfile "log/13/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 34899 (log/13/server/pop3_server.port)
RUN: POP3 server is PID 124858 port 34899
* pid pop3 => 124858 124858
test 0851 [POP3 LIST one message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind851 ../src/curl -q --output log/13/curl851.out  --include --trace-ascii log/13/trace851 --trace-time pop3://127.0.0.1:34899/851 -l -u user:secret > log/13/stdout851 2> log/13/stderr851

 851: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 851
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind851 ../src/curl -q --output log/13/curl851.out  --include --trace-ascii log/13/trace851 --trace-time pop3://127.0.0.1:34899/851 -l -u user:secret > log/13/stdout851 2> log/13/stderr851
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:37.340358 POP3 server listens on port IPv4/34899
 19:27:37.340470 logged pid 124858 in log/13/server/pop3_server.pid
 19:27:37.340521 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:37.946644 Running IPv4 version
 19:27:37.946751 Listening on port 34899
 19:27:37.946803 Wrote pid 124898 to log/13/server/pop3_sockfilt.pid
 19:27:37.946839 Wrote port 34899 to log/13/server/pop3_server.port
 19:27:37.947009 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 # include the '.\r\n' 3-byte trailer to end the transfer properly
 REPLY LIST +OK 851 100\r\n.
 Testnum 851
=== End of file server.cmd
=== Start of file valgrind851
 ==125004== 
 ==125004== Process terminating with default action of signal 4 (SIGILL)
 ==125004==  Illegal opcode at address 0x492B75F
 ==125004==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125004==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125004==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125004==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125004==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125004==    by 0x49908EB: curl_version_info (version.c:600)
 ==125004==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125004==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125004==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125004==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind851
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/23/server/pop3_server.pid" --logfile "log/23/pop3_server.log" --logdir "log/23" --portfile "log/23/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45155 (log/23/server/pop3_server.port)
RUN: POP3 server is PID 124910 port 45155
* pid pop3 => 124910 124910
test 0852 [POP3 LIST invalid message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind852 ../src/curl -q --output log/23/curl852.out  --include --trace-ascii log/23/trace852 --trace-time pop3://127.0.0.1:45155/852 -l -u user:secret > log/23/stdout852 2> log/23/stderr852

 852: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 852
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind852 ../src/curl -q --output log/23/curl852.out  --include --trace-ascii log/23/trace852 --trace-time pop3://127.0.0.1:45155/852 -l -u user:secret > log/23/stdout852 2> log/23/stderr852
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:37.443638 POP3 server listens on port IPv4/45155
 19:27:37.443761 logged pid 124910 in log/23/server/pop3_server.pid
 19:27:37.443809 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:37.049887 Running IPv4 version
 19:27:37.050012 Listening on port 45155
 19:27:37.050060 Wrote pid 124923 to log/23/server/pop3_sockfilt.pid
 19:27:37.050096 Wrote port 45155 to log/23/server/pop3_server.port
 19:27:37.050273 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 REPLY LIST -ERR no such message
 Testnum 852
=== End of file server.cmd
=== Start of file valgrind852
 ==125052== 
 ==125052== Process terminating with default action of signal 4 (SIGILL)
 ==125052==  Illegal opcode at address 0x492B75F
 ==125052==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125052==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125052==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125052==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125052==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125052==    by 0x49908EB: curl_version_info (version.c:600)
 ==125052==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125052==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125052==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125052==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind852
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/21/server/pop3_server.pid" --logfile "log/21/pop3_server.log" --logdir "log/21" --portfile "log/21/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 38317 (log/21/server/pop3_server.port)
RUN: POP3 server is PID 124951 port 38317
* pid pop3 => 124951 124951
test 0853 [POP3 LIST messages from *SLOW* server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind853 ../src/curl -q --output log/21/curl853.out  --include --trace-ascii log/21/trace853 --trace-time pop3://127.0.0.1:38317/ -u user:secret > log/21/stdout853 2> log/21/stderr853

 853: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 853
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind853 ../src/curl -q --output log/21/curl853.out  --include --trace-ascii log/21/trace853 --trace-time pop3://127.0.0.1:38317/ -u user:sCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind854 ../src/curl -q --output log/4/curl854.out  --include --trace-ascii log/4/trace854 --trace-time pop3://127.0.0.1:45189/ -u user:secret > log/4/stdout854 2> log/4/stderr854
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind855 ../src/curl -q --output log/20/curl855.out  --include --trace-ascii log/20/trace855 --trace-time pop3://127.0.0.1:34029/855 -u user:secret > log/20/stdout855 2> log/20/stderr855
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind856 ../src/curl -q --output log/3/curl856.out  --include --trace-ascii log/3/trace856 --trace-time pop3://127.0.0.1:35177/856 -u user:wrong > log/3/stdout856 2> log/3/stderr856
ecret > log/21/stdout853 2> log/21/stderr853
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:37.655245 POP3 server listens on port IPv4/38317
 19:27:37.655360 logged pid 124951 in log/21/server/pop3_server.pid
 19:27:37.655410 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:37.261381 Running IPv4 version
 19:27:37.261472 Listening on port 38317
 19:27:37.261806 Wrote pid 124954 to log/21/server/pop3_sockfilt.pid
 19:27:37.261847 Wrote port 38317 to log/21/server/pop3_server.port
 19:27:37.261867 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 SLOWDOWN
 Testnum 853
=== End of file server.cmd
=== Start of file valgrind853
 ==125149== 
 ==125149== Process terminating with default action of signal 4 (SIGILL)
 ==125149==  Illegal opcode at address 0x492B75F
 ==125149==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125149==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125149==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125149==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125149==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125149==    by 0x49908EB: curl_version_info (version.c:600)
 ==125149==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125149==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125149==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125149==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind853
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/4/server/pop3_server.pid" --logfile "log/4/pop3_server.log" --logdir "log/4" --portfile "log/4/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45189 (log/4/server/pop3_server.port)
RUN: POP3 server is PID 124955 port 45189
* pid pop3 => 124955 124955
test 0854 [POP3 LIST no messages available]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind854 ../src/curl -q --output log/4/curl854.out  --include --trace-ascii log/4/trace854 --trace-time pop3://127.0.0.1:45189/ -u user:secret > log/4/stdout854 2> log/4/stderr854

 854: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 854
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind854 ../src/curl -q --output log/4/curl854.out  --include --trace-ascii log/4/trace854 --trace-time pop3://127.0.0.1:45189/ -u user:secret > log/4/stdout854 2> log/4/stderr854
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:37.707762 POP3 server listens on port IPv4/45189
 19:27:37.707882 logged pid 124955 in log/4/server/pop3_server.pid
 19:27:37.707931 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:37.313977 Running IPv4 version
 19:27:37.314096 Listening on port 45189
 19:27:37.314144 Wrote pid 124961 to log/4/server/pop3_sockfilt.pid
 19:27:37.314183 Wrote port 45189 to log/4/server/pop3_server.port
 19:27:37.314361 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 REPLY LIST +OK but no messages\r\n.
 Testnum 854
=== End of file server.cmd
=== Start of file valgrind854
 ==125179== 
 ==125179== Process terminating with default action of signal 4 (SIGILL)
 ==125179==  Illegal opcode at address 0x492B75F
 ==125179==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125179==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125179==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125179==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125179==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125179==    by 0x49908EB: curl_version_info (version.c:600)
 ==125179==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125179==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125179==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125179==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind854
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/20/server/pop3_server.pid" --logfile "log/20/pop3_server.log" --logdir "log/20" --portfile "log/20/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 34029 (log/20/server/pop3_server.port)
RUN: POP3 server is PID 124956 port 34029
* pid pop3 => 124956 124956
test 0855 [POP3 RETR invalid message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind855 ../src/curl -q --output log/20/curl855.out  --include --trace-ascii log/20/trace855 --trace-time pop3://127.0.0.1:34029/855 -u user:secret > log/20/stdout855 2> log/20/stderr855

 855: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 855
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind855 ../src/curl -q --output log/20/curl855.out  --include --trace-ascii log/20/trace855 --trace-time pop3://127.0.0.1:34029/855 -u user:secret > log/20/stdout855 2> log/20/stderr855
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:37.755458 POP3 server listens on port IPv4/34029
 19:27:37.755620 logged pid 124956 in log/20/server/pop3_server.pid
 19:27:37.755679 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:37.353305 Running IPv4 version
 19:27:37.353415 Listening on port 34029
 19:27:37.353459 Wrote pid 124963 to log/20/server/pop3_sockfilt.pid
 19:27:37.353508 Wrote port 34029 to log/20/server/pop3_server.port
 19:27:37.358698 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 REPLY RETR -ERR no such message
 Testnum 855
=== End of file server.cmd
=== Start of file valgrind855
 ==125182== 
 ==125182== Process terminating with default action of signal 4 (SIGILL)
 ==125182==  Illegal opcode at address 0x492B75F
 ==125182==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125182==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125182==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125182==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125182==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125182==    by 0x49908EB: curl_version_info (version.c:600)
 ==125182==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125182==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125182==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125182==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind855
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/3/server/pop3_server.pid" --logfile "log/3/pop3_server.log" --logdir "log/3" --portfile "log/3/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 35177 (log/3/server/pop3_server.port)
RUN: POP3 server is PID 124988 port 35177
* pid pop3 => 124988 124988
test 0856 [POP3 invalid login]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind856 ../src/curl -q --output log/3/curl856.out  --include --trace-ascii log/3/trace856 --trace-time pop3://127.0.0.1:35177/856 -u uCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind860 ../src/curl -q --output log/22/curl860.out  --include --trace-ascii log/22/trace860 --trace-time pop3://127.0.0.1:32871 -u user:secret -X NOOP -I > log/22/stdout860 2> log/22/stderr860
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind859 ../src/curl -q --output log/5/curl859.out  --include --trace-ascii log/5/trace859 --trace-time pop3://127.0.0.1:39845 -u user:secret -X STAT -I > log/5/stdout859 2> log/5/stderr859
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind857 ../src/curl -q --output log/24/curl857.out  --include --trace-ascii log/24/trace857 --trace-time pop3://127.0.0.1:41525/857 -u user:secret > log/24/stdout857 2> log/24/stderr857
ser:wrong > log/3/stdout856 2> log/3/stderr856

 856: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 856
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind856 ../src/curl -q --output log/3/curl856.out  --include --trace-ascii log/3/trace856 --trace-time pop3://127.0.0.1:35177/856 -u user:wrong > log/3/stdout856 2> log/3/stderr856
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.245459 POP3 server listens on port IPv4/35177
 19:27:38.245623 logged pid 124988 in log/3/server/pop3_server.pid
 19:27:38.245680 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.843272 Running IPv4 version
 19:27:38.843390 Listening on port 35177
 19:27:38.843444 Wrote pid 124992 to log/3/server/pop3_sockfilt.pid
 19:27:38.843484 Wrote port 35177 to log/3/server/pop3_server.port
 19:27:38.848654 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 REPLY PASS -ERR Login failure
 Testnum 856
=== End of file server.cmd
=== Start of file valgrind856
 ==125332== 
 ==125332== Process terminating with default action of signal 4 (SIGILL)
 ==125332==  Illegal opcode at address 0x492B75F
 ==125332==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125332==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125332==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125332==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125332==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125332==    by 0x49908EB: curl_version_info (version.c:600)
 ==125332==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125332==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125332==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125332==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind856
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/22/server/pop3_server.pid" --logfile "log/22/pop3_server.log" --logdir "log/22" --portfile "log/22/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 32871 (log/22/server/pop3_server.port)
RUN: POP3 server is PID 125142 port 32871
* pid pop3 => 125142 125142
test 0860 [POP3 NOOP (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind860 ../src/curl -q --output log/22/curl860.out  --include --trace-ascii log/22/trace860 --trace-time pop3://127.0.0.1:32871 -u user:secret -X NOOP -I > log/22/stdout860 2> log/22/stderr860

 860: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 860
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind860 ../src/curl -q --output log/22/curl860.out  --include --trace-ascii log/22/trace860 --trace-time pop3://127.0.0.1:32871 -u user:secret -X NOOP -I > log/22/stdout860 2> log/22/stderr860
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.637226 POP3 server listens on port IPv4/32871
 19:27:38.637356 logged pid 125142 in log/22/server/pop3_server.pid
 19:27:38.637407 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.243324 Running IPv4 version
 19:27:38.243437 Listening on port 32871
 19:27:38.243487 Wrote pid 125165 to log/22/server/pop3_sockfilt.pid
 19:27:38.243521 Wrote port 32871 to log/22/server/pop3_server.port
 19:27:38.243714 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 860
=== End of file server.cmd
=== Start of file valgrind860
 ==125491== 
 ==125491== Process terminating with default action of signal 4 (SIGILL)
 ==125491==  Illegal opcode at address 0x492B75F
 ==125491==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125491==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125491==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125491==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125491==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125491==    by 0x49908EB: curl_version_info (version.c:600)
 ==125491==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125491==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind860
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/5/server/pop3_server.pid" --logfile "log/5/pop3_server.log" --logdir "log/5" --portfile "log/5/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 39845 (log/5/server/pop3_server.port)
RUN: POP3 server is PID 125086 port 39845
* pid pop3 => 125086 125086
test 0859 [POP3 STAT (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind859 ../src/curl -q --output log/5/curl859.out  --include --trace-ascii log/5/trace859 --trace-time pop3://127.0.0.1:39845 -u user:secret -X STAT -I > log/5/stdout859 2> log/5/stderr859

 859: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 859
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind859 ../src/curl -q --output log/5/curl859.out  --include --trace-ascii log/5/trace859 --trace-time pop3://127.0.0.1:39845 -u user:secret -X STAT -I > log/5/stdout859 2> log/5/stderr859
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.516812 POP3 server listens on port IPv4/39845
 19:27:38.516907 logged pid 125086 in log/5/server/pop3_server.pid
 19:27:38.516946 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.123022 Running IPv4 version
 19:27:38.123119 Listening on port 39845
 19:27:38.123158 Wrote pid 125122 to log/5/server/pop3_sockfilt.pid
 19:27:38.123188 Wrote port 39845 to log/5/server/pop3_server.port
 19:27:38.123339 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 859
=== End of file server.cmd
=== Start of file valgrind859
 ==125396== 
 ==125396== Process terminating with default action of signal 4 (SIGILL)
 ==125396==  Illegal opcode at address 0x492B75F
 ==125396==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125396==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125396==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125396==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125396==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125396==    by 0x49908EB: curl_version_info (version.c:600)
 ==125396==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125396==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125396==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125396==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind859
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/24/server/pop3_server.pid" --logfile "log/24/pop3_server.log" --logdir "log/24" --portfile "log/24/server/pop3_seCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind858 ../src/curl -q --output log/15/curl858.out  --include --trace-ascii log/15/trace858 --trace-time pop3://127.0.0.1:34733/858 -u user:secret -X DELE -I > log/15/stdout858 2> log/15/stderr858
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind864 ../src/curl -q --output log/1/curl864.out  --include --trace-ascii log/1/trace864 --trace-time pop3://127.0.0.1:41595/864 -u user:secret > log/1/stdout864 2> log/1/stderr864
rver.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41525 (log/24/server/pop3_server.port)
RUN: POP3 server is PID 125054 port 41525
* pid pop3 => 125054 125054
test 0857 [POP3 RETR message with dot-prefixed line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind857 ../src/curl -q --output log/24/curl857.out  --include --trace-ascii log/24/trace857 --trace-time pop3://127.0.0.1:41525/857 -u user:secret > log/24/stdout857 2> log/24/stderr857

 857: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 857
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind857 ../src/curl -q --output log/24/curl857.out  --include --trace-ascii log/24/trace857 --trace-time pop3://127.0.0.1:41525/857 -u user:secret > log/24/stdout857 2> log/24/stderr857
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.512323 POP3 server listens on port IPv4/41525
 19:27:38.512447 logged pid 125054 in log/24/server/pop3_server.pid
 19:27:38.512498 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.116378 Running IPv4 version
 19:27:38.116464 Listening on port 41525
 19:27:38.116506 Wrote pid 125117 to log/24/server/pop3_sockfilt.pid
 19:27:38.116538 Wrote port 41525 to log/24/server/pop3_server.port
 19:27:38.118799 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 857
=== End of file server.cmd
=== Start of file valgrind857
 ==125387== 
 ==125387== Process terminating with default action of signal 4 (SIGILL)
 ==125387==  Illegal opcode at address 0x492B75F
 ==125387==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125387==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125387==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125387==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125387==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125387==    by 0x49908EB: curl_version_info (version.c:600)
 ==125387==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125387==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125387==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125387==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind857
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/15/server/pop3_server.pid" --logfile "log/15/pop3_server.log" --logdir "log/15" --portfile "log/15/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 34733 (log/15/server/pop3_server.port)
RUN: POP3 server is PID 125072 port 34733
* pid pop3 => 125072 125072
test 0858 [POP3 DELE message (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind858 ../src/curl -q --output log/15/curl858.out  --include --trace-ascii log/15/trace858 --trace-time pop3://127.0.0.1:34733/858 -u user:secret -X DELE -I > log/15/stdout858 2> log/15/stderr858

 858: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 858
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind858 ../src/curl -q --output log/15/curl858.out  --include --trace-ascii log/15/trace858 --trace-time pop3://127.0.0.1:34733/858 -u user:secret -X DELE -I > log/15/stdout858 2> log/15/stderr858
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.505642 POP3 server listens on port IPv4/34733
 19:27:38.505769 logged pid 125072 in log/15/server/pop3_server.pid
 19:27:38.505824 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.106378 Running IPv4 version
 19:27:38.106469 Listening on port 34733
 19:27:38.106512 Wrote pid 125109 to log/15/server/pop3_sockfilt.pid
 19:27:38.106542 Wrote port 34733 to log/15/server/pop3_server.port
 19:27:38.111956 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 858
=== End of file server.cmd
=== Start of file valgrind858
 ==125390== 
 ==125390== Process terminating with default action of signal 4 (SIGILL)
 ==125390==  Illegal opcode at address 0x492B75F
 ==125390==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125390==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125390==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125390==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125390==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125390==    by 0x49908EB: curl_version_info (version.c:600)
 ==125390==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125390==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125390==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125390==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind858
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/1/server/pop3_server.pid" --logfile "log/1/pop3_server.log" --logdir "log/1" --portfile "log/1/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41595 (log/1/server/pop3_server.port)
RUN: POP3 server is PID 125278 port 41595
* pid pop3 => 125278 125278
test 0864 [POP3 APOP authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind864 ../src/curl -q --output log/1/curl864.out  --include --trace-ascii log/1/trace864 --trace-time pop3://127.0.0.1:41595/864 -u user:secret > log/1/stdout864 2> log/1/stderr864

 864: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 864
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind864 ../src/curl -q --output log/1/curl864.out  --include --trace-ascii log/1/trace864 --trace-time pop3://127.0.0.1:41595/864 -u user:secret > log/1/stdout864 2> log/1/stderr864
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.899267 POP3 server listens on port IPv4/41595
 19:27:38.899385 logged pid 125278 in log/1/server/pop3_server.pid
 19:27:38.899434 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.499966 Running IPv4 version
 19:27:38.500068 Listening on port 41595
 19:27:38.500107 Wrote pid 125307 to log/1/server/pop3_sockfilt.pid
 19:27:38.500137 Wrote port 41595 to log/1/server/pop3_server.port
 19:27:38.505686 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 CAPA APOP
 REPLY welcome +OK curl POP3 server ready to serve <1972.987654321\@curl>
 Testnum 864
=== End of file server.cmd
=== Start of file valgrind864
 ==125633== 
 ==125633== Process terminating with default action of signal 4 (SIGILL)
 ==125633==  Illegal opcode at address 0x492B75F
 ==125633==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125633==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125633==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125633==    by 0x49A9B9E: CCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind862 ../src/curl -q --output log/9/curl862.out  --include --trace-ascii log/9/trace862 --trace-time pop3://127.0.0.1:33941 -u user:secret -X 'TOP 862 0' > log/9/stdout862 2> log/9/stderr862
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind861 ../src/curl -q --output log/2/curl861.out  --include --trace-ascii log/2/trace861 --trace-time pop3://127.0.0.1:45083 -u user:secret -X UIDL > log/2/stdout861 2> log/2/stderr861
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind863 ../src/curl -q --output log/16/curl863.out  --include --trace-ascii log/16/trace863 --trace-time pop3://127.0.0.1:43031 -u user:secret -X RSET -I > log/16/stdout863 2> log/16/stderr863
url_ossl_version (openssl.c:5473)
 ==125633==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125633==    by 0x49908EB: curl_version_info (version.c:600)
 ==125633==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125633==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind864
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/9/server/pop3_server.pid" --logfile "log/9/pop3_server.log" --logdir "log/9" --portfile "log/9/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33941 (log/9/server/pop3_server.port)
RUN: POP3 server is PID 125253 port 33941
* pid pop3 => 125253 125253
test 0862 [POP3 retrieve message header (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind862 ../src/curl -q --output log/9/curl862.out  --include --trace-ascii log/9/trace862 --trace-time pop3://127.0.0.1:33941 -u user:secret -X 'TOP 862 0' > log/9/stdout862 2> log/9/stderr862

 862: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 862
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind862 ../src/curl -q --output log/9/curl862.out  --include --trace-ascii log/9/trace862 --trace-time pop3://127.0.0.1:33941 -u user:secret -X 'TOP 862 0' > log/9/stdout862 2> log/9/stderr862
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.835446 POP3 server listens on port IPv4/33941
 19:27:38.835570 logged pid 125253 in log/9/server/pop3_server.pid
 19:27:38.835621 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.433325 Running IPv4 version
 19:27:38.433425 Listening on port 33941
 19:27:38.433472 Wrote pid 125271 to log/9/server/pop3_sockfilt.pid
 19:27:38.433509 Wrote port 33941 to log/9/server/pop3_server.port
 19:27:38.438605 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 CAPA TOP USER
 Testnum 862
=== End of file server.cmd
=== Start of file valgrind862
 ==125590== 
 ==125590== Process terminating with default action of signal 4 (SIGILL)
 ==125590==  Illegal opcode at address 0x492B75F
 ==125590==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125590==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125590==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125590==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125590==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125590==    by 0x49908EB: curl_version_info (version.c:600)
 ==125590==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125590==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125590==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125590==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind862
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/2/server/pop3_server.pid" --logfile "log/2/pop3_server.log" --logdir "log/2" --portfile "log/2/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45083 (log/2/server/pop3_server.port)
RUN: POP3 server is PID 125244 port 45083
* pid pop3 => 125244 125244
test 0861 [POP3 UIDL (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind861 ../src/curl -q --output log/2/curl861.out  --include --trace-ascii log/2/trace861 --trace-time pop3://127.0.0.1:45083 -u user:secret -X UIDL > log/2/stdout861 2> log/2/stderr861

 861: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 861
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind861 ../src/curl -q --output log/2/curl861.out  --include --trace-ascii log/2/trace861 --trace-time pop3://127.0.0.1:45083 -u user:secret -X UIDL > log/2/stdout861 2> log/2/stderr861
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.842104 POP3 server listens on port IPv4/45083
 19:27:38.842235 logged pid 125244 in log/2/server/pop3_server.pid
 19:27:38.842290 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.438404 Running IPv4 version
 19:27:38.438496 Listening on port 45083
 19:27:38.438538 Wrote pid 125277 to log/2/server/pop3_sockfilt.pid
 19:27:38.438589 Wrote port 45083 to log/2/server/pop3_server.port
 19:27:38.445275 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 CAPA UIDL USER
 Testnum 861
=== End of file server.cmd
=== Start of file valgrind861
 ==125581== 
 ==125581== Process terminating with default action of signal 4 (SIGILL)
 ==125581==  Illegal opcode at address 0x492B75F
 ==125581==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125581==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125581==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125581==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125581==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125581==    by 0x49908EB: curl_version_info (version.c:600)
 ==125581==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125581==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125581==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125581==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind861
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/16/server/pop3_server.pid" --logfile "log/16/pop3_server.log" --logdir "log/16" --portfile "log/16/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 43031 (log/16/server/pop3_server.port)
RUN: POP3 server is PID 125269 port 43031
* pid pop3 => 125269 125269
test 0863 [POP3 RSET (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind863 ../src/curl -q --output log/16/curl863.out  --include --trace-ascii log/16/trace863 --trace-time pop3://127.0.0.1:43031 -u user:secret -X RSET -I > log/16/stdout863 2> log/16/stderr863

 863: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 863
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind863 ../src/curl -q --output log/16/curl863.out  --include --trace-ascii log/16/trace863 --trace-time pop3://127.0.0.1:43031 -u user:secret -X RSET -I > log/16/stdout863 2> log/16/stderr863
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.875638 POP3 server listens on port IPv4/43031
 19:27:38.875768 logged pid 125269 in log/16/server/pop3_server.pid
 19:27:38.875816 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.479474 Running IPv4 version
 19:27:38.479589 Listening on port 43031
 19:27:38.479636 Wrote pid 125300 to log/16/server/pop3_socCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind865 ../src/curl -q --output log/7/curl865.out  --include --trace-ascii log/7/trace865 --trace-time pop3://127.0.0.1:42105/865 -u user:secret > log/7/stdout865 2> log/7/stderr865
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind867 ../src/curl -q --output log/18/curl867.out  --include --trace-ascii log/18/trace867 --trace-time pop3://127.0.0.1:41229/867 -u user:secret > log/18/stdout867 2> log/18/stderr867
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind874 ../src/curl -q --output log/23/curl874.out  --include --trace-ascii log/23/trace874 --trace-time pop3://127.0.0.1:45155/874 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/23/stdout874 2> log/23/stderr874
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind870 ../src/curl -q --output log/14/curl870.out  --include --trace-ascii log/14/trace870 --trace-time pop3://127.0.0.1:44619/870 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/14/stdout870 2> log/14/stderr870
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind866 ../src/curl -q --output log/17/curl866.out  --include --trace-ascii log/17/trace866 --trace-time pop3://127.0.0.1:36461/866 -u user:secret > log/17/stdout866 2> log/17/stderr866
kfilt.pid
 19:27:38.479669 Wrote port 43031 to log/16/server/pop3_server.port
 19:27:38.482078 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 863
=== End of file server.cmd
=== Start of file valgrind863
 ==125617== 
 ==125617== Process terminating with default action of signal 4 (SIGILL)
 ==125617==  Illegal opcode at address 0x492B75F
 ==125617==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125617==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125617==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125617==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125617==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125617==    by 0x49908EB: curl_version_info (version.c:600)
 ==125617==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125617==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125617==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125617==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind863
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/7/server/pop3_server.pid" --logfile "log/7/pop3_server.log" --logdir "log/7" --portfile "log/7/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 42105 (log/7/server/pop3_server.port)
RUN: POP3 server is PID 125292 port 42105
* pid pop3 => 125292 125292
test 0865 [POP3 plain authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind865 ../src/curl -q --output log/7/curl865.out  --include --trace-ascii log/7/trace865 --trace-time pop3://127.0.0.1:42105/865 -u user:secret > log/7/stdout865 2> log/7/stderr865

 865: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 865
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind865 ../src/curl -q --output log/7/curl865.out  --include --trace-ascii log/7/trace865 --trace-time pop3://127.0.0.1:42105/865 -u user:secret > log/7/stdout865 2> log/7/stderr865
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:38.901158 POP3 server listens on port IPv4/42105
 19:27:38.901284 logged pid 125292 in log/7/server/pop3_server.pid
 19:27:38.901342 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:38.506267 Running IPv4 version
 19:27:38.507458 Listening on port 42105
 19:27:38.507525 Wrote pid 125310 to log/7/server/pop3_sockfilt.pid
 19:27:38.507604 Wrote port 42105 to log/7/server/pop3_server.port
 19:27:38.507628 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH +
 REPLY AHVzZXIAc2VjcmV0 +OK Login successful
 Testnum 865
=== End of file server.cmd
=== Start of file valgrind865
 ==125659== 
 ==125659== Process terminating with default action of signal 4 (SIGILL)
 ==125659==  Illegal opcode at address 0x492B75F
 ==125659==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125659==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125659==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125659==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125659==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125659==    by 0x49908EB: curl_version_info (version.c:600)
 ==125659==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125659==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind865
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/18/server/pop3_server.pid" --logfile "log/18/pop3_server.log" --logdir "log/18" --portfile "log/18/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41229 (log/18/server/pop3_server.port)
RUN: POP3 server is PID 125319 port 41229
* pid pop3 => 125319 125319
test 0867 [POP3 CRAM-MD5 authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind867 ../src/curl -q --output log/18/curl867.out  --include --trace-ascii log/18/trace867 --trace-time pop3://127.0.0.1:41229/867 -u user:secret > log/18/stdout867 2> log/18/stderr867

 867: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 867
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind867 ../src/curl -q --output log/18/curl867.out  --include --trace-ascii log/18/trace867 --trace-time pop3://127.0.0.1:41229/867 -u user:secret > log/18/stdout867 2> log/18/stderr867
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:39.075602 POP3 server listens on port IPv4/41229
 19:27:39.075725 logged pid 125319 in log/18/server/pop3_server.pid
 19:27:39.075777 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:39.679494 Running IPv4 version
 19:27:39.679581 Listening on port 41229
 19:27:39.679619 Wrote pid 125323 to log/18/server/pop3_sockfilt.pid
 19:27:39.679646 Wrote port 41229 to log/18/server/pop3_server.port
 19:27:39.682030 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 REPLY AUTH + PDE5NzIuOTg3NjU0MzIxQGN1cmw+
 REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== +OK Login successful
 Testnum 867
=== End of file server.cmd
=== Start of file valgrind867
 ==125841== 
 ==125841== Process terminating with default action of signal 4 (SIGILL)
 ==125841==  Illegal opcode at address 0x492B75F
 ==125841==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125841==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125841==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125841==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125841==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125841==    by 0x49908EB: curl_version_info (version.c:600)
 ==125841==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125841==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125841==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125841==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind867
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/14/server/pop3_server.pid" --logfile "log/14/pop3_server.log" --logdir "log/14" --portfile "log/14/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44619 (log/14/server/pop3_server.port)
RUN: POP3 server is PID 125320 port 44619
* pid pop3 => 125320 125320
test 0870 [POP3 OAuth 2.0 (XOAUTH2) authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind870 ../src/curl -q --output log/14/curl870.out  --include --trace-ascii log/14/trace870 --trace-time pop3://127.0.0.1:44619/870 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/14/stdout870 2> log/14/stderr870

 870: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 870
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind870 ../src/curl -q --output log/14/curl870.out  --include --trace-ascii log/14/trace870 --trace-time pop3://127.0.0.1:44619/870 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/14/stdout870 2> log/14/stderr870
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:39.068250 POP3 server listens on port IPv4/44619
 19:27:39.068355 logged pid 125320 in log/14/server/pop3_server.pid
 19:27:39.068403 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:39.674356 Running IPv4 version
 19:27:39.674472 Listening on port 44619
 19:27:39.674517 Wrote pid 125322 to log/14/server/pop3_sockfilt.pid
 19:27:39.674551 Wrote port 44619 to log/14/server/pop3_server.port
 19:27:39.674702 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH XOAUTH2
 REPLY AUTH +
 REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB +OK Login successful
 Testnum 870
=== End of file server.cmd
=== Start of file valgrind870
 ==125848== 
 ==125848== Process terminating with default action of signal 4 (SIGILL)
 ==125848==  Illegal opcode at address 0x492B75F
 ==125848==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125848==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125848==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125848==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125848==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125848==    by 0x49908EB: curl_version_info (version.c:600)
 ==125848==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125848==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125848==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125848==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind870
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/17/server/pop3_server.pid" --logfile "log/17/pop3_server.log" --logdir "log/17" --portfile "log/17/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36461 (log/17/server/pop3_server.port)
RUN: POP3 server is PID 125317 port 36461
* pid pop3 => 125317 125317
test 0866 [POP3 login authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind866 ../src/curl -q --output log/17/curl866.out  --include --trace-ascii log/17/trace866 --trace-time pop3://127.0.0.1:36461/866 -u user:secret > log/17/stdout866 2> log/17/stderr866

 866: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 866
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind866 ../src/curl -q --output log/17/curl866.out  --include --trace-ascii log/17/trace866 --trace-time pop3://127.0.0.1:36461/866 -u user:secret > log/17/stdout866 2> log/17/stderr866
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:39.055453 POP3 server listens on port IPv4/36461
 19:27:39.055596 logged pid 125317 in log/17/server/pop3_server.pid
 19:27:39.055654 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:39.652722 Running IPv4 version
 19:27:39.652829 Listening on port 36461
 19:27:39.652876 Wrote pid 125321 to log/17/server/pop3_sockfilt.pid
 19:27:39.652921 Wrote port 36461 to log/17/server/pop3_server.port
 19:27:39.658550 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH LOGIN
 REPLY AUTH + VXNlcm5hbWU6
 REPLY dXNlcg== + UGFzc3dvcmQ6
 REPLY c2VjcmV0 +OK Login successful
 Testnum 866
=== End of file server.cmd
=== Start of file valgrind866
 ==125792== 
 ==125792== Process terminating with default action of signal 4 (SIGILL)
 ==125792==  Illegal opcode at address 0x492B75F
 ==125792==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125792==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125792==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125792==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125792==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125792==    by 0x49908EB: curl_version_info (version.c:600)
 ==125792==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125792==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125792==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125792==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind866
test 0874 [POP3 OAuth 2.0 (XOAUTH2) authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind874 ../src/curl -q --output log/23/curl874.out  --include --trace-ascii log/23/trace874 --trace-time pop3://127.0.0.1:45155/874 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/23/stdout874 2> log/23/stderr874

 874: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 874
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind874 ../src/curl -q --output log/23/curl874.out  --include --trace-ascii log/23/trace874 --trace-time pop3://127.0.0.1:45155/874 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/23/stdout874 2> log/23/stderr874
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:40.072165 ====> Client connect
 19:27:40.072413 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:40.072817 < "CAPA"
 19:27:40.072875 > "-ERR Unrecognized command[CR][LF]"
 19:27:40.073072 < "RETR verifiedserver"
 19:27:40.073102 return proof we are we
 19:27:40.073123 > "+OK Mail transfer starts[CR][LF]"
 19:27:40.073144 > "WE ROOLZ: 124910[CR][LF]"
 19:27:40.073160 > ".[CR][LF]"
 19:27:40.120545 < "QUIT"
 19:27:40.120608 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:40.121708 MAIN sockfilt said DISC
 19:27:40.121802 ====> Client disconnected
 19:27:40.121892 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:39.678466 ====> Client connect
 19:27:39.678886 Received DATA (on stdin)
 19:27:39.678905 > 164 bytes data, server => client
 19:27:39.678917 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:39.678926 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:39.678935 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:39.679064 < 6 bytes data, client => server
 19:27:39.679080 'CAPA\r\n'
 19:27:39.679331 Received DATA (on stdin)
 19:27:39.679344 > 27 bytes data, server => client
 19:27:39.679353 '-ERR Unrecognized command\r\n'
 19:27:39.679418 < 21 bytes data, client => server
 19:27:39.679427 'RETR verifiedserver\r\n'
 19:27:39.679605 Received DATA (on stdin)
 19:27:39.679615 > 26 bytes data, server => client
 19:27:39.679624 '+OK Mail transfer starts\r\n'
 19:27:39.679645 Received DATA (on stdin)
 19:27:39.679653 > 18 bytes data, server => client
 19:27:39.679662 'WE ROOLZ: 124910\r\n'
 19:27:39.679672 Received DATA (on stdin)
 19:27:39.679680 > 3 bytes data, server => client
 19:27:39.679688 '.\r\n'
 19:27:39.726782 < 6 bytes data, client => server
 19:27:39.726809 'QUIT\r\n'
 19:27:39.727055 Received DATA (on stdin)
 19:27:39.727069 > 34CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind871 ../src/curl -q --output log/10/curl871.out  --include --trace-ascii log/10/trace871 --trace-time pop3://127.0.0.1:33971/871 -u user:secret --sasl-ir > log/10/stdout871 2> log/10/stderr871
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind872 ../src/curl -q --output log/13/curl872.out  --include --trace-ascii log/13/trace872 --trace-time pop3://127.0.0.1:34899/872 -u user:secret --sasl-ir > log/13/stdout872 2> log/13/stderr872
 bytes data, server => client
 19:27:39.727079 '+OK curl POP3 server signing off\r\n'
 19:27:39.728069 ====> Client disconnect
 19:27:39.728167 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH XOAUTH2
 REPLY AUTH +OK Login successful
 Testnum 874
=== End of file server.cmd
=== Start of file valgrind874
 ==126030== 
 ==126030== Process terminating with default action of signal 4 (SIGILL)
 ==126030==  Illegal opcode at address 0x492B75F
 ==126030==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126030==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126030==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126030==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126030==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126030==    by 0x49908EB: curl_version_info (version.c:600)
 ==126030==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126030==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126030==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126030==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind874
test 0871 [POP3 plain authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind871 ../src/curl -q --output log/10/curl871.out  --include --trace-ascii log/10/trace871 --trace-time pop3://127.0.0.1:33971/871 -u user:secret --sasl-ir > log/10/stdout871 2> log/10/stderr871

 871: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 871
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind871 ../src/curl -q --output log/10/curl871.out  --include --trace-ascii log/10/trace871 --trace-time pop3://127.0.0.1:33971/871 -u user:secret --sasl-ir > log/10/stdout871 2> log/10/stderr871
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:39.960085 ====> Client connect
 19:27:39.960305 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:39.961581 < "CAPA"
 19:27:39.961641 > "-ERR Unrecognized command[CR][LF]"
 19:27:39.961857 < "RETR verifiedserver"
 19:27:39.961894 return proof we are we
 19:27:39.961986 > "+OK Mail transfer starts[CR][LF]"
 19:27:39.962081 > "WE ROOLZ: 124839[CR][LF]"
 19:27:39.962108 > ".[CR][LF]"
 19:27:40.006451 < "QUIT"
 19:27:40.006505 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:40.007737 MAIN sockfilt said DISC
 19:27:40.007788 ====> Client disconnected
 19:27:40.007859 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:40.566427 ====> Client connect
 19:27:40.566782 Received DATA (on stdin)
 19:27:40.566798 > 164 bytes data, server => client
 19:27:40.566809 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:40.566818 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:40.566828 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:40.567850 < 6 bytes data, client => server
 19:27:40.567868 'CAPA\r\n'
 19:27:40.568109 Received DATA (on stdin)
 19:27:40.568121 > 27 bytes data, server => client
 19:27:40.568130 '-ERR Unrecognized command\r\n'
 19:27:40.568195 < 21 bytes data, client => server
 19:27:40.568210 'RETR verifiedserver\r\n'
 19:27:40.568358 Received DATA (on stdin)
 19:27:40.568371 > 26 bytes data, server => client
 19:27:40.568390 '+OK Mail transfer starts\r\n'
 19:27:40.568479 Received DATA (on stdin)
 19:27:40.568492 > 18 bytes data, server => client
 19:27:40.568569 'WE ROOLZ: 124839\r\n'
 19:27:40.568586 Received DATA (on stdin)
 19:27:40.568595 > 3 bytes data, server => client
 19:27:40.568605 '.\r\n'
 19:27:40.612725 < 6 bytes data, client => server
 19:27:40.612766 'QUIT\r\n'
 19:27:40.612966 Received DATA (on stdin)
 19:27:40.612978 > 34 bytes data, server => client
 19:27:40.612988 '+OK curl POP3 server signing off\r\n'
 19:27:40.614121 ====> Client disconnect
 19:27:40.614322 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH +OK Login successful
 Testnum 871
=== End of file server.cmd
=== Start of file valgrind871
 ==125915== 
 ==125915== Process terminating with default action of signal 4 (SIGILL)
 ==125915==  Illegal opcode at address 0x492B75F
 ==125915==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125915==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125915==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125915==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125915==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125915==    by 0x49908EB: curl_version_info (version.c:600)
 ==125915==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125915==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125915==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125915==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind871
test 0872 [POP3 login authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind872 ../src/curl -q --output log/13/curl872.out  --include --trace-ascii log/13/trace872 --trace-time pop3://127.0.0.1:34899/872 -u user:secret --sasl-ir > log/13/stdout872 2> log/13/stderr872

 872: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 872
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind872 ../src/curl -q --output log/13/curl872.out  --include --trace-ascii log/13/trace872 --trace-time pop3://127.0.0.1:34899/872 -u user:secret --sasl-ir > log/13/stdout872 2> log/13/stderr872
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:39.968785 ====> Client connect
 19:27:39.968998 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:39.969313 < "CAPA"
 19:27:39.969359 > "-ERR Unrecognized command[CR][LF]"
 19:27:39.969546 < "RETR verifiedserver"
 19:27:39.969582 return proof we are we
 19:27:39.969605 > "+OK Mail transfer starts[CR][LF]"
 19:27:39.969629 > "WE ROOLZ: 124858[CR][LF]"
 19:27:39.969646 > ".[CR][LF]"
 19:27:40.015667 < "QUIT"
 19:27:40.015724 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:40.017555 MAIN sockfilt said DISC
 19:27:40.017603 ====> Client disconnected
 19:27:40.017689 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:40.575126 ====> Client connect
 19:27:40.575471 Received DATA (on stdin)
 19:27:40.575487 > 164 bytes data, server => client
 19:27:40.575499 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:40.575509 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:40.575519 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:40.575609 < 6 bytes data, client => server
 19:27:40.575622 'CAPA\r\n'
 19:27:40.575820 Received DATA (on stdin)
 19:27:40.575832 > 27 bytes data, server => client
 19:27:40.575842 '-ERR Unrecognized command\r\n'
 19:27:40.575902 < 21 bytes data, client => server
 19:27:40.575914 'RETR verifiedserver\r\n'
 19:27:40.576104 Received DATA (on stdin)
 19:27:40.576115 > 26 bytes data, server => client
 19:27:40.576125 '+OK Mail transfer starts\r\n'
 19:27:40.576147 ReCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind875 ../src/curl -q --output log/21/curl875.out  --include --trace-ascii log/21/trace875 --trace-time pop3://127.0.0.1:38317/%0d%0a/875 > log/21/stdout875 2> log/21/stderr875
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind876 ../src/curl -q --output log/4/curl876.out  --include --trace-ascii log/4/trace876 --trace-time pop3://127.0.0.1:45189/876 -u user:secret > log/4/stdout876 2> log/4/stderr876
ceived DATA (on stdin)
 19:27:40.576157 > 18 bytes data, server => client
 19:27:40.576166 'WE ROOLZ: 124858\r\n'
 19:27:40.576179 Received DATA (on stdin)
 19:27:40.576188 > 3 bytes data, server => client
 19:27:40.576197 '.\r\n'
 19:27:40.621945 < 6 bytes data, client => server
 19:27:40.621977 'QUIT\r\n'
 19:27:40.622802 Received DATA (on stdin)
 19:27:40.622825 > 34 bytes data, server => client
 19:27:40.622836 '+OK curl POP3 server signing off\r\n'
 19:27:40.623933 ====> Client disconnect
 19:27:40.624156 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH LOGIN
 REPLY AUTH + UGFzc3dvcmQ6
 REPLY c2VjcmV0 +OK Login successful
 Testnum 872
=== End of file server.cmd
=== Start of file valgrind872
 ==125905== 
 ==125905== Process terminating with default action of signal 4 (SIGILL)
 ==125905==  Illegal opcode at address 0x492B75F
 ==125905==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==125905==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==125905==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==125905==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==125905==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==125905==    by 0x49908EB: curl_version_info (version.c:600)
 ==125905==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==125905==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==125905==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==125905==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind872
test 0875 [POP3 with URL-encoded CR LF in the URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind875 ../src/curl -q --output log/21/curl875.out  --include --trace-ascii log/21/trace875 --trace-time pop3://127.0.0.1:38317/%0d%0a/875 > log/21/stdout875 2> log/21/stderr875

curl returned 132, when expecting 3
 875: exit FAILED
== Contents of files in the log/21/ directory after test 875
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind875 ../src/curl -q --output log/21/curl875.out  --include --trace-ascii log/21/trace875 --trace-time pop3://127.0.0.1:38317/%0d%0a/875 > log/21/stdout875 2> log/21/stderr875
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:40.378789 ====> Client connect
 19:27:40.379156 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:40.382242 < "CAPA"
 19:27:40.382291 > "-ERR Unrecognized command[CR][LF]"
 19:27:40.382472 < "RETR verifiedserver"
 19:27:40.382505 return proof we are we
 19:27:40.382528 > "+OK Mail transfer starts[CR][LF]"
 19:27:40.382552 > "WE ROOLZ: 124951[CR][LF]"
 19:27:40.382569 > ".[CR][LF]"
 19:27:40.430680 < "QUIT"
 19:27:40.430746 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:40.431916 MAIN sockfilt said DISC
 19:27:40.431948 ====> Client disconnected
 19:27:40.432236 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:39.985069 ====> Client connect
 19:27:39.985431 Received DATA (on stdin)
 19:27:39.985453 > 164 bytes data, server => client
 19:27:39.985464 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:39.985474 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:39.985484 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:39.988464 < 6 bytes data, client => server
 19:27:39.988483 'CAPA\r\n'
 19:27:39.988704 Received DATA (on stdin)
 19:27:39.988716 > 27 bytes data, server => client
 19:27:39.988726 '-ERR Unrecognized command\r\n'
 19:27:39.988785 < 21 bytes data, client => server
 19:27:39.988797 'RETR verifiedserver\r\n'
 19:27:39.988978 Received DATA (on stdin)
 19:27:39.988989 > 26 bytes data, server => client
 19:27:39.988999 '+OK Mail transfer starts\r\n'
 19:27:39.989022 Received DATA (on stdin)
 19:27:39.989034 > 18 bytes data, server => client
 19:27:39.989044 'WE ROOLZ: 124951\r\n'
 19:27:39.989056 Received DATA (on stdin)
 19:27:39.989064 > 3 bytes data, server => client
 19:27:39.989073 '.\r\n'
 19:27:40.036887 < 6 bytes data, client => server
 19:27:40.036918 'QUIT\r\n'
 19:27:40.037154 Received DATA (on stdin)
 19:27:40.037166 > 34 bytes data, server => client
 19:27:40.037176 '+OK curl POP3 server signing off\r\n'
 19:27:40.038261 ====> Client disconnect
 19:27:40.038391 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 875
=== End of file server.cmd
=== Start of file valgrind875
 ==126226== 
 ==126226== Process terminating with default action of signal 4 (SIGILL)
 ==126226==  Illegal opcode at address 0x492B75F
 ==126226==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126226==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126226==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126226==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126226==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126226==    by 0x49908EB: curl_version_info (version.c:600)
 ==126226==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126226==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126226==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126226==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind875
test 0876 [POP3 CRAM-MD5 graceful cancellation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind876 ../src/curl -q --output log/4/curl876.out  --include --trace-ascii log/4/trace876 --trace-time pop3://127.0.0.1:45189/876 -u user:secret > log/4/stdout876 2> log/4/stderr876

 876: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 876
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind876 ../src/curl -q --output log/4/curl876.out  --include --trace-ascii log/4/trace876 --trace-time pop3://127.0.0.1:45189/876 -u user:secret > log/4/stdout876 2> log/4/stderr876
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:40.471342 ====> Client connect
 19:27:40.471553 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:40.471862 < "CAPA"
 19:27:40.472707 > "-ERR Unrecognized command[CR][LF]"
 19:27:40.472807 < "RETR verifiedserver"
 19:27:40.472843 return proof we are we
 19:27:40.472865 > "+OK Mail transfer starts[CR][LF]"
 19:27:40.472885 > "WE ROOLZ: 124955[CR][LF]"
 19:27:40.472901 > ".[CR][LF]"
 19:27:40.518911 < "QUIT"
 19:27:40.518967 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:40.522063 MAIN sockfilt said DISC
 19:27:40.522108 ====> Client disconnected
 19:27:40.522189 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:40.077616 ====> Client connect
 19:27:40.077972 Received DATA (on stdin)
 19:27:40.077986 > 164 bytes data, server => client
 19:27:40.078000 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:40.078009 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:40.078018 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:40.078095 < 6 bytes data, client => server
 19:27:40.078105 'CAPA\r\n'
 19:27:40.078297 Received DATA (on stdin)
 19:27:40.078308 > 27 bytes data, server => client
 19:27:40.078324 '-ERR Unrecognized command\r\n'
 19:27:40.079042 < 21 bytes data, client => server
 19:27:40.079060 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind879 ../src/curl -q --output log/20/curl879.out  --include --trace-ascii log/20/trace879 --trace-time pop3://127.0.0.1:34029/879 -u user:secret > log/20/stdout879 2> log/20/stderr879
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind731 ../src/curl -q --output log/19/curl731.out  --include --trace-ascii log/19/trace731 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/19/stdout731 2> log/19/stderr731
'RETR verifiedserver\r\n'
 19:27:40.079298 Received DATA (on stdin)
 19:27:40.079308 > 26 bytes data, server => client
 19:27:40.079317 '+OK Mail transfer starts\r\n'
 19:27:40.079341 Received DATA (on stdin)
 19:27:40.079350 > 18 bytes data, server => client
 19:27:40.079359 'WE ROOLZ: 124955\r\n'
 19:27:40.079370 Received DATA (on stdin)
 19:27:40.079377 > 3 bytes data, server => client
 19:27:40.079386 '.\r\n'
 19:27:40.125082 < 6 bytes data, client => server
 19:27:40.125120 'QUIT\r\n'
 19:27:40.125361 Received DATA (on stdin)
 19:27:40.125370 > 34 bytes data, server => client
 19:27:40.125379 '+OK curl POP3 server signing off\r\n'
 19:27:40.128378 ====> Client disconnect
 19:27:40.128584 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 REPLY AUTH + Rubbish
 REPLY * -ERR AUTH exchange cancelled by client
 Testnum 876
=== End of file server.cmd
=== Start of file valgrind876
 ==126261== 
 ==126261== Process terminating with default action of signal 4 (SIGILL)
 ==126261==  Illegal opcode at address 0x492B75F
 ==126261==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126261==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126261==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126261==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126261==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126261==    by 0x49908EB: curl_version_info (version.c:600)
 ==126261==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126261==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126261==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126261==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind876
test 0879 [POP3 CRAM-MD5 authentication with SASL downgrade]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind879 ../src/curl -q --output log/20/curl879.out  --include --trace-ascii log/20/trace879 --trace-time pop3://127.0.0.1:34029/879 -u user:secret > log/20/stdout879 2> log/20/stderr879

 879: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 879
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind879 ../src/curl -q --output log/20/curl879.out  --include --trace-ascii log/20/trace879 --trace-time pop3://127.0.0.1:34029/879 -u user:secret > log/20/stdout879 2> log/20/stderr879
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:40.672033 ====> Client connect
 19:27:40.672384 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:40.672616 < "CAPA"
 19:27:40.672666 > "-ERR Unrecognized command[CR][LF]"
 19:27:40.672860 < "RETR verifiedserver"
 19:27:40.672897 return proof we are we
 19:27:40.672925 > "+OK Mail transfer starts[CR][LF]"
 19:27:40.672947 > "WE ROOLZ: 124956[CR][LF]"
 19:27:40.672964 > ".[CR][LF]"
 19:27:40.719018 < "QUIT"
 19:27:40.719081 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:40.720404 MAIN sockfilt said DISC
 19:27:40.720450 ====> Client disconnected
 19:27:40.720554 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:40.276903 ====> Client connect
 19:27:40.278616 Received DATA (on stdin)
 19:27:40.278636 > 164 bytes data, server => client
 19:27:40.278660 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:40.278671 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:40.278680 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:40.278822 < 6 bytes data, client => server
 19:27:40.278838 'CAPA\r\n'
 19:27:40.279046 Received DATA (on stdin)
 19:27:40.279058 > 27 bytes data, server => client
 19:27:40.279069 '-ERR Unrecognized command\r\n'
 19:27:40.279125 < 21 bytes data, client => server
 19:27:40.279135 'RETR verifiedserver\r\n'
 19:27:40.279339 Received DATA (on stdin)
 19:27:40.279351 > 26 bytes data, server => client
 19:27:40.279360 '+OK Mail transfer starts\r\n'
 19:27:40.279380 Received DATA (on stdin)
 19:27:40.279389 > 18 bytes data, server => client
 19:27:40.279398 'WE ROOLZ: 124956\r\n'
 19:27:40.279409 Received DATA (on stdin)
 19:27:40.279418 > 3 bytes data, server => client
 19:27:40.279427 '.\r\n'
 19:27:40.325181 < 6 bytes data, client => server
 19:27:40.325217 'QUIT\r\n'
 19:27:40.325458 Received DATA (on stdin)
 19:27:40.325470 > 34 bytes data, server => client
 19:27:40.325481 '+OK curl POP3 server signing off\r\n'
 19:27:40.326703 ====> Client disconnect
 19:27:40.326934 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5 PLAIN
 REPLY "AUTH CRAM-MD5" + Rubbish
 REPLY * -ERR AUTH exchange cancelled by client
 REPLY "AUTH PLAIN" +
 REPLY AHVzZXIAc2VjcmV0 +OK Login successful
 Testnum 879
=== End of file server.cmd
=== Start of file valgrind879
 ==126334== 
 ==126334== Process terminating with default action of signal 4 (SIGILL)
 ==126334==  Illegal opcode at address 0x492B75F
 ==126334==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126334==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126334==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126334==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126334==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126334==    by 0x49908EB: curl_version_info (version.c:600)
 ==126334==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126334==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind879
setenv HOME = /startdir/src/build-curl/tests/log/19
test 0731 [IPFS with gateway URL and path from gateway file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind731 ../src/curl -q --output log/19/curl731.out  --include --trace-ascii log/19/trace731 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/19/stdout731 2> log/19/stderr731

 731: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 731
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind731 ../src/curl -q --output log/19/curl731.out  --include --trace-ascii log/19/trace731 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/19/stdout731 2> log/19/stderr731
=== End of file commands.log
=== Start of file http_server.log
 19:27:24.861895 ====> Client connect
 19:27:24.861927 accept_connection 3 returned 4
 19:27:24.862068 Read 93 bytes
 19:27:24.862080 Process 93 bytes request
 19:27:24.862092 Got request: GET /verifiedserver HTTP/1.1
 19:27:24.862100 Are-we-friendly question received
 19:27:24.862126 Wrote request (93 bytes) input to log/19/server.input
 19:27:24.862142 Identifying ourselves as friends
 19:27:24.862196 Response sent (56 bytes) and written to log/19/server.response
 19:27:24.862205 special request received, no persistency
 19:27:24.862213 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 58272 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * ReCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind883 ../src/curl -q --output log/3/curl883.out  --include --trace-ascii log/3/trace883 --trace-time 'pop3://user;AUTH=EXTERNAL@127.0.0.1:35177/883' > log/3/stdout883 2> log/3/stderr883
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind741 ../src/curl -q --output log/6/curl741.out  --include --trace-ascii log/6/trace741 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout741 2> log/6/stderr741
quest completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 731
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind731
 ==118275== 
 ==118275== Process terminating with default action of signal 4 (SIGILL)
 ==118275==  Illegal opcode at address 0x492B75F
 ==118275==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118275==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118275==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118275==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118275==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118275==    by 0x49908EB: curl_version_info (version.c:600)
 ==118275==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118275==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118275==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118275==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind731
test 0883 [POP3 external authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind883 ../src/curl -q --output log/3/curl883.out  --include --trace-ascii log/3/trace883 --trace-time 'pop3://user;AUTH=EXTERNAL@127.0.0.1:35177/883' > log/3/stdout883 2> log/3/stderr883

 883: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 883
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind883 ../src/curl -q --output log/3/curl883.out  --include --trace-ascii log/3/trace883 --trace-time 'pop3://user;AUTH=EXTERNAL@127.0.0.1:35177/883' > log/3/stdout883 2> log/3/stderr883
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.182136 ====> Client connect
 19:27:41.182397 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.192217 < "CAPA"
 19:27:41.192290 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.202236 < "RETR verifiedserver"
 19:27:41.202290 return proof we are we
 19:27:41.202325 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.202349 > "WE ROOLZ: 124988[CR][LF]"
 19:27:41.202366 > ".[CR][LF]"
 19:27:41.255548 < "QUIT"
 19:27:41.255612 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.257152 MAIN sockfilt said DISC
 19:27:41.257191 ====> Client disconnected
 19:27:41.257281 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.788323 ====> Client connect
 19:27:41.788727 Received DATA (on stdin)
 19:27:41.788740 > 164 bytes data, server => client
 19:27:41.788751 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.788760 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.788769 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.794988 < 6 bytes data, client => server
 19:27:41.795015 'CAPA\r\n'
 19:27:41.798616 Received DATA (on stdin)
 19:27:41.798634 > 27 bytes data, server => client
 19:27:41.798643 '-ERR Unrecognized command\r\n'
 19:27:41.808328 < 21 bytes data, client => server
 19:27:41.808367 'RETR verifiedserver\r\n'
 19:27:41.808685 Received DATA (on stdin)
 19:27:41.808696 > 26 bytes data, server => client
 19:27:41.808706 '+OK Mail transfer starts\r\n'
 19:27:41.808750 Received DATA (on stdin)
 19:27:41.808759 > 18 bytes data, server => client
 19:27:41.808768 'WE ROOLZ: 124988\r\n'
 19:27:41.808780 Received DATA (on stdin)
 19:27:41.808789 > 3 bytes data, server => client
 19:27:41.808798 '.\r\n'
 19:27:41.861654 < 6 bytes data, client => server
 19:27:41.861692 'QUIT\r\n'
 19:27:41.861930 Received DATA (on stdin)
 19:27:41.861942 > 34 bytes data, server => client
 19:27:41.861952 '+OK curl POP3 server signing off\r\n'
 19:27:41.863123 ====> Client disconnect
 19:27:41.863600 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH +
 REPLY dXNlcg== +OK Login successful
 Testnum 883
=== End of file server.cmd
=== Start of file valgrind883
 ==126444== 
 ==126444== Process terminating with default action of signal 4 (SIGILL)
 ==126444==  Illegal opcode at address 0x492B75F
 ==126444==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126444==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126444==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126444==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126444==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126444==    by 0x49908EB: curl_version_info (version.c:600)
 ==126444==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126444==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126444==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126444==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind883
setenv HOME = /startdir/src/build-curl/tests/log/6
test 0741 [IPFS malformed gw URL from multiline gateway file, first line no URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind741 ../src/curl -q --output log/6/curl741.out  --include --trace-ascii log/6/trace741 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout741 2> log/6/stderr741

curl returned 132, when expecting 3
 741: exit FAILED
== Contents of files in the log/6/ directory after test 741
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind741 ../src/curl -q --output log/6/curl741.out  --include --trace-ascii log/6/trace741 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout741 2> log/6/stderr741
=== End of file commands.log
=== Start of file http_server.log
 19:27:26.083956 ====> Client connect
 19:27:26.084000 accept_connection 3 returned 4
 19:27:26.084029 Read 93 bytes
 19:27:26.084041 Process 93 bytes request
 19:27:26.084055 Got request: GET /verifiedserver HTTP/1.1
 19:27:26.084065 Are-we-friendly question received
 19:27:26.084099 Wrote request (93 bytes) input to log/6/server.input
 19:27:26.084119 Identifying ourselves as friends
 19:27:26.084212 Response sent (56 bytes) and written to log/6/server.response
 19:27:26.084226 special request received, no persistency
 19:27:26.084235 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 42956 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 741
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind741
 ==118945== 
 ==118945== Process terminating with default action of signal 4 (SIGILL)
 ==118945==  Illegal opcode at address 0x492B75F
 ==118945==    at 0x492B75F: formatf.constprop.2 (mpriCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind884 ../src/curl -q --output log/22/curl884.out  --include --trace-ascii log/22/trace884 --trace-time 'pop3://;AUTH=EXTERNAL@127.0.0.1:32871/884' > log/22/stdout884 2> log/22/stderr884
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind885 ../src/curl -q --output log/5/curl885.out  --include --trace-ascii log/5/trace885 --trace-time 'pop3://user;AUTH=EXTERNAL@127.0.0.1:39845/885' --sasl-ir > log/5/stdout885 2> log/5/stderr885
ntf.c:1115)
 ==118945==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118945==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118945==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118945==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118945==    by 0x49908EB: curl_version_info (version.c:600)
 ==118945==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118945==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118945==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118945==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind741
test 0884 [POP3 external authentication without credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind884 ../src/curl -q --output log/22/curl884.out  --include --trace-ascii log/22/trace884 --trace-time 'pop3://;AUTH=EXTERNAL@127.0.0.1:32871/884' > log/22/stdout884 2> log/22/stderr884

 884: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 884
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind884 ../src/curl -q --output log/22/curl884.out  --include --trace-ascii log/22/trace884 --trace-time 'pop3://;AUTH=EXTERNAL@127.0.0.1:32871/884' > log/22/stdout884 2> log/22/stderr884
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.427791 ====> Client connect
 19:27:41.428055 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.438972 < "CAPA"
 19:27:41.439157 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.440747 < "RETR verifiedserver"
 19:27:41.440782 return proof we are we
 19:27:41.440811 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.440833 > "WE ROOLZ: 125142[CR][LF]"
 19:27:41.440851 > ".[CR][LF]"
 19:27:41.486012 < "QUIT"
 19:27:41.486061 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.488744 MAIN sockfilt said DISC
 19:27:41.488817 ====> Client disconnected
 19:27:41.491987 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.033940 ====> Client connect
 19:27:41.034372 Received DATA (on stdin)
 19:27:41.034389 > 164 bytes data, server => client
 19:27:41.034401 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.034411 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.034421 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.044962 < 6 bytes data, client => server
 19:27:41.045001 'CAPA\r\n'
 19:27:41.045330 Received DATA (on stdin)
 19:27:41.045345 > 27 bytes data, server => client
 19:27:41.045366 '-ERR Unrecognized command\r\n'
 19:27:41.046907 < 21 bytes data, client => server
 19:27:41.046927 'RETR verifiedserver\r\n'
 19:27:41.047145 Received DATA (on stdin)
 19:27:41.047157 > 26 bytes data, server => client
 19:27:41.047168 '+OK Mail transfer starts\r\n'
 19:27:41.047197 Received DATA (on stdin)
 19:27:41.047209 > 18 bytes data, server => client
 19:27:41.047219 'WE ROOLZ: 125142\r\n'
 19:27:41.047232 Received DATA (on stdin)
 19:27:41.047241 > 3 bytes data, server => client
 19:27:41.047251 '.\r\n'
 19:27:41.092121 < 6 bytes data, client => server
 19:27:41.092165 'QUIT\r\n'
 19:27:41.092345 Received DATA (on stdin)
 19:27:41.092353 > 34 bytes data, server => client
 19:27:41.092361 '+OK curl POP3 server signing off\r\n'
 19:27:41.094951 ====> Client disconnect
 19:27:41.098310 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH +
 REPLY  +OK Login successful
 Testnum 884
=== End of file server.cmd
=== Start of file valgrind884
 ==126532== 
 ==126532== Process terminating with default action of signal 4 (SIGILL)
 ==126532==  Illegal opcode at address 0x492B75F
 ==126532==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126532==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126532==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126532==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126532==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126532==    by 0x49908EB: curl_version_info (version.c:600)
 ==126532==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126532==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126532==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126532==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind884
test 0885 [POP3 external authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind885 ../src/curl -q --output log/5/curl885.out  --include --trace-ascii log/5/trace885 --trace-time 'pop3://user;AUTH=EXTERNAL@127.0.0.1:39845/885' --sasl-ir > log/5/stdout885 2> log/5/stderr885

 885: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 885
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind885 ../src/curl -q --output log/5/curl885.out  --include --trace-ascii log/5/trace885 --trace-time 'pop3://user;AUTH=EXTERNAL@127.0.0.1:39845/885' --sasl-ir > log/5/stdout885 2> log/5/stderr885
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.551510 ====> Client connect
 19:27:41.551719 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.552068 < "CAPA"
 19:27:41.552116 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.552307 < "RETR verifiedserver"
 19:27:41.552340 return proof we are we
 19:27:41.552365 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.552387 > "WE ROOLZ: 125086[CR][LF]"
 19:27:41.552404 > ".[CR][LF]"
 19:27:41.602327 < "QUIT"
 19:27:41.602382 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.604007 MAIN sockfilt said DISC
 19:27:41.604050 ====> Client disconnected
 19:27:41.604124 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.157676 ====> Client connect
 19:27:41.158022 Received DATA (on stdin)
 19:27:41.158039 > 164 bytes data, server => client
 19:27:41.158050 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.158061 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.158070 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.158154 < 6 bytes data, client => server
 19:27:41.158166 'CAPA\r\n'
 19:27:41.158399 Received DATA (on stdin)
 19:27:41.158411 > 27 bytes data, server => client
 19:27:41.158421 '-ERR Unrecognized command\r\n'
 19:27:41.158479 < 21 bytes data, client => server
 19:27:41.158490 'RETR verifiedserver\r\n'
 19:27:41.158681 Received DATA (on stdin)
 19:27:41.158691 > 26 bytes data, server => client
 19:27:41.158701 '+OK Mail transfer starts\r\n'
 19:27:41.158722 Received DATA (on stdin)
 19:27:41.158731 > 18 bytes data, server => client
 19:27:41.158740 'WE ROOLZ: 125086\r\n'
 19:27:41.158752 Received DATA (on stdin)
 19:27:41.158760 > 3 bytes data, server => client
 19:27:41.158769 '.\r\n'
 19:27:41.208411 < 6 bytes data, client => server
 19:27:41.208445 'QUIT\r\n'
 19:27:41.208656 Received DATA (on stdin)
 19:27:41.208667 > 34 bytes data, server => client
 19:27:41.208676 '+OK curl POP3 server signing off\r\n'
 19:27:41.209764 ====> Client disconnect
 19:27:41.210397 Received ACKD (on stdCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind890 ../src/curl -q --output log/2/curl890.out  --include --trace-ascii log/2/trace890 --trace-time pop3://127.0.0.1:45083/890 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/2/stdout890 2> log/2/stderr890
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind887 ../src/curl -q --output log/15/curl887.out  --include --trace-ascii log/15/trace887 --trace-time pop3://127.0.0.1:34733/887 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/15/stdout887 2> log/15/stderr887
in)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH +OK Login successful
 Testnum 885
=== End of file server.cmd
=== Start of file valgrind885
 ==126589== 
 ==126589== Process terminating with default action of signal 4 (SIGILL)
 ==126589==  Illegal opcode at address 0x492B75F
 ==126589==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126589==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126589==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126589==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126589==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126589==    by 0x49908EB: curl_version_info (version.c:600)
 ==126589==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126589==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126589==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126589==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind885
test 0890 [POP3 OAuth failure as continuation with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind890 ../src/curl -q --output log/2/curl890.out  --include --trace-ascii log/2/trace890 --trace-time pop3://127.0.0.1:45083/890 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/2/stdout890 2> log/2/stderr890

 890: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 890
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind890 ../src/curl -q --output log/2/curl890.out  --include --trace-ascii log/2/trace890 --trace-time pop3://127.0.0.1:45083/890 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/2/stdout890 2> log/2/stderr890
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.885062 ====> Client connect
 19:27:41.885314 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.893152 < "CAPA"
 19:27:41.893222 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.893432 < "RETR verifiedserver"
 19:27:41.893467 return proof we are we
 19:27:41.893495 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.893523 > "WE ROOLZ: 125244[CR][LF]"
 19:27:41.893544 > ".[CR][LF]"
 19:27:41.940462 < "QUIT"
 19:27:41.940516 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.941675 MAIN sockfilt said DISC
 19:27:41.941712 ====> Client disconnected
 19:27:41.941788 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.491172 ====> Client connect
 19:27:41.491556 Received DATA (on stdin)
 19:27:41.491578 > 164 bytes data, server => client
 19:27:41.491590 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.491601 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.491610 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.499156 < 6 bytes data, client => server
 19:27:41.499185 'CAPA\r\n'
 19:27:41.499476 Received DATA (on stdin)
 19:27:41.499490 > 27 bytes data, server => client
 19:27:41.499500 '-ERR Unrecognized command\r\n'
 19:27:41.499564 < 21 bytes data, client => server
 19:27:41.499580 'RETR verifiedserver\r\n'
 19:27:41.499788 Received DATA (on stdin)
 19:27:41.499801 > 26 bytes data, server => client
 19:27:41.499811 '+OK Mail transfer starts\r\n'
 19:27:41.499836 Received DATA (on stdin)
 19:27:41.499847 > 18 bytes data, server => client
 19:27:41.499857 'WE ROOLZ: 125244\r\n'
 19:27:41.499871 Received DATA (on stdin)
 19:27:41.499880 > 3 bytes data, server => client
 19:27:41.499889 '.\r\n'
 19:27:41.546539 < 6 bytes data, client => server
 19:27:41.546561 'QUIT\r\n'
 19:27:41.546757 Received DATA (on stdin)
 19:27:41.546771 > 34 bytes data, server => client
 19:27:41.546781 '+OK curl POP3 server signing off\r\n'
 19:27:41.547844 ====> Client disconnect
 19:27:41.548030 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0=
 REPLY AQ== -ERR Authentication failed
 Testnum 890
=== End of file server.cmd
=== Start of file valgrind890
 ==126825== 
 ==126825== Process terminating with default action of signal 4 (SIGILL)
 ==126825==  Illegal opcode at address 0x492B75F
 ==126825==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126825==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126825==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126825==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126825==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126825==    by 0x49908EB: curl_version_info (version.c:600)
 ==126825==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126825==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126825==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126825==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind890
test 0887 [POP3 OAuth 2.0 (OAUTHBEARER) authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind887 ../src/curl -q --output log/15/curl887.out  --include --trace-ascii log/15/trace887 --trace-time pop3://127.0.0.1:34733/887 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/15/stdout887 2> log/15/stderr887

 887: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 887
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind887 ../src/curl -q --output log/15/curl887.out  --include --trace-ascii log/15/trace887 --trace-time pop3://127.0.0.1:34733/887 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/15/stdout887 2> log/15/stderr887
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.693884 ====> Client connect
 19:27:41.694113 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.694447 < "CAPA"
 19:27:41.694497 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.694711 < "RETR verifiedserver"
 19:27:41.694748 return proof we are we
 19:27:41.694775 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.694803 > "WE ROOLZ: 125072[CR][LF]"
 19:27:41.694822 > ".[CR][LF]"
 19:27:41.742198 < "QUIT"
 19:27:41.742259 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.744072 MAIN sockfilt said DISC
 19:27:41.744112 ====> Client disconnected
 19:27:41.744187 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.300041 ====> Client connect
 19:27:41.300402 Received DATA (on stdin)
 19:27:41.300420 > 164 bytes data, server => client
 19:27:41.300431 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.300441 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.300450 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.300538 < 6 bytes data, client => server
 19:27:41.300554 'CAPA\r\n'
 19:27:41.300766 Received DATA (on stdin)
 19:27:41.300779 > 27 bytes data, server => client
 19:27:41.300789 '-ERR Unrecognized command\r\n'
 19:27:41.300853 < 21 bytes data, client => server
 19:27:41.300868 'RETR verifiedserver\r\n'
 19:27:41.301087 Received DATA (on stdin)
 19:27:41.CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind891 ../src/curl -q --output log/16/curl891.out  --include --trace-ascii log/16/trace891 --trace-time pop3://127.0.0.1:43031/891 -u user:secret > log/16/stdout891 2> log/16/stderr891
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind886 ../src/curl -q --output log/24/curl886.out  --include --trace-ascii log/24/trace886 --trace-time 'pop3://;AUTH=EXTERNAL@127.0.0.1:41525/886' --sasl-ir > log/24/stdout886 2> log/24/stderr886
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind888 ../src/curl -q --output log/1/curl888.out  --include --trace-ascii log/1/trace888 --trace-time pop3://127.0.0.1:41595/888 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/1/stdout888 2> log/1/stderr888
301099 > 26 bytes data, server => client
 19:27:41.301109 '+OK Mail transfer starts\r\n'
 19:27:41.301134 Received DATA (on stdin)
 19:27:41.301145 > 18 bytes data, server => client
 19:27:41.301154 'WE ROOLZ: 125072\r\n'
 19:27:41.301167 Received DATA (on stdin)
 19:27:41.301176 > 3 bytes data, server => client
 19:27:41.301185 '.\r\n'
 19:27:41.348268 < 6 bytes data, client => server
 19:27:41.348302 'QUIT\r\n'
 19:27:41.348524 Received DATA (on stdin)
 19:27:41.348538 > 34 bytes data, server => client
 19:27:41.348548 '+OK curl POP3 server signing off\r\n'
 19:27:41.350262 ====> Client disconnect
 19:27:41.350447 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH +
 REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9MzQ3MzMBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= +OK Login successful
 Testnum 887
=== End of file server.cmd
=== Start of file valgrind887
 ==126682== 
 ==126682== Process terminating with default action of signal 4 (SIGILL)
 ==126682==  Illegal opcode at address 0x492B75F
 ==126682==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126682==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126682==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126682==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126682==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126682==    by 0x49908EB: curl_version_info (version.c:600)
 ==126682==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126682==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126682==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126682==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind887
test 0891 [POP3 with short authentication response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind891 ../src/curl -q --output log/16/curl891.out  --include --trace-ascii log/16/trace891 --trace-time pop3://127.0.0.1:43031/891 -u user:secret > log/16/stdout891 2> log/16/stderr891

 891: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 891
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind891 ../src/curl -q --output log/16/curl891.out  --include --trace-ascii log/16/trace891 --trace-time pop3://127.0.0.1:43031/891 -u user:secret > log/16/stdout891 2> log/16/stderr891
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:42.005357 ====> Client connect
 19:27:42.005600 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:42.006306 < "CAPA"
 19:27:42.006362 > "-ERR Unrecognized command[CR][LF]"
 19:27:42.006543 < "RETR verifiedserver"
 19:27:42.006575 return proof we are we
 19:27:42.006597 > "+OK Mail transfer starts[CR][LF]"
 19:27:42.006617 > "WE ROOLZ: 125269[CR][LF]"
 19:27:42.006633 > ".[CR][LF]"
 19:27:42.054454 < "QUIT"
 19:27:42.054512 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:42.055434 MAIN sockfilt said DISC
 19:27:42.055468 ====> Client disconnected
 19:27:42.055547 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.610315 ====> Client connect
 19:27:41.612194 Received DATA (on stdin)
 19:27:41.612224 > 164 bytes data, server => client
 19:27:41.612235 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.612245 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.612254 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.612337 < 6 bytes data, client => server
 19:27:41.612348 'CAPA\r\n'
 19:27:41.612593 Received DATA (on stdin)
 19:27:41.612604 > 27 bytes data, server => client
 19:27:41.612613 '-ERR Unrecognized command\r\n'
 19:27:41.612669 < 21 bytes data, client => server
 19:27:41.612679 'RETR verifiedserver\r\n'
 19:27:41.612858 Received DATA (on stdin)
 19:27:41.612868 > 26 bytes data, server => client
 19:27:41.612876 '+OK Mail transfer starts\r\n'
 19:27:41.612897 Received DATA (on stdin)
 19:27:41.612905 > 18 bytes data, server => client
 19:27:41.612913 'WE ROOLZ: 125269\r\n'
 19:27:41.612923 Received DATA (on stdin)
 19:27:41.612931 > 3 bytes data, server => client
 19:27:41.612939 '.\r\n'
 19:27:41.660496 < 6 bytes data, client => server
 19:27:41.660518 'QUIT\r\n'
 19:27:41.660734 Received DATA (on stdin)
 19:27:41.660744 > 34 bytes data, server => client
 19:27:41.660753 '+OK curl POP3 server signing off\r\n'
 19:27:41.661599 ====> Client disconnect
 19:27:41.661776 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 REPLYLF AUTH +
 Testnum 891
=== End of file server.cmd
=== Start of file valgrind891
 ==126953== 
 ==126953== Process terminating with default action of signal 4 (SIGILL)
 ==126953==  Illegal opcode at address 0x492B75F
 ==126953==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126953==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126953==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126953==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126953==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126953==    by 0x49908EB: curl_version_info (version.c:600)
 ==126953==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126953==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126953==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126953==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind891
test 0886 [POP3 external authentication with initial response without credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind886 ../src/curl -q --output log/24/curl886.out  --include --trace-ascii log/24/trace886 --trace-time 'pop3://;AUTH=EXTERNAL@127.0.0.1:41525/886' --sasl-ir > log/24/stdout886 2> log/24/stderr886

 886: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 886
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind886 ../src/curl -q --output log/24/curl886.out  --include --trace-ascii log/24/trace886 --trace-time 'pop3://;AUTH=EXTERNAL@127.0.0.1:41525/886' --sasl-ir > log/24/stdout886 2> log/24/stderr886
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.691590 ====> Client connect
 19:27:41.691814 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.692150 < "CAPA"
 19:27:41.692325 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.692407 < "RETR verifiedserver"
 19:27:41.692438 return proof we are we
 19:27:41.692541 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.692573 > "WE ROOLZ: 125054[CR][LF]"
 19:27:41.692590 > ".[CR][LF]"
 19:27:41.742178 < "QUIT"
 19:27:41.742246 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.743828 MAIN sockfilt said DISC
 19:27:41.743880 ====> Client disconnected
 19:27:41.743980 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.297727 ====> Client connect
 19:27:41.298098 Received DATA (on stdin)
 19:27:41.298112 > 164 bytes data, server => client
 19:27:41.298122 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.298130 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind889 ../src/curl -q --output log/9/curl889.out  --include --trace-ascii log/9/trace889 --trace-time pop3://127.0.0.1:33941/889 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout889 2> log/9/stderr889
n   \___|\___/|_|'
 19:27:41.298138 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.298217 < 6 bytes data, client => server
 19:27:41.298227 'CAPA\r\n'
 19:27:41.298445 Received DATA (on stdin)
 19:27:41.298459 > 27 bytes data, server => client
 19:27:41.298477 '-ERR Unrecognized command\r\n'
 19:27:41.298537 < 21 bytes data, client => server
 19:27:41.298546 'RETR verifiedserver\r\n'
 19:27:41.298703 Received DATA (on stdin)
 19:27:41.298715 > 26 bytes data, server => client
 19:27:41.298732 '+OK Mail transfer starts\r\n'
 19:27:41.298853 Received DATA (on stdin)
 19:27:41.298864 > 18 bytes data, server => client
 19:27:41.298873 'WE ROOLZ: 125054\r\n'
 19:27:41.298885 Received DATA (on stdin)
 19:27:41.298894 > 3 bytes data, server => client
 19:27:41.298903 '.\r\n'
 19:27:41.348216 < 6 bytes data, client => server
 19:27:41.348257 'QUIT\r\n'
 19:27:41.348513 Received DATA (on stdin)
 19:27:41.348529 > 34 bytes data, server => client
 19:27:41.348541 '+OK curl POP3 server signing off\r\n'
 19:27:41.348612 ====> Client disconnect
 19:27:41.350251 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH +OK Login successful
 Testnum 886
=== End of file server.cmd
=== Start of file valgrind886
 ==126644== 
 ==126644== Process terminating with default action of signal 4 (SIGILL)
 ==126644==  Illegal opcode at address 0x492B75F
 ==126644==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126644==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126644==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126644==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126644==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126644==    by 0x49908EB: curl_version_info (version.c:600)
 ==126644==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126644==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126644==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126644==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind886
test 0888 [POP3 OAuth 2.0 (OAUTHBEARER) authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind888 ../src/curl -q --output log/1/curl888.out  --include --trace-ascii log/1/trace888 --trace-time pop3://127.0.0.1:41595/888 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/1/stdout888 2> log/1/stderr888

 888: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 888
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind888 ../src/curl -q --output log/1/curl888.out  --include --trace-ascii log/1/trace888 --trace-time pop3://127.0.0.1:41595/888 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir > log/1/stdout888 2> log/1/stderr888
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.751187 ====> Client connect
 19:27:41.751400 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.751741 < "CAPA"
 19:27:41.751915 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.752025 < "RETR verifiedserver"
 19:27:41.752066 return proof we are we
 19:27:41.752128 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.752156 > "WE ROOLZ: 125278[CR][LF]"
 19:27:41.752175 > ".[CR][LF]"
 19:27:41.802376 < "QUIT"
 19:27:41.802440 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:41.803652 MAIN sockfilt said DISC
 19:27:41.803746 ====> Client disconnected
 19:27:41.803833 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.357317 ====> Client connect
 19:27:41.357680 Received DATA (on stdin)
 19:27:41.357697 > 164 bytes data, server => client
 19:27:41.357708 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.357718 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.357727 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.357813 < 6 bytes data, client => server
 19:27:41.357827 'CAPA\r\n'
 19:27:41.358027 Received DATA (on stdin)
 19:27:41.358039 > 27 bytes data, server => client
 19:27:41.358056 '-ERR Unrecognized command\r\n'
 19:27:41.358115 < 21 bytes data, client => server
 19:27:41.358127 'RETR verifiedserver\r\n'
 19:27:41.358329 Received DATA (on stdin)
 19:27:41.358342 > 26 bytes data, server => client
 19:27:41.358432 '+OK Mail transfer starts\r\n'
 19:27:41.358460 Received DATA (on stdin)
 19:27:41.358470 > 18 bytes data, server => client
 19:27:41.358478 'WE ROOLZ: 125278\r\n'
 19:27:41.358489 Received DATA (on stdin)
 19:27:41.358498 > 3 bytes data, server => client
 19:27:41.358506 '.\r\n'
 19:27:41.408290 < 6 bytes data, client => server
 19:27:41.408317 'QUIT\r\n'
 19:27:41.408698 Received DATA (on stdin)
 19:27:41.408713 > 34 bytes data, server => client
 19:27:41.408724 '+OK curl POP3 server signing off\r\n'
 19:27:41.409833 ====> Client disconnect
 19:27:41.409921 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH +OK Login successful
 Testnum 888
=== End of file server.cmd
=== Start of file valgrind888
 ==126723== 
 ==126723== Process terminating with default action of signal 4 (SIGILL)
 ==126723==  Illegal opcode at address 0x492B75F
 ==126723==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126723==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126723==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126723==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126723==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126723==    by 0x49908EB: curl_version_info (version.c:600)
 ==126723==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126723==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126723==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126723==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind888
test 0889 [POP3 OAuth 2.0 (OAUTHBEARER) failure as continuation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind889 ../src/curl -q --output log/9/curl889.out  --include --trace-ascii log/9/trace889 --trace-time pop3://127.0.0.1:33941/889 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout889 2> log/9/stderr889

 889: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 889
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind889 ../src/curl -q --output log/9/curl889.out  --include --trace-ascii log/9/trace889 --trace-time pop3://127.0.0.1:33941/889 -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout889 2> log/9/stderr889
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:41.865467 ====> Client connect
 19:27:41.865704 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:41.872203 < "CAPA"
 19:27:41.872924 > "-ERR Unrecognized command[CR][LF]"
 19:27:41.873210 < "RETR verifiedserver"
 19:27:41.873253 return proof we are we
 19:27:41.873285 > "+OK Mail transfer starts[CR][LF]"
 19:27:41.873311 > "WE ROOLZ: 125253[CR][LF]"
 19:27:41.873328 > ".[CR][LF]"
 19:27:41.928905 < "QUIT"
 19:27:41.929072 > "+OK curl POP3 server signing off[CR][LF]"
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind894 ../src/curl -q --output log/23/curl894.out  --include --trace-ascii log/23/trace894 --trace-time pop3://user%0dFRIGGING_cmd:secret@127.0.0.1:45155/894 > log/23/stdout894 2> log/23/stderr894
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind892 ../src/curl -q --output log/7/curl892.out  --include --trace-ascii log/7/trace892 --trace-time pop3://127.0.0.1:42105/892 -u user:secret --sasl-authzid shared-mailbox > log/7/stdout892 2> log/7/stderr892
19:27:41.939952 MAIN sockfilt said DISC
 19:27:41.940004 ====> Client disconnected
 19:27:41.940071 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.471582 ====> Client connect
 19:27:41.471980 Received DATA (on stdin)
 19:27:41.471999 > 164 bytes data, server => client
 19:27:41.472011 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.472021 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.472031 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.478106 < 6 bytes data, client => server
 19:27:41.478266 'CAPA\r\n'
 19:27:41.479191 Received DATA (on stdin)
 19:27:41.479206 > 27 bytes data, server => client
 19:27:41.479216 '-ERR Unrecognized command\r\n'
 19:27:41.479318 < 21 bytes data, client => server
 19:27:41.479332 'RETR verifiedserver\r\n'
 19:27:41.479573 Received DATA (on stdin)
 19:27:41.479585 > 26 bytes data, server => client
 19:27:41.479595 '+OK Mail transfer starts\r\n'
 19:27:41.479622 Received DATA (on stdin)
 19:27:41.479633 > 18 bytes data, server => client
 19:27:41.479643 'WE ROOLZ: 125253\r\n'
 19:27:41.479656 Received DATA (on stdin)
 19:27:41.479665 > 3 bytes data, server => client
 19:27:41.479674 '.\r\n'
 19:27:41.534936 < 6 bytes data, client => server
 19:27:41.534966 'QUIT\r\n'
 19:27:41.535187 Received DATA (on stdin)
 19:27:41.535203 > 34 bytes data, server => client
 19:27:41.535223 '+OK curl POP3 server signing off\r\n'
 19:27:41.546102 ====> Client disconnect
 19:27:41.546312 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH +
 REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9MzM5NDEBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0=
 REPLY AQ== -ERR Authentication failed
 Testnum 889
=== End of file server.cmd
=== Start of file valgrind889
 ==126874== 
 ==126874== Process terminating with default action of signal 4 (SIGILL)
 ==126874==  Illegal opcode at address 0x492B75F
 ==126874==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126874==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126874==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126874==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126874==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126874==    by 0x49908EB: curl_version_info (version.c:600)
 ==126874==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126874==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind889
test 0894 [POP3 with CR in username]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind894 ../src/curl -q --output log/23/curl894.out  --include --trace-ascii log/23/trace894 --trace-time pop3://user%0dFRIGGING_cmd:secret@127.0.0.1:45155/894 > log/23/stdout894 2> log/23/stderr894

curl returned 132, when expecting 3
 894: exit FAILED
== Contents of files in the log/23/ directory after test 894
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind894 ../src/curl -q --output log/23/curl894.out  --include --trace-ascii log/23/trace894 --trace-time pop3://user%0dFRIGGING_cmd:secret@127.0.0.1:45155/894 > log/23/stdout894 2> log/23/stderr894
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:42.185569 ====> Client connect
 19:27:42.185768 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:42.186105 < "CAPA"
 19:27:42.186149 > "-ERR Unrecognized command[CR][LF]"
 19:27:42.186356 < "RETR verifiedserver"
 19:27:42.186388 return proof we are we
 19:27:42.186415 > "+OK Mail transfer starts[CR][LF]"
 19:27:42.186441 > "WE ROOLZ: 124910[CR][LF]"
 19:27:42.186463 > ".[CR][LF]"
 19:27:42.232838 < "QUIT"
 19:27:42.232901 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:42.233935 MAIN sockfilt said DISC
 19:27:42.234040 ====> Client disconnected
 19:27:42.234116 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.791631 ====> Client connect
 19:27:41.791996 Received DATA (on stdin)
 19:27:41.792013 > 164 bytes data, server => client
 19:27:41.792025 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.792034 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.792044 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.792150 < 6 bytes data, client => server
 19:27:41.792167 'CAPA\r\n'
 19:27:41.792360 Received DATA (on stdin)
 19:27:41.792372 > 27 bytes data, server => client
 19:27:41.792383 '-ERR Unrecognized command\r\n'
 19:27:41.792449 < 21 bytes data, client => server
 19:27:41.792469 'RETR verifiedserver\r\n'
 19:27:41.792676 Received DATA (on stdin)
 19:27:41.792690 > 26 bytes data, server => client
 19:27:41.792700 '+OK Mail transfer starts\r\n'
 19:27:41.792726 Received DATA (on stdin)
 19:27:41.792737 > 18 bytes data, server => client
 19:27:41.792747 'WE ROOLZ: 124910\r\n'
 19:27:41.792760 Received DATA (on stdin)
 19:27:41.792770 > 3 bytes data, server => client
 19:27:41.792779 '.\r\n'
 19:27:41.838842 < 6 bytes data, client => server
 19:27:41.838869 'QUIT\r\n'
 19:27:41.839112 Received DATA (on stdin)
 19:27:41.839125 > 34 bytes data, server => client
 19:27:41.839136 '+OK curl POP3 server signing off\r\n'
 19:27:41.840087 ====> Client disconnect
 19:27:41.840326 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 894
=== End of file server.cmd
=== Start of file valgrind894
 ==127116== 
 ==127116== Process terminating with default action of signal 4 (SIGILL)
 ==127116==  Illegal opcode at address 0x492B75F
 ==127116==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127116==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127116==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127116==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127116==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127116==    by 0x49908EB: curl_version_info (version.c:600)
 ==127116==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127116==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind894
test 0892 [POP3 plain authentication with alternative authorization identity]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind892 ../src/curl -q --output log/7/curl892.out  --include --trace-ascii log/7/trace892 --trace-time pop3://127.0.0.1:42105/892 -u user:secret --sasl-authzid shared-mailbox > log/7/stdout892 2> log/7/stderr892

 892: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 892
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind892 ../src/curl -q --output log/7/curl892.out  --include --trace-ascii log/7/trace892 --trace-time pop3://127.0.0.1:42105/892 -u user:secret --sasl-authzid shared-mailbox > log/7/stdout892 2> log/7/stderr892
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:42.002648 ====> Client connect
 19:27:42.002911 > "        _   _ __CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind898 ../src/curl -q --output log/13/curl898.out  --include --trace-ascii log/13/trace898 --trace-time -x http://127.0.0.1:38821 http://firsthost.com -L -H "Authorization: Basic am9lOnNlY3JldA==" -H "Cookie: userpwd=am9lOnNlY3JldA==" > log/13/stdout898 2> log/13/stderr898
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind893 ../src/curl -q --output log/18/curl893.out  --include --trace-ascii log/18/trace893 --trace-time pop3://127.0.0.1:41229/893 -u kurt:xipj3plmq --sasl-authzid ursel > log/18/stdout893 2> log/18/stderr893
__  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:42.003638 < "CAPA"
 19:27:42.003700 > "-ERR Unrecognized command[CR][LF]"
 19:27:42.005452 < "RETR verifiedserver"
 19:27:42.005496 return proof we are we
 19:27:42.005531 > "+OK Mail transfer starts[CR][LF]"
 19:27:42.005556 > "WE ROOLZ: 125292[CR][LF]"
 19:27:42.005574 > ".[CR][LF]"
 19:27:42.055515 < "QUIT"
 19:27:42.055607 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:42.060080 MAIN sockfilt said DISC
 19:27:42.060153 ====> Client disconnected
 19:27:42.060249 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:41.608728 ====> Client connect
 19:27:41.609513 Received DATA (on stdin)
 19:27:41.609536 > 164 bytes data, server => client
 19:27:41.609548 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.609558 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.609567 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:41.609664 < 6 bytes data, client => server
 19:27:41.609681 'CAPA\r\n'
 19:27:41.610411 Received DATA (on stdin)
 19:27:41.610429 > 27 bytes data, server => client
 19:27:41.610441 '-ERR Unrecognized command\r\n'
 19:27:41.610505 < 21 bytes data, client => server
 19:27:41.610521 'RETR verifiedserver\r\n'
 19:27:41.612149 Received DATA (on stdin)
 19:27:41.612169 > 26 bytes data, server => client
 19:27:41.612180 '+OK Mail transfer starts\r\n'
 19:27:41.612209 Received DATA (on stdin)
 19:27:41.612219 > 18 bytes data, server => client
 19:27:41.612229 'WE ROOLZ: 125292\r\n'
 19:27:41.612242 Received DATA (on stdin)
 19:27:41.612251 > 3 bytes data, server => client
 19:27:41.612261 '.\r\n'
 19:27:41.658395 < 6 bytes data, client => server
 19:27:41.658431 'QUIT\r\n'
 19:27:41.664895 Received DATA (on stdin)
 19:27:41.664954 > 34 bytes data, server => client
 19:27:41.664967 '+OK curl POP3 server signing off\r\n'
 19:27:41.666209 ====> Client disconnect
 19:27:41.666491 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH +
 REPLY c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ= +OK Login successful
 Testnum 892
=== End of file server.cmd
=== Start of file valgrind892
 ==126958== 
 ==126958== Process terminating with default action of signal 4 (SIGILL)
 ==126958==  Illegal opcode at address 0x492B75F
 ==126958==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==126958==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==126958==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==126958==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==126958==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==126958==    by 0x49908EB: curl_version_info (version.c:600)
 ==126958==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==126958==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==126958==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==126958==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind892
test 0898 [HTTP with custom auth and cookies redirected to HTTP on a diff port]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind898 ../src/curl -q --output log/13/curl898.out  --include --trace-ascii log/13/trace898 --trace-time -x http://127.0.0.1:38821 http://firsthost.com -L -H "Authorization: Basic am9lOnNlY3JldA==" -H "Cookie: userpwd=am9lOnNlY3JldA==" > log/13/stdout898 2> log/13/stderr898

 898: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 898
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind898 ../src/curl -q --output log/13/curl898.out  --include --trace-ascii log/13/trace898 --trace-time -x http://127.0.0.1:38821 http://firsthost.com -L -H "Authorization: Basic am9lOnNlY3JldA==" -H "Cookie: userpwd=am9lOnNlY3JldA==" > log/13/stdout898 2> log/13/stderr898
=== End of file commands.log
=== Start of file http_server.log
 19:27:41.950218 ====> Client connect
 19:27:41.950251 accept_connection 3 returned 4
 19:27:41.950454 Read 93 bytes
 19:27:41.950470 Process 93 bytes request
 19:27:41.950481 Got request: GET /verifiedserver HTTP/1.1
 19:27:41.950489 Are-we-friendly question received
 19:27:41.950518 Wrote request (93 bytes) input to log/13/server.input
 19:27:41.950533 Identifying ourselves as friends
 19:27:41.950589 Response sent (56 bytes) and written to log/13/server.response
 19:27:41.950598 special request received, no persistency
 19:27:41.950605 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54166 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 898
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind898
 ==127269== 
 ==127269== Process terminating with default action of signal 4 (SIGILL)
 ==127269==  Illegal opcode at address 0x492B75F
 ==127269==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127269==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127269==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127269==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127269==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127269==    by 0x49908EB: curl_version_info (version.c:600)
 ==127269==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127269==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127269==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127269==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind898
test 0893 [POP3 plain auth with alt authorization identity (Not authorized)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind893 ../src/curl -q --output log/18/curl893.out  --include --trace-ascii log/18/trace893 --trace-time pop3://127.0.0.1:41229/893 -u kurt:xipj3plmq --sasl-authzid ursel > log/18/stdout893 2> log/18/stderr893

 893: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 893
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind893 ../src/curl -q --output log/18/curl893.out  --include --trace-ascii log/18/trace893 --trace-time pop3://127.0.0.1:41229/893 -u kurt:xipj3plmq --sasl-authzid ursel > log/18/stdout893 2> log/18/stderr893
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:42.208392 ====> Client connect
 19:27:42.208616 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:42.210544 < "CAPA"
 19:27:42.210601 > "-ERR Unrecognized command[CR][LF]"
 19:27:42.210811 < "RETR verifiedserver"
 19:27:42.210847 return proof we are we
 19:27:42.210873 > "+OK Mail transfer sCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind896 ../src/curl -q --output log/14/curl896.out  --include --trace-ascii log/14/trace896 --trace-time 'imap://127.0.0.1:40245/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=dummy' > log/14/stdout896 2> log/14/stderr896
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind899 ../src/curl -q --output log/21/curl899.out  --include --trace-ascii log/21/trace899 --trace-time http://first:secret@127.0.0.1:39881/899 -L > log/21/stdout899 2> log/21/stderr899
tarts[CR][LF]"
 19:27:42.210898 > "WE ROOLZ: 125319[CR][LF]"
 19:27:42.210915 > ".[CR][LF]"
 19:27:42.257107 < "QUIT"
 19:27:42.257165 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:42.258399 MAIN sockfilt said DISC
 19:27:42.258429 ====> Client disconnected
 19:27:42.258510 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:42.814455 ====> Client connect
 19:27:42.814835 Received DATA (on stdin)
 19:27:42.814859 > 164 bytes data, server => client
 19:27:42.814869 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:42.814878 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:42.814887 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:42.814963 < 6 bytes data, client => server
 19:27:42.814977 'CAPA\r\n'
 19:27:42.816818 Received DATA (on stdin)
 19:27:42.816832 > 27 bytes data, server => client
 19:27:42.816843 '-ERR Unrecognized command\r\n'
 19:27:42.816910 < 21 bytes data, client => server
 19:27:42.816925 'RETR verifiedserver\r\n'
 19:27:42.817122 Received DATA (on stdin)
 19:27:42.817135 > 26 bytes data, server => client
 19:27:42.817145 '+OK Mail transfer starts\r\n'
 19:27:42.817167 Received DATA (on stdin)
 19:27:42.817176 > 18 bytes data, server => client
 19:27:42.817186 'WE ROOLZ: 125319\r\n'
 19:27:42.817198 Received DATA (on stdin)
 19:27:42.817207 > 3 bytes data, server => client
 19:27:42.817216 '.\r\n'
 19:27:42.863124 < 6 bytes data, client => server
 19:27:42.863156 'QUIT\r\n'
 19:27:42.863369 Received DATA (on stdin)
 19:27:42.863379 > 34 bytes data, server => client
 19:27:42.863389 '+OK curl POP3 server signing off\r\n'
 19:27:42.864540 ====> Client disconnect
 19:27:42.864708 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH +
 REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= -ERR Not authorized
 Testnum 893
=== End of file server.cmd
=== Start of file valgrind893
 ==127162== 
 ==127162== Process terminating with default action of signal 4 (SIGILL)
 ==127162==  Illegal opcode at address 0x492B75F
 ==127162==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127162==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127162==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127162==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127162==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127162==    by 0x49908EB: curl_version_info (version.c:600)
 ==127162==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127162==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127162==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127162==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind893
test 0896 [IMAP with --login-options 'AUTH=dummy' (failing)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind896 ../src/curl -q --output log/14/curl896.out  --include --trace-ascii log/14/trace896 --trace-time 'imap://127.0.0.1:40245/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=dummy' > log/14/stdout896 2> log/14/stderr896

curl returned 132, when expecting 3
 896: exit FAILED
== Contents of files in the log/14/ directory after test 896
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind896 ../src/curl -q --output log/14/curl896.out  --include --trace-ascii log/14/trace896 --trace-time 'imap://127.0.0.1:40245/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=dummy' > log/14/stdout896 2> log/14/stderr896
=== End of file commands.log
=== Start of file imap_server.log
 19:27:42.315254 ====> Client connect
 19:27:42.315462 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:42.315770 < "A001 CAPABILITY"
 19:27:42.315811 > "A001 BAD Command[CR][LF]"
 19:27:42.315988 < "A002 LIST "verifiedserver" *"
 19:27:42.316015 LIST_imap got "verifiedserver" *
 19:27:42.316041 > "* LIST () "/" "WE ROOLZ: 121906"[CR][LF]"
 19:27:42.316059 > "A002 OK LIST Completed[CR][LF]"
 19:27:42.316071 return proof we are we
 19:27:42.362287 < "A003 LOGOUT"
 19:27:42.362330 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:42.362344 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:42.363284 MAIN sockfilt said DISC
 19:27:42.363318 ====> Client disconnected
 19:27:42.363370 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:41.921323 ====> Client connect
 19:27:41.921675 Received DATA (on stdin)
 19:27:41.921690 > 164 bytes data, server => client
 19:27:41.921700 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.921713 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.921722 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:41.921804 < 17 bytes data, client => server
 19:27:41.921817 'A001 CAPABILITY\r\n'
 19:27:41.922006 Received DATA (on stdin)
 19:27:41.922017 > 18 bytes data, server => client
 19:27:41.922026 'A001 BAD Command\r\n'
 19:27:41.922085 < 30 bytes data, client => server
 19:27:41.922096 'A002 LIST "verifiedserver" *\r\n'
 19:27:41.922263 Received DATA (on stdin)
 19:27:41.922272 > 34 bytes data, server => client
 19:27:41.922281 '* LIST () "/" "WE ROOLZ: 121906"\r\n'
 19:27:41.922302 Received DATA (on stdin)
 19:27:41.922311 > 24 bytes data, server => client
 19:27:41.922319 'A002 OK LIST Completed\r\n'
 19:27:41.968333 < 13 bytes data, client => server
 19:27:41.968354 'A003 LOGOUT\r\n'
 19:27:41.968529 Received DATA (on stdin)
 19:27:41.968537 > 36 bytes data, server => client
 19:27:41.968544 '* BYE curl IMAP server signing off\r\n'
 19:27:41.968562 Received DATA (on stdin)
 19:27:41.968569 > 26 bytes data, server => client
 19:27:41.968575 'A003 OK LOGOUT completed\r\n'
 19:27:41.969420 ====> Client disconnect
 19:27:41.969553 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 896
=== End of file server.cmd
=== Start of file valgrind896
 ==127291== 
 ==127291== Process terminating with default action of signal 4 (SIGILL)
 ==127291==  Illegal opcode at address 0x492B75F
 ==127291==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127291==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127291==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127291==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127291==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127291==    by 0x49908EB: curl_version_info (version.c:600)
 ==127291==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127291==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127291==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127291==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind896
test 0899 [URL with credentials redirects to URL with different credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind899 ../src/curl -q --output log/21/curl899.out  --include --trace-ascii log/21/trace899 --trace-time http://first:secret@127.0.0.1:39881/899 -L > log/21/stdout899 2> log/21/stderr899

 899: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 899
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind899 ../src/curl -q --output log/21/curl899.out  --include --trace-ascii log/21/trace899 --trace-time http://first:secret@127.0.0.1:39881/899 -L > log/21/stdout899 2> log/21/stderr89CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind895 ../src/curl -q --output log/17/curl895.out  --include --trace-ascii log/17/trace895 --trace-time 'imap://127.0.0.1:39883/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=*' > log/17/stdout895 2> log/17/stderr895
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind897 ../src/curl -q --output log/10/curl897.out  --include --trace-ascii log/10/trace897 --trace-time 'imap://127.0.0.1:43825/897/;MAILINDEX=123/;SECTION=1' -u user:secret -D log/10/head-897 > log/10/stdout897 2> log/10/stderr897
9
=== End of file commands.log
=== Start of file http_server.log
 19:27:42.191572 ====> Client connect
 19:27:42.191625 accept_connection 3 returned 4
 19:27:42.191654 Read 93 bytes
 19:27:42.191666 Process 93 bytes request
 19:27:42.191680 Got request: GET /verifiedserver HTTP/1.1
 19:27:42.191689 Are-we-friendly question received
 19:27:42.191721 Wrote request (93 bytes) input to log/21/server.input
 19:27:42.191740 Identifying ourselves as friends
 19:27:42.198240 Response sent (56 bytes) and written to log/21/server.response
 19:27:42.198258 special request received, no persistency
 19:27:42.198267 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 41696 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 899
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind899
 ==127499== 
 ==127499== Process terminating with default action of signal 4 (SIGILL)
 ==127499==  Illegal opcode at address 0x492B75F
 ==127499==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127499==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127499==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127499==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127499==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127499==    by 0x49908EB: curl_version_info (version.c:600)
 ==127499==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127499==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127499==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127499==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind899
test 0895 [IMAP with --login-options 'AUTH=*']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind895 ../src/curl -q --output log/17/curl895.out  --include --trace-ascii log/17/trace895 --trace-time 'imap://127.0.0.1:39883/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=*' > log/17/stdout895 2> log/17/stderr895

 895: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 895
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind895 ../src/curl -q --output log/17/curl895.out  --include --trace-ascii log/17/trace895 --trace-time 'imap://127.0.0.1:39883/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=*' > log/17/stdout895 2> log/17/stderr895
=== End of file commands.log
=== Start of file imap_server.log
 19:27:42.318343 ====> Client connect
 19:27:42.318502 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:42.318795 < "A001 CAPABILITY"
 19:27:42.318839 > "A001 BAD Command[CR][LF]"
 19:27:42.319017 < "A002 LIST "verifiedserver" *"
 19:27:42.319047 LIST_imap got "verifiedserver" *
 19:27:42.319074 > "* LIST () "/" "WE ROOLZ: 122784"[CR][LF]"
 19:27:42.319092 > "A002 OK LIST Completed[CR][LF]"
 19:27:42.319105 return proof we are we
 19:27:42.363582 < "A003 LOGOUT"
 19:27:42.363621 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:42.363635 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:42.364490 MAIN sockfilt said DISC
 19:27:42.364522 ====> Client disconnected
 19:27:42.364572 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:41.924443 ====> Client connect
 19:27:41.924709 Received DATA (on stdin)
 19:27:41.924724 > 164 bytes data, server => client
 19:27:41.924733 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:41.924742 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:41.924750 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:41.924845 < 17 bytes data, client => server
 19:27:41.924857 'A001 CAPABILITY\r\n'
 19:27:41.925034 Received DATA (on stdin)
 19:27:41.925045 > 18 bytes data, server => client
 19:27:41.925054 'A001 BAD Command\r\n'
 19:27:41.925110 < 30 bytes data, client => server
 19:27:41.925121 'A002 LIST "verifiedserver" *\r\n'
 19:27:41.925298 Received DATA (on stdin)
 19:27:41.925308 > 34 bytes data, server => client
 19:27:41.925317 '* LIST () "/" "WE ROOLZ: 122784"\r\n'
 19:27:41.925338 Received DATA (on stdin)
 19:27:41.925347 > 24 bytes data, server => client
 19:27:41.925355 'A002 OK LIST Completed\r\n'
 19:27:41.969645 < 13 bytes data, client => server
 19:27:41.969658 'A003 LOGOUT\r\n'
 19:27:41.969819 Received DATA (on stdin)
 19:27:41.969827 > 36 bytes data, server => client
 19:27:41.969834 '* BYE curl IMAP server signing off\r\n'
 19:27:41.969850 Received DATA (on stdin)
 19:27:41.969856 > 26 bytes data, server => client
 19:27:41.969863 'A003 OK LOGOUT completed\r\n'
 19:27:41.970629 ====> Client disconnect
 19:27:41.970754 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 895
=== End of file server.cmd
=== Start of file valgrind895
 ==127290== 
 ==127290== Process terminating with default action of signal 4 (SIGILL)
 ==127290==  Illegal opcode at address 0x492B75F
 ==127290==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127290==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127290==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127290==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127290==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127290==    by 0x49908EB: curl_version_info (version.c:600)
 ==127290==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127290==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127290==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127290==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind895
test 0897 [IMAP and envelope meta data after body transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind897 ../src/curl -q --output log/10/curl897.out  --include --trace-ascii log/10/trace897 --trace-time 'imap://127.0.0.1:43825/897/;MAILINDEX=123/;SECTION=1' -u user:secret -D log/10/head-897 > log/10/stdout897 2> log/10/stderr897

 897: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 897
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind897 ../src/curl -q --output log/10/curl897.out  --include --trace-ascii log/10/trace897 --trace-time 'imap://127.0.0.1:43825/897/;MAILINDEX=123/;SECTION=1' -u user:secret -D log/10/head-897 > log/10/stdout897 2> log/10/stderr897
=== End of file commands.log
=== Start of file imap_server.log
 19:27:42.321928 ====> Client connect
 19:27:42.322251 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:42.322602 < "A001 CAPABILITY"
 19:27:42.322641 > "A001 BAD Command[CR][CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind900 ../src/curl -q --output log/4/curl900.out  --include --trace-ascii log/4/trace900 --trace-time smtp://127.0.0.1:32885/900 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/4/mail900 > log/4/stdout900 2> log/4/stderr900
LF]"
 19:27:42.323114 < "A002 LIST "verifiedserver" *"
 19:27:42.323146 LIST_imap got "verifiedserver" *
 19:27:42.323173 > "* LIST () "/" "WE ROOLZ: 121977"[CR][LF]"
 19:27:42.323195 > "A002 OK LIST Completed[CR][LF]"
 19:27:42.323210 return proof we are we
 19:27:42.372943 < "A003 LOGOUT"
 19:27:42.373008 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:42.373030 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:42.374423 MAIN sockfilt said DISC
 19:27:42.374465 ====> Client disconnected
 19:27:42.374556 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:42.927995 ====> Client connect
 19:27:42.928466 Received DATA (on stdin)
 19:27:42.928482 > 164 bytes data, server => client
 19:27:42.928493 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:42.928503 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:42.928513 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:42.928619 < 17 bytes data, client => server
 19:27:42.928636 'A001 CAPABILITY\r\n'
 19:27:42.928835 Received DATA (on stdin)
 19:27:42.928846 > 18 bytes data, server => client
 19:27:42.928856 'A001 BAD Command\r\n'
 19:27:42.929201 < 30 bytes data, client => server
 19:27:42.929217 'A002 LIST "verifiedserver" *\r\n'
 19:27:42.929405 Received DATA (on stdin)
 19:27:42.929418 > 34 bytes data, server => client
 19:27:42.929429 '* LIST () "/" "WE ROOLZ: 121977"\r\n'
 19:27:42.929453 Received DATA (on stdin)
 19:27:42.929463 > 24 bytes data, server => client
 19:27:42.929473 'A002 OK LIST Completed\r\n'
 19:27:42.978608 < 13 bytes data, client => server
 19:27:42.978643 'A003 LOGOUT\r\n'
 19:27:42.979225 Received DATA (on stdin)
 19:27:42.979242 > 36 bytes data, server => client
 19:27:42.979253 '* BYE curl IMAP server signing off\r\n'
 19:27:42.979284 Received DATA (on stdin)
 19:27:42.979294 > 26 bytes data, server => client
 19:27:42.979304 'A003 OK LOGOUT completed\r\n'
 19:27:42.980548 ====> Client disconnect
 19:27:42.980753 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 POSTFETCH extra stuff sent in the envelope after the body
 Testnum 897
=== End of file server.cmd
=== Start of file valgrind897
 ==127303== 
 ==127303== Process terminating with default action of signal 4 (SIGILL)
 ==127303==  Illegal opcode at address 0x492B75F
 ==127303==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127303==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127303==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127303==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127303==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127303==    by 0x49908EB: curl_version_info (version.c:600)
 ==127303==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127303==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127303==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127303==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind897
test 0900 [SMTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind900 ../src/curl -q --output log/4/curl900.out  --include --trace-ascii log/4/trace900 --trace-time smtp://127.0.0.1:32885/900 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/4/mail900 > log/4/stdout900 2> log/4/stderr900

 900: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 900
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind900 ../src/curl -q --output log/4/curl900.out  --include --trace-ascii log/4/trace900 --trace-time smtp://127.0.0.1:32885/900 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/4/mail900 > log/4/stdout900 2> log/4/stderr900
=== End of file commands.log
=== Start of file mail900
 From: different
 To: another
 body
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind901 ../src/curl -q --output log/20/curl901.out  --include --trace-ascii log/20/trace901 --trace-time smtp://127.0.0.1:44599/901 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/20/stdin-for-901 > log/20/stdout901 2> log/20/stderr901
456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
=== End of file mail900
=== Start of file server.cmd
 Testnum 900
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:42.812126 ====> Client connect
 19:27:42.812362 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:42.812738 < "EHLO verifiedserver"
 19:27:42.812793 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:42.813006 < "HELP"
 19:27:42.813043 > "214 WE ROOLZ: 113210[CR][LF]"
 19:27:42.813059 return proof we are we
 19:27:42.815472 < "QUIT"
 19:27:42.815512 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:42.815790 MAIN sockfilt said DISC
 19:27:42.815824 ====> Client disconnected
 19:27:42.815899 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:42.418148 ====> Client connect
 19:27:42.418526 Received DATA (on stdin)
 19:27:42.418545 > 146 bytes data, server => client
 19:27:42.418556 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:42.418574 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:42.418584 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:42.418679 < 21 bytes data, client => server
 19:27:42.418696 'EHLO verifiedserver\r\n'
 19:27:42.418945 Received DATA (on stdin)
 19:27:42.418958 > 53 bytes data, server => client
 19:27:42.418969 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:42.419037 < 6 bytes data, client => server
 19:27:42.419051 'HELP\r\n'
 19:27:42.419199 Received DATA (on stdin)
 19:27:42.419210 > 22 bytes data, server => client
 19:27:42.419219 '214 WE ROOLZ: 113210\r\n'
 19:27:42.421493 < 6 bytes data, client => server
 19:27:42.421513 'QUIT\r\n'
 19:27:42.421660 Received DATA (on stdin)
 19:27:42.421673 > 35 bytes data, server => client
 19:27:42.421683 '221 curl ESMTP server signing off\r\n'
 19:27:42.421867 ====> Client disconnect
 19:27:42.422048 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind900
 ==127577== 
 ==127577== Process terminating with default action of signal 4 (SIGILL)
 ==127577==  Illegal opcode at address 0x492B75F
 ==127577==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127577==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127577==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127577==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127577==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127577==    by 0x49908EB: curl_version_info (version.c:600)
 ==127577==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127577==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127577==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127577==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind900
test 0901 [SMTP with CRLF-dot-CRLF in data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind901 ../src/curl -q --output log/20/curl901.out  --include --trace-ascii log/20/trace901 --trace-time smtp://127.0.0.1:44599/901 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/20/stdin-for-901 > log/20/stdout901 2> log/20/stderr901

 901: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 901
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind901 ../src/curl -q --output log/20/curl901.out  --include --trace-ascii log/20/trace901 --trace-time smtp://127.0.0.1:44599/901 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/20/stdin-for-901 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind902 ../src/curl -q --output log/19/curl902.out  --include --trace-ascii log/19/trace902 --trace-time smtp://127.0.0.1:33719/902 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/19/stdin-for-902 > log/19/stdout902 2> log/19/stderr902
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind904 ../src/curl -q --output log/6/curl904.out  --include --trace-ascii log/6/trace904 --trace-time smtp://127.0.0.1:39499/904 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/6/stdin-for-904 > log/6/stdout904 2> log/6/stderr904
> log/20/stdout901 2> log/20/stderr901
=== End of file commands.log
=== Start of file server.cmd
 Testnum 901
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:42.961188 ====> Client connect
 19:27:42.961426 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:42.961783 < "EHLO verifiedserver"
 19:27:42.961839 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:42.962048 < "HELP"
 19:27:42.962091 > "214 WE ROOLZ: 113262[CR][LF]"
 19:27:42.962108 return proof we are we
 19:27:42.962373 < "QUIT"
 19:27:42.962407 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:42.963554 MAIN sockfilt said DISC
 19:27:42.963588 ====> Client disconnected
 19:27:42.963667 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.567175 ====> Client connect
 19:27:43.567571 Received DATA (on stdin)
 19:27:43.567590 > 146 bytes data, server => client
 19:27:43.567601 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:43.567611 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:43.567624 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:43.567715 < 21 bytes data, client => server
 19:27:43.567727 'EHLO verifiedserver\r\n'
 19:27:43.567968 Received DATA (on stdin)
 19:27:43.567981 > 53 bytes data, server => client
 19:27:43.567991 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:43.568053 < 6 bytes data, client => server
 19:27:43.568064 'HELP\r\n'
 19:27:43.568234 Received DATA (on stdin)
 19:27:43.568246 > 22 bytes data, server => client
 19:27:43.568257 '214 WE ROOLZ: 113262\r\n'
 19:27:43.568367 < 6 bytes data, client => server
 19:27:43.568383 'QUIT\r\n'
 19:27:43.568535 Received DATA (on stdin)
 19:27:43.568546 > 35 bytes data, server => client
 19:27:43.568556 '221 curl ESMTP server signing off\r\n'
 19:27:43.569617 ====> Client disconnect
 19:27:43.569802 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-901
 From: different
 To: another
 .
 .
 .
 body
=== End of file stdin-for-901
=== Start of file valgrind901
 ==127633== 
 ==127633== Process terminating with default action of signal 4 (SIGILL)
 ==127633==  Illegal opcode at address 0x492B75F
 ==127633==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127633==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127633==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127633==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127633==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127633==    by 0x49908EB: curl_version_info (version.c:600)
 ==127633==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127633==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind901
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/19/server/smtp_server.pid" --logfile "log/19/smtp_server.log" --logdir "log/19" --portfile "log/19/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33719 (log/19/server/smtp_server.port)
RUN: SMTP server is PID 127656 port 33719
* pid smtp => 127656 127656
test 0902 [RFC821-only SMTP server (EHLO not supported)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind902 ../src/curl -q --output log/19/curl902.out  --include --trace-ascii log/19/trace902 --trace-time smtp://127.0.0.1:33719/902 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/19/stdin-for-902 > log/19/stdout902 2> log/19/stderr902

 902: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 902
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind902 ../src/curl -q --output log/19/curl902.out  --include --trace-ascii log/19/trace902 --trace-time smtp://127.0.0.1:33719/902 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/19/stdin-for-902 > log/19/stdout902 2> log/19/stderr902
=== End of file commands.log
=== Start of file server.cmd
 REPLY EHLO 500 Command unrecognized
 Testnum 902
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:43.105713 SMTP server listens on port IPv4/33719
 19:27:43.105811 logged pid 127656 in log/19/server/smtp_server.pid
 19:27:43.105855 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.711181 Running IPv4 version
 19:27:43.711608 Listening on port 33719
 19:27:43.711661 Wrote pid 127692 to log/19/server/smtp_sockfilt.pid
 19:27:43.711693 Wrote port 33719 to log/19/server/smtp_server.port
 19:27:43.711715 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-902
 From: different
 To: another
 body
=== End of file stdin-for-902
=== Start of file valgrind902
 ==127775== 
 ==127775== Process terminating with default action of signal 4 (SIGILL)
 ==127775==  Illegal opcode at address 0x492B75F
 ==127775==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127775==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127775==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127775==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127775==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127775==    by 0x49908EB: curl_version_info (version.c:600)
 ==127775==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127775==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127775==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127775==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind902
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/6/server/smtp_server.pid" --logfile "log/6/smtp_server.log" --logdir "log/6" --portfile "log/6/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 39499 (log/6/server/smtp_server.port)
RUN: SMTP server is PID 127735 port 39499
* pid smtp => 127735 127735
test 0904 [SMTP login authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind904 ../src/curl -q --output log/6/curl904.out  --include --trace-ascii log/6/trace904 --trace-time smtp://127.0.0.1:39499/904 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/6/stdin-for-904 > log/6/stdout904 2> log/6/stderr904

 904: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 904
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind904 ../src/curl -q --output log/6/curl904.out  --include --trace-ascii log/6/trace904 --trace-time smtp://127.0.0.1:39499/904 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/6/stdin-for-904 > log/6/stdout904 2> log/6/stderr904
=== End of file commands.log
=== Start of file server.cmd
 AUTH LOGIN
 REPLY AUTH 334 VXNlcm5hbWU6
 REPLY dXNlcg== 334 UGFzc3dvcmQ6
 REPLY c2VjcmV0 235 Authenticated
 Testnum 904
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:43.592168 SMTP server listens on port IPv4/39499
 19:27:43.592298 logged pid 127735 in log/6/seCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind919 ../src/curl -q --output log/14/curl919.out  --include --trace-ascii log/14/trace919 --trace-time smtp://127.0.0.1:44025/919 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T - <log/14/stdin-for-919 > log/14/stdout919 2> log/14/stderr919
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind903 ../src/curl -q --output log/3/curl903.out  --include --trace-ascii log/3/trace903 --trace-time smtp://127.0.0.1:38593/903 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/3/stdin-for-903 > log/3/stdout903 2> log/3/stderr903
rver/smtp_server.pid
 19:27:43.592347 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.192082 Running IPv4 version
 19:27:43.192172 Listening on port 39499
 19:27:43.192211 Wrote pid 127745 to log/6/server/smtp_sockfilt.pid
 19:27:43.192243 Wrote port 39499 to log/6/server/smtp_server.port
 19:27:43.198047 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-904
 mail body
=== End of file stdin-for-904
=== Start of file valgrind904
 ==127874== 
 ==127874== Process terminating with default action of signal 4 (SIGILL)
 ==127874==  Illegal opcode at address 0x492B75F
 ==127874==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127874==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127874==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127874==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127874==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127874==    by 0x49908EB: curl_version_info (version.c:600)
 ==127874==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127874==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind904
test 0919 [SMTP plain authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind919 ../src/curl -q --output log/14/curl919.out  --include --trace-ascii log/14/trace919 --trace-time smtp://127.0.0.1:44025/919 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T - <log/14/stdin-for-919 > log/14/stdout919 2> log/14/stderr919

 919: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 919
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind919 ../src/curl -q --output log/14/curl919.out  --include --trace-ascii log/14/trace919 --trace-time smtp://127.0.0.1:44025/919 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T - <log/14/stdin-for-919 > log/14/stdout919 2> log/14/stderr919
=== End of file commands.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH 235 Authenticated
 Testnum 919
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.522135 ====> Client connect
 19:27:44.522369 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:44.525753 < "EHLO verifiedserver"
 19:27:44.525828 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:44.526076 < "HELP"
 19:27:44.526125 > "214 WE ROOLZ: 113204[CR][LF]"
 19:27:44.526148 return proof we are we
 19:27:44.526384 < "QUIT"
 19:27:44.526423 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:44.527661 MAIN sockfilt said DISC
 19:27:44.527694 ====> Client disconnected
 19:27:44.527769 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.127970 ====> Client connect
 19:27:44.128347 Received DATA (on stdin)
 19:27:44.128366 > 146 bytes data, server => client
 19:27:44.128383 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:44.128394 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:44.128403 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:44.131431 < 21 bytes data, client => server
 19:27:44.131466 'EHLO verifiedserver\r\n'
 19:27:44.131802 Received DATA (on stdin)
 19:27:44.131818 > 53 bytes data, server => client
 19:27:44.131829 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:44.131898 < 6 bytes data, client => server
 19:27:44.131912 'HELP\r\n'
 19:27:44.132106 Received DATA (on stdin)
 19:27:44.132119 > 22 bytes data, server => client
 19:27:44.132128 '214 WE ROOLZ: 113204\r\n'
 19:27:44.132237 < 6 bytes data, client => server
 19:27:44.132252 'QUIT\r\n'
 19:27:44.132383 Received DATA (on stdin)
 19:27:44.132395 > 35 bytes data, server => client
 19:27:44.132405 '221 curl ESMTP server signing off\r\n'
 19:27:44.133559 ====> Client disconnect
 19:27:44.133732 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-919
 mail body
=== End of file stdin-for-919
=== Start of file valgrind919
 ==127886== 
 ==127886== Process terminating with default action of signal 4 (SIGILL)
 ==127886==  Illegal opcode at address 0x492B75F
 ==127886==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127886==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127886==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127886==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127886==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127886==    by 0x49908EB: curl_version_info (version.c:600)
 ==127886==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127886==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind919
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/3/server/smtp_server.pid" --logfile "log/3/smtp_server.log" --logdir "log/3" --portfile "log/3/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 38593 (log/3/server/smtp_server.port)
RUN: SMTP server is PID 127734 port 38593
* pid smtp => 127734 127734
test 0903 [SMTP plain authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind903 ../src/curl -q --output log/3/curl903.out  --include --trace-ascii log/3/trace903 --trace-time smtp://127.0.0.1:38593/903 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/3/stdin-for-903 > log/3/stdout903 2> log/3/stderr903

 903: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 903
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind903 ../src/curl -q --output log/3/curl903.out  --include --trace-ascii log/3/trace903 --trace-time smtp://127.0.0.1:38593/903 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/3/stdin-for-903 > log/3/stdout903 2> log/3/stderr903
=== End of file commands.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH 334 PLAIN supported
 REPLY AHVzZXIAc2VjcmV0 235 Authenticated
 Testnum 903
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:43.535512 SMTP server listens on port IPv4/38593
 19:27:43.535673 logged pid 127734 in log/3/server/smtp_server.pid
 19:27:43.535737 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.135571 Running IPv4 version
 19:27:43.135688 Listening on port 38593
 19:27:43.135733 Wrote pid 127741 to log/3/server/smtp_sockfilt.pid
 19:27:43.135765 Wrote port 38593 to log/3/server/smtp_server.port
 19:27:43.141392 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-903
 mail body
=== End of file stdin-for-903
=== Start of file valgrind903
 ==127867== 
 ==127867== Process terminating with default action of signal 4 (SIGILL)
 ==127867==  Illegal opcode at address 0x492B75F
 ==127867==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127867==    by 0x492C53A: cuCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind908 ../src/curl -q --output log/5/curl908.out  --include --trace-ascii log/5/trace908 --trace-time smtp://127.0.0.1:44397/908 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/5/stdin-for-908 > log/5/stdout908 2> log/5/stderr908
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind909 ../src/curl -q --output log/2/curl909.out  --include --trace-ascii log/2/trace909 --trace-time smtp://127.0.0.1:33505/909 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/2/test909.eml > log/2/stdout909 2> log/2/stderr909
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind905 ../src/curl -q --output log/22/curl905.out  --include --trace-ascii log/22/trace905 --trace-time smtp://127.0.0.1:43827/905 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/22/stdin-for-905 > log/22/stdout905 2> log/22/stderr905
rl_mvsnprintf (mprintf.c:1257)
 ==127867==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127867==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127867==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127867==    by 0x49908EB: curl_version_info (version.c:600)
 ==127867==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127867==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127867==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127867==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind903
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/5/server/smtp_server.pid" --logfile "log/5/smtp_server.log" --logdir "log/5" --portfile "log/5/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44397 (log/5/server/smtp_server.port)
RUN: SMTP server is PID 127748 port 44397
* pid smtp => 127748 127748
test 0908 [SMTP OAuth 2.0 (XOAUTH2) authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind908 ../src/curl -q --output log/5/curl908.out  --include --trace-ascii log/5/trace908 --trace-time smtp://127.0.0.1:44397/908 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/5/stdin-for-908 > log/5/stdout908 2> log/5/stderr908

 908: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 908
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind908 ../src/curl -q --output log/5/curl908.out  --include --trace-ascii log/5/trace908 --trace-time smtp://127.0.0.1:44397/908 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/5/stdin-for-908 > log/5/stdout908 2> log/5/stderr908
=== End of file commands.log
=== Start of file server.cmd
 AUTH XOAUTH2
 REPLY AUTH 334 XOAUTH2 supported
 REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB 235 Authenticated
 Testnum 908
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:43.779168 SMTP server listens on port IPv4/44397
 19:27:43.779290 logged pid 127748 in log/5/server/smtp_server.pid
 19:27:43.779329 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.384903 Running IPv4 version
 19:27:43.385017 Listening on port 44397
 19:27:43.385057 Wrote pid 127757 to log/5/server/smtp_sockfilt.pid
 19:27:43.385088 Wrote port 44397 to log/5/server/smtp_server.port
 19:27:43.385108 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-908
 mail body
=== End of file stdin-for-908
=== Start of file valgrind908
 ==128030== 
 ==128030== Process terminating with default action of signal 4 (SIGILL)
 ==128030==  Illegal opcode at address 0x492B75F
 ==128030==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128030==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128030==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128030==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128030==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128030==    by 0x49908EB: curl_version_info (version.c:600)
 ==128030==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128030==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128030==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128030==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind908
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/2/server/smtp_server.pid" --logfile "log/2/smtp_server.log" --logdir "log/2" --portfile "log/2/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33505 (log/2/server/smtp_server.port)
RUN: SMTP server is PID 127750 port 33505
* pid smtp => 127750 127750
test 0909 [SMTP without SIZE support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind909 ../src/curl -q --output log/2/curl909.out  --include --trace-ascii log/2/trace909 --trace-time smtp://127.0.0.1:33505/909 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/2/test909.eml > log/2/stdout909 2> log/2/stderr909

 909: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 909
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind909 ../src/curl -q --output log/2/curl909.out  --include --trace-ascii log/2/trace909 --trace-time smtp://127.0.0.1:33505/909 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/2/test909.eml > log/2/stdout909 2> log/2/stderr909
=== End of file commands.log
=== Start of file server.cmd
 Testnum 909
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:43.772265 SMTP server listens on port IPv4/33505
 19:27:43.772381 logged pid 127750 in log/2/server/smtp_server.pid
 19:27:43.772429 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.375756 Running IPv4 version
 19:27:43.375853 Listening on port 33505
 19:27:43.375892 Wrote pid 127754 to log/2/server/smtp_sockfilt.pid
 19:27:43.375920 Wrote port 33505 to log/2/server/smtp_server.port
 19:27:43.378184 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file test909.eml
 From: different
 To: another
 body
=== End of file test909.eml
=== Start of file valgrind909
 ==128029== 
 ==128029== Process terminating with default action of signal 4 (SIGILL)
 ==128029==  Illegal opcode at address 0x492B75F
 ==128029==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128029==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128029==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128029==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128029==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128029==    by 0x49908EB: curl_version_info (version.c:600)
 ==128029==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128029==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind909
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/22/server/smtp_server.pid" --logfile "log/22/smtp_server.log" --logdir "log/22" --portfile "log/22/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 43827 (log/22/server/smtp_server.port)
RUN: SMTP server is PID 127746 port 43827
* pid smtp => 127746 127746
test 0905 [SMTP CRAM-MD5 authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind905 ../src/curl -q --output log/22/curl905.out  --include --trace-ascii log/22/trace905 --trace-time smtp://127.0.0.1:43827/905 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/22/stdin-for-905 > log/22/stdout905 2> log/22/stderr905

 905: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 905
=== Start of fileCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind910 ../src/curl -q --output log/15/curl910.out  --include --trace-ascii log/15/trace910 --trace-time smtp://127.0.0.1:44021/910 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/15/stdin-for-910 > log/15/stdout910 2> log/15/stderr910
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind912 ../src/curl -q --output log/24/curl912.out  --include --trace-ascii log/24/trace912 --trace-time smtp://127.0.0.1:40147/912 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/24/test912.eml > log/24/stdout912 2> log/24/stderr912
 commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind905 ../src/curl -q --output log/22/curl905.out  --include --trace-ascii log/22/trace905 --trace-time smtp://127.0.0.1:43827/905 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/22/stdin-for-905 > log/22/stdout905 2> log/22/stderr905
=== End of file commands.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 REPLY AUTH 334 PDE5NzIuOTg3NjU0MzIxQGN1cmw+
 REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== 235 Authenticated
 Testnum 905
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:43.689321 SMTP server listens on port IPv4/43827
 19:27:43.689454 logged pid 127746 in log/22/server/smtp_server.pid
 19:27:43.689510 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:43.289279 Running IPv4 version
 19:27:43.289389 Listening on port 43827
 19:27:43.289435 Wrote pid 127747 to log/22/server/smtp_sockfilt.pid
 19:27:43.289471 Wrote port 43827 to log/22/server/smtp_server.port
 19:27:43.295222 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-905
 mail body
=== End of file stdin-for-905
=== Start of file valgrind905
 ==127985== 
 ==127985== Process terminating with default action of signal 4 (SIGILL)
 ==127985==  Illegal opcode at address 0x492B75F
 ==127985==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==127985==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==127985==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==127985==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==127985==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==127985==    by 0x49908EB: curl_version_info (version.c:600)
 ==127985==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==127985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==127985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==127985==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind905
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/15/server/smtp_server.pid" --logfile "log/15/smtp_server.log" --logdir "log/15" --portfile "log/15/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44021 (log/15/server/smtp_server.port)
RUN: SMTP server is PID 127773 port 44021
* pid smtp => 127773 127773
test 0910 [SMTP without terminating CRLF]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind910 ../src/curl -q --output log/15/curl910.out  --include --trace-ascii log/15/trace910 --trace-time smtp://127.0.0.1:44021/910 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/15/stdin-for-910 > log/15/stdout910 2> log/15/stderr910

 910: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 910
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind910 ../src/curl -q --output log/15/curl910.out  --include --trace-ascii log/15/trace910 --trace-time smtp://127.0.0.1:44021/910 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/15/stdin-for-910 > log/15/stdout910 2> log/15/stderr910
=== End of file commands.log
=== Start of file server.cmd
 Testnum 910
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.068986 SMTP server listens on port IPv4/44021
 19:27:44.069123 logged pid 127773 in log/15/server/smtp_server.pid
 19:27:44.069179 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.672292 Running IPv4 version
 19:27:44.672406 Listening on port 44021
 19:27:44.672458 Wrote pid 127777 to log/15/server/smtp_sockfilt.pid
 19:27:44.672499 Wrote port 44021 to log/15/server/smtp_server.port
 19:27:44.674846 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-910
 From: different
 To: another
 body
=== End of file stdin-for-910
=== Start of file valgrind910
 ==128218== 
 ==128218== Process terminating with default action of signal 4 (SIGILL)
 ==128218==  Illegal opcode at address 0x492B75F
 ==128218==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128218==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128218==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128218==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128218==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128218==    by 0x49908EB: curl_version_info (version.c:600)
 ==128218==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128218==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128218==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128218==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind910
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/24/server/smtp_server.pid" --logfile "log/24/smtp_server.log" --logdir "log/24" --portfile "log/24/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 40147 (log/24/server/smtp_server.port)
RUN: SMTP server is PID 127811 port 40147
* pid smtp => 127811 127811
test 0912 [SMTP with SIZE support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind912 ../src/curl -q --output log/24/curl912.out  --include --trace-ascii log/24/trace912 --trace-time smtp://127.0.0.1:40147/912 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/24/test912.eml > log/24/stdout912 2> log/24/stderr912

 912: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 912
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind912 ../src/curl -q --output log/24/curl912.out  --include --trace-ascii log/24/trace912 --trace-time smtp://127.0.0.1:40147/912 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/24/test912.eml > log/24/stdout912 2> log/24/stderr912
=== End of file commands.log
=== Start of file server.cmd
 CAPA SIZE
 Testnum 912
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.273954 SMTP server listens on port IPv4/40147
 19:27:44.274066 logged pid 127811 in log/24/server/smtp_server.pid
 19:27:44.275852 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.879369 Running IPv4 version
 19:27:44.879452 Listening on port 40147
 19:27:44.879496 Wrote pid 127835 to log/24/server/smtp_sockfilt.pid
 19:27:44.879527 Wrote port 40147 to log/24/server/smtp_server.port
 19:27:44.879827 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file test912.eml
 From: different
 To: another
 body
=== End of file test912.eml
=== Start of file valgrind912
 ==128324== 
 ==128324== Process terminating with default action of signal 4 (SIGILL)
 ==128324==  Illegal opcode at address 0x492B75F
 ==128324==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128324==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128324==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128324==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128324==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128324==    by 0x49908EB: curl_version_info (versCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind914 ../src/curl -q --output log/9/curl914.out  --include --trace-ascii log/9/trace914 --trace-time smtp://127.0.0.1:44813/914 --mail-rcpt recipient@example.com --mail-from invalid -T log/9/test914.eml > log/9/stdout914 2> log/9/stderr914
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind917 ../src/curl -q --output log/13/curl917.out  --include --trace-ascii log/13/trace917 --trace-time smtp://127.0.0.1:45003/917 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/13/stdin-for-917 > log/13/stdout917 2> log/13/stderr917
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind924 ../src/curl -q --output log/4/curl924.out  --include --trace-ascii log/4/trace924 --trace-time smtp://127.0.0.1:32885/924 --mail-rcpt smith > log/4/stdout924 2> log/4/stderr924
ion.c:600)
 ==128324==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128324==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind912
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/9/server/smtp_server.pid" --logfile "log/9/smtp_server.log" --logdir "log/9" --portfile "log/9/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 44813 (log/9/server/smtp_server.port)
RUN: SMTP server is PID 127818 port 44813
* pid smtp => 127818 127818
test 0914 [SMTP invalid --mail-from]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind914 ../src/curl -q --output log/9/curl914.out  --include --trace-ascii log/9/trace914 --trace-time smtp://127.0.0.1:44813/914 --mail-rcpt recipient@example.com --mail-from invalid -T log/9/test914.eml > log/9/stdout914 2> log/9/stderr914

 914: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 914
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind914 ../src/curl -q --output log/9/curl914.out  --include --trace-ascii log/9/trace914 --trace-time smtp://127.0.0.1:44813/914 --mail-rcpt recipient@example.com --mail-from invalid -T log/9/test914.eml > log/9/stdout914 2> log/9/stderr914
=== End of file commands.log
=== Start of file server.cmd
 REPLY MAIL 501 not fine enough
 Testnum 914
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.293506 SMTP server listens on port IPv4/44813
 19:27:44.293623 logged pid 127818 in log/9/server/smtp_server.pid
 19:27:44.293679 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.898908 Running IPv4 version
 19:27:44.899092 Listening on port 44813
 19:27:44.899140 Wrote pid 127839 to log/9/server/smtp_sockfilt.pid
 19:27:44.899177 Wrote port 44813 to log/9/server/smtp_server.port
 19:27:44.899372 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file test914.eml
 From: different
 To: another
 body
=== End of file test914.eml
=== Start of file valgrind914
 ==128355== 
 ==128355== Process terminating with default action of signal 4 (SIGILL)
 ==128355==  Illegal opcode at address 0x492B75F
 ==128355==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128355==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128355==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128355==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128355==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128355==    by 0x49908EB: curl_version_info (version.c:600)
 ==128355==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128355==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128355==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128355==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind914
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/13/server/smtp_server.pid" --logfile "log/13/smtp_server.log" --logdir "log/13" --portfile "log/13/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45003 (log/13/server/smtp_server.port)
RUN: SMTP server is PID 127845 port 45003
* pid smtp => 127845 127845
test 0917 [SMTP with multiple --mail-rcpt]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind917 ../src/curl -q --output log/13/curl917.out  --include --trace-ascii log/13/trace917 --trace-time smtp://127.0.0.1:45003/917 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/13/stdin-for-917 > log/13/stdout917 2> log/13/stderr917

 917: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 917
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind917 ../src/curl -q --output log/13/curl917.out  --include --trace-ascii log/13/trace917 --trace-time smtp://127.0.0.1:45003/917 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/13/stdin-for-917 > log/13/stdout917 2> log/13/stderr917
=== End of file commands.log
=== Start of file server.cmd
 Testnum 917
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.409916 SMTP server listens on port IPv4/45003
 19:27:44.410028 logged pid 127845 in log/13/server/smtp_server.pid
 19:27:44.410076 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.012516 Running IPv4 version
 19:27:44.012611 Listening on port 45003
 19:27:44.012655 Wrote pid 127848 to log/13/server/smtp_sockfilt.pid
 19:27:44.012688 Wrote port 45003 to log/13/server/smtp_server.port
 19:27:44.012709 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-917
 From: different
 To: another
 body
=== End of file stdin-for-917
=== Start of file valgrind917
 ==128559== 
 ==128559== Process terminating with default action of signal 4 (SIGILL)
 ==128559==  Illegal opcode at address 0x492B75F
 ==128559==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128559==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128559==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128559==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128559==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128559==    by 0x49908EB: curl_version_info (version.c:600)
 ==128559==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128559==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128559==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind917
test 0924 [SMTP ambiguous VRFY]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind924 ../src/curl -q --output log/4/curl924.out  --include --trace-ascii log/4/trace924 --trace-time smtp://127.0.0.1:32885/924 --mail-rcpt smith > log/4/stdout924 2> log/4/stderr924

 924: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 924
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind924 ../src/curl -q --output log/4/curl924.out  --include --trace-ascii log/4/trace924 --trace-time smtp://127.0.0.1:32885/924 --mail-rcpt smith > log/4/stdout924 2> log/4/stderr924
=== End of file commands.log
=== Start of file server.cmd
 Testnum 924
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.925471 ====> Client connect
 19:27:44.925672 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind918 ../src/curl -q --output log/18/curl918.out  --include --trace-ascii log/18/trace918 --trace-time smtp://127.0.0.1:33075/918 --mail-rcpt recipient.one@example.com --mail-rcpt invalid --mail-rcpt recipient.three@example.com --mail-rcpt sTrAnGe --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/18/stdin-for-918 > log/18/stdout918 2> log/18/stderr918
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind925 ../src/curl -q --output log/20/curl925.out  --include --trace-ascii log/20/trace925 --trace-time smtp://127.0.0.1:44599/925 --mail-rcpt user@example.net > log/20/stdout925 2> log/20/stderr925
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind911 ../src/curl -q --output log/16/curl911.out  --include --trace-ascii log/16/trace911 --trace-time smtp://127.0.0.1:33205/911 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/16/stdin-for-911 > log/16/stdout911 2> log/16/stderr911
|[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:44.932266 < "EHLO verifiedserver"
 19:27:44.932334 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:44.938877 < "HELP"
 19:27:44.938938 > "214 WE ROOLZ: 113210[CR][LF]"
 19:27:44.938960 return proof we are we
 19:27:44.942799 < "QUIT"
 19:27:44.942899 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:44.944335 MAIN sockfilt said DISC
 19:27:44.944375 ====> Client disconnected
 19:27:44.944454 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.531251 ====> Client connect
 19:27:44.531615 Received DATA (on stdin)
 19:27:44.531632 > 146 bytes data, server => client
 19:27:44.531644 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:44.531654 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:44.531663 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:44.537920 < 21 bytes data, client => server
 19:27:44.537957 'EHLO verifiedserver\r\n'
 19:27:44.538263 Received DATA (on stdin)
 19:27:44.538279 > 53 bytes data, server => client
 19:27:44.538290 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:44.544585 < 6 bytes data, client => server
 19:27:44.544620 'HELP\r\n'
 19:27:44.544879 Received DATA (on stdin)
 19:27:44.544893 > 22 bytes data, server => client
 19:27:44.544904 '214 WE ROOLZ: 113210\r\n'
 19:27:44.548522 < 6 bytes data, client => server
 19:27:44.548549 'QUIT\r\n'
 19:27:44.548747 Received DATA (on stdin)
 19:27:44.548761 > 35 bytes data, server => client
 19:27:44.548818 '221 curl ESMTP server signing off\r\n'
 19:27:44.550188 ====> Client disconnect
 19:27:44.550368 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind924
 ==128188== 
 ==128188== Process terminating with default action of signal 4 (SIGILL)
 ==128188==  Illegal opcode at address 0x492B75F
 ==128188==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128188==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128188==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128188==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128188==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128188==    by 0x49908EB: curl_version_info (version.c:600)
 ==128188==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128188==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128188==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128188==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind924
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/18/server/smtp_server.pid" --logfile "log/18/smtp_server.log" --logdir "log/18" --portfile "log/18/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33075 (log/18/server/smtp_server.port)
RUN: SMTP server is PID 127847 port 33075
* pid smtp => 127847 127847
test 0918 [SMTP with multiple and invalid --mail-rcpt]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind918 ../src/curl -q --output log/18/curl918.out  --include --trace-ascii log/18/trace918 --trace-time smtp://127.0.0.1:33075/918 --mail-rcpt recipient.one@example.com --mail-rcpt invalid --mail-rcpt recipient.three@example.com --mail-rcpt sTrAnGe --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/18/stdin-for-918 > log/18/stdout918 2> log/18/stderr918

 918: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 918
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind918 ../src/curl -q --output log/18/curl918.out  --include --trace-ascii log/18/trace918 --trace-time smtp://127.0.0.1:33075/918 --mail-rcpt recipient.one@example.com --mail-rcpt invalid --mail-rcpt recipient.three@example.com --mail-rcpt sTrAnGe --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/18/stdin-for-918 > log/18/stdout918 2> log/18/stderr918
=== End of file commands.log
=== Start of file server.cmd
 Testnum 918
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.463753 SMTP server listens on port IPv4/33075
 19:27:44.463867 logged pid 127847 in log/18/server/smtp_server.pid
 19:27:44.463916 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.069247 Running IPv4 version
 19:27:44.069358 Listening on port 33075
 19:27:44.069401 Wrote pid 127856 to log/18/server/smtp_sockfilt.pid
 19:27:44.069431 Wrote port 33075 to log/18/server/smtp_server.port
 19:27:44.069602 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-918
 From: different
 To: another
 body
=== End of file stdin-for-918
=== Start of file valgrind918
 ==128579== 
 ==128579== Process terminating with default action of signal 4 (SIGILL)
 ==128579==  Illegal opcode at address 0x492B75F
 ==128579==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128579==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128579==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128579==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128579==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128579==    by 0x49908EB: curl_version_info (version.c:600)
 ==128579==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128579==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128579==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128579==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind918
test 0925 [SMTP external VRFY]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind925 ../src/curl -q --output log/20/curl925.out  --include --trace-ascii log/20/trace925 --trace-time smtp://127.0.0.1:44599/925 --mail-rcpt user@example.net > log/20/stdout925 2> log/20/stderr925

 925: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 925
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind925 ../src/curl -q --output log/20/curl925.out  --include --trace-ascii log/20/trace925 --trace-time smtp://127.0.0.1:44599/925 --mail-rcpt user@example.net > log/20/stdout925 2> log/20/stderr925
=== End of file commands.log
=== Start of file server.cmd
 Testnum 925
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:45.170150 ====> Client connect
 19:27:45.170333 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:45.170612 < "EHLO verifiedserver"
 19:27:45.170650 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:45.170813 < "HELP"
 19:27:45.170842 > "214 WE ROOLZ: 113262[CR][LF]"
 19:27:45.170856 return proof we are we
 19:27:45.171059 < "QUIT"
 19:27:45.171085 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:45.172152 MAIN sockfilt said DISC
 19:27:45.172181 ====> Client disconnected
 19:27:45.172247 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:45.775903 ====> Client connect
 19:27:45.776235 Received DATA (on stdin)
 19:27:45.776249 > 146 bytes data, server => client
 19:27:45.776260 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:45.776270 '0-   / __| | | | |_) | |\r\n220-  | (__| |_|CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind916 ../src/curl -q --output log/7/curl916.out  --include --trace-ascii log/7/trace916 --trace-time smtp://127.0.0.1:33449/916 --mail-rcpt invalid --mail-from sender@example.com -T - <log/7/stdin-for-916 > log/7/stdout916 2> log/7/stderr916
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind913 ../src/curl -q --output log/1/curl913.out  --include --trace-ascii log/1/trace913 --trace-time smtp://127.0.0.1:42673/913 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/1/test913.eml > log/1/stdout913 2> log/1/stderr913
 |  _ {| |___\r\n'
 19:27:45.776279 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:45.776351 < 21 bytes data, client => server
 19:27:45.776361 'EHLO verifiedserver\r\n'
 19:27:45.776540 Received DATA (on stdin)
 19:27:45.776550 > 53 bytes data, server => client
 19:27:45.776561 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:45.776616 < 6 bytes data, client => server
 19:27:45.776625 'HELP\r\n'
 19:27:45.776740 Received DATA (on stdin)
 19:27:45.776750 > 22 bytes data, server => client
 19:27:45.776759 '214 WE ROOLZ: 113262\r\n'
 19:27:45.776866 < 6 bytes data, client => server
 19:27:45.776876 'QUIT\r\n'
 19:27:45.776970 Received DATA (on stdin)
 19:27:45.776979 > 35 bytes data, server => client
 19:27:45.776989 '221 curl ESMTP server signing off\r\n'
 19:27:45.777992 ====> Client disconnect
 19:27:45.778133 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind925
 ==128302== 
 ==128302== Process terminating with default action of signal 4 (SIGILL)
 ==128302==  Illegal opcode at address 0x492B75F
 ==128302==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128302==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128302==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128302==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128302==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128302==    by 0x49908EB: curl_version_info (version.c:600)
 ==128302==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128302==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128302==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128302==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind925
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/16/server/smtp_server.pid" --logfile "log/16/smtp_server.log" --logdir "log/16" --portfile "log/16/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33205 (log/16/server/smtp_server.port)
RUN: SMTP server is PID 127808 port 33205
* pid smtp => 127808 127808
test 0911 [SMTP with no mail data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind911 ../src/curl -q --output log/16/curl911.out  --include --trace-ascii log/16/trace911 --trace-time smtp://127.0.0.1:33205/911 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/16/stdin-for-911 > log/16/stdout911 2> log/16/stderr911

 911: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 911
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind911 ../src/curl -q --output log/16/curl911.out  --include --trace-ascii log/16/trace911 --trace-time smtp://127.0.0.1:33205/911 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/16/stdin-for-911 > log/16/stdout911 2> log/16/stderr911
=== End of file commands.log
=== Start of file server.cmd
 Testnum 911
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.245093 SMTP server listens on port IPv4/33205
 19:27:44.245216 logged pid 127808 in log/16/server/smtp_server.pid
 19:27:44.245263 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.839160 Running IPv4 version
 19:27:44.839366 Listening on port 33205
 19:27:44.839412 Wrote pid 127824 to log/16/server/smtp_sockfilt.pid
 19:27:44.839445 Wrote port 33205 to log/16/server/smtp_server.port
 19:27:44.840556 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind911
 ==128313== 
 ==128313== Process terminating with default action of signal 4 (SIGILL)
 ==128313==  Illegal opcode at address 0x492B75F
 ==128313==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128313==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128313==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128313==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128313==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128313==    by 0x49908EB: curl_version_info (version.c:600)
 ==128313==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128313==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128313==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128313==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind911
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/1/server/smtp_server.pid" --logfile "log/1/smtp_server.log" --logdir "log/1" --portfile "log/1/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 42673 (log/1/server/smtp_server.port)
RUN: SMTP server is PID 127810 port 42673
* pid smtp => 127810 127810
test 0913 [SMTP with large message SIZE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind913 ../src/curl -q --output log/1/curl913.out  --include --trace-ascii log/1/trace913 --trace-time smtp://127.0.0.1:42673/913 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/1/test913.eml > log/1/stdout913 2> log/1/stderr913

 913: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 913
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind913 ../src/curl -q --output log/1/curl913.out  --include --trace-ascii log/1/trace913 --trace-time smtp://127.0.0.1:42673/913 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/1/test913.eml > log/1/stdout913 2> log/1/stderr913
=== End of file commands.log
=== Start of file server.cmd
 CAPA "SIZE 32"
 Testnum 913
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.273800 SMTP server listens on port IPv4/42673
 19:27:44.273945 logged pid 127810 in log/1/server/smtp_server.pid
 19:27:44.274017 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.877825 Running IPv4 version
 19:27:44.877928 Listening on port 42673
 19:27:44.879579 Wrote pid 127834 to log/1/server/smtp_sockfilt.pid
 19:27:44.879614 Wrote port 42673 to log/1/server/smtp_server.port
 19:27:44.879638 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file test913.eml
 From: different
 To: another
 body
=== End of file test913.eml
=== Start of file valgrind913
 ==128322== 
 ==128322== Process terminating with default action of signal 4 (SIGILL)
 ==128322==  Illegal opcode at address 0x492B75F
 ==128322==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128322==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128322==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128322==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128322==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128322==    by 0x49908EB: curl_version_info (version.c:600)
 ==128322==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128322==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128322==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128322==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind913
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/7/server/smtp_server.pid" --logfile "log/7/smtp_server.log" --logdir "log/7" --portfile "log/7/server/smtp_server.port" --srcdir "/startdir/src/curlCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind922 ../src/curl -q --output log/17/curl922.out  --include --trace-ascii log/17/trace922 --trace-time smtp://127.0.0.1:43791/922 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/17/stdin-for-922 > log/17/stdout922 2> log/17/stderr922
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind915 ../src/curl -q --output log/23/curl915.out  --include --trace-ascii log/23/trace915 --trace-time smtp://127.0.0.1:38615/915 --mail-rcpt recipient@example.com -T - <log/23/stdin-for-915 > log/23/stdout915 2> log/23/stderr915
/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 33449 (log/7/server/smtp_server.port)
RUN: SMTP server is PID 127841 port 33449
* pid smtp => 127841 127841
test 0916 [SMTP with invalid --mail-rcpt]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind916 ../src/curl -q --output log/7/curl916.out  --include --trace-ascii log/7/trace916 --trace-time smtp://127.0.0.1:33449/916 --mail-rcpt invalid --mail-from sender@example.com -T - <log/7/stdin-for-916 > log/7/stdout916 2> log/7/stderr916

 916: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 916
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind916 ../src/curl -q --output log/7/curl916.out  --include --trace-ascii log/7/trace916 --trace-time smtp://127.0.0.1:33449/916 --mail-rcpt invalid --mail-from sender@example.com -T - <log/7/stdin-for-916 > log/7/stdout916 2> log/7/stderr916
=== End of file commands.log
=== Start of file server.cmd
 Testnum 916
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.377196 SMTP server listens on port IPv4/33449
 19:27:44.377302 logged pid 127841 in log/7/server/smtp_server.pid
 19:27:44.377352 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.982689 Running IPv4 version
 19:27:44.982792 Listening on port 33449
 19:27:44.982834 Wrote pid 127846 to log/7/server/smtp_sockfilt.pid
 19:27:44.982874 Wrote port 33449 to log/7/server/smtp_server.port
 19:27:44.983056 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-916
 From: different
 To: another
 body
=== End of file stdin-for-916
=== Start of file valgrind916
 ==128472== 
 ==128472== Process terminating with default action of signal 4 (SIGILL)
 ==128472==  Illegal opcode at address 0x492B75F
 ==128472==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128472==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128472==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128472==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128472==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128472==    by 0x49908EB: curl_version_info (version.c:600)
 ==128472==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128472==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128472==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128472==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind916
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/17/server/smtp_server.pid" --logfile "log/17/smtp_server.log" --logdir "log/17" --portfile "log/17/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 43791 (log/17/server/smtp_server.port)
RUN: SMTP server is PID 127892 port 43791
* pid smtp => 127892 127892
test 0922 [SMTP OAuth 2.0 (XOAUTH2) authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind922 ../src/curl -q --output log/17/curl922.out  --include --trace-ascii log/17/trace922 --trace-time smtp://127.0.0.1:43791/922 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/17/stdin-for-922 > log/17/stdout922 2> log/17/stderr922

 922: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 922
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind922 ../src/curl -q --output log/17/curl922.out  --include --trace-ascii log/17/trace922 --trace-time smtp://127.0.0.1:43791/922 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/17/stdin-for-922 > log/17/stdout922 2> log/17/stderr922
=== End of file commands.log
=== Start of file server.cmd
 AUTH XOAUTH2
 REPLY AUTH 235 Authenticated
 Testnum 922
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.622307 SMTP server listens on port IPv4/43791
 19:27:44.622425 logged pid 127892 in log/17/server/smtp_server.pid
 19:27:44.622469 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.224036 Running IPv4 version
 19:27:44.224142 Listening on port 43791
 19:27:44.224189 Wrote pid 127949 to log/17/server/smtp_sockfilt.pid
 19:27:44.224222 Wrote port 43791 to log/17/server/smtp_server.port
 19:27:44.228105 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-922
 mail body
=== End of file stdin-for-922
=== Start of file valgrind922
 ==128783== 
 ==128783== Process terminating with default action of signal 4 (SIGILL)
 ==128783==  Illegal opcode at address 0x492B75F
 ==128783==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128783==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128783==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128783==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128783==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128783==    by 0x49908EB: curl_version_info (version.c:600)
 ==128783==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128783==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128783==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128783==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind922
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/23/server/smtp_server.pid" --logfile "log/23/smtp_server.log" --logdir "log/23" --portfile "log/23/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 38615 (log/23/server/smtp_server.port)
RUN: SMTP server is PID 127840 port 38615
* pid smtp => 127840 127840
test 0915 [SMTP without --mail-from]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind915 ../src/curl -q --output log/23/curl915.out  --include --trace-ascii log/23/trace915 --trace-time smtp://127.0.0.1:38615/915 --mail-rcpt recipient@example.com -T - <log/23/stdin-for-915 > log/23/stdout915 2> log/23/stderr915

 915: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 915
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind915 ../src/curl -q --output log/23/curl915.out  --include --trace-ascii log/23/trace915 --trace-time smtp://127.0.0.1:38615/915 --mail-rcpt recipient@example.com -T - <log/23/stdin-for-915 > log/23/stdout915 2> log/23/stderr915
=== End of file commands.log
=== Start of file server.cmd
 Testnum 915
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.356404 SMTP server listens on port IPv4/38615
 19:27:44.356490 logged pid 127840 in log/23/server/smtp_server.pid
 19:27:44.356529 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.962110 Running IPv4 version
 19:27:44.962200 Listening on port 38615
 19:27:44.962233 Wrote pid 127843 to CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind923 ../src/curl -q --output log/10/curl923.out  --include --trace-ascii log/10/trace923 --trace-time smtp://127.0.0.1:45391/923 --mail-rcpt recipient > log/10/stdout923 2> log/10/stderr923
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind920 ../src/curl -q --output log/21/curl920.out  --include --trace-ascii log/21/trace920 --trace-time smtp://127.0.0.1:36859/920 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T - <log/21/stdin-for-920 > log/21/stdout920 2> log/21/stderr920
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind926 ../src/curl -q --output log/19/curl926.out  --include --trace-ascii log/19/trace926 --trace-time smtp://127.0.0.1:33719/926 --mail-rcpt recipient > log/19/stdout926 2> log/19/stderr926
log/23/server/smtp_sockfilt.pid
 19:27:44.962259 Wrote port 38615 to log/23/server/smtp_server.port
 19:27:44.962278 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-915
 From: different
 To: another
 body
=== End of file stdin-for-915
=== Start of file valgrind915
 ==128451== 
 ==128451== Process terminating with default action of signal 4 (SIGILL)
 ==128451==  Illegal opcode at address 0x492B75F
 ==128451==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128451==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128451==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128451==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128451==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128451==    by 0x49908EB: curl_version_info (version.c:600)
 ==128451==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128451==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128451==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128451==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind915
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/10/server/smtp_server.pid" --logfile "log/10/smtp_server.log" --logdir "log/10" --portfile "log/10/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45391 (log/10/server/smtp_server.port)
RUN: SMTP server is PID 127917 port 45391
* pid smtp => 127917 127917
test 0923 [SMTP VRFY]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind923 ../src/curl -q --output log/10/curl923.out  --include --trace-ascii log/10/trace923 --trace-time smtp://127.0.0.1:45391/923 --mail-rcpt recipient > log/10/stdout923 2> log/10/stderr923

 923: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 923
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind923 ../src/curl -q --output log/10/curl923.out  --include --trace-ascii log/10/trace923 --trace-time smtp://127.0.0.1:45391/923 --mail-rcpt recipient > log/10/stdout923 2> log/10/stderr923
=== End of file commands.log
=== Start of file server.cmd
 Testnum 923
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.639739 SMTP server listens on port IPv4/45391
 19:27:44.639853 logged pid 127917 in log/10/server/smtp_server.pid
 19:27:44.639903 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.245365 Running IPv4 version
 19:27:44.245463 Listening on port 45391
 19:27:44.245511 Wrote pid 127962 to log/10/server/smtp_sockfilt.pid
 19:27:44.245546 Wrote port 45391 to log/10/server/smtp_server.port
 19:27:44.245567 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind923
 ==128794== 
 ==128794== Process terminating with default action of signal 4 (SIGILL)
 ==128794==  Illegal opcode at address 0x492B75F
 ==128794==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128794==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128794==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128794==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128794==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128794==    by 0x49908EB: curl_version_info (version.c:600)
 ==128794==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128794==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128794==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128794==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind923
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/21/server/smtp_server.pid" --logfile "log/21/smtp_server.log" --logdir "log/21" --portfile "log/21/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36859 (log/21/server/smtp_server.port)
RUN: SMTP server is PID 127888 port 36859
* pid smtp => 127888 127888
test 0920 [SMTP login authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind920 ../src/curl -q --output log/21/curl920.out  --include --trace-ascii log/21/trace920 --trace-time smtp://127.0.0.1:36859/920 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T - <log/21/stdin-for-920 > log/21/stdout920 2> log/21/stderr920

 920: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 920
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind920 ../src/curl -q --output log/21/curl920.out  --include --trace-ascii log/21/trace920 --trace-time smtp://127.0.0.1:36859/920 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T - <log/21/stdin-for-920 > log/21/stdout920 2> log/21/stderr920
=== End of file commands.log
=== Start of file server.cmd
 AUTH LOGIN
 REPLY AUTH 334 UGFzc3dvcmQ6
 REPLY c2VjcmV0 235 Authenticated
 Testnum 920
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:44.601937 SMTP server listens on port IPv4/36859
 19:27:44.602052 logged pid 127888 in log/21/server/smtp_server.pid
 19:27:44.602099 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:44.207420 Running IPv4 version
 19:27:44.207531 Listening on port 36859
 19:27:44.207578 Wrote pid 127928 to log/21/server/smtp_sockfilt.pid
 19:27:44.207613 Wrote port 36859 to log/21/server/smtp_server.port
 19:27:44.207784 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-920
 mail body
=== End of file stdin-for-920
=== Start of file valgrind920
 ==128763== 
 ==128763== Process terminating with default action of signal 4 (SIGILL)
 ==128763==  Illegal opcode at address 0x492B75F
 ==128763==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128763==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128763==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128763==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128763==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128763==    by 0x49908EB: curl_version_info (version.c:600)
 ==128763==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128763==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128763==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128763==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind920
test 0926 [SMTP unknown user VRFY]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind926 ../src/curl -q --output log/19/curl926.out  --include --trace-ascii log/19/trace926 --trace-time smtp://127.0.0.1:33719/926 --mail-rcpt recipient > log/19/stdout926 2> log/19/stderr926

 926: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 926
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind926 ../src/curl -q --output log/19/curl926.out  --include --trace-ascii loCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind928 ../src/curl -q --output log/14/curl928.out  --include --trace-ascii log/14/trace928 --trace-time smtp://127.0.0.1:44025/928 > log/14/stdout928 2> log/14/stderr928
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind927 ../src/curl -q --output log/6/curl927.out  --include --trace-ascii log/6/trace927 --trace-time smtp://127.0.0.1:39499/927 --mail-rcpt Friends -X EXPN > log/6/stdout927 2> log/6/stderr927
g/19/trace926 --trace-time smtp://127.0.0.1:33719/926 --mail-rcpt recipient > log/19/stdout926 2> log/19/stderr926
=== End of file commands.log
=== Start of file server.cmd
 REPLY VRFY 550 Unknown user
 Testnum 926
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:45.908702 ====> Client connect
 19:27:45.908985 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:45.909438 < "EHLO verifiedserver"
 19:27:45.909478 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:45.909631 < "HELP"
 19:27:45.909658 > "214 WE ROOLZ: 127656[CR][LF]"
 19:27:45.909670 return proof we are we
 19:27:45.909865 < "QUIT"
 19:27:45.909891 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:45.911070 MAIN sockfilt said DISC
 19:27:45.911099 ====> Client disconnected
 19:27:45.911169 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:46.506365 ====> Client connect
 19:27:46.514889 Received DATA (on stdin)
 19:27:46.514916 > 146 bytes data, server => client
 19:27:46.514931 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:46.514940 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:46.514948 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:46.515087 < 21 bytes data, client => server
 19:27:46.515097 'EHLO verifiedserver\r\n'
 19:27:46.515291 Received DATA (on stdin)
 19:27:46.515301 > 53 bytes data, server => client
 19:27:46.515310 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:46.515363 < 6 bytes data, client => server
 19:27:46.515372 'HELP\r\n'
 19:27:46.515477 Received DATA (on stdin)
 19:27:46.515486 > 22 bytes data, server => client
 19:27:46.515494 '214 WE ROOLZ: 127656\r\n'
 19:27:46.515594 < 6 bytes data, client => server
 19:27:46.515604 'QUIT\r\n'
 19:27:46.515699 Received DATA (on stdin)
 19:27:46.515707 > 35 bytes data, server => client
 19:27:46.515716 '221 curl ESMTP server signing off\r\n'
 19:27:46.516827 ====> Client disconnect
 19:27:46.516980 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind926
 ==128971== 
 ==128971== Process terminating with default action of signal 4 (SIGILL)
 ==128971==  Illegal opcode at address 0x492B75F
 ==128971==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==128971==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==128971==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==128971==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==128971==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==128971==    by 0x49908EB: curl_version_info (version.c:600)
 ==128971==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==128971==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==128971==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==128971==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind926
test 0927 [SMTP mailing list EXPN (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind927 ../src/curl -q --output log/6/curl927.out  --include --trace-ascii log/6/trace927 --trace-time smtp://127.0.0.1:39499/927 --mail-rcpt Friends -X EXPN > log/6/stdout927 2> log/6/stderr927

 927: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 927
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind927 ../src/curl -q --output log/6/curl927.out  --include --trace-ascii log/6/trace927 --trace-time smtp://127.0.0.1:39499/927 --mail-rcpt Friends -X EXPN > log/6/stdout927 2> log/6/stderr927
=== End of file commands.log
=== Start of file server.cmd
 Testnum 927
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:46.301600 ====> Client connect
 19:27:46.301820 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:46.305631 < "EHLO verifiedserver"
 19:27:46.305696 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:46.305905 < "HELP"
 19:27:46.305948 > "214 WE ROOLZ: 127735[CR][LF]"
 19:27:46.305963 return proof we are we
 19:27:46.306200 < "QUIT"
 19:27:46.306231 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:46.307265 MAIN sockfilt said DISC
 19:27:46.307293 ====> Client disconnected
 19:27:46.307364 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:45.907241 ====> Client connect
 19:27:45.907604 Received DATA (on stdin)
 19:27:45.907619 > 146 bytes data, server => client
 19:27:45.907630 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:45.907641 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:45.907649 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:45.911173 < 21 bytes data, client => server
 19:27:45.911195 'EHLO verifiedserver\r\n'
 19:27:45.911479 Received DATA (on stdin)
 19:27:45.911493 > 53 bytes data, server => client
 19:27:45.911504 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:45.911571 < 6 bytes data, client => server
 19:27:45.911583 'HELP\r\n'
 19:27:45.911732 Received DATA (on stdin)
 19:27:45.911742 > 22 bytes data, server => client
 19:27:45.911753 '214 WE ROOLZ: 127735\r\n'
 19:27:45.911851 < 6 bytes data, client => server
 19:27:45.911863 'QUIT\r\n'
 19:27:45.912001 Received DATA (on stdin)
 19:27:45.912011 > 35 bytes data, server => client
 19:27:45.912021 '221 curl ESMTP server signing off\r\n'
 19:27:45.912980 ====> Client disconnect
 19:27:45.913131 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind927
 ==129067== 
 ==129067== Process terminating with default action of signal 4 (SIGILL)
 ==129067==  Illegal opcode at address 0x492B75F
 ==129067==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129067==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129067==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129067==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129067==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129067==    by 0x49908EB: curl_version_info (version.c:600)
 ==129067==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129067==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129067==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129067==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind927
test 0928 [SMTP HELP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind928 ../src/curl -q --output log/14/curl928.out  --include --trace-ascii log/14/trace928 --trace-time smtp://127.0.0.1:44025/928 > log/14/stdout928 2> log/14/stderr928

 928: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 928
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind928 ../src/curl -q --output log/14/curl928.out  --include --trace-ascii log/14/trace928 --trace-time smtp://127.0.0.1:44025/928 > log/14/stdout928 2> log/14/stderr928
=== End of file commands.log
=== Start of file server.cmd
 Testnum 928
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:46.342031 ====> Client connect
 19:27:46.342237 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind929 ../src/curl -q --output log/3/curl929.out  --include --trace-ascii log/3/trace929 --trace-time smtp://127.0.0.1:38593/929 -X NOOP -I > log/3/stdout929 2> log/3/stderr929
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind930 ../src/curl -q --output log/5/curl930.out  --include --trace-ascii log/5/trace930 --trace-time smtp://127.0.0.1:44397/930 -X RSET -I > log/5/stdout930 2> log/5/stderr930
20    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:46.348883 < "EHLO verifiedserver"
 19:27:46.348952 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:46.349183 < "HELP"
 19:27:46.349221 > "214 WE ROOLZ: 113204[CR][LF]"
 19:27:46.349242 return proof we are we
 19:27:46.349481 < "QUIT"
 19:27:46.349509 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:46.351171 MAIN sockfilt said DISC
 19:27:46.351199 ====> Client disconnected
 19:27:46.351280 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:45.947591 ====> Client connect
 19:27:45.951083 Received DATA (on stdin)
 19:27:45.951110 > 146 bytes data, server => client
 19:27:45.951122 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:45.951131 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:45.951140 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:45.951228 < 21 bytes data, client => server
 19:27:45.951240 'EHLO verifiedserver\r\n'
 19:27:45.954728 Received DATA (on stdin)
 19:27:45.954745 > 53 bytes data, server => client
 19:27:45.954756 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:45.954845 < 6 bytes data, client => server
 19:27:45.954861 'HELP\r\n'
 19:27:45.955011 Received DATA (on stdin)
 19:27:45.955023 > 22 bytes data, server => client
 19:27:45.955033 '214 WE ROOLZ: 113204\r\n'
 19:27:45.955135 < 6 bytes data, client => server
 19:27:45.955148 'QUIT\r\n'
 19:27:45.955275 Received DATA (on stdin)
 19:27:45.955287 > 35 bytes data, server => client
 19:27:45.955297 '221 curl ESMTP server signing off\r\n'
 19:27:45.956891 ====> Client disconnect
 19:27:45.957055 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind928
 ==129098== 
 ==129098== Process terminating with default action of signal 4 (SIGILL)
 ==129098==  Illegal opcode at address 0x492B75F
 ==129098==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129098==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129098==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129098==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129098==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129098==    by 0x49908EB: curl_version_info (version.c:600)
 ==129098==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129098==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129098==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129098==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind928
test 0929 [SMTP NOOP (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind929 ../src/curl -q --output log/3/curl929.out  --include --trace-ascii log/3/trace929 --trace-time smtp://127.0.0.1:38593/929 -X NOOP -I > log/3/stdout929 2> log/3/stderr929

 929: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 929
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind929 ../src/curl -q --output log/3/curl929.out  --include --trace-ascii log/3/trace929 --trace-time smtp://127.0.0.1:38593/929 -X NOOP -I > log/3/stdout929 2> log/3/stderr929
=== End of file commands.log
=== Start of file server.cmd
 Testnum 929
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:46.585475 ====> Client connect
 19:27:46.585686 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:46.586015 < "EHLO verifiedserver"
 19:27:46.586060 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:46.586229 < "HELP"
 19:27:46.586264 > "214 WE ROOLZ: 127734[CR][LF]"
 19:27:46.586278 return proof we are we
 19:27:46.586513 < "QUIT"
 19:27:46.586541 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:46.587774 MAIN sockfilt said DISC
 19:27:46.587801 ====> Client disconnected
 19:27:46.587879 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:46.191082 ====> Client connect
 19:27:46.191444 Received DATA (on stdin)
 19:27:46.191459 > 146 bytes data, server => client
 19:27:46.191470 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:46.191479 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:46.191488 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:46.191592 < 21 bytes data, client => server
 19:27:46.191602 'EHLO verifiedserver\r\n'
 19:27:46.191803 Received DATA (on stdin)
 19:27:46.191814 > 53 bytes data, server => client
 19:27:46.191824 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:46.191882 < 6 bytes data, client => server
 19:27:46.191891 'HELP\r\n'
 19:27:46.192019 Received DATA (on stdin)
 19:27:46.192030 > 22 bytes data, server => client
 19:27:46.192039 '214 WE ROOLZ: 127734\r\n'
 19:27:46.192167 < 6 bytes data, client => server
 19:27:46.192178 'QUIT\r\n'
 19:27:46.192281 Received DATA (on stdin)
 19:27:46.192290 > 35 bytes data, server => client
 19:27:46.192300 '221 curl ESMTP server signing off\r\n'
 19:27:46.193458 ====> Client disconnect
 19:27:46.193618 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind929
 ==129197== 
 ==129197== Process terminating with default action of signal 4 (SIGILL)
 ==129197==  Illegal opcode at address 0x492B75F
 ==129197==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129197==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129197==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129197==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129197==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129197==    by 0x49908EB: curl_version_info (version.c:600)
 ==129197==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129197==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129197==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129197==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind929
test 0930 [SMTP RSET (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind930 ../src/curl -q --output log/5/curl930.out  --include --trace-ascii log/5/trace930 --trace-time smtp://127.0.0.1:44397/930 -X RSET -I > log/5/stdout930 2> log/5/stderr930

 930: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 930
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind930 ../src/curl -q --output log/5/curl930.out  --include --trace-ascii log/5/trace930 --trace-time smtp://127.0.0.1:44397/930 -X RSET -I > log/5/stdout930 2> log/5/stderr930
=== End of file commands.log
=== Start of file server.cmd
 Testnum 930
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:46.612721 ====> Client connect
 19:27:46.612941 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:46.613293 < "EHLO verifiedserver"
 19:27:46.613345 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:46.613545 < "HELP"
 19:27:46.613585 > "214 WE ROOLZ: 127748[CR][LF]"
 19:27:46.613601 return proof we are we
 19:27:46.613836 < "QUIT"
 19:27:46.613868 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:46.614939 MAIN sockfilt said DISC
 19:27:46.614971 ====> Client disconnected
 19:27:46.615046 Awaiting input
=== End of fCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind724 ../src/curl -q --output log/12/curl724.out  --include --trace-ascii log/12/trace724 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/12/stdout724 2> log/12/stderr724
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind725 ../src/curl -q --output log/11/curl725.out  --include --trace-ascii log/11/trace725 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/11/stdout725 2> log/11/stderr725
ile smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:46.218352 ====> Client connect
 19:27:46.218702 Received DATA (on stdin)
 19:27:46.218718 > 146 bytes data, server => client
 19:27:46.218729 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:46.218740 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:46.218749 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:46.218837 < 21 bytes data, client => server
 19:27:46.218851 'EHLO verifiedserver\r\n'
 19:27:46.219090 Received DATA (on stdin)
 19:27:46.219102 > 53 bytes data, server => client
 19:27:46.219113 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:46.219177 < 6 bytes data, client => server
 19:27:46.219190 'HELP\r\n'
 19:27:46.219339 Received DATA (on stdin)
 19:27:46.219350 > 22 bytes data, server => client
 19:27:46.219360 '214 WE ROOLZ: 127748\r\n'
 19:27:46.219478 < 6 bytes data, client => server
 19:27:46.219491 'QUIT\r\n'
 19:27:46.219607 Received DATA (on stdin)
 19:27:46.219619 > 35 bytes data, server => client
 19:27:46.219629 '221 curl ESMTP server signing off\r\n'
 19:27:46.220616 ====> Client disconnect
 19:27:46.220789 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind930
 ==129219== 
 ==129219== Process terminating with default action of signal 4 (SIGILL)
 ==129219==  Illegal opcode at address 0x492B75F
 ==129219==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129219==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129219==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129219==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129219==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129219==    by 0x49908EB: curl_version_info (version.c:600)
 ==129219==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129219==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129219==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129219==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind930
setenv HOME = /startdir/src/build-curl/tests/log/12
test 0724 [IPFS with gateway URL from gateway file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind724 ../src/curl -q --output log/12/curl724.out  --include --trace-ascii log/12/trace724 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/12/stdout724 2> log/12/stderr724

 724: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 724
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind724 ../src/curl -q --output log/12/curl724.out  --include --trace-ascii log/12/trace724 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/12/stdout724 2> log/12/stderr724
=== End of file commands.log
=== Start of file http_server.log
 19:27:23.583936 ====> Client connect
 19:27:23.583984 accept_connection 3 returned 4
 19:27:23.584009 Read 93 bytes
 19:27:23.584019 Process 93 bytes request
 19:27:23.584033 Got request: GET /verifiedserver HTTP/1.1
 19:27:23.584042 Are-we-friendly question received
 19:27:23.584078 Wrote request (93 bytes) input to log/12/server.input
 19:27:23.584096 Identifying ourselves as friends
 19:27:23.584181 Response sent (56 bytes) and written to log/12/server.response
 19:27:23.584193 special request received, no persistency
 19:27:23.584202 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 51180 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 724
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind724
 ==117388== 
 ==117388== Process terminating with default action of signal 4 (SIGILL)
 ==117388==  Illegal opcode at address 0x492B75F
 ==117388==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117388==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117388==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117388==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==117388==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117388==    by 0x49908EB: curl_version_info (version.c:600)
 ==117388==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117388==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117388==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117388==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind724
setenv HOME = /startdir/src/build-curl/tests/log/11
test 0725 [IPFS with malformed gateway URL from gateway file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind725 ../src/curl -q --output log/11/curl725.out  --include --trace-ascii log/11/trace725 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/11/stdout725 2> log/11/stderr725

curl returned 132, when expecting 3
 725: exit FAILED
== Contents of files in the log/11/ directory after test 725
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind725 ../src/curl -q --output log/11/curl725.out  --include --trace-ascii log/11/trace725 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/11/stdout725 2> log/11/stderr725
=== End of file commands.log
=== Start of file http_server.log
 19:27:23.557248 ====> Client connect
 19:27:23.557285 accept_connection 3 returned 4
 19:27:23.557312 Read 93 bytes
 19:27:23.557325 Process 93 bytes request
 19:27:23.557338 Got request: GET /verifiedserver HTTP/1.1
 19:27:23.557348 Are-we-friendly question received
 19:27:23.557378 Wrote request (93 bytes) input to log/11/server.input
 19:27:23.557396 Identifying ourselves as friends
 19:27:23.557486 Response sent (56 bytes) and written to log/11/server.response
 19:27:23.557499 special request received, no persistency
 19:27:23.557508 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 35356 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 725
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind725
 ==117347== 
 ==117347== Process terminating with default action of signal 4 (SIGILL)
 ==117347==  Illegal opcode at address 0x492B75F
 ==117347==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==117347==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==117347==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==117347==    by 0x49A9BCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind931 ../src/curl -q --output log/2/curl931.out  --include --trace-ascii log/2/trace931 --trace-time smtp://127.0.0.1:33505/%0d%0a/931 > log/2/stdout931 2> log/2/stderr931
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind932 ../src/curl -q --output log/22/curl932.out  --include --trace-ascii log/22/trace932 --trace-time smtp://127.0.0.1:43827/932 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - > log/22/stdout932 2> log/22/stderr932
9E: Curl_ossl_version (openssl.c:5473)
 ==117347==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==117347==    by 0x49908EB: curl_version_info (version.c:600)
 ==117347==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==117347==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==117347==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==117347==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind725
test 0931 [SMTP with URL-encoded CR LF in the URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind931 ../src/curl -q --output log/2/curl931.out  --include --trace-ascii log/2/trace931 --trace-time smtp://127.0.0.1:33505/%0d%0a/931 > log/2/stdout931 2> log/2/stderr931

curl returned 132, when expecting 3
 931: exit FAILED
== Contents of files in the log/2/ directory after test 931
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind931 ../src/curl -q --output log/2/curl931.out  --include --trace-ascii log/2/trace931 --trace-time smtp://127.0.0.1:33505/%0d%0a/931 > log/2/stdout931 2> log/2/stderr931
=== End of file commands.log
=== Start of file server.cmd
 Testnum 931
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:46.838793 ====> Client connect
 19:27:46.839116 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:46.839413 < "EHLO verifiedserver"
 19:27:46.839455 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:46.839616 < "HELP"
 19:27:46.839647 > "214 WE ROOLZ: 127750[CR][LF]"
 19:27:46.839661 return proof we are we
 19:27:46.839855 < "QUIT"
 19:27:46.839882 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:46.840919 MAIN sockfilt said DISC
 19:27:46.840948 ====> Client disconnected
 19:27:46.841015 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:46.444378 ====> Client connect
 19:27:46.444745 Received DATA (on stdin)
 19:27:46.444763 > 146 bytes data, server => client
 19:27:46.444847 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:46.444859 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:46.444868 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:46.444963 < 21 bytes data, client => server
 19:27:46.444975 'EHLO verifiedserver\r\n'
 19:27:46.445173 Received DATA (on stdin)
 19:27:46.445184 > 53 bytes data, server => client
 19:27:46.445194 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:46.445250 < 6 bytes data, client => server
 19:27:46.445259 'HELP\r\n'
 19:27:46.445377 Received DATA (on stdin)
 19:27:46.445387 > 22 bytes data, server => client
 19:27:46.445397 '214 WE ROOLZ: 127750\r\n'
 19:27:46.445487 < 6 bytes data, client => server
 19:27:46.445499 'QUIT\r\n'
 19:27:46.445596 Received DATA (on stdin)
 19:27:46.445605 > 35 bytes data, server => client
 19:27:46.445615 '221 curl ESMTP server signing off\r\n'
 19:27:46.446555 ====> Client disconnect
 19:27:46.446731 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind931
 ==129333== 
 ==129333== Process terminating with default action of signal 4 (SIGILL)
 ==129333==  Illegal opcode at address 0x492B75F
 ==129333==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129333==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129333==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129333==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129333==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129333==    by 0x49908EB: curl_version_info (version.c:600)
 ==129333==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129333==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129333==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129333==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind931
test 0932 [SMTP CRAM-MD5 graceful cancellation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind932 ../src/curl -q --output log/22/curl932.out  --include --trace-ascii log/22/trace932 --trace-time smtp://127.0.0.1:43827/932 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - > log/22/stdout932 2> log/22/stderr932

 932: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 932
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind932 ../src/curl -q --output log/22/curl932.out  --include --trace-ascii log/22/trace932 --trace-time smtp://127.0.0.1:43827/932 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - > log/22/stdout932 2> log/22/stderr932
=== End of file commands.log
=== Start of file server.cmd
 AUTH CRAM-MD5
 REPLY AUTH 334 Rubbish
 REPLY * 501 AUTH exchange cancelled by client
 Testnum 932
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:46.949159 ====> Client connect
 19:27:46.949423 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:46.949784 < "EHLO verifiedserver"
 19:27:46.949829 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:46.949990 < "HELP"
 19:27:46.950020 > "214 WE ROOLZ: 127746[CR][LF]"
 19:27:46.950035 return proof we are we
 19:27:46.950226 < "QUIT"
 19:27:46.950254 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:46.950360 MAIN sockfilt said DISC
 19:27:46.950382 ====> Client disconnected
 19:27:46.950448 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:46.544379 ====> Client connect
 19:27:46.555149 Received DATA (on stdin)
 19:27:46.555171 > 146 bytes data, server => client
 19:27:46.555181 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:46.555191 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:46.555199 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:46.555327 < 21 bytes data, client => server
 19:27:46.555339 'EHLO verifiedserver\r\n'
 19:27:46.555538 Received DATA (on stdin)
 19:27:46.555549 > 53 bytes data, server => client
 19:27:46.555559 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:46.555613 < 6 bytes data, client => server
 19:27:46.555623 'HELP\r\n'
 19:27:46.555736 Received DATA (on stdin)
 19:27:46.555746 > 22 bytes data, server => client
 19:27:46.555756 '214 WE ROOLZ: 127746\r\n'
 19:27:46.555850 < 6 bytes data, client => server
 19:27:46.555861 'QUIT\r\n'
 19:27:46.555957 Received DATA (on stdin)
 19:27:46.555967 > 35 bytes data, server => client
 19:27:46.555977 '221 curl ESMTP server signing off\r\n'
 19:27:46.556015 ====> Client disconnect
 19:27:46.556151 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind932
 ==129382== 
 ==129382== Process terminating with default action of signal 4 (SIGILL)
 ==129382==  Illegal opcode at address 0x492B75F
 ==129382==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129382==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129382==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129382==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129382==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129382==    by 0x49908EB: curl_version_info (version.c:600)
 ==129382==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129382==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129382==    CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind935 ../src/curl -q --output log/15/curl935.out  --include --trace-ascii log/15/trace935 --trace-time smtp://127.0.0.1:44021/935 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/15/stdin-for-935 > log/15/stdout935 2> log/15/stderr935
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind940 ../src/curl -q --output log/9/curl940.out  --include --trace-ascii log/9/trace940 --trace-time smtp://127.0.0.1:44813/940 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/9/stdin-for-940 > log/9/stdout940 2> log/9/stderr940
by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129382==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind932
test 0935 [SMTP CRAM-MD5 authentication with SASL downgrade]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind935 ../src/curl -q --output log/15/curl935.out  --include --trace-ascii log/15/trace935 --trace-time smtp://127.0.0.1:44021/935 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/15/stdin-for-935 > log/15/stdout935 2> log/15/stderr935

 935: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 935
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind935 ../src/curl -q --output log/15/curl935.out  --include --trace-ascii log/15/trace935 --trace-time smtp://127.0.0.1:44021/935 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/15/stdin-for-935 > log/15/stdout935 2> log/15/stderr935
=== End of file commands.log
=== Start of file server.cmd
 AUTH CRAM-MD5 PLAIN
 REPLY "AUTH CRAM-MD5" 334 Rubbish
 REPLY * 501 AUTH exchange cancelled by client
 REPLY "AUTH PLAIN" 334 PLAIN supported
 REPLY AHVzZXIAc2VjcmV0 235 Authenticated
 Testnum 935
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.137399 ====> Client connect
 19:27:47.137625 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.137958 < "EHLO verifiedserver"
 19:27:47.138011 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.138207 < "HELP"
 19:27:47.138249 > "214 WE ROOLZ: 127773[CR][LF]"
 19:27:47.138264 return proof we are we
 19:27:47.138497 < "QUIT"
 19:27:47.138531 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.139960 MAIN sockfilt said DISC
 19:27:47.139995 ====> Client disconnected
 19:27:47.140066 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.742954 ====> Client connect
 19:27:47.743328 Received DATA (on stdin)
 19:27:47.743345 > 146 bytes data, server => client
 19:27:47.743355 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.743367 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.743376 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.743467 < 21 bytes data, client => server
 19:27:47.743478 'EHLO verifiedserver\r\n'
 19:27:47.743701 Received DATA (on stdin)
 19:27:47.743712 > 53 bytes data, server => client
 19:27:47.743723 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.743784 < 6 bytes data, client => server
 19:27:47.743796 'HELP\r\n'
 19:27:47.743949 Received DATA (on stdin)
 19:27:47.743961 > 22 bytes data, server => client
 19:27:47.743971 '214 WE ROOLZ: 127773\r\n'
 19:27:47.744089 < 6 bytes data, client => server
 19:27:47.744101 'QUIT\r\n'
 19:27:47.744215 Received DATA (on stdin)
 19:27:47.744225 > 35 bytes data, server => client
 19:27:47.744235 '221 curl ESMTP server signing off\r\n'
 19:27:47.745130 ====> Client disconnect
 19:27:47.745752 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-935
 mail body
=== End of file stdin-for-935
=== Start of file valgrind935
 ==129483== 
 ==129483== Process terminating with default action of signal 4 (SIGILL)
 ==129483==  Illegal opcode at address 0x492B75F
 ==129483==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129483==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129483==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129483==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129483==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129483==    by 0x49908EB: curl_version_info (version.c:600)
 ==129483==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129483==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129483==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129483==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind935
test 0940 [SMTP with username and password but no AUTH capability]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind940 ../src/curl -q --output log/9/curl940.out  --include --trace-ascii log/9/trace940 --trace-time smtp://127.0.0.1:44813/940 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/9/stdin-for-940 > log/9/stdout940 2> log/9/stderr940

 940: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 940
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind940 ../src/curl -q --output log/9/curl940.out  --include --trace-ascii log/9/trace940 --trace-time smtp://127.0.0.1:44813/940 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/9/stdin-for-940 > log/9/stdout940 2> log/9/stderr940
=== End of file commands.log
=== Start of file server.cmd
 Testnum 940
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.515369 ====> Client connect
 19:27:47.515670 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.517526 < "EHLO verifiedserver"
 19:27:47.517597 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.517869 < "HELP"
 19:27:47.517916 > "214 WE ROOLZ: 127818[CR][LF]"
 19:27:47.517937 return proof we are we
 19:27:47.518190 < "QUIT"
 19:27:47.518229 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.519512 MAIN sockfilt said DISC
 19:27:47.519547 ====> Client disconnected
 19:27:47.519633 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.114326 ====> Client connect
 19:27:48.121353 Received DATA (on stdin)
 19:27:48.121377 > 146 bytes data, server => client
 19:27:48.121388 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.121398 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.121407 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.123257 < 21 bytes data, client => server
 19:27:48.123275 'EHLO verifiedserver\r\n'
 19:27:48.123290 Received DATA (on stdin)
 19:27:48.123300 > 53 bytes data, server => client
 19:27:48.123311 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.123394 < 6 bytes data, client => server
 19:27:48.123410 'HELP\r\n'
 19:27:48.123586 Received DATA (on stdin)
 19:27:48.123600 > 22 bytes data, server => client
 19:27:48.123610 '214 WE ROOLZ: 127818\r\n'
 19:27:48.123729 < 6 bytes data, client => server
 19:27:48.123745 'QUIT\r\n'
 19:27:48.123879 Received DATA (on stdin)
 19:27:48.123892 > 35 bytes data, server => client
 19:27:48.123903 '221 curl ESMTP server signing off\r\n'
 19:27:48.125094 ====> Client disconnect
 19:27:48.125291 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-940
 mail body
=== End of file stdin-for-940
=== Start of file valgrind940
 ==129652== 
 ==129652== Process terminating with default action of signal 4 (SIGILL)
 ==129652==  Illegal opcode at address 0x492B75F
 ==129652==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129652==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129652==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129652==    by 0x49A9B9E: Curl_ossl_version (opensslCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind946 ../src/curl -q --output log/7/curl946.out  --include --trace-ascii log/7/trace946 --trace-time smtp://127.0.0.1:33449/946 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/7/stdin-for-946 > log/7/stdout946 2> log/7/stderr946
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind939 ../src/curl -q --output log/24/curl939.out  --include --trace-ascii log/24/trace939 --trace-time smtp://127.0.0.1:40147/939 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/24/stdin-for-939 > log/24/stdout939 2> log/24/stderr939
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind740 ../src/curl -q --output log/8/curl740.out  --include --trace-ascii log/8/trace740 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/8/stdout740 2> log/8/stderr740
.c:5473)
 ==129652==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129652==    by 0x49908EB: curl_version_info (version.c:600)
 ==129652==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129652==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129652==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129652==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind940
test 0946 [SMTP OAuth 2.0 (OAUTHBEARER) authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind946 ../src/curl -q --output log/7/curl946.out  --include --trace-ascii log/7/trace946 --trace-time smtp://127.0.0.1:33449/946 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/7/stdin-for-946 > log/7/stdout946 2> log/7/stderr946

 946: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 946
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind946 ../src/curl -q --output log/7/curl946.out  --include --trace-ascii log/7/trace946 --trace-time smtp://127.0.0.1:33449/946 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/7/stdin-for-946 > log/7/stdout946 2> log/7/stderr946
=== End of file commands.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH 334 OAUTHBEARER supported
 REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9MzM0NDkBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= 235 Authenticated
 Testnum 946
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.746875 ====> Client connect
 19:27:47.747119 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.747485 < "EHLO verifiedserver"
 19:27:47.747548 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.747763 < "HELP"
 19:27:47.747800 > "214 WE ROOLZ: 127841[CR][LF]"
 19:27:47.747820 return proof we are we
 19:27:47.748075 < "QUIT"
 19:27:47.748112 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.748709 MAIN sockfilt said DISC
 19:27:47.748796 ====> Client disconnected
 19:27:47.748878 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.352384 ====> Client connect
 19:27:48.352770 Received DATA (on stdin)
 19:27:48.352788 > 146 bytes data, server => client
 19:27:48.352800 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.352810 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.352819 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.352914 < 21 bytes data, client => server
 19:27:48.352930 'EHLO verifiedserver\r\n'
 19:27:48.353182 Received DATA (on stdin)
 19:27:48.353195 > 53 bytes data, server => client
 19:27:48.353206 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.353275 < 6 bytes data, client => server
 19:27:48.353289 'HELP\r\n'
 19:27:48.353446 Received DATA (on stdin)
 19:27:48.353459 > 22 bytes data, server => client
 19:27:48.353469 '214 WE ROOLZ: 127841\r\n'
 19:27:48.353595 < 6 bytes data, client => server
 19:27:48.353611 'QUIT\r\n'
 19:27:48.353740 Received DATA (on stdin)
 19:27:48.353753 > 35 bytes data, server => client
 19:27:48.353763 '221 curl ESMTP server signing off\r\n'
 19:27:48.354273 ====> Client disconnect
 19:27:48.354347 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-946
 mail body
=== End of file stdin-for-946
=== Start of file valgrind946
 ==129912== 
 ==129912== Process terminating with default action of signal 4 (SIGILL)
 ==129912==  Illegal opcode at address 0x492B75F
 ==129912==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129912==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129912==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129912==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129912==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129912==    by 0x49908EB: curl_version_info (version.c:600)
 ==129912==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129912==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129912==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129912==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind946
test 0939 [RFC821-only SMTP with username and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind939 ../src/curl -q --output log/24/curl939.out  --include --trace-ascii log/24/trace939 --trace-time smtp://127.0.0.1:40147/939 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/24/stdin-for-939 > log/24/stdout939 2> log/24/stderr939

 939: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 939
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind939 ../src/curl -q --output log/24/curl939.out  --include --trace-ascii log/24/trace939 --trace-time smtp://127.0.0.1:40147/939 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T - <log/24/stdin-for-939 > log/24/stdout939 2> log/24/stderr939
=== End of file commands.log
=== Start of file server.cmd
 REPLY EHLO 500 Command unrecognized
 Testnum 939
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.281272 ====> Client connect
 19:27:47.281519 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.285747 < "EHLO verifiedserver"
 19:27:47.285815 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.286037 < "HELP"
 19:27:47.286085 > "214 WE ROOLZ: 127811[CR][LF]"
 19:27:47.286105 return proof we are we
 19:27:47.286349 < "QUIT"
 19:27:47.286385 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.287826 MAIN sockfilt said DISC
 19:27:47.287857 ====> Client disconnected
 19:27:47.287929 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.886812 ====> Client connect
 19:27:47.891012 Received DATA (on stdin)
 19:27:47.891050 > 146 bytes data, server => client
 19:27:47.891062 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.891073 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.891082 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.891194 < 21 bytes data, client => server
 19:27:47.891212 'EHLO verifiedserver\r\n'
 19:27:47.891503 Received DATA (on stdin)
 19:27:47.891516 > 53 bytes data, server => client
 19:27:47.891527 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.891595 < 6 bytes data, client => server
 19:27:47.891609 'HELP\r\n'
 19:27:47.891779 Received DATA (on stdin)
 19:27:47.891791 > 22 bytes data, server => client
 19:27:47.891801 '214 WE ROOLZ: 127811\r\n'
 19:27:47.891913 < 6 bytes data, client => server
 19:27:47.891929 'QUIT\r\n'
 19:27:47.892061 Received DATA (on stdin)
 19:27:47.892074 > 35 bytes data, server => client
 19:27:47.892085 '221 curl ESMTP server signing off\r\n'
 19:27:47.893435 ====> Client disconnect
 19:27:47.893610 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-939
 mail body
=== End of file stdin-for-939
=== Start of file valgrind939
 ==129527== 
 ==129527== Process terminaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind943 ../src/curl -q --output log/18/curl943.out  --include --trace-ascii log/18/trace943 --trace-time 'smtp://;AUTH=EXTERNAL@127.0.0.1:33075/943' --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/18/stdin-for-943 > log/18/stdout943 2> log/18/stderr943
ting with default action of signal 4 (SIGILL)
 ==129527==  Illegal opcode at address 0x492B75F
 ==129527==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129527==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129527==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129527==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129527==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129527==    by 0x49908EB: curl_version_info (version.c:600)
 ==129527==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129527==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129527==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129527==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind939
setenv HOME = /startdir/src/build-curl/tests/log/8
test 0740 [IPFS with gateway URL from multiline gateway file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind740 ../src/curl -q --output log/8/curl740.out  --include --trace-ascii log/8/trace740 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/8/stdout740 2> log/8/stderr740

 740: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 740
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind740 ../src/curl -q --output log/8/curl740.out  --include --trace-ascii log/8/trace740 --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/8/stdout740 2> log/8/stderr740
=== End of file commands.log
=== Start of file http_server.log
 19:27:25.980841 ====> Client connect
 19:27:25.980890 accept_connection 3 returned 4
 19:27:25.986855 Read 93 bytes
 19:27:25.986882 Process 93 bytes request
 19:27:25.986896 Got request: GET /verifiedserver HTTP/1.1
 19:27:25.986905 Are-we-friendly question received
 19:27:25.986946 Wrote request (93 bytes) input to log/8/server.input
 19:27:25.986967 Identifying ourselves as friends
 19:27:25.987049 Response sent (56 bytes) and written to log/8/server.response
 19:27:25.987062 special request received, no persistency
 19:27:25.987071 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 49472 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 740
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind740
 ==118879== 
 ==118879== Process terminating with default action of signal 4 (SIGILL)
 ==118879==  Illegal opcode at address 0x492B75F
 ==118879==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==118879==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==118879==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==118879==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==118879==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==118879==    by 0x49908EB: curl_version_info (version.c:600)
 ==118879==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==118879==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==118879==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==118879==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind740
test 0943 [SMTP external authentication without credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind943 ../src/curl -q --output log/18/curl943.out  --include --trace-ascii log/18/trace943 --trace-time 'smtp://;AUTH=EXTERNAL@127.0.0.1:33075/943' --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/18/stdin-for-943 > log/18/stdout943 2> log/18/stderr943

 943: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 943
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind943 ../src/curl -q --output log/18/curl943.out  --include --trace-ascii log/18/trace943 --trace-time 'smtp://;AUTH=EXTERNAL@127.0.0.1:33075/943' --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/18/stdin-for-943 > log/18/stdout943 2> log/18/stderr943
=== End of file commands.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH 334 EXTERNAL supported
 REPLY  235 Authenticated
 Testnum 943
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.699056 ====> Client connect
 19:27:47.699301 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.705653 < "EHLO verifiedserver"
 19:27:47.705711 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.705870 < "HELP"
 19:27:47.705899 > "214 WE ROOLZ: 127847[CR][LF]"
 19:27:47.705912 return proof we are we
 19:27:47.706094 < "QUIT"
 19:27:47.706120 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.707222 MAIN sockfilt said DISC
 19:27:47.707249 ====> Client disconnected
 19:27:47.707312 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.300965 ====> Client connect
 19:27:47.307629 Received DATA (on stdin)
 19:27:47.307661 > 146 bytes data, server => client
 19:27:47.307673 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.307683 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.307692 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.311062 < 21 bytes data, client => server
 19:27:47.311085 'EHLO verifiedserver\r\n'
 19:27:47.311343 Received DATA (on stdin)
 19:27:47.311354 > 53 bytes data, server => client
 19:27:47.311364 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.311417 < 6 bytes data, client => server
 19:27:47.311427 'HELP\r\n'
 19:27:47.311536 Received DATA (on stdin)
 19:27:47.311546 > 22 bytes data, server => client
 19:27:47.311554 '214 WE ROOLZ: 127847\r\n'
 19:27:47.311642 < 6 bytes data, client => server
 19:27:47.311653 'QUIT\r\n'
 19:27:47.311746 Received DATA (on stdin)
 19:27:47.311754 > 35 bytes data, server => client
 19:27:47.311763 '221 curl ESMTP server signing off\r\n'
 19:27:47.312796 ====> Client disconnect
 19:27:47.312940 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-943
 mail body
=== End of file stdin-for-943
=== Start of file valgrind943
 ==129857== 
 ==129857== Process terminating with default action of signal 4 (SIGILL)
 ==129857==  Illegal opcode at address 0x492B75F
 ==129857==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129857==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129857==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129857==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129857==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129857==    by 0x49908EB: curl_version_info (version.c:600)
 ==129857==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129857==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129857==    by 0x4003269: UnkCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind948 ../src/curl -q --output log/17/curl948.out  --include --trace-ascii log/17/trace948 --trace-time smtp://127.0.0.1:43791/948 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/17/stdin-for-948 > log/17/stdout948 2> log/17/stderr948
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind941 ../src/curl -q --output log/13/curl941.out  --include --trace-ascii log/13/trace941 --trace-time smtp://127.0.0.1:45003/941 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/13/upload941 --crlf > log/13/stdout941 2> log/13/stderr941
nownInlinedFun (tool_cfgable.c:310)
 ==129857==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind943
test 0948 [SMTP OAuth 2.0 (OAUTHBEARER) failure as continuation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind948 ../src/curl -q --output log/17/curl948.out  --include --trace-ascii log/17/trace948 --trace-time smtp://127.0.0.1:43791/948 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/17/stdin-for-948 > log/17/stdout948 2> log/17/stderr948

 948: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 948
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind948 ../src/curl -q --output log/17/curl948.out  --include --trace-ascii log/17/trace948 --trace-time smtp://127.0.0.1:43791/948 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T - <log/17/stdin-for-948 > log/17/stdout948 2> log/17/stderr948
=== End of file commands.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH 334 OAUTHBEARER supported
 REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9NDM3OTEBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= 334 eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0=
 REPLY AQ== 535 Username and Password not accepted. Learn more at\r\n535 http://support.example.com/mail/oauth
 Testnum 948
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.791065 ====> Client connect
 19:27:47.795681 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.799176 < "EHLO verifiedserver"
 19:27:47.799237 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.799419 < "HELP"
 19:27:47.799454 > "214 WE ROOLZ: 127892[CR][LF]"
 19:27:47.799470 return proof we are we
 19:27:47.799707 < "QUIT"
 19:27:47.799736 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.800972 MAIN sockfilt said DISC
 19:27:47.801001 ====> Client disconnected
 19:27:47.801073 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.396561 ====> Client connect
 19:27:47.401344 Received DATA (on stdin)
 19:27:47.401362 > 146 bytes data, server => client
 19:27:47.401373 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.401383 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.401392 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.404582 < 21 bytes data, client => server
 19:27:47.404606 'EHLO verifiedserver\r\n'
 19:27:47.404864 Received DATA (on stdin)
 19:27:47.404876 > 53 bytes data, server => client
 19:27:47.404888 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.404948 < 6 bytes data, client => server
 19:27:47.404960 'HELP\r\n'
 19:27:47.405088 Received DATA (on stdin)
 19:27:47.405099 > 22 bytes data, server => client
 19:27:47.405109 '214 WE ROOLZ: 127892\r\n'
 19:27:47.405209 < 6 bytes data, client => server
 19:27:47.405222 'QUIT\r\n'
 19:27:47.405354 Received DATA (on stdin)
 19:27:47.405364 > 35 bytes data, server => client
 19:27:47.405374 '221 curl ESMTP server signing off\r\n'
 19:27:47.406533 ====> Client disconnect
 19:27:47.406691 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-948
 mail body
=== End of file stdin-for-948
=== Start of file valgrind948
 ==129994== 
 ==129994== Process terminating with default action of signal 4 (SIGILL)
 ==129994==  Illegal opcode at address 0x492B75F
 ==129994==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129994==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129994==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129994==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129994==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129994==    by 0x49908EB: curl_version_info (version.c:600)
 ==129994==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129994==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129994==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129994==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind948
test 0941 [SMTP with --crlf]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind941 ../src/curl -q --output log/13/curl941.out  --include --trace-ascii log/13/trace941 --trace-time smtp://127.0.0.1:45003/941 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/13/upload941 --crlf > log/13/stdout941 2> log/13/stderr941

 941: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 941
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind941 ../src/curl -q --output log/13/curl941.out  --include --trace-ascii log/13/trace941 --trace-time smtp://127.0.0.1:45003/941 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/13/upload941 --crlf > log/13/stdout941 2> log/13/stderr941
=== End of file commands.log
=== Start of file server.cmd
 Testnum 941
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.527877 ====> Client connect
 19:27:47.528096 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.528432 < "EHLO verifiedserver"
 19:27:47.528486 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.528738 < "HELP"
 19:27:47.528777 > "214 WE ROOLZ: 127845[CR][LF]"
 19:27:47.528792 return proof we are we
 19:27:47.528974 < "QUIT"
 19:27:47.529001 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.529935 MAIN sockfilt said DISC
 19:27:47.529964 ====> Client disconnected
 19:27:47.530042 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.133403 ====> Client connect
 19:27:47.133774 Received DATA (on stdin)
 19:27:47.133792 > 146 bytes data, server => client
 19:27:47.133803 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.133813 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.133822 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.134140 < 21 bytes data, client => server
 19:27:47.134156 'EHLO verifiedserver\r\n'
 19:27:47.134169 Received DATA (on stdin)
 19:27:47.134178 > 53 bytes data, server => client
 19:27:47.134189 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.134297 < 6 bytes data, client => server
 19:27:47.134312 'HELP\r\n'
 19:27:47.134437 Received DATA (on stdin)
 19:27:47.134448 > 22 bytes data, server => client
 19:27:47.134458 '214 WE ROOLZ: 127845\r\n'
 19:27:47.134643 < 6 bytes data, client => server
 19:27:47.134654 'QUIT\r\n'
 19:27:47.134665 Received DATA (on stdin)
 19:27:47.134675 > 35 bytes data, server => client
 19:27:47.134684 '221 curl ESMTP server signing off\r\n'
 19:27:47.135531 ====> Client disconnect
 19:27:47.135717 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file upload941
 From: different
 To: another
 email
 headers and body
 with Unix newlines
 meant to be
 converted
 with
 the
 --crlf option
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test971.pl /startdir/src/curl/tests/../docs/options-in-versions /startdir/src/curl/tests/../docs/cmdline-opts /startdir/src/curl/tests/../docs/VERSIONS.md > log/17/stdout971 2> log/17/stderr971
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind950 ../src/curl -q --output log/10/curl950.out  --include --trace-ascii log/10/trace950 --trace-time smtp://127.0.0.1:45391/950 --mail-rcpt recipient --request "vrfy" > log/10/stdout950 2> log/10/stderr950
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind944 ../src/curl -q --output log/20/curl944.out  --include --trace-ascii log/20/trace944 --trace-time 'smtp://user;AUTH=EXTERNAL@127.0.0.1:44599/944' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T - <log/20/stdin-for-944 > log/20/stdout944 2> log/20/stderr944
012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
=== End of file upload941
=== Start of file valgrind941
 ==129666== 
 ==129666== Process terminating with default action of signal 4 (SIGILL)
 ==129666==  Illegal opcode at address 0x492B75F
 ==129666==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129666==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129666==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129666==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129666==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129666==    by 0x49908EB: curl_version_info (version.c:600)
 ==129666==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129666==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129666==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129666==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind941
test 0971 [Verify that options-in-versions and docs/cmdline-opts are in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test971.pl /startdir/src/curl/tests/../docs/options-in-versions /startdir/src/curl/tests/../docs/cmdline-opts /startdir/src/curl/tests/../docs/VERSIONS.md > log/17/stdout971 2> log/17/stderr971
 valgrind SKIPPED
-r-----e--- OK (878 out of 1890, remaining: 02:10, took 0.073s, duration: 01:53)
test 0950 [SMTP VRFY with custom request]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind950 ../src/curl -q --output log/10/curl950.out  --include --trace-ascii log/10/trace950 --trace-time smtp://127.0.0.1:45391/950 --mail-rcpt recipient --request "vrfy" > log/10/stdout950 2> log/10/stderr950

 950: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 950
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind950 ../src/curl -q --output log/10/curl950.out  --include --trace-ascii log/10/trace950 --trace-time smtp://127.0.0.1:45391/950 --mail-rcpt recipient --request "vrfy" > log/10/stdout950 2> log/10/stderr950
=== End of file commands.log
=== Start of file server.cmd
 Testnum 950
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.948691 ====> Client connect
 19:27:47.948963 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.955524 < "EHLO verifiedserver"
 19:27:47.955604 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.955858 < "HELP"
 19:27:47.955908 > "214 WE ROOLZ: 127917[CR][LF]"
 19:27:47.955929 return proof we are we
 19:27:47.956211 < "QUIT"
 19:27:47.956250 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.957960 MAIN sockfilt said DISC
 19:27:47.957998 ====> Client disconnected
 19:27:47.958074 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.550932 ====> Client connect
 19:27:47.557589 Received DATA (on stdin)
 19:27:47.557633 > 146 bytes data, server => client
 19:27:47.557645 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.557655 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.557664 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.557977 < 21 bytes data, client => server
 19:27:47.557996 'EHLO verifiedserver\r\n'
 19:27:47.561226 Received DATA (on stdin)
 19:27:47.561243 > 53 bytes data, server => client
 19:27:47.561254 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.561339 < 6 bytes data, client => server
 19:27:47.561355 'HELP\r\n'
 19:27:47.561534 Received DATA (on stdin)
 19:27:47.561547 > 22 bytes data, server => client
 19:27:47.561558 '214 WE ROOLZ: 127917\r\n'
 19:27:47.561680 < 6 bytes data, client => server
 19:27:47.561697 'QUIT\r\n'
 19:27:47.561861 Received DATA (on stdin)
 19:27:47.561874 > 35 bytes data, server => client
 19:27:47.561885 '221 curl ESMTP server signing off\r\n'
 19:27:47.563001 ====> Client disconnect
 19:27:47.563688 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind950
 ==130276== 
 ==130276== Process terminating with default action of signal 4 (SIGILL)
 ==130276==  Illegal opcode at address 0x492B75F
 ==130276==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130276==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130276==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130276==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130276==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130276==    by 0x49908EB: curl_version_info (version.c:600)
 ==130276==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130276==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130276==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130276==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind950
test 0944 [SMTP external authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind944 ../src/curl -q --output log/20/curl944.out  --include --trace-ascii log/20/trace944 --trace-time 'smtp://user;AUTH=EXTERNAL@127.0.0.1:44599/944' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T - <log/20/stdin-for-944 > log/20/stdout944 2> log/20/stderr944

 944: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 944
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind944 ../src/curl -q --output log/20/curl944.out  --include --trace-ascii log/20/trace944 --trace-time 'smtp://user;AUTH=EXTERNAL@127.0.0.1:44599/944' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T - <log/20/stdin-for-944 > log/20/stdout944 2> log/20/stderr944
=== End of file commands.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH 235 Authenticated
 Testnum 944
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.733538 ====> Client connect
 19:27:47.733704 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.733993 < "EHLO verifiedserver"
 19:27:47.734033 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.734207 < "HELP"
 19:27:47.734238 > "214 WE ROOLZ: 113262[CR][LF]"
 19:27:47.734255 return proof we are we
 19:27:47.734480 < "QUIT"
 19:27:47.734509 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.735343 MAIN sockfilt said DISC
 19:27:47.735374 ====> Client disconnected
 19:27:47.735436 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.339041 ====> Client connect
 19:27:48.339343 Received DATA (on stdin)
 19:27:48.339357 > 146 bytes data, server => client
 19:27:48.3393CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind942 ../src/curl -q --output log/4/curl942.out  --include --trace-ascii log/4/trace942 --trace-time 'smtp://user;AUTH=EXTERNAL@127.0.0.1:32885/942' --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/4/stdin-for-942 > log/4/stdout942 2> log/4/stderr942
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind949 ../src/curl -q --output log/23/curl949.out  --include --trace-ascii log/23/trace949 --trace-time smtp://127.0.0.1:38615/949 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/23/stdin-for-949 > log/23/stdout949 2> log/23/stderr949
68 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.339378 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.339387 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.339464 < 21 bytes data, client => server
 19:27:48.339477 'EHLO verifiedserver\r\n'
 19:27:48.339661 Received DATA (on stdin)
 19:27:48.339673 > 53 bytes data, server => client
 19:27:48.339684 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.339739 < 6 bytes data, client => server
 19:27:48.339750 'HELP\r\n'
 19:27:48.339879 Received DATA (on stdin)
 19:27:48.339890 > 22 bytes data, server => client
 19:27:48.339900 '214 WE ROOLZ: 113262\r\n'
 19:27:48.339993 < 6 bytes data, client => server
 19:27:48.340006 'QUIT\r\n'
 19:27:48.340136 Received DATA (on stdin)
 19:27:48.340147 > 35 bytes data, server => client
 19:27:48.340157 '221 curl ESMTP server signing off\r\n'
 19:27:48.340541 ====> Client disconnect
 19:27:48.341060 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-944
 mail body
=== End of file stdin-for-944
=== Start of file valgrind944
 ==129874== 
 ==129874== Process terminating with default action of signal 4 (SIGILL)
 ==129874==  Illegal opcode at address 0x492B75F
 ==129874==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129874==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129874==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129874==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129874==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129874==    by 0x49908EB: curl_version_info (version.c:600)
 ==129874==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129874==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind944
test 0942 [SMTP external authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind942 ../src/curl -q --output log/4/curl942.out  --include --trace-ascii log/4/trace942 --trace-time 'smtp://user;AUTH=EXTERNAL@127.0.0.1:32885/942' --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/4/stdin-for-942 > log/4/stdout942 2> log/4/stderr942

 942: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 942
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind942 ../src/curl -q --output log/4/curl942.out  --include --trace-ascii log/4/trace942 --trace-time 'smtp://user;AUTH=EXTERNAL@127.0.0.1:32885/942' --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/4/stdin-for-942 > log/4/stdout942 2> log/4/stderr942
=== End of file commands.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH 334 EXTERNAL supported
 REPLY dXNlcg== 235 Authenticated
 Testnum 942
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.558776 ====> Client connect
 19:27:47.558924 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.562202 < "EHLO verifiedserver"
 19:27:47.562244 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.565767 < "HELP"
 19:27:47.565821 > "214 WE ROOLZ: 113210[CR][LF]"
 19:27:47.565838 return proof we are we
 19:27:47.566121 < "QUIT"
 19:27:47.566160 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.567316 MAIN sockfilt said DISC
 19:27:47.567346 ====> Client disconnected
 19:27:47.567419 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.164314 ====> Client connect
 19:27:47.164580 Received DATA (on stdin)
 19:27:47.164594 > 146 bytes data, server => client
 19:27:47.164605 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.164615 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.164624 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.167676 < 21 bytes data, client => server
 19:27:47.167695 'EHLO verifiedserver\r\n'
 19:27:47.167890 Received DATA (on stdin)
 19:27:47.167902 > 53 bytes data, server => client
 19:27:47.167913 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.171226 < 6 bytes data, client => server
 19:27:47.171255 'HELP\r\n'
 19:27:47.171486 Received DATA (on stdin)
 19:27:47.171500 > 22 bytes data, server => client
 19:27:47.171510 '214 WE ROOLZ: 113210\r\n'
 19:27:47.171629 < 6 bytes data, client => server
 19:27:47.171642 'QUIT\r\n'
 19:27:47.171803 Received DATA (on stdin)
 19:27:47.171814 > 35 bytes data, server => client
 19:27:47.171824 '221 curl ESMTP server signing off\r\n'
 19:27:47.172909 ====> Client disconnect
 19:27:47.173061 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-942
 mail body
=== End of file stdin-for-942
=== Start of file valgrind942
 ==129675== 
 ==129675== Process terminating with default action of signal 4 (SIGILL)
 ==129675==  Illegal opcode at address 0x492B75F
 ==129675==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129675==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129675==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129675==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129675==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129675==    by 0x49908EB: curl_version_info (version.c:600)
 ==129675==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129675==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129675==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129675==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind942
test 0949 [SMTP OAuth failure as continuation with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind949 ../src/curl -q --output log/23/curl949.out  --include --trace-ascii log/23/trace949 --trace-time smtp://127.0.0.1:38615/949 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/23/stdin-for-949 > log/23/stdout949 2> log/23/stderr949

 949: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 949
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind949 ../src/curl -q --output log/23/curl949.out  --include --trace-ascii log/23/trace949 --trace-time smtp://127.0.0.1:38615/949 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/23/stdin-for-949 > log/23/stdout949 2> log/23/stderr949
=== End of file commands.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH 334 eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0=
 REPLY AQ== 535 Username and Password not accepted. Learn more at\r\n535 http://support.example.com/mail/oauth
 Testnum 949
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.852028 ====> Client connect
 19:27:47.852252 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.862484 < "EHLO verifiedserver"
 19:27:47.862549 > "250 ESMTP pingpong test server HCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind945 ../src/curl -q --output log/16/curl945.out  --include --trace-ascii log/16/trace945 --trace-time 'smtp://;AUTH=EXTERNAL@127.0.0.1:33205/945' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T - <log/16/stdin-for-945 > log/16/stdout945 2> log/16/stderr945
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind947 ../src/curl -q --output log/1/curl947.out  --include --trace-ascii log/1/trace947 --trace-time smtp://127.0.0.1:42673/947 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/1/stdin-for-947 > log/1/stdout947 2> log/1/stderr947
ello verifiedserver[CR][LF]"
 19:27:47.866399 < "HELP"
 19:27:47.866446 > "214 WE ROOLZ: 127840[CR][LF]"
 19:27:47.866462 return proof we are we
 19:27:47.866703 < "QUIT"
 19:27:47.866740 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.873107 MAIN sockfilt said DISC
 19:27:47.873159 ====> Client disconnected
 19:27:47.873246 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.456560 ====> Client connect
 19:27:48.464267 Received DATA (on stdin)
 19:27:48.464306 > 146 bytes data, server => client
 19:27:48.464318 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.464332 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.464340 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.464460 < 21 bytes data, client => server
 19:27:48.464472 'EHLO verifiedserver\r\n'
 19:27:48.470933 Received DATA (on stdin)
 19:27:48.470960 > 53 bytes data, server => client
 19:27:48.470972 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.471877 < 6 bytes data, client => server
 19:27:48.471895 'HELP\r\n'
 19:27:48.472073 Received DATA (on stdin)
 19:27:48.472084 > 22 bytes data, server => client
 19:27:48.472094 '214 WE ROOLZ: 127840\r\n'
 19:27:48.472199 < 6 bytes data, client => server
 19:27:48.472211 'QUIT\r\n'
 19:27:48.472357 Received DATA (on stdin)
 19:27:48.472367 > 35 bytes data, server => client
 19:27:48.472377 '221 curl ESMTP server signing off\r\n'
 19:27:48.477603 ====> Client disconnect
 19:27:48.478861 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-949
 mail body
=== End of file stdin-for-949
=== Start of file valgrind949
 ==130111== 
 ==130111== Process terminating with default action of signal 4 (SIGILL)
 ==130111==  Illegal opcode at address 0x492B75F
 ==130111==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130111==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130111==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130111==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130111==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130111==    by 0x49908EB: curl_version_info (version.c:600)
 ==130111==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130111==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130111==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130111==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind949
test 0945 [SMTP external authentication with initial response without credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind945 ../src/curl -q --output log/16/curl945.out  --include --trace-ascii log/16/trace945 --trace-time 'smtp://;AUTH=EXTERNAL@127.0.0.1:33205/945' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T - <log/16/stdin-for-945 > log/16/stdout945 2> log/16/stderr945

 945: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 945
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind945 ../src/curl -q --output log/16/curl945.out  --include --trace-ascii log/16/trace945 --trace-time 'smtp://;AUTH=EXTERNAL@127.0.0.1:33205/945' --mail-rcpt recipient@example.com --mail-from sender@example.com --sasl-ir -T - <log/16/stdin-for-945 > log/16/stdout945 2> log/16/stderr945
=== End of file commands.log
=== Start of file server.cmd
 AUTH EXTERNAL
 REPLY AUTH 235 Authenticated
 Testnum 945
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.717509 ====> Client connect
 19:27:47.717811 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.721243 < "EHLO verifiedserver"
 19:27:47.721305 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.722198 < "HELP"
 19:27:47.722255 > "214 WE ROOLZ: 127808[CR][LF]"
 19:27:47.722277 return proof we are we
 19:27:47.722521 < "QUIT"
 19:27:47.722557 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.723852 MAIN sockfilt said DISC
 19:27:47.723890 ====> Client disconnected
 19:27:47.723967 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.320968 ====> Client connect
 19:27:48.324520 Received DATA (on stdin)
 19:27:48.324581 > 146 bytes data, server => client
 19:27:48.324610 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.324627 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.324652 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.326599 < 21 bytes data, client => server
 19:27:48.326654 'EHLO verifiedserver\r\n'
 19:27:48.326936 Received DATA (on stdin)
 19:27:48.326949 > 53 bytes data, server => client
 19:27:48.326959 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.327682 < 6 bytes data, client => server
 19:27:48.327703 'HELP\r\n'
 19:27:48.327908 Received DATA (on stdin)
 19:27:48.327921 > 22 bytes data, server => client
 19:27:48.327932 '214 WE ROOLZ: 127808\r\n'
 19:27:48.328047 < 6 bytes data, client => server
 19:27:48.328063 'QUIT\r\n'
 19:27:48.328189 Received DATA (on stdin)
 19:27:48.328202 > 35 bytes data, server => client
 19:27:48.328212 '221 curl ESMTP server signing off\r\n'
 19:27:48.329410 ====> Client disconnect
 19:27:48.329603 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-945
 mail body
=== End of file stdin-for-945
=== Start of file valgrind945
 ==129870== 
 ==129870== Process terminating with default action of signal 4 (SIGILL)
 ==129870==  Illegal opcode at address 0x492B75F
 ==129870==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==129870==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==129870==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==129870==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==129870==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==129870==    by 0x49908EB: curl_version_info (version.c:600)
 ==129870==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==129870==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==129870==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==129870==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind945
test 0947 [SMTP OAuth 2.0 (OAUTHBEARER) authentication with initial response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind947 ../src/curl -q --output log/1/curl947.out  --include --trace-ascii log/1/trace947 --trace-time smtp://127.0.0.1:42673/947 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/1/stdin-for-947 > log/1/stdout947 2> log/1/stderr947

 947: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 947
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind947 ../src/curl -q --output log/1/curl947.out  --include --trace-ascii log/1/trace947 --trace-time smtp://127.0.0.1:42673/947 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T - <log/1/stdin-for-947 > log/1/stdout947 2> log/1/stderr947
=== End of file commands.log
=== Start of file server.cmd
 AUTH OAUTHBEARER
 REPLY AUTH 235 Authenticated
 Testnum 947
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:47.7CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind951 ../src/curl -q --output log/21/curl951.out  --include --trace-ascii log/21/trace951 --trace-time smtp://127.0.0.1:36859/951 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/21/stdin-for-951 > log/21/stdout951 2> log/21/stderr951
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind952 ../src/curl -q --output log/19/curl952.out  --include --trace-ascii log/19/trace952 --trace-time smtp://127.0.0.1:33719/952 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/19/stdin-for-952 > log/19/stdout952 2> log/19/stderr952
95467 ====> Client connect
 19:27:47.795690 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:47.796049 < "EHLO verifiedserver"
 19:27:47.796102 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:47.796293 < "HELP"
 19:27:47.796329 > "214 WE ROOLZ: 127810[CR][LF]"
 19:27:47.796344 return proof we are we
 19:27:47.805596 < "QUIT"
 19:27:47.805661 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:47.806935 MAIN sockfilt said DISC
 19:27:47.806976 ====> Client disconnected
 19:27:47.807059 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.400952 ====> Client connect
 19:27:48.401333 Received DATA (on stdin)
 19:27:48.401350 > 146 bytes data, server => client
 19:27:48.401361 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.401371 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.401379 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.401480 < 21 bytes data, client => server
 19:27:48.401494 'EHLO verifiedserver\r\n'
 19:27:48.401728 Received DATA (on stdin)
 19:27:48.401739 > 53 bytes data, server => client
 19:27:48.401750 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.401810 < 6 bytes data, client => server
 19:27:48.401821 'HELP\r\n'
 19:27:48.401963 Received DATA (on stdin)
 19:27:48.401974 > 22 bytes data, server => client
 19:27:48.401983 '214 WE ROOLZ: 127810\r\n'
 19:27:48.411014 < 6 bytes data, client => server
 19:27:48.411047 'QUIT\r\n'
 19:27:48.411284 Received DATA (on stdin)
 19:27:48.411296 > 35 bytes data, server => client
 19:27:48.411307 '221 curl ESMTP server signing off\r\n'
 19:27:48.412482 ====> Client disconnect
 19:27:48.412682 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-947
 mail body
=== End of file stdin-for-947
=== Start of file valgrind947
 ==130027== 
 ==130027== Process terminating with default action of signal 4 (SIGILL)
 ==130027==  Illegal opcode at address 0x492B75F
 ==130027==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130027==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130027==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130027==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130027==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130027==    by 0x49908EB: curl_version_info (version.c:600)
 ==130027==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130027==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind947
test 0951 [SMTP data with dot as first character]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind951 ../src/curl -q --output log/21/curl951.out  --include --trace-ascii log/21/trace951 --trace-time smtp://127.0.0.1:36859/951 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/21/stdin-for-951 > log/21/stdout951 2> log/21/stderr951

 951: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 951
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind951 ../src/curl -q --output log/21/curl951.out  --include --trace-ascii log/21/trace951 --trace-time smtp://127.0.0.1:36859/951 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/21/stdin-for-951 > log/21/stdout951 2> log/21/stderr951
=== End of file commands.log
=== Start of file server.cmd
 Testnum 951
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:48.168703 ====> Client connect
 19:27:48.168976 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:48.172047 < "EHLO verifiedserver"
 19:27:48.172114 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:48.172340 < "HELP"
 19:27:48.172392 > "214 WE ROOLZ: 127888[CR][LF]"
 19:27:48.172410 return proof we are we
 19:27:48.172640 < "QUIT"
 19:27:48.172677 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:48.173853 MAIN sockfilt said DISC
 19:27:48.173885 ====> Client disconnected
 19:27:48.173966 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:47.772174 ====> Client connect
 19:27:47.777194 Received DATA (on stdin)
 19:27:47.777231 > 146 bytes data, server => client
 19:27:47.777245 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:47.777255 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:47.777264 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:47.777382 < 21 bytes data, client => server
 19:27:47.777399 'EHLO verifiedserver\r\n'
 19:27:47.777704 Received DATA (on stdin)
 19:27:47.777718 > 53 bytes data, server => client
 19:27:47.777729 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:47.777801 < 6 bytes data, client => server
 19:27:47.777815 'HELP\r\n'
 19:27:47.777993 Received DATA (on stdin)
 19:27:47.778005 > 22 bytes data, server => client
 19:27:47.778015 '214 WE ROOLZ: 127888\r\n'
 19:27:47.778120 < 6 bytes data, client => server
 19:27:47.778134 'QUIT\r\n'
 19:27:47.778263 Received DATA (on stdin)
 19:27:47.778275 > 35 bytes data, server => client
 19:27:47.778285 '221 curl ESMTP server signing off\r\n'
 19:27:47.779365 ====> Client disconnect
 19:27:47.779562 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-951
 .This first line starts with a dot
=== End of file stdin-for-951
=== Start of file valgrind951
 ==130358== 
 ==130358== Process terminating with default action of signal 4 (SIGILL)
 ==130358==  Illegal opcode at address 0x492B75F
 ==130358==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130358==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130358==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130358==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130358==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130358==    by 0x49908EB: curl_version_info (version.c:600)
 ==130358==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130358==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind951
test 0952 [SMTP data with single dot-only line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind952 ../src/curl -q --output log/19/curl952.out  --include --trace-ascii log/19/trace952 --trace-time smtp://127.0.0.1:33719/952 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/19/stdin-for-952 > log/19/stdout952 2> log/19/stderr952

 952: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 952
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind952 ../src/curl -q --output log/19/curl952.out  --include --trace-ascii log/19/trace952 --trace-time smtp://127.0.0.1:33719/952 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - <log/19/stdin-for-952 > log/19/stdout952 2> log/19/stderr952
=== End of file commands.log
=== Start of file server.cmd
 Testnum 952
=== End of file server.cmCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind955 ../src/curl -q --output log/6/curl955.out  --include --trace-ascii log/6/trace955 --trace-time smtp://127.0.0.1:39499/955 --mail-rcpt recipient@example.com --mail-from Avsändaren@example.com -T - <log/6/stdin-for-955 > log/6/stdout955 2> log/6/stderr955
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind956 ../src/curl -q --output log/5/curl956.out  --include --trace-ascii log/5/trace956 --trace-time smtp://127.0.0.1:44397/956 --mail-rcpt Stödmottagaren@example.com --mail-from sender@example.com -T - <log/5/stdin-for-956 > log/5/stdout956 2> log/5/stderr956
d
=== Start of file smtp_server.log
 19:27:48.441572 ====> Client connect
 19:27:48.441782 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:48.448844 < "EHLO verifiedserver"
 19:27:48.448907 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:48.449141 < "HELP"
 19:27:48.449183 > "214 WE ROOLZ: 127656[CR][LF]"
 19:27:48.449200 return proof we are we
 19:27:48.449434 < "QUIT"
 19:27:48.449469 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:48.450606 MAIN sockfilt said DISC
 19:27:48.450638 ====> Client disconnected
 19:27:48.450712 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:49.046995 ====> Client connect
 19:27:49.050893 Received DATA (on stdin)
 19:27:49.050931 > 146 bytes data, server => client
 19:27:49.050944 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:49.051000 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:49.051009 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:49.051118 < 21 bytes data, client => server
 19:27:49.051131 'EHLO verifiedserver\r\n'
 19:27:49.054472 Received DATA (on stdin)
 19:27:49.054488 > 53 bytes data, server => client
 19:27:49.054499 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:49.054577 < 6 bytes data, client => server
 19:27:49.054592 'HELP\r\n'
 19:27:49.054756 Received DATA (on stdin)
 19:27:49.054768 > 22 bytes data, server => client
 19:27:49.054777 '214 WE ROOLZ: 127656\r\n'
 19:27:49.054883 < 6 bytes data, client => server
 19:27:49.054899 'QUIT\r\n'
 19:27:49.055028 Received DATA (on stdin)
 19:27:49.055041 > 35 bytes data, server => client
 19:27:49.055051 '221 curl ESMTP server signing off\r\n'
 19:27:49.056109 ====> Client disconnect
 19:27:49.056275 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-952
 .
=== End of file stdin-for-952
=== Start of file valgrind952
 ==130447== 
 ==130447== Process terminating with default action of signal 4 (SIGILL)
 ==130447==  Illegal opcode at address 0x492B75F
 ==130447==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130447==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130447==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130447==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130447==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130447==    by 0x49908EB: curl_version_info (version.c:600)
 ==130447==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130447==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130447==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130447==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind952
setenv LC_ALL = C.UTF-8
test 0955 [SMTP without SMTPUTF8 support - UTF-8 based sender (local part only)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind955 ../src/curl -q --output log/6/curl955.out  --include --trace-ascii log/6/trace955 --trace-time smtp://127.0.0.1:39499/955 --mail-rcpt recipient@example.com --mail-from Avsändaren@example.com -T - <log/6/stdin-for-955 > log/6/stdout955 2> log/6/stderr955

 955: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 955
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind955 ../src/curl -q --output log/6/curl955.out  --include --trace-ascii log/6/trace955 --trace-time smtp://127.0.0.1:39499/955 --mail-rcpt recipient@example.com --mail-from Avsändaren@example.com -T - <log/6/stdin-for-955 > log/6/stdout955 2> log/6/stderr955
=== End of file commands.log
=== Start of file server.cmd
 REPLY MAIL 501 not fine enough
 Testnum 955
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:48.826040 ====> Client connect
 19:27:48.826218 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:48.826527 < "EHLO verifiedserver"
 19:27:48.826573 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:48.826758 < "HELP"
 19:27:48.826791 > "214 WE ROOLZ: 127735[CR][LF]"
 19:27:48.826805 return proof we are we
 19:27:48.827028 < "QUIT"
 19:27:48.827058 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:48.828115 MAIN sockfilt said DISC
 19:27:48.828144 ====> Client disconnected
 19:27:48.828210 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.431427 ====> Client connect
 19:27:48.431749 Received DATA (on stdin)
 19:27:48.431766 > 146 bytes data, server => client
 19:27:48.431777 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.431786 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.431795 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.431877 < 21 bytes data, client => server
 19:27:48.431889 'EHLO verifiedserver\r\n'
 19:27:48.432094 Received DATA (on stdin)
 19:27:48.432106 > 53 bytes data, server => client
 19:27:48.432116 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.432173 < 6 bytes data, client => server
 19:27:48.432187 'HELP\r\n'
 19:27:48.432321 Received DATA (on stdin)
 19:27:48.432331 > 22 bytes data, server => client
 19:27:48.432341 '214 WE ROOLZ: 127735\r\n'
 19:27:48.432455 < 6 bytes data, client => server
 19:27:48.432467 'QUIT\r\n'
 19:27:48.432574 Received DATA (on stdin)
 19:27:48.432585 > 35 bytes data, server => client
 19:27:48.432594 '221 curl ESMTP server signing off\r\n'
 19:27:48.433584 ====> Client disconnect
 19:27:48.433725 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-955
 From: different
 To: another
 body
=== End of file stdin-for-955
=== Start of file valgrind955
 ==130594== 
 ==130594== Process terminating with default action of signal 4 (SIGILL)
 ==130594==  Illegal opcode at address 0x492B75F
 ==130594==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130594==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130594==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130594==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130594==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130594==    by 0x49908EB: curl_version_info (version.c:600)
 ==130594==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130594==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130594==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130594==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind955
setenv LC_ALL = C.UTF-8
test 0956 [SMTP without SMTPUTF8 support - UTF-8 based recipient (local part)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind956 ../src/curl -q --output log/5/curl956.out  --include --trace-ascii log/5/trace956 --trace-time smtp://127.0.0.1:44397/956 --mail-rcpt Stödmottagaren@example.com --mail-from sender@example.com -T - <log/5/stdin-for-956 > log/5/stdout956 2> log/5/stderr956

 956: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 956
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind956 ../src/curl -q --output log/5/curl956.out  --include --trace-ascii log/5/trace956 --trace-time smtp://127.0.0.1:44397/956 --mail-rcpt Stödmottagaren@example.com --mail-from senCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind954 ../src/curl -q --output log/3/curl954.out  --include --trace-ascii log/3/trace954 --trace-time smtp://127.0.0.1:38593/954 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T - <log/3/stdin-for-954 > log/3/stdout954 2> log/3/stderr954
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind953 ../src/curl -q --output log/14/curl953.out  --include --trace-ascii log/14/trace953 --trace-time smtp://127.0.0.1:44025/953 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T - <log/14/stdin-for-953 > log/14/stdout953 2> log/14/stderr953
der@example.com -T - <log/5/stdin-for-956 > log/5/stdout956 2> log/5/stderr956
=== End of file commands.log
=== Start of file server.cmd
 Testnum 956
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:48.927733 ====> Client connect
 19:27:48.927914 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:48.928208 < "EHLO verifiedserver"
 19:27:48.928311 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:48.928444 < "HELP"
 19:27:48.928475 > "214 WE ROOLZ: 127748[CR][LF]"
 19:27:48.928489 return proof we are we
 19:27:48.928715 < "QUIT"
 19:27:48.928749 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:48.929774 MAIN sockfilt said DISC
 19:27:48.929806 ====> Client disconnected
 19:27:48.930066 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.533117 ====> Client connect
 19:27:48.533434 Received DATA (on stdin)
 19:27:48.533449 > 146 bytes data, server => client
 19:27:48.533461 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.533470 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.533479 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.533558 < 21 bytes data, client => server
 19:27:48.533569 'EHLO verifiedserver\r\n'
 19:27:48.533739 Received DATA (on stdin)
 19:27:48.533750 > 53 bytes data, server => client
 19:27:48.533768 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.533855 < 6 bytes data, client => server
 19:27:48.533866 'HELP\r\n'
 19:27:48.533994 Received DATA (on stdin)
 19:27:48.534004 > 22 bytes data, server => client
 19:27:48.534014 '214 WE ROOLZ: 127748\r\n'
 19:27:48.534102 < 6 bytes data, client => server
 19:27:48.534113 'QUIT\r\n'
 19:27:48.534258 Received DATA (on stdin)
 19:27:48.534270 > 35 bytes data, server => client
 19:27:48.534280 '221 curl ESMTP server signing off\r\n'
 19:27:48.535232 ====> Client disconnect
 19:27:48.535582 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-956
 From: different
 To: another
 body
=== End of file stdin-for-956
=== Start of file valgrind956
 ==130695== 
 ==130695== Process terminating with default action of signal 4 (SIGILL)
 ==130695==  Illegal opcode at address 0x492B75F
 ==130695==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130695==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130695==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130695==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130695==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130695==    by 0x49908EB: curl_version_info (version.c:600)
 ==130695==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130695==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind956
test 0954 [SMTP plain auth with alt authorization identity (Not authorized)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind954 ../src/curl -q --output log/3/curl954.out  --include --trace-ascii log/3/trace954 --trace-time smtp://127.0.0.1:38593/954 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T - <log/3/stdin-for-954 > log/3/stdout954 2> log/3/stderr954

 954: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 954
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind954 ../src/curl -q --output log/3/curl954.out  --include --trace-ascii log/3/trace954 --trace-time smtp://127.0.0.1:38593/954 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T - <log/3/stdin-for-954 > log/3/stdout954 2> log/3/stderr954
=== End of file commands.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH 334 PLAIN supported
 REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= 501 Not authorized
 Testnum 954
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:48.745477 ====> Client connect
 19:27:48.745674 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:48.746094 < "EHLO verifiedserver"
 19:27:48.746149 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:48.746372 < "HELP"
 19:27:48.746412 > "214 WE ROOLZ: 127734[CR][LF]"
 19:27:48.746431 return proof we are we
 19:27:48.746707 < "QUIT"
 19:27:48.746743 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:48.747960 MAIN sockfilt said DISC
 19:27:48.747995 ====> Client disconnected
 19:27:48.748064 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.350861 ====> Client connect
 19:27:48.351272 Received DATA (on stdin)
 19:27:48.351295 > 146 bytes data, server => client
 19:27:48.351308 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.351318 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.351328 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.351428 < 21 bytes data, client => server
 19:27:48.351445 'EHLO verifiedserver\r\n'
 19:27:48.351689 Received DATA (on stdin)
 19:27:48.351703 > 53 bytes data, server => client
 19:27:48.351715 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.351783 < 6 bytes data, client => server
 19:27:48.351799 'HELP\r\n'
 19:27:48.351959 Received DATA (on stdin)
 19:27:48.351972 > 22 bytes data, server => client
 19:27:48.351982 '214 WE ROOLZ: 127734\r\n'
 19:27:48.352122 < 6 bytes data, client => server
 19:27:48.352139 'QUIT\r\n'
 19:27:48.352276 Received DATA (on stdin)
 19:27:48.352288 > 35 bytes data, server => client
 19:27:48.352298 '221 curl ESMTP server signing off\r\n'
 19:27:48.353433 ====> Client disconnect
 19:27:48.353593 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-954
 mail body
=== End of file stdin-for-954
=== Start of file valgrind954
 ==130545== 
 ==130545== Process terminating with default action of signal 4 (SIGILL)
 ==130545==  Illegal opcode at address 0x492B75F
 ==130545==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130545==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130545==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130545==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130545==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130545==    by 0x49908EB: curl_version_info (version.c:600)
 ==130545==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130545==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130545==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130545==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind954
test 0953 [SMTP plain authentication with alternative authorization identity]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind953 ../src/curl -q --output log/14/curl953.out  --include --trace-ascii log/14/trace953 --trace-time smtp://127.0.0.1:44025/953 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T - <log/14/stdin-for-953 > log/14/stdout953 2> log/14/stderr953

 953: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 953
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memchCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind963 ../src/curl -q --output log/22/curl963.out  --include --trace-ascii log/22/trace963 --trace-time smtp://127.0.0.1:43827/963 --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T - <log/22/stdin-for-963 > log/22/stdout963 2> log/22/stderr963
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind964 ../src/curl -q --output log/15/curl964.out  --include --trace-ascii log/15/trace964 --trace-time smtp://127.0.0.1:44021/964 --mail-rcpt user@åäö.se > log/15/stdout964 2> log/15/stderr964
eck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind953 ../src/curl -q --output log/14/curl953.out  --include --trace-ascii log/14/trace953 --trace-time smtp://127.0.0.1:44025/953 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T - <log/14/stdin-for-953 > log/14/stdout953 2> log/14/stderr953
=== End of file commands.log
=== Start of file server.cmd
 AUTH PLAIN
 REPLY AUTH 334 PLAIN supported
 REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= 235 Authenticated
 Testnum 953
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:48.735355 ====> Client connect
 19:27:48.735577 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:48.735971 < "EHLO verifiedserver"
 19:27:48.736020 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:48.736218 < "HELP"
 19:27:48.736252 > "214 WE ROOLZ: 113204[CR][LF]"
 19:27:48.736268 return proof we are we
 19:27:48.736529 < "QUIT"
 19:27:48.736562 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:48.737776 MAIN sockfilt said DISC
 19:27:48.737810 ====> Client disconnected
 19:27:48.737880 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.327542 ====> Client connect
 19:27:48.341136 Received DATA (on stdin)
 19:27:48.341162 > 146 bytes data, server => client
 19:27:48.341174 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.341184 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.341194 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.341323 < 21 bytes data, client => server
 19:27:48.341340 'EHLO verifiedserver\r\n'
 19:27:48.341556 Received DATA (on stdin)
 19:27:48.341569 > 53 bytes data, server => client
 19:27:48.341580 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.341644 < 6 bytes data, client => server
 19:27:48.341659 'HELP\r\n'
 19:27:48.341795 Received DATA (on stdin)
 19:27:48.341806 > 22 bytes data, server => client
 19:27:48.341817 '214 WE ROOLZ: 113204\r\n'
 19:27:48.341955 < 6 bytes data, client => server
 19:27:48.341971 'QUIT\r\n'
 19:27:48.342094 Received DATA (on stdin)
 19:27:48.342107 > 35 bytes data, server => client
 19:27:48.342117 '221 curl ESMTP server signing off\r\n'
 19:27:48.343250 ====> Client disconnect
 19:27:48.343416 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-953
 mail body
=== End of file stdin-for-953
=== Start of file valgrind953
 ==130539== 
 ==130539== Process terminating with default action of signal 4 (SIGILL)
 ==130539==  Illegal opcode at address 0x492B75F
 ==130539==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130539==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130539==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130539==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130539==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130539==    by 0x49908EB: curl_version_info (version.c:600)
 ==130539==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130539==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130539==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130539==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind953
setenv LC_ALL = C.UTF-8
test 0963 [SMTP without SMTPUTF8 support (IDN) - UTF-8 recipient (host part only)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind963 ../src/curl -q --output log/22/curl963.out  --include --trace-ascii log/22/trace963 --trace-time smtp://127.0.0.1:43827/963 --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T - <log/22/stdin-for-963 > log/22/stdout963 2> log/22/stderr963

 963: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 963
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind963 ../src/curl -q --output log/22/curl963.out  --include --trace-ascii log/22/trace963 --trace-time smtp://127.0.0.1:43827/963 --mail-rcpt recipient@åäö.se --mail-from sender@example.com -T - <log/22/stdin-for-963 > log/22/stdout963 2> log/22/stderr963
=== End of file commands.log
=== Start of file server.cmd
 Testnum 963
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.391240 ====> Client connect
 19:27:49.391423 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.391724 < "EHLO verifiedserver"
 19:27:49.391770 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.391951 < "HELP"
 19:27:49.391984 > "214 WE ROOLZ: 127746[CR][LF]"
 19:27:49.392017 return proof we are we
 19:27:49.395416 < "QUIT"
 19:27:49.398746 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.405418 MAIN sockfilt said DISC
 19:27:49.405474 ====> Client disconnected
 19:27:49.405560 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.996559 ====> Client connect
 19:27:48.996901 Received DATA (on stdin)
 19:27:48.996915 > 146 bytes data, server => client
 19:27:48.996927 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.996937 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.996946 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.997027 < 21 bytes data, client => server
 19:27:48.997041 'EHLO verifiedserver\r\n'
 19:27:48.997237 Received DATA (on stdin)
 19:27:48.997248 > 53 bytes data, server => client
 19:27:48.997259 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.997320 < 6 bytes data, client => server
 19:27:48.997332 'HELP\r\n'
 19:27:48.997477 Received DATA (on stdin)
 19:27:48.997487 > 22 bytes data, server => client
 19:27:48.997495 '214 WE ROOLZ: 127746\r\n'
 19:27:48.997586 < 6 bytes data, client => server
 19:27:48.997599 'QUIT\r\n'
 19:27:49.004243 Received DATA (on stdin)
 19:27:49.004266 > 35 bytes data, server => client
 19:27:49.004277 '221 curl ESMTP server signing off\r\n'
 19:27:49.010794 ====> Client disconnect
 19:27:49.011026 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-963
 From: different
 To: another
 body
=== End of file stdin-for-963
=== Start of file valgrind963
 ==130862== 
 ==130862== Process terminating with default action of signal 4 (SIGILL)
 ==130862==  Illegal opcode at address 0x492B75F
 ==130862==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130862==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130862==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130862==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130862==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130862==    by 0x49908EB: curl_version_info (version.c:600)
 ==130862==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130862==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130862==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130862==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind963
setenv LC_ALL = C.UTF-8
test 0964 [SMTP external VRFY w/o SMTPUTF8 (IDN) - UTF-8 recipient (host part)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind964 ../src/curl -q --output log/15/curl964.out  --include --trace-ascii log/15/trace964 --trace-time smtp://127.0.0.1:44021/964 --mail-rcpt user@åäö.se > log/15/stdout964 2> log/15/stderr964

 964: protocol FAILED!
 There was no content at all in tCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind967 ../src/curl -q --output log/24/curl967.out  --include --trace-ascii log/24/trace967 --trace-time smtp://127.0.0.1:40147/967 --mail-rcpt Användaren@åäö.se > log/24/stdout967 2> log/24/stderr967
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind969 ../src/curl -q --output log/18/curl969.out  --include --trace-ascii log/18/trace969 --trace-time smtp://127.0.0.1:33075/969 --mail-rcpt Friends -X EXPN > log/18/stdout969 2> log/18/stderr969
he file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 964
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind964 ../src/curl -q --output log/15/curl964.out  --include --trace-ascii log/15/trace964 --trace-time smtp://127.0.0.1:44021/964 --mail-rcpt user@åäö.se > log/15/stdout964 2> log/15/stderr964
=== End of file commands.log
=== Start of file server.cmd
 Testnum 964
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.643047 ====> Client connect
 19:27:49.643234 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.643528 < "EHLO verifiedserver"
 19:27:49.643568 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.643743 < "HELP"
 19:27:49.643775 > "214 WE ROOLZ: 127773[CR][LF]"
 19:27:49.643791 return proof we are we
 19:27:49.644013 < "QUIT"
 19:27:49.644040 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.645174 MAIN sockfilt said DISC
 19:27:49.645203 ====> Client disconnected
 19:27:49.645271 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:50.248347 ====> Client connect
 19:27:50.248689 Received DATA (on stdin)
 19:27:50.248704 > 146 bytes data, server => client
 19:27:50.248715 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:50.248726 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:50.248735 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:50.248813 < 21 bytes data, client => server
 19:27:50.248825 'EHLO verifiedserver\r\n'
 19:27:50.249009 Received DATA (on stdin)
 19:27:50.249020 > 53 bytes data, server => client
 19:27:50.249031 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:50.249089 < 6 bytes data, client => server
 19:27:50.249101 'HELP\r\n'
 19:27:50.249228 Received DATA (on stdin)
 19:27:50.249239 > 22 bytes data, server => client
 19:27:50.249248 '214 WE ROOLZ: 127773\r\n'
 19:27:50.249361 < 6 bytes data, client => server
 19:27:50.249375 'QUIT\r\n'
 19:27:50.249476 Received DATA (on stdin)
 19:27:50.249486 > 35 bytes data, server => client
 19:27:50.249496 '221 curl ESMTP server signing off\r\n'
 19:27:50.250564 ====> Client disconnect
 19:27:50.250710 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind964
 ==130957== 
 ==130957== Process terminating with default action of signal 4 (SIGILL)
 ==130957==  Illegal opcode at address 0x492B75F
 ==130957==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130957==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130957==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130957==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130957==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130957==    by 0x49908EB: curl_version_info (version.c:600)
 ==130957==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130957==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130957==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130957==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind964
setenv LC_ALL = C.UTF-8
test 0967 [SMTP external VRFY with SMTPUTF8 support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind967 ../src/curl -q --output log/24/curl967.out  --include --trace-ascii log/24/trace967 --trace-time smtp://127.0.0.1:40147/967 --mail-rcpt Användaren@åäö.se > log/24/stdout967 2> log/24/stderr967

 967: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 967
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind967 ../src/curl -q --output log/24/curl967.out  --include --trace-ascii log/24/trace967 --trace-time smtp://127.0.0.1:40147/967 --mail-rcpt Användaren@åäö.se > log/24/stdout967 2> log/24/stderr967
=== End of file commands.log
=== Start of file server.cmd
 CAPA SMTPUTF8
 Testnum 967
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.846426 ====> Client connect
 19:27:49.846607 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.846938 < "EHLO verifiedserver"
 19:27:49.846987 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.847167 < "HELP"
 19:27:49.847204 > "214 WE ROOLZ: 127811[CR][LF]"
 19:27:49.847219 return proof we are we
 19:27:49.847737 < "QUIT"
 19:27:49.847776 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.847901 MAIN sockfilt said DISC
 19:27:49.847935 ====> Client disconnected
 19:27:49.848014 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:50.451725 ====> Client connect
 19:27:50.452042 Received DATA (on stdin)
 19:27:50.452058 > 146 bytes data, server => client
 19:27:50.452070 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:50.452080 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:50.452089 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:50.452192 < 21 bytes data, client => server
 19:27:50.452204 'EHLO verifiedserver\r\n'
 19:27:50.452409 Received DATA (on stdin)
 19:27:50.452421 > 53 bytes data, server => client
 19:27:50.452432 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:50.452482 < 6 bytes data, client => server
 19:27:50.452493 'HELP\r\n'
 19:27:50.452635 Received DATA (on stdin)
 19:27:50.452646 > 22 bytes data, server => client
 19:27:50.452656 '214 WE ROOLZ: 127811\r\n'
 19:27:50.453041 < 6 bytes data, client => server
 19:27:50.453058 'QUIT\r\n'
 19:27:50.453200 Received DATA (on stdin)
 19:27:50.453214 > 35 bytes data, server => client
 19:27:50.453224 '221 curl ESMTP server signing off\r\n'
 19:27:50.453271 ====> Client disconnect
 19:27:50.453443 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind967
 ==131094== 
 ==131094== Process terminating with default action of signal 4 (SIGILL)
 ==131094==  Illegal opcode at address 0x492B75F
 ==131094==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131094==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131094==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131094==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131094==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131094==    by 0x49908EB: curl_version_info (version.c:600)
 ==131094==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131094==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131094==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131094==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind967
test 0969 [SMTP mailing list EXPN (CUSTOMREQUEST) with SMTPUTF8 support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind969 ../src/curl -q --output log/18/curl969.out  --include --trace-ascii log/18/trace969 --trace-time smtp://127.0.0.1:33075/969 --mail-rcpt Friends -X EXPN > log/18/stdout969 2> log/18/stderr969

 969: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 969
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind962 ../src/curl -q --output log/2/curl962.out  --include --trace-ascii log/2/trace962 --trace-time smtp://127.0.0.1:33505/962 --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T - <log/2/stdin-for-962 > log/2/stdout962 2> log/2/stderr962
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind968 ../src/curl -q --output log/8/curl968.out  --include --trace-ascii log/8/trace968 --trace-time smtp://127.0.0.1:34057/968 --mail-rcpt Användaren > log/8/stdout968 2> log/8/stderr968
ind.supp --num-callers=16 --log-file=log/18/valgrind969 ../src/curl -q --output log/18/curl969.out  --include --trace-ascii log/18/trace969 --trace-time smtp://127.0.0.1:33075/969 --mail-rcpt Friends -X EXPN > log/18/stdout969 2> log/18/stderr969
=== End of file commands.log
=== Start of file server.cmd
 CAPA SMTPUTF8
 Testnum 969
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.995748 ====> Client connect
 19:27:49.995905 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.996796 < "EHLO verifiedserver"
 19:27:49.996841 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.997017 < "HELP"
 19:27:49.997049 > "214 WE ROOLZ: 127847[CR][LF]"
 19:27:49.997064 return proof we are we
 19:27:49.997276 < "QUIT"
 19:27:49.997303 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.998247 MAIN sockfilt said DISC
 19:27:49.998275 ====> Client disconnected
 19:27:49.998341 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:49.601042 ====> Client connect
 19:27:49.601918 Received DATA (on stdin)
 19:27:49.601938 > 146 bytes data, server => client
 19:27:49.601949 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:49.601958 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:49.601967 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:49.602047 < 21 bytes data, client => server
 19:27:49.602057 'EHLO verifiedserver\r\n'
 19:27:49.602249 Received DATA (on stdin)
 19:27:49.602260 > 53 bytes data, server => client
 19:27:49.602270 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:49.602329 < 6 bytes data, client => server
 19:27:49.602341 'HELP\r\n'
 19:27:49.602465 Received DATA (on stdin)
 19:27:49.602475 > 22 bytes data, server => client
 19:27:49.602484 '214 WE ROOLZ: 127847\r\n'
 19:27:49.602595 < 6 bytes data, client => server
 19:27:49.602607 'QUIT\r\n'
 19:27:49.602703 Received DATA (on stdin)
 19:27:49.602713 > 35 bytes data, server => client
 19:27:49.602722 '221 curl ESMTP server signing off\r\n'
 19:27:49.603602 ====> Client disconnect
 19:27:49.603746 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind969
 ==131242== 
 ==131242== Process terminating with default action of signal 4 (SIGILL)
 ==131242==  Illegal opcode at address 0x492B75F
 ==131242==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131242==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131242==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131242==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131242==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131242==    by 0x49908EB: curl_version_info (version.c:600)
 ==131242==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131242==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131242==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131242==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind969
setenv LC_ALL = C.UTF-8
test 0962 [SMTP without SMTPUTF8 support - UTF-8 based sender, with IDN]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind962 ../src/curl -q --output log/2/curl962.out  --include --trace-ascii log/2/trace962 --trace-time smtp://127.0.0.1:33505/962 --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T - <log/2/stdin-for-962 > log/2/stdout962 2> log/2/stderr962

 962: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 962
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind962 ../src/curl -q --output log/2/curl962.out  --include --trace-ascii log/2/trace962 --trace-time smtp://127.0.0.1:33505/962 --mail-rcpt recipient@example.com --mail-from sender@åäö.se -T - <log/2/stdin-for-962 > log/2/stdout962 2> log/2/stderr962
=== End of file commands.log
=== Start of file server.cmd
 Testnum 962
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.362026 ====> Client connect
 19:27:49.362275 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.362662 < "EHLO verifiedserver"
 19:27:49.362720 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.362950 < "HELP"
 19:27:49.362992 > "214 WE ROOLZ: 127750[CR][LF]"
 19:27:49.363012 return proof we are we
 19:27:49.363261 < "QUIT"
 19:27:49.363297 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.364570 MAIN sockfilt said DISC
 19:27:49.364604 ====> Client disconnected
 19:27:49.364677 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:48.964141 ====> Client connect
 19:27:48.967774 Received DATA (on stdin)
 19:27:48.967797 > 146 bytes data, server => client
 19:27:48.967809 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:48.967820 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:48.967830 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:48.967943 < 21 bytes data, client => server
 19:27:48.967962 'EHLO verifiedserver\r\n'
 19:27:48.968198 Received DATA (on stdin)
 19:27:48.968213 > 53 bytes data, server => client
 19:27:48.968227 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:48.968299 < 6 bytes data, client => server
 19:27:48.968315 'HELP\r\n'
 19:27:48.968481 Received DATA (on stdin)
 19:27:48.968494 > 22 bytes data, server => client
 19:27:48.968505 '214 WE ROOLZ: 127750\r\n'
 19:27:48.968620 < 6 bytes data, client => server
 19:27:48.968637 'QUIT\r\n'
 19:27:48.968768 Received DATA (on stdin)
 19:27:48.968781 > 35 bytes data, server => client
 19:27:48.968792 '221 curl ESMTP server signing off\r\n'
 19:27:48.969982 ====> Client disconnect
 19:27:48.970153 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-962
 From: different
 To: another
 body
=== End of file stdin-for-962
=== Start of file valgrind962
 ==130836== 
 ==130836== Process terminating with default action of signal 4 (SIGILL)
 ==130836==  Illegal opcode at address 0x492B75F
 ==130836==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==130836==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==130836==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==130836==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==130836==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==130836==    by 0x49908EB: curl_version_info (version.c:600)
 ==130836==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==130836==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==130836==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==130836==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind962
setenv LC_ALL = C.UTF-8
test 0968 [SMTP VRFY with SMTPUTF8 support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind968 ../src/curl -q --output log/8/curl968.out  --include --trace-ascii log/8/trace968 --trace-time smtp://127.0.0.1:34057/968 --mail-rcpt Användaren > log/8/stdout968 2> log/8/stderr968

 968: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 968
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind968 ../src/curl -q --output log/8/curl968.out  --iCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind966 ../src/curl -q --output log/7/curl966.out  --include --trace-ascii log/7/trace966 --trace-time smtp://127.0.0.1:33449/966 --mail-rcpt Stödmottagaren@åäö.se --mail-from sender@example.com -T - <log/7/stdin-for-966 > log/7/stdout966 2> log/7/stderr966
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind975 ../src/curl -q --output log/10/curl975.out  --include --trace-ascii log/10/trace975 --trace-time http://127.0.0.1:40913/975 --location-trusted -u joe:secret > log/10/stdout975 2> log/10/stderr975
nclude --trace-ascii log/8/trace968 --trace-time smtp://127.0.0.1:34057/968 --mail-rcpt Användaren > log/8/stdout968 2> log/8/stderr968
=== End of file commands.log
=== Start of file server.cmd
 CAPA SMTPUTF8
 Testnum 968
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.865462 ====> Client connect
 19:27:49.865663 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.865982 < "EHLO verifiedserver"
 19:27:49.866029 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.866195 < "HELP"
 19:27:49.866227 > "214 WE ROOLZ: 113206[CR][LF]"
 19:27:49.866241 return proof we are we
 19:27:49.866434 < "QUIT"
 19:27:49.866461 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.868684 MAIN sockfilt said DISC
 19:27:49.868719 ====> Client disconnected
 19:27:49.868790 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:49.470771 ====> Client connect
 19:27:49.471092 Received DATA (on stdin)
 19:27:49.471105 > 146 bytes data, server => client
 19:27:49.471116 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:49.471126 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:49.471135 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:49.471221 < 21 bytes data, client => server
 19:27:49.471232 'EHLO verifiedserver\r\n'
 19:27:49.471447 Received DATA (on stdin)
 19:27:49.471458 > 53 bytes data, server => client
 19:27:49.471469 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:49.471527 < 6 bytes data, client => server
 19:27:49.471536 'HELP\r\n'
 19:27:49.471655 Received DATA (on stdin)
 19:27:49.471665 > 22 bytes data, server => client
 19:27:49.471675 '214 WE ROOLZ: 113206\r\n'
 19:27:49.471767 < 6 bytes data, client => server
 19:27:49.471778 'QUIT\r\n'
 19:27:49.471876 Received DATA (on stdin)
 19:27:49.471886 > 35 bytes data, server => client
 19:27:49.471896 '221 curl ESMTP server signing off\r\n'
 19:27:49.472911 ====> Client disconnect
 19:27:49.474509 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind968
 ==131131== 
 ==131131== Process terminating with default action of signal 4 (SIGILL)
 ==131131==  Illegal opcode at address 0x492B75F
 ==131131==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131131==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131131==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131131==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131131==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131131==    by 0x49908EB: curl_version_info (version.c:600)
 ==131131==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131131==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131131==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131131==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind968
setenv LC_ALL = C.UTF-8
test 0966 [SMTP with SMTPUTF8 support - UTF-8 based recipient]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind966 ../src/curl -q --output log/7/curl966.out  --include --trace-ascii log/7/trace966 --trace-time smtp://127.0.0.1:33449/966 --mail-rcpt Stödmottagaren@åäö.se --mail-from sender@example.com -T - <log/7/stdin-for-966 > log/7/stdout966 2> log/7/stderr966

 966: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 966
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind966 ../src/curl -q --output log/7/curl966.out  --include --trace-ascii log/7/trace966 --trace-time smtp://127.0.0.1:33449/966 --mail-rcpt Stödmottagaren@åäö.se --mail-from sender@example.com -T - <log/7/stdin-for-966 > log/7/stdout966 2> log/7/stderr966
=== End of file commands.log
=== Start of file server.cmd
 CAPA SMTPUTF8
 Testnum 966
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.792271 ====> Client connect
 19:27:49.792597 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.792924 < "EHLO verifiedserver"
 19:27:49.792973 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.793156 < "HELP"
 19:27:49.793189 > "214 WE ROOLZ: 127841[CR][LF]"
 19:27:49.793204 return proof we are we
 19:27:49.793428 < "QUIT"
 19:27:49.793459 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.794352 MAIN sockfilt said DISC
 19:27:49.794386 ====> Client disconnected
 19:27:49.794458 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:50.397576 ====> Client connect
 19:27:50.398047 Received DATA (on stdin)
 19:27:50.398064 > 146 bytes data, server => client
 19:27:50.398075 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:50.398086 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:50.398095 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:50.398185 < 21 bytes data, client => server
 19:27:50.398197 'EHLO verifiedserver\r\n'
 19:27:50.398399 Received DATA (on stdin)
 19:27:50.398410 > 53 bytes data, server => client
 19:27:50.398421 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:50.398482 < 6 bytes data, client => server
 19:27:50.398492 'HELP\r\n'
 19:27:50.398625 Received DATA (on stdin)
 19:27:50.398636 > 22 bytes data, server => client
 19:27:50.398646 '214 WE ROOLZ: 127841\r\n'
 19:27:50.398760 < 6 bytes data, client => server
 19:27:50.398772 'QUIT\r\n'
 19:27:50.398880 Received DATA (on stdin)
 19:27:50.398890 > 35 bytes data, server => client
 19:27:50.398900 '221 curl ESMTP server signing off\r\n'
 19:27:50.399722 ====> Client disconnect
 19:27:50.399884 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-966
 From: different
 To: another
 body
=== End of file stdin-for-966
=== Start of file valgrind966
 ==131065== 
 ==131065== Process terminating with default action of signal 4 (SIGILL)
 ==131065==  Illegal opcode at address 0x492B75F
 ==131065==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131065==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131065==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131065==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131065==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131065==    by 0x49908EB: curl_version_info (version.c:600)
 ==131065==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131065==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131065==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131065==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind966
test 0975 [HTTP with auth redirected to FTP allowing auth to continue]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind975 ../src/curl -q --output log/10/curl975.out  --include --trace-ascii log/10/trace975 --trace-time http://127.0.0.1:40913/975 --location-trusted -u joe:secret > log/10/stdout975 2> log/10/stderr975

 975: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 975
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind975 ../src/curl -q --output log/10/curl975.out  --include --trace-ascii log/10/trace975 --trace-time http://127.0.0.1:40913CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind976 ../src/curl -q --output log/20/curl976.out  --include --trace-ascii log/20/trace976 --trace-time -x http://127.0.0.1:33897 http://firsthost.com --location-trusted -u joe:secret > log/20/stdout976 2> log/20/stderr976
/975 --location-trusted -u joe:secret > log/10/stdout975 2> log/10/stderr975
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:50.228697 ====> Client connect
 19:27:50.228900 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:50.229273 < "USER anonymous"
 19:27:50.229309 > "331 We are happy you popped in![CR][LF]"
 19:27:50.229459 < "PASS ftp@example.com"
 19:27:50.229484 > "230 Welcome you silly person[CR][LF]"
 19:27:50.229625 < "PWD"
 19:27:50.229655 > "257 "/" is current directory[CR][LF]"
 19:27:50.229806 < "EPSV"
 19:27:50.229829 ====> Passive DATA channel requested by client
 19:27:50.229842 DATA sockfilt for passive data channel starting...
 19:27:50.234254 DATA sockfilt for passive data channel started (pid 131515)
 19:27:50.234383 DATA sockfilt for passive data channel listens on port 36911
 19:27:50.234437 > "229 Entering Passive Mode (|||36911|)[CR][LF]"
 19:27:50.234457 Client has been notified that upcoming DATA connection is awaited on port 36911
 19:27:50.234744 Client connects to port 36911
 19:27:50.234776 ====> Client established passive DATA connection on port 36911
 19:27:50.234877 < "TYPE I"
 19:27:50.234918 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:50.235106 < "SIZE verifiedserver"
 19:27:50.235154 > "213 17[CR][LF]"
 19:27:50.235346 < "RETR verifiedserver"
 19:27:50.235388 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:50.235493 =====> Closing passive DATA connection...
 19:27:50.235516 Server disconnects passive DATA connection
 19:27:50.235782 Server disconnected passive DATA connection
 19:27:50.235814 DATA sockfilt for passive data channel quits (pid 131515)
 19:27:50.236093 DATA sockfilt for passive data channel quit (pid 131515)
 19:27:50.236123 =====> Closed passive DATA connection
 19:27:50.236154 > "226 File transfer complete[CR][LF]"
 19:27:50.283370 < "QUIT"
 19:27:50.283431 > "221 bye bye baby[CR][LF]"
 19:27:50.284492 MAIN sockfilt said DISC
 19:27:50.284526 ====> Client disconnected
 19:27:50.284608 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:50.829934 ====> Client connect
 19:27:50.834369 Received DATA (on stdin)
 19:27:50.834388 > 146 bytes data, server => client
 19:27:50.834399 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:50.834409 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:50.834418 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:50.834531 < 16 bytes data, client => server
 19:27:50.834541 'USER anonymous\r\n'
 19:27:50.834691 Received DATA (on stdin)
 19:27:50.834701 > 33 bytes data, server => client
 19:27:50.834711 '331 We are happy you popped in!\r\n'
 19:27:50.834761 < 22 bytes data, client => server
 19:27:50.834770 'PASS ftp@example.com\r\n'
 19:27:50.834863 Received DATA (on stdin)
 19:27:50.834873 > 30 bytes data, server => client
 19:27:50.834882 '230 Welcome you silly person\r\n'
 19:27:50.834929 < 5 bytes data, client => server
 19:27:50.834938 'PWD\r\n'
 19:27:50.835034 Received DATA (on stdin)
 19:27:50.835044 > 30 bytes data, server => client
 19:27:50.835053 '257 "/" is current directory\r\n'
 19:27:50.835110 < 6 bytes data, client => server
 19:27:50.835120 'EPSV\r\n'
 19:27:50.839848 Received DATA (on stdin)
 19:27:50.839863 > 39 bytes data, server => client
 19:27:50.839874 '229 Entering Passive Mode (|||36911|)\r\n'
 19:27:50.840035 < 8 bytes data, client => server
 19:27:50.840052 'TYPE I\r\n'
 19:27:50.840306 Received DATA (on stdin)
 19:27:50.840319 > 33 bytes data, server => client
 19:27:50.840329 '200 I modify TYPE as you wanted\r\n'
 19:27:50.840389 < 21 bytes data, client => server
 19:27:50.840404 'SIZE verifiedserver\r\n'
 19:27:50.840543 Received DATA (on stdin)
 19:27:50.840555 > 8 bytes data, server => client
 19:27:50.840565 '213 17\r\n'
 19:27:50.840621 < 21 bytes data, client => server
 19:27:50.840635 'RETR verifiedserver\r\n'
 19:27:50.840905 Received DATA (on stdin)
 19:27:50.840918 > 29 bytes data, server => client
 19:27:50.840928 '150 Binary junk (17 bytes).\r\n'
 19:27:50.841540 Received DATA (on stdin)
 19:27:50.841553 > 28 bytes data, server => client
 19:27:50.841564 '226 File transfer complete\r\n'
 19:27:50.888550 < 6 bytes data, client => server
 19:27:50.888580 'QUIT\r\n'
 19:27:50.888812 Received DATA (on stdin)
 19:27:50.888823 > 18 bytes data, server => client
 19:27:50.888833 '221 bye bye baby\r\n'
 19:27:50.889816 ====> Client disconnect
 19:27:50.889983 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:50.838781 Running IPv4 version
 19:27:50.838873 Listening on port 36911
 19:27:50.838922 Wrote pid 131515 to log/10/server/ftp_sockdata.pid
 19:27:50.839563 Received PING (on stdin)
 19:27:50.839669 Received PORT (on stdin)
 19:27:50.840074 ====> Client connect
 19:27:50.840990 Received DATA (on stdin)
 19:27:50.841006 > 17 bytes data, server => client
 19:27:50.841017 'WE ROOLZ: 85153\r\n'
 19:27:50.841048 Received DISC (on stdin)
 19:27:50.841062 ====> Client forcibly disconnected
 19:27:50.841207 Received QUIT (on stdin)
 19:27:50.841220 quits
 19:27:50.841288 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:27:49.770762 ====> Client connect
 19:27:49.770804 accept_connection 3 returned 4
 19:27:49.770833 Read 93 bytes
 19:27:49.770845 Process 93 bytes request
 19:27:49.770858 Got request: GET /verifiedserver HTTP/1.1
 19:27:49.770866 Are-we-friendly question received
 19:27:49.770896 Wrote request (93 bytes) input to log/10/server.input
 19:27:49.770915 Identifying ourselves as friends
 19:27:49.771013 Response sent (56 bytes) and written to log/10/server.response
 19:27:49.771026 special request received, no persistency
 19:27:49.771035 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 45034 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 975
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind975
 ==131605== 
 ==131605== Process terminating with default action of signal 4 (SIGILL)
 ==131605==  Illegal opcode at address 0x492B75F
 ==131605==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131605==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131605==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131605==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131605==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131605==    by 0x49908EB: curl_version_info (version.c:600)
 ==131605==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131605==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131605==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131605==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind975
test 0976 [HTTP with auth redirected to HTTP on a diff port --location-trusted]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind976 ../src/curl -q --output log/20/curl976.out  --include --trace-ascii log/20/trace976 --trace-time -x http://127.0.0.1:33897 http://firsthost.com --location-trusted -u joe:secret > log/20/stdout976 2> log/20/stderr976

 976: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 976
=== StCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind965 ../src/curl -q --output log/9/curl965.out  --include --trace-ascii log/9/trace965 --trace-time smtp://127.0.0.1:44813/965 --mail-rcpt recipient@example.com --mail-from Avsändaren@åäö.se -T - <log/9/stdin-for-965 > log/9/stdout965 2> log/9/stderr965
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind973 ../src/curl -q --output log/13/curl973.out  --include --trace-ascii log/13/trace973 --trace-time http://127.0.0.1:38821/973 -L -u joe:secret > log/13/stdout973 2> log/13/stderr973
art of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind976 ../src/curl -q --output log/20/curl976.out  --include --trace-ascii log/20/trace976 --trace-time -x http://127.0.0.1:33897 http://firsthost.com --location-trusted -u joe:secret > log/20/stdout976 2> log/20/stderr976
=== End of file commands.log
=== Start of file http_server.log
 19:27:49.831418 ====> Client connect
 19:27:49.831452 accept_connection 3 returned 4
 19:27:49.837375 Read 93 bytes
 19:27:49.837399 Process 93 bytes request
 19:27:49.837415 Got request: GET /verifiedserver HTTP/1.1
 19:27:49.837423 Are-we-friendly question received
 19:27:49.837464 Wrote request (93 bytes) input to log/20/server.input
 19:27:49.837483 Identifying ourselves as friends
 19:27:49.837555 Response sent (56 bytes) and written to log/20/server.response
 19:27:49.837566 special request received, no persistency
 19:27:49.837574 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 44136 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 976
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind976
 ==131544== 
 ==131544== Process terminating with default action of signal 4 (SIGILL)
 ==131544==  Illegal opcode at address 0x492B75F
 ==131544==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131544==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131544==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131544==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131544==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131544==    by 0x49908EB: curl_version_info (version.c:600)
 ==131544==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131544==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131544==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131544==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind976
setenv LC_ALL = C.UTF-8
test 0965 [SMTP with SMTPUTF8 support - UTF-8 based sender]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind965 ../src/curl -q --output log/9/curl965.out  --include --trace-ascii log/9/trace965 --trace-time smtp://127.0.0.1:44813/965 --mail-rcpt recipient@example.com --mail-from Avsändaren@åäö.se -T - <log/9/stdin-for-965 > log/9/stdout965 2> log/9/stderr965

 965: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 965
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind965 ../src/curl -q --output log/9/curl965.out  --include --trace-ascii log/9/trace965 --trace-time smtp://127.0.0.1:44813/965 --mail-rcpt recipient@example.com --mail-from Avsändaren@åäö.se -T - <log/9/stdin-for-965 > log/9/stdout965 2> log/9/stderr965
=== End of file commands.log
=== Start of file server.cmd
 CAPA SMTPUTF8
 Testnum 965
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.802136 ====> Client connect
 19:27:49.802316 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:49.802669 < "EHLO verifiedserver"
 19:27:49.802717 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:49.802921 < "HELP"
 19:27:49.802957 > "214 WE ROOLZ: 127818[CR][LF]"
 19:27:49.802974 return proof we are we
 19:27:49.803217 < "QUIT"
 19:27:49.803245 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:49.804441 MAIN sockfilt said DISC
 19:27:49.804471 ====> Client disconnected
 19:27:49.804543 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:50.407424 ====> Client connect
 19:27:50.407760 Received DATA (on stdin)
 19:27:50.407778 > 146 bytes data, server => client
 19:27:50.407789 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:50.407799 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:50.407808 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:50.407923 < 21 bytes data, client => server
 19:27:50.407938 'EHLO verifiedserver\r\n'
 19:27:50.408147 Received DATA (on stdin)
 19:27:50.408159 > 53 bytes data, server => client
 19:27:50.408170 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:50.408239 < 6 bytes data, client => server
 19:27:50.408251 'HELP\r\n'
 19:27:50.408397 Received DATA (on stdin)
 19:27:50.408408 > 22 bytes data, server => client
 19:27:50.408419 '214 WE ROOLZ: 127818\r\n'
 19:27:50.408542 < 6 bytes data, client => server
 19:27:50.408557 'QUIT\r\n'
 19:27:50.408668 Received DATA (on stdin)
 19:27:50.408679 > 35 bytes data, server => client
 19:27:50.408689 '221 curl ESMTP server signing off\r\n'
 19:27:50.409811 ====> Client disconnect
 19:27:50.409972 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-965
 From: different
 To: another
 body
=== End of file stdin-for-965
=== Start of file valgrind965
 ==131052== 
 ==131052== Process terminating with default action of signal 4 (SIGILL)
 ==131052==  Illegal opcode at address 0x492B75F
 ==131052==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131052==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131052==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131052==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131052==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131052==    by 0x49908EB: curl_version_info (version.c:600)
 ==131052==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131052==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131052==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131052==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind965
test 0973 [HTTP with auth redirected to FTP w/o auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind973 ../src/curl -q --output log/13/curl973.out  --include --trace-ascii log/13/trace973 --trace-time http://127.0.0.1:38821/973 -L -u joe:secret > log/13/stdout973 2> log/13/stderr973

 973: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 973
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind973 ../src/curl -q --output log/13/curl973.out  --include --trace-ascii log/13/trace973 --trace-time http://127.0.0.1:38821/973 -L -u joe:secret > log/13/stdout973 2> log/13/stderr973
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:50.228500 ====> Client connect
 19:27:50.228710 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:50.228953 < "USER anonymous"
 19:27:50.228983 > "331CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind978 ../src/curl -q --output log/16/curl978.out  --include --trace-ascii log/16/trace978 --trace-time http://127.0.0.1:35903/978 --stderr log/16/redir --silent -w '%{stderr}nonsense\n' > log/16/stdout978 2> log/16/stderr978
 We are happy you popped in![CR][LF]"
 19:27:50.230574 < "PASS ftp@example.com"
 19:27:50.230602 > "230 Welcome you silly person[CR][LF]"
 19:27:50.230740 < "PWD"
 19:27:50.230770 > "257 "/" is current directory[CR][LF]"
 19:27:50.230911 < "EPSV"
 19:27:50.230935 ====> Passive DATA channel requested by client
 19:27:50.230948 DATA sockfilt for passive data channel starting...
 19:27:50.239890 DATA sockfilt for passive data channel started (pid 131517)
 19:27:50.240070 DATA sockfilt for passive data channel listens on port 37517
 19:27:50.240117 > "229 Entering Passive Mode (|||37517|)[CR][LF]"
 19:27:50.240135 Client has been notified that upcoming DATA connection is awaited on port 37517
 19:27:50.240412 Client connects to port 37517
 19:27:50.240442 ====> Client established passive DATA connection on port 37517
 19:27:50.240538 < "TYPE I"
 19:27:50.240573 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:50.240730 < "SIZE verifiedserver"
 19:27:50.240763 > "213 17[CR][LF]"
 19:27:50.240908 < "RETR verifiedserver"
 19:27:50.240943 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:50.241045 =====> Closing passive DATA connection...
 19:27:50.241064 Server disconnects passive DATA connection
 19:27:50.241302 Server disconnected passive DATA connection
 19:27:50.241329 DATA sockfilt for passive data channel quits (pid 131517)
 19:27:50.241629 DATA sockfilt for passive data channel quit (pid 131517)
 19:27:50.241653 =====> Closed passive DATA connection
 19:27:50.241684 > "226 File transfer complete[CR][LF]"
 19:27:50.290789 < "QUIT"
 19:27:50.290842 > "221 bye bye baby[CR][LF]"
 19:27:50.293678 MAIN sockfilt said DISC
 19:27:50.293721 ====> Client disconnected
 19:27:50.293802 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:49.833788 ====> Client connect
 19:27:49.834103 Received DATA (on stdin)
 19:27:49.834117 > 146 bytes data, server => client
 19:27:49.834128 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:49.834138 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:49.834148 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:49.834216 < 16 bytes data, client => server
 19:27:49.834227 'USER anonymous\r\n'
 19:27:49.834446 Received DATA (on stdin)
 19:27:49.834457 > 33 bytes data, server => client
 19:27:49.834467 '331 We are happy you popped in!\r\n'
 19:27:49.835849 < 22 bytes data, client => server
 19:27:49.835864 'PASS ftp@example.com\r\n'
 19:27:49.835981 Received DATA (on stdin)
 19:27:49.835991 > 30 bytes data, server => client
 19:27:49.836000 '230 Welcome you silly person\r\n'
 19:27:49.836046 < 5 bytes data, client => server
 19:27:49.836055 'PWD\r\n'
 19:27:49.836147 Received DATA (on stdin)
 19:27:49.836157 > 30 bytes data, server => client
 19:27:49.836166 '257 "/" is current directory\r\n'
 19:27:49.836217 < 6 bytes data, client => server
 19:27:49.836227 'EPSV\r\n'
 19:27:49.845525 Received DATA (on stdin)
 19:27:49.845541 > 39 bytes data, server => client
 19:27:49.845551 '229 Entering Passive Mode (|||37517|)\r\n'
 19:27:49.845712 < 8 bytes data, client => server
 19:27:49.845725 'TYPE I\r\n'
 19:27:49.845955 Received DATA (on stdin)
 19:27:49.845966 > 33 bytes data, server => client
 19:27:49.845976 '200 I modify TYPE as you wanted\r\n'
 19:27:49.846030 < 21 bytes data, client => server
 19:27:49.846040 'SIZE verifiedserver\r\n'
 19:27:49.846142 Received DATA (on stdin)
 19:27:49.846152 > 8 bytes data, server => client
 19:27:49.846162 '213 17\r\n'
 19:27:49.846209 < 21 bytes data, client => server
 19:27:49.846220 'RETR verifiedserver\r\n'
 19:27:49.846448 Received DATA (on stdin)
 19:27:49.846460 > 29 bytes data, server => client
 19:27:49.846470 '150 Binary junk (17 bytes).\r\n'
 19:27:49.847066 Received DATA (on stdin)
 19:27:49.847079 > 28 bytes data, server => client
 19:27:49.847089 '226 File transfer complete\r\n'
 19:27:49.895492 < 6 bytes data, client => server
 19:27:49.895517 'QUIT\r\n'
 19:27:49.896222 Received DATA (on stdin)
 19:27:49.896235 > 18 bytes data, server => client
 19:27:49.896246 '221 bye bye baby\r\n'
 19:27:49.898480 ====> Client disconnect
 19:27:49.899185 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:50.844785 Running IPv4 version
 19:27:50.844858 Listening on port 37517
 19:27:50.844900 Wrote pid 131517 to log/13/server/ftp_sockdata.pid
 19:27:50.844920 Received PING (on stdin)
 19:27:50.845329 Received PORT (on stdin)
 19:27:50.845744 ====> Client connect
 19:27:50.846499 Received DATA (on stdin)
 19:27:50.846511 > 17 bytes data, server => client
 19:27:50.846525 'WE ROOLZ: 93286\r\n'
 19:27:50.846552 Received DISC (on stdin)
 19:27:50.846563 ====> Client forcibly disconnected
 19:27:50.846718 Received QUIT (on stdin)
 19:27:50.846728 quits
 19:27:50.846813 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:27:49.752321 ====> Client connect
 19:27:49.752355 accept_connection 3 returned 4
 19:27:49.752379 Read 93 bytes
 19:27:49.752388 Process 93 bytes request
 19:27:49.752401 Got request: GET /verifiedserver HTTP/1.1
 19:27:49.752409 Are-we-friendly question received
 19:27:49.752469 Wrote request (93 bytes) input to log/13/server.input
 19:27:49.752486 Identifying ourselves as friends
 19:27:49.752559 Response sent (56 bytes) and written to log/13/server.response
 19:27:49.752570 special request received, no persistency
 19:27:49.752578 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54170 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 973
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind973
 ==131734== 
 ==131734== Process terminating with default action of signal 4 (SIGILL)
 ==131734==  Illegal opcode at address 0x492B75F
 ==131734==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131734==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131734==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131734==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131734==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131734==    by 0x49908EB: curl_version_info (version.c:600)
 ==131734==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131734==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131734==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131734==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind973
test 0978 [verify that --stderr works for -w's stderr as well]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind978 ../src/curl -q --output log/16/curl978.out  --include --trace-ascii log/16/trace978 --trace-time http://127.0.0.1:35903/978 --stderr log/16/redir --silent -w '%{stderr}nonsense\n' > log/16/stdout978 2> log/16/stderr978

 978: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 978
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind978 ../src/curl -q --output log/16/curl978.out  --include --trace-ascii log/16/trace978 --trace-time http://127.0.0.1:35903/978 --stderr log/16/redir --silent -w '%{stderr}nonsense\n' > log/16/stdout978 2> log/16/stderr978
=== End of file cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind958 ../src/curl -q --output log/11/curl958.out  --include --trace-ascii log/11/trace958 --trace-time smtp://127.0.0.1:41097/958 --mail-rcpt Användaren@example.com > log/11/stdout958 2> log/11/stderr958
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind979 ../src/curl -q --output log/4/curl979.out  --include --trace-ascii log/4/trace979 --trace-time http://first:secret@127.0.0.1:35735/979 -L -u smith:doggie > log/4/stdout979 2> log/4/stderr979
ommands.log
=== Start of file http_server.log
 19:27:50.914098 ====> Client connect
 19:27:50.914142 accept_connection 3 returned 4
 19:27:50.914168 Read 93 bytes
 19:27:50.914179 Process 93 bytes request
 19:27:50.914192 Got request: GET /verifiedserver HTTP/1.1
 19:27:50.914201 Are-we-friendly question received
 19:27:50.914232 Wrote request (93 bytes) input to log/16/server.input
 19:27:50.914252 Identifying ourselves as friends
 19:27:50.914346 Response sent (56 bytes) and written to log/16/server.response
 19:27:50.914359 special request received, no persistency
 19:27:50.914368 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 45434 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 978
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind978
 ==131621== 
 ==131621== Process terminating with default action of signal 4 (SIGILL)
 ==131621==  Illegal opcode at address 0x492B75F
 ==131621==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131621==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131621==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131621==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131621==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131621==    by 0x49908EB: curl_version_info (version.c:600)
 ==131621==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131621==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131621==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131621==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind978
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/11/server/smtp_server.pid" --logfile "log/11/smtp_server.log" --logdir "log/11" --portfile "log/11/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41097 (log/11/server/smtp_server.port)
RUN: SMTP server is PID 130773 port 41097
* pid smtp => 130773 130773
setenv LC_ALL = C.UTF-8
test 0958 [SMTP external VRFY without SMTPUTF8 - UTF-8 recipient (local part)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind958 ../src/curl -q --output log/11/curl958.out  --include --trace-ascii log/11/trace958 --trace-time smtp://127.0.0.1:41097/958 --mail-rcpt Användaren@example.com > log/11/stdout958 2> log/11/stderr958

 958: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 958
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind958 ../src/curl -q --output log/11/curl958.out  --include --trace-ascii log/11/trace958 --trace-time smtp://127.0.0.1:41097/958 --mail-rcpt Användaren@example.com > log/11/stdout958 2> log/11/stderr958
=== End of file commands.log
=== Start of file server.cmd
 Testnum 958
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.134821 SMTP server listens on port IPv4/41097
 19:27:49.134916 logged pid 130773 in log/11/server/smtp_server.pid
 19:27:49.134960 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:49.739891 Running IPv4 version
 19:27:49.739994 Listening on port 41097
 19:27:49.740036 Wrote pid 130788 to log/11/server/smtp_sockfilt.pid
 19:27:49.740067 Wrote port 41097 to log/11/server/smtp_server.port
 19:27:49.740212 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind958
 ==131355== 
 ==131355== Process terminating with default action of signal 4 (SIGILL)
 ==131355==  Illegal opcode at address 0x492B75F
 ==131355==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131355==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131355==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131355==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131355==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131355==    by 0x49908EB: curl_version_info (version.c:600)
 ==131355==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131355==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131355==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131355==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind958
test 0979 [-u with redirect to absolute URL using same origin and auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind979 ../src/curl -q --output log/4/curl979.out  --include --trace-ascii log/4/trace979 --trace-time http://first:secret@127.0.0.1:35735/979 -L -u smith:doggie > log/4/stdout979 2> log/4/stderr979

 979: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 979
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind979 ../src/curl -q --output log/4/curl979.out  --include --trace-ascii log/4/trace979 --trace-time http://first:secret@127.0.0.1:35735/979 -L -u smith:doggie > log/4/stdout979 2> log/4/stderr979
=== End of file commands.log
=== Start of file http_server.log
 19:27:50.916561 ====> Client connect
 19:27:50.916601 accept_connection 3 returned 4
 19:27:50.916623 Read 93 bytes
 19:27:50.916633 Process 93 bytes request
 19:27:50.916645 Got request: GET /verifiedserver HTTP/1.1
 19:27:50.916654 Are-we-friendly question received
 19:27:50.916686 Wrote request (93 bytes) input to log/4/server.input
 19:27:50.916704 Identifying ourselves as friends
 19:27:50.916773 Response sent (56 bytes) and written to log/4/server.response
 19:27:50.916783 special request received, no persistency
 19:27:50.916791 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 45768 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 979
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind979
 ==131629== 
 ==131629== Process terminating with default action of signal 4 (SIGILL)
 ==131629==  Illegal opcode at address 0x492B75F
 ==131629==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131629==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131629==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131629==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131629==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131629==    by 0x49908EB: curl_version_info (vCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind977 ../src/curl -q --output log/23/curl977.out  --include --trace-ascii log/23/trace977 --trace-time -x http://127.0.0.1:44711 http://firsthost.me. -c log/23/cookies977 > log/23/stdout977 2> log/23/stderr977
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind974 ../src/curl -q --output log/17/curl974.out  --include --trace-ascii log/17/trace974 --trace-time -x http://127.0.0.1:35993 http://firsthost.com -L -u joe:secret > log/17/stdout974 2> log/17/stderr974
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind957 ../src/curl -q --output log/12/curl957.out  --include --trace-ascii log/12/trace957 --trace-time smtp://127.0.0.1:36039/957 --mail-rcpt Användaren > log/12/stdout957 2> log/12/stderr957
ersion.c:600)
 ==131629==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131629==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131629==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131629==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind979
test 0977 [URL with trailing dot and receiving a cookie for the TLD with dot]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind977 ../src/curl -q --output log/23/curl977.out  --include --trace-ascii log/23/trace977 --trace-time -x http://127.0.0.1:44711 http://firsthost.me. -c log/23/cookies977 > log/23/stdout977 2> log/23/stderr977

 977: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 977
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind977 ../src/curl -q --output log/23/curl977.out  --include --trace-ascii log/23/trace977 --trace-time -x http://127.0.0.1:44711 http://firsthost.me. -c log/23/cookies977 > log/23/stdout977 2> log/23/stderr977
=== End of file commands.log
=== Start of file http_server.log
 19:27:49.927438 ====> Client connect
 19:27:49.927486 accept_connection 3 returned 4
 19:27:49.927513 Read 93 bytes
 19:27:49.927523 Process 93 bytes request
 19:27:49.927536 Got request: GET /verifiedserver HTTP/1.1
 19:27:49.927545 Are-we-friendly question received
 19:27:49.927569 Wrote request (93 bytes) input to log/23/server.input
 19:27:49.927585 Identifying ourselves as friends
 19:27:49.927674 Response sent (56 bytes) and written to log/23/server.response
 19:27:49.927683 special request received, no persistency
 19:27:49.927691 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 56688 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 977
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind977
 ==131683== 
 ==131683== Process terminating with default action of signal 4 (SIGILL)
 ==131683==  Illegal opcode at address 0x492B75F
 ==131683==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131683==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131683==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131683==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131683==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131683==    by 0x49908EB: curl_version_info (version.c:600)
 ==131683==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131683==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131683==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131683==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind977
test 0974 [HTTP with auth redirected to HTTP on a diff port w/o auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind974 ../src/curl -q --output log/17/curl974.out  --include --trace-ascii log/17/trace974 --trace-time -x http://127.0.0.1:35993 http://firsthost.com -L -u joe:secret > log/17/stdout974 2> log/17/stderr974

 974: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 974
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind974 ../src/curl -q --output log/17/curl974.out  --include --trace-ascii log/17/trace974 --trace-time -x http://127.0.0.1:35993 http://firsthost.com -L -u joe:secret > log/17/stdout974 2> log/17/stderr974
=== End of file commands.log
=== Start of file http_server.log
 19:27:50.787952 ====> Client connect
 19:27:50.788009 accept_connection 3 returned 4
 19:27:50.788039 Read 93 bytes
 19:27:50.788049 Process 93 bytes request
 19:27:50.788062 Got request: GET /verifiedserver HTTP/1.1
 19:27:50.788071 Are-we-friendly question received
 19:27:50.788102 Wrote request (93 bytes) input to log/17/server.input
 19:27:50.788119 Identifying ourselves as friends
 19:27:50.788205 Response sent (56 bytes) and written to log/17/server.response
 19:27:50.788215 special request received, no persistency
 19:27:50.788223 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 57262 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 974
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind974
 ==131521== 
 ==131521== Process terminating with default action of signal 4 (SIGILL)
 ==131521==  Illegal opcode at address 0x492B75F
 ==131521==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131521==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131521==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131521==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131521==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131521==    by 0x49908EB: curl_version_info (version.c:600)
 ==131521==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131521==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131521==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131521==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind974
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/12/server/smtp_server.pid" --logfile "log/12/smtp_server.log" --logdir "log/12" --portfile "log/12/server/smtp_server.port" --srcdir "/startdir/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36039 (log/12/server/smtp_server.port)
RUN: SMTP server is PID 130713 port 36039
* pid smtp => 130713 130713
setenv LC_ALL = C.UTF-8
test 0957 [SMTP VRFY without SMTPUTF8 support - UTF-8 recipient (local part only)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind957 ../src/curl -q --output log/12/curl957.out  --include --trace-ascii log/12/trace957 --trace-time smtp://127.0.0.1:36039/957 --mail-rcpt Användaren > log/12/stdout957 2> log/12/stderr957

 957: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 957
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --numCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind980 ../src/curl -q --output log/1/curl980.out  --include --trace-ascii log/1/trace980 --trace-time smtp://127.0.0.1:42673/980 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --ssl --sasl-ir -T - <log/1/stdin-for-980 > log/1/stdout980 2> log/1/stderr980
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind983 ../src/curl -q --output log/6/curl983.out  --include --trace-ascii log/6/trace983 --trace-time --ssl --ftp-ssl-control ftp://127.0.0.1:33989/983 -T log/6/test983.txt -u user:secret -P 127.0.0.1 > log/6/stdout983 2> log/6/stderr983
-callers=16 --log-file=log/12/valgrind957 ../src/curl -q --output log/12/curl957.out  --include --trace-ascii log/12/trace957 --trace-time smtp://127.0.0.1:36039/957 --mail-rcpt Användaren > log/12/stdout957 2> log/12/stderr957
=== End of file commands.log
=== Start of file server.cmd
 Testnum 957
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:49.130305 SMTP server listens on port IPv4/36039
 19:27:49.130444 logged pid 130713 in log/12/server/smtp_server.pid
 19:27:49.130503 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:49.728421 Running IPv4 version
 19:27:49.728531 Listening on port 36039
 19:27:49.728576 Wrote pid 130785 to log/12/server/smtp_sockfilt.pid
 19:27:49.728608 Wrote port 36039 to log/12/server/smtp_server.port
 19:27:49.735635 Received PING (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind957
 ==131230== 
 ==131230== Process terminating with default action of signal 4 (SIGILL)
 ==131230==  Illegal opcode at address 0x492B75F
 ==131230==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131230==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131230==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131230==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131230==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131230==    by 0x49908EB: curl_version_info (version.c:600)
 ==131230==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131230==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131230==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131230==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind957
test 0980 [SMTP STARTTLS pipelined server response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind980 ../src/curl -q --output log/1/curl980.out  --include --trace-ascii log/1/trace980 --trace-time smtp://127.0.0.1:42673/980 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --ssl --sasl-ir -T - <log/1/stdin-for-980 > log/1/stdout980 2> log/1/stderr980

 980: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 980
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind980 ../src/curl -q --output log/1/curl980.out  --include --trace-ascii log/1/trace980 --trace-time smtp://127.0.0.1:42673/980 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --ssl --sasl-ir -T - <log/1/stdin-for-980 > log/1/stdout980 2> log/1/stderr980
=== End of file commands.log
=== Start of file server.cmd
 CAPA starttls
 AUTH PLAIN
 REPLY STARTTLS 454 currently unavailable\r\n235 Authenticated\r\n250 2.1.0 Sender ok\r\n250 2.1.5 Recipient ok\r\n354 Enter mail\r\n250 2.0.0 Accepted
 REPLY AUTH 535 5.7.8 Authentication credentials invalid
 Testnum 980
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:50.515374 ====> Client connect
 19:27:50.515570 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:50.518947 < "EHLO verifiedserver"
 19:27:50.519006 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:50.519212 < "HELP"
 19:27:50.519251 > "214 WE ROOLZ: 127810[CR][LF]"
 19:27:50.519271 return proof we are we
 19:27:50.519506 < "QUIT"
 19:27:50.519535 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:50.520573 MAIN sockfilt said DISC
 19:27:50.520607 ====> Client disconnected
 19:27:50.520686 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:51.119521 ====> Client connect
 19:27:51.120898 Received DATA (on stdin)
 19:27:51.120919 > 146 bytes data, server => client
 19:27:51.120930 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:51.120939 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:51.120948 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:51.124092 < 21 bytes data, client => server
 19:27:51.124114 'EHLO verifiedserver\r\n'
 19:27:51.124370 Received DATA (on stdin)
 19:27:51.124384 > 53 bytes data, server => client
 19:27:51.124395 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:51.124462 < 6 bytes data, client => server
 19:27:51.124478 'HELP\r\n'
 19:27:51.124629 Received DATA (on stdin)
 19:27:51.124642 > 22 bytes data, server => client
 19:27:51.124652 '214 WE ROOLZ: 127810\r\n'
 19:27:51.124765 < 6 bytes data, client => server
 19:27:51.124782 'QUIT\r\n'
 19:27:51.124892 Received DATA (on stdin)
 19:27:51.124905 > 35 bytes data, server => client
 19:27:51.124916 '221 curl ESMTP server signing off\r\n'
 19:27:51.125875 ====> Client disconnect
 19:27:51.126051 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-980
 mail body
=== End of file stdin-for-980
=== Start of file valgrind980
 ==131937== 
 ==131937== Process terminating with default action of signal 4 (SIGILL)
 ==131937==  Illegal opcode at address 0x492B75F
 ==131937==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==131937==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==131937==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==131937==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==131937==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==131937==    by 0x49908EB: curl_version_info (version.c:600)
 ==131937==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==131937==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==131937==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==131937==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind980
test 0983 [FTP STARTTLS pipelined server response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind983 ../src/curl -q --output log/6/curl983.out  --include --trace-ascii log/6/trace983 --trace-time --ssl --ftp-ssl-control ftp://127.0.0.1:33989/983 -T log/6/test983.txt -u user:secret -P 127.0.0.1 > log/6/stdout983 2> log/6/stderr983

 983: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 983
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind983 ../src/curl -q --output log/6/curl983.out  --include --trace-ascii log/6/trace983 --trace-time --ssl --ftp-ssl-control ftp://127.0.0.1:33989/983 -T log/6/test983.txt -u user:secret -P 127.0.0.1 > log/6/stdout983 2> log/6/stderr983
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:51.069719 ====> Client connect
 19:27:51.069923 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:51.070179 < "USER anonymous"
 19:27:51.070211 > "331 We are happy you popped in![CR][LF]"
 19:27:51.070348 < "PASS ftp@example.com"
 19:27:51.070372 > "230 Welcome you silly person[CR][LF]"
 19:27:51.070496 < "PWD"
 19:27:51.070522 > "257 "/" is current directory[CR][LF]"
 19:27:51.070658 < "EPSV"
 19:27:51.070679 ====> Passive DATA channel requested by client
 19:27:51.070690 DATA sockfilt for passive data channel starting...
 19:27:51.072945 DATA sockfilt for passive data channel started (pid 132109)
 19:27:51.073056 DATA sockfilt for passive data channel listens on port 45373
 19:27:51.073096 > "229 Entering Passive Mode (|||45373|)[CR][LF]"
 19:27:51.073114 Client has CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind981 ../src/curl -q --output log/21/curl981.out  --include --trace-ascii log/21/trace981 --trace-time imap://127.0.0.1:39665/981 -T log/21/upload981 -u user:secret --ssl > log/21/stdout981 2> log/21/stderr981
been notified that upcoming DATA connection is awaited on port 45373
 19:27:51.073371 Client connects to port 45373
 19:27:51.073402 ====> Client established passive DATA connection on port 45373
 19:27:51.073473 < "TYPE I"
 19:27:51.073503 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:51.073655 < "SIZE verifiedserver"
 19:27:51.073696 > "213 17[CR][LF]"
 19:27:51.073843 < "RETR verifiedserver"
 19:27:51.073881 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:51.073987 =====> Closing passive DATA connection...
 19:27:51.074004 Server disconnects passive DATA connection
 19:27:51.074224 Server disconnected passive DATA connection
 19:27:51.074249 DATA sockfilt for passive data channel quits (pid 132109)
 19:27:51.074492 DATA sockfilt for passive data channel quit (pid 132109)
 19:27:51.074515 =====> Closed passive DATA connection
 19:27:51.074542 > "226 File transfer complete[CR][LF]"
 19:27:51.119037 < "QUIT"
 19:27:51.119096 > "221 bye bye baby[CR][LF]"
 19:27:51.122176 MAIN sockfilt said DISC
 19:27:51.122229 ====> Client disconnected
 19:27:51.122336 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:51.674895 ====> Client connect
 19:27:51.675233 Received DATA (on stdin)
 19:27:51.675244 > 146 bytes data, server => client
 19:27:51.675254 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:51.675263 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:51.675270 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:51.675339 < 16 bytes data, client => server
 19:27:51.675349 'USER anonymous\r\n'
 19:27:51.675512 Received DATA (on stdin)
 19:27:51.675521 > 33 bytes data, server => client
 19:27:51.675530 '331 We are happy you popped in!\r\n'
 19:27:51.675575 < 22 bytes data, client => server
 19:27:51.675583 'PASS ftp@example.com\r\n'
 19:27:51.675669 Received DATA (on stdin)
 19:27:51.675677 > 30 bytes data, server => client
 19:27:51.675685 '230 Welcome you silly person\r\n'
 19:27:51.675727 < 5 bytes data, client => server
 19:27:51.675735 'PWD\r\n'
 19:27:51.675818 Received DATA (on stdin)
 19:27:51.675827 > 30 bytes data, server => client
 19:27:51.675835 '257 "/" is current directory\r\n'
 19:27:51.675888 < 6 bytes data, client => server
 19:27:51.675896 'EPSV\r\n'
 19:27:51.678423 Received DATA (on stdin)
 19:27:51.678436 > 39 bytes data, server => client
 19:27:51.678446 '229 Entering Passive Mode (|||45373|)\r\n'
 19:27:51.678592 < 8 bytes data, client => server
 19:27:51.678605 'TYPE I\r\n'
 19:27:51.678803 Received DATA (on stdin)
 19:27:51.678813 > 33 bytes data, server => client
 19:27:51.678823 '200 I modify TYPE as you wanted\r\n'
 19:27:51.678874 < 21 bytes data, client => server
 19:27:51.678885 'SIZE verifiedserver\r\n'
 19:27:51.678997 Received DATA (on stdin)
 19:27:51.679007 > 8 bytes data, server => client
 19:27:51.679015 '213 17\r\n'
 19:27:51.679065 < 21 bytes data, client => server
 19:27:51.679075 'RETR verifiedserver\r\n'
 19:27:51.679306 Received DATA (on stdin)
 19:27:51.679316 > 29 bytes data, server => client
 19:27:51.679326 '150 Binary junk (17 bytes).\r\n'
 19:27:51.679842 Received DATA (on stdin)
 19:27:51.679853 > 28 bytes data, server => client
 19:27:51.679863 '226 File transfer complete\r\n'
 19:27:51.724135 < 6 bytes data, client => server
 19:27:51.724170 'QUIT\r\n'
 19:27:51.724395 Received DATA (on stdin)
 19:27:51.724406 > 18 bytes data, server => client
 19:27:51.724415 '221 bye bye baby\r\n'
 19:27:51.727401 ====> Client disconnect
 19:27:51.727632 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:51.677943 Running IPv4 version
 19:27:51.678007 Listening on port 45373
 19:27:51.678044 Wrote pid 132109 to log/6/server/ftp_sockdata.pid
 19:27:51.678189 Received PING (on stdin)
 19:27:51.678274 Received PORT (on stdin)
 19:27:51.678627 ====> Client connect
 19:27:51.679351 Received DATA (on stdin)
 19:27:51.679363 > 17 bytes data, server => client
 19:27:51.679372 'WE ROOLZ: 85558\r\n'
 19:27:51.679398 Received DISC (on stdin)
 19:27:51.679409 ====> Client forcibly disconnected
 19:27:51.679560 Received QUIT (on stdin)
 19:27:51.679570 quits
 19:27:51.679641 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY AUTH 500 unknown command\r\n500 unknown command\r\n331 give password\r\n230 Authenticated\r\n257 "/"\r\n200 OK\r\n200 OK\r\n200 OK\r\n226 Transfer complete
 REPLY PASS 530 Login incorrect
 Testnum 983
=== End of file server.cmd
=== Start of file test983.txt
 data
     to
       see
 that FTPS
 works
   so does it?
=== End of file test983.txt
=== Start of file valgrind983
 ==132126== 
 ==132126== Process terminating with default action of signal 4 (SIGILL)
 ==132126==  Illegal opcode at address 0x492B75F
 ==132126==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132126==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132126==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132126==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132126==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132126==    by 0x49908EB: curl_version_info (version.c:600)
 ==132126==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132126==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132126==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132126==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind983
test 0981 [IMAP STARTTLS pipelined server response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind981 ../src/curl -q --output log/21/curl981.out  --include --trace-ascii log/21/trace981 --trace-time imap://127.0.0.1:39665/981 -T log/21/upload981 -u user:secret --ssl > log/21/stdout981 2> log/21/stderr981

 981: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 981
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind981 ../src/curl -q --output log/21/curl981.out  --include --trace-ascii log/21/trace981 --trace-time imap://127.0.0.1:39665/981 -T log/21/upload981 -u user:secret --ssl > log/21/stdout981 2> log/21/stderr981
=== End of file commands.log
=== Start of file imap_server.log
 19:27:50.702147 ====> Client connect
 19:27:50.702328 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:50.702693 < "A001 CAPABILITY"
 19:27:50.702736 > "A001 BAD Command[CR][LF]"
 19:27:50.702936 < "A002 LIST "verifiedserver" *"
 19:27:50.702966 LIST_imap got "verifiedserver" *
 19:27:50.702993 > "* LIST () "/" "WE ROOLZ: 122217"[CR][LF]"
 19:27:50.703012 > "A002 OK LIST Completed[CR][LF]"
 19:27:50.703026 return proof we are we
 19:27:50.749062 < "A003 LOGOUT"
 19:27:50.749127 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:50.749157 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:50.750333 MAIN sockfilt said DISC
 19:27:50.750372 ====> Client disconnected
 19:27:50.750458 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:50.307338 ====> Client connect
 19:27:50.307683 Received DATA (on stdin)
 19:27:50.307699 > 164 bytes data, server => client
 19:27:50.307711 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:50.307721 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:50.307731 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:50.307854 < 17 bytes data, client => server
 19:27:50.307868 'A001 CAPABILITY\r\n'
 19:27:50.308077 Received DATA (on stdin)
 19:27:50.308089 > 18 bytes data, server => client
 19:27:50.308100 'A001 BAD Command\r\n'
 19:27:50.308168 < 30 bytes data, client => server
 19:27:50.308181 'A002 LIST "verifiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind984 ../src/curl -q --output log/5/curl984.out  --include --trace-ascii log/5/trace984 --trace-time imap://127.0.0.1:37639/984 -T log/5/upload984 -u user:secret --ssl-reqd > log/5/stdout984 2> log/5/stderr984
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind985 ../src/curl -q --output log/3/curl985.out  --include --trace-ascii log/3/trace985 --trace-time pop3://127.0.0.1:35177/985 -u user:secret --ssl-reqd > log/3/stdout985 2> log/3/stderr985
edserver" *\r\n'
 19:27:50.308362 Received DATA (on stdin)
 19:27:50.308373 > 34 bytes data, server => client
 19:27:50.308383 '* LIST () "/" "WE ROOLZ: 122217"\r\n'
 19:27:50.308406 Received DATA (on stdin)
 19:27:50.308416 > 24 bytes data, server => client
 19:27:50.308425 'A002 OK LIST Completed\r\n'
 19:27:50.354182 < 13 bytes data, client => server
 19:27:50.354216 'A003 LOGOUT\r\n'
 19:27:50.354497 Received DATA (on stdin)
 19:27:50.354513 > 36 bytes data, server => client
 19:27:50.354524 '* BYE curl IMAP server signing off\r\n'
 19:27:50.354550 Received DATA (on stdin)
 19:27:50.354562 > 26 bytes data, server => client
 19:27:50.354572 'A003 OK LOGOUT completed\r\n'
 19:27:50.355605 ====> Client disconnect
 19:27:50.355801 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 CAPA STARTTLS
 REPLY STARTTLS A002 BAD currently unavailable\r\nA003 OK Authenticated\r\nA004 OK Accepted
 REPLY LOGIN A003 BAD Authentication credentials invalid
 Testnum 981
=== End of file server.cmd
=== Start of file upload981
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
 From: Fred Foobar <foobar@example.COM>
 Subject: afternoon meeting
 To: joe@example.com
 Message-Id: <B27397-0100000@example.COM>
 MIME-Version: 1.0
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
 Hello Joe, do you think we can meet at 3:30 tomorrow?
=== End of file upload981
=== Start of file valgrind981
 ==132015== 
 ==132015== Process terminating with default action of signal 4 (SIGILL)
 ==132015==  Illegal opcode at address 0x492B75F
 ==132015==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132015==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132015==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132015==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132015==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132015==    by 0x49908EB: curl_version_info (version.c:600)
 ==132015==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132015==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132015==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132015==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind981
test 0984 [IMAP require STARTTLS with failing capabilities]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind984 ../src/curl -q --output log/5/curl984.out  --include --trace-ascii log/5/trace984 --trace-time imap://127.0.0.1:37639/984 -T log/5/upload984 -u user:secret --ssl-reqd > log/5/stdout984 2> log/5/stderr984

 984: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 984
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind984 ../src/curl -q --output log/5/curl984.out  --include --trace-ascii log/5/trace984 --trace-time imap://127.0.0.1:37639/984 -T log/5/upload984 -u user:secret --ssl-reqd > log/5/stdout984 2> log/5/stderr984
=== End of file commands.log
=== Start of file imap_server.log
 19:27:51.127174 ====> Client connect
 19:27:51.127346 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:27:51.127644 < "A001 CAPABILITY"
 19:27:51.127681 > "A001 BAD Command[CR][LF]"
 19:27:51.127854 < "A002 LIST "verifiedserver" *"
 19:27:51.127882 LIST_imap got "verifiedserver" *
 19:27:51.127906 > "* LIST () "/" "WE ROOLZ: 122670"[CR][LF]"
 19:27:51.127923 > "A002 OK LIST Completed[CR][LF]"
 19:27:51.127935 return proof we are we
 19:27:51.192161 < "A003 LOGOUT"
 19:27:51.192228 > "* BYE curl IMAP server signing off[CR][LF]"
 19:27:51.192252 > "A003 OK LOGOUT completed[CR][LF]"
 19:27:51.212101 MAIN sockfilt said DISC
 19:27:51.212170 ====> Client disconnected
 19:27:51.212270 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:27:50.732354 ====> Client connect
 19:27:50.732656 Received DATA (on stdin)
 19:27:50.732670 > 164 bytes data, server => client
 19:27:50.732681 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:50.732690 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:50.732698 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:27:50.732777 < 17 bytes data, client => server
 19:27:50.732788 'A001 CAPABILITY\r\n'
 19:27:50.732977 Received DATA (on stdin)
 19:27:50.732987 > 18 bytes data, server => client
 19:27:50.732997 'A001 BAD Command\r\n'
 19:27:50.733053 < 30 bytes data, client => server
 19:27:50.733063 'A002 LIST "verifiedserver" *\r\n'
 19:27:50.733228 Received DATA (on stdin)
 19:27:50.733237 > 34 bytes data, server => client
 19:27:50.733247 '* LIST () "/" "WE ROOLZ: 122670"\r\n'
 19:27:50.733267 Received DATA (on stdin)
 19:27:50.733276 > 24 bytes data, server => client
 19:27:50.733284 'A002 OK LIST Completed\r\n'
 19:27:50.793996 < 13 bytes data, client => server
 19:27:50.794033 'A003 LOGOUT\r\n'
 19:27:50.807282 Received DATA (on stdin)
 19:27:50.807326 > 36 bytes data, server => client
 19:27:50.807338 '* BYE curl IMAP server signing off\r\n'
 19:27:50.807388 Received DATA (on stdin)
 19:27:50.807399 > 26 bytes data, server => client
 19:27:50.807409 'A003 OK LOGOUT completed\r\n'
 19:27:50.817290 ====> Client disconnect
 19:27:50.817566 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 REPLY CAPABILITY A001 BAD Not implemented
 Testnum 984
=== End of file server.cmd
=== Start of file upload984
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
 From: Fred Foobar <foobar@example.COM>
 Subject: afternoon meeting
 To: joe@example.com
 Message-Id: <B27397-0100000@example.COM>
 MIME-Version: 1.0
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
 Hello Joe, do you think we can meet at 3:30 tomorrow?
=== End of file upload984
=== Start of file valgrind984
 ==132161== 
 ==132161== Process terminating with default action of signal 4 (SIGILL)
 ==132161==  Illegal opcode at address 0x492B75F
 ==132161==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132161==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132161==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132161==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132161==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132161==    by 0x49908EB: curl_version_info (version.c:600)
 ==132161==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132161==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132161==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132161==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind984
test 0985 [POP3 require STARTTLS with failing capabilities]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind985 ../src/curl -q --output log/3/curl985.out  --include --trace-ascii log/3/trace985 --trace-time pop3://127.0.0.1:35177/985 -u user:secret --ssl-reqd > log/3/stdout985 2> log/3/stderr985

 985: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 985
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind985 ../src/curl -q --output log/3/curl985.out  --include --trace-ascii log/3/trace985 --trace-time pop3://127.0.0.1:35177/985 -u user:secret --ssl-reqd > log/3/stdout985 2> log/3/stderr985
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:51.217868 ====> Client connect
 19:27:51.218042 > "        _   _ ____CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind990 ../src/curl -q --output log/22/curl990.out  --include --trace-ascii log/22/trace990 --trace-time http://127.0.0.1:35989/990 -w '%output{log/22/output}%{http_code}\n' > log/22/stdout990 2> log/22/stderr990
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind982 ../src/curl -q --output log/19/curl982.out  --include --trace-ascii log/19/trace982 --trace-time pop3://127.0.0.1:45669/982 -u user:secret --ssl > log/19/stdout982 2> log/19/stderr982
  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:51.218332 < "CAPA"
 19:27:51.218374 > "-ERR Unrecognized command[CR][LF]"
 19:27:51.218555 < "RETR verifiedserver"
 19:27:51.218580 return proof we are we
 19:27:51.218601 > "+OK Mail transfer starts[CR][LF]"
 19:27:51.218622 > "WE ROOLZ: 124988[CR][LF]"
 19:27:51.218639 > ".[CR][LF]"
 19:27:51.269799 < "QUIT"
 19:27:51.269858 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:51.271198 MAIN sockfilt said DISC
 19:27:51.271245 ====> Client disconnected
 19:27:51.271343 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:51.823022 ====> Client connect
 19:27:51.823344 Received DATA (on stdin)
 19:27:51.823360 > 164 bytes data, server => client
 19:27:51.823371 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:51.823381 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:51.823391 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:51.823478 < 6 bytes data, client => server
 19:27:51.823489 'CAPA\r\n'
 19:27:51.823663 Received DATA (on stdin)
 19:27:51.823674 > 27 bytes data, server => client
 19:27:51.823684 '-ERR Unrecognized command\r\n'
 19:27:51.823742 < 21 bytes data, client => server
 19:27:51.823753 'RETR verifiedserver\r\n'
 19:27:51.823934 Received DATA (on stdin)
 19:27:51.823963 > 26 bytes data, server => client
 19:27:51.823973 '+OK Mail transfer starts\r\n'
 19:27:51.823994 Received DATA (on stdin)
 19:27:51.824002 > 18 bytes data, server => client
 19:27:51.824012 'WE ROOLZ: 124988\r\n'
 19:27:51.824024 Received DATA (on stdin)
 19:27:51.824032 > 3 bytes data, server => client
 19:27:51.824041 '.\r\n'
 19:27:51.874881 < 6 bytes data, client => server
 19:27:51.874915 'QUIT\r\n'
 19:27:51.875148 Received DATA (on stdin)
 19:27:51.875161 > 34 bytes data, server => client
 19:27:51.875172 '+OK curl POP3 server signing off\r\n'
 19:27:51.876215 ====> Client disconnect
 19:27:51.876630 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 REPLY CAPA -ERR Not implemented
 Testnum 985
=== End of file server.cmd
=== Start of file valgrind985
 ==132199== 
 ==132199== Process terminating with default action of signal 4 (SIGILL)
 ==132199==  Illegal opcode at address 0x492B75F
 ==132199==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132199==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132199==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132199==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132199==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132199==    by 0x49908EB: curl_version_info (version.c:600)
 ==132199==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132199==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132199==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132199==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind985
test 0990 [use -w %output{}]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind990 ../src/curl -q --output log/22/curl990.out  --include --trace-ascii log/22/trace990 --trace-time http://127.0.0.1:35989/990 -w '%output{log/22/output}%{http_code}\n' > log/22/stdout990 2> log/22/stderr990

 990: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 990
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind990 ../src/curl -q --output log/22/curl990.out  --include --trace-ascii log/22/trace990 --trace-time http://127.0.0.1:35989/990 -w '%output{log/22/output}%{http_code}\n' > log/22/stdout990 2> log/22/stderr990
=== End of file commands.log
=== Start of file http_server.log
 19:27:51.145542 ====> Client connect
 19:27:51.145576 accept_connection 3 returned 4
 19:27:51.145595 Read 93 bytes
 19:27:51.145604 Process 93 bytes request
 19:27:51.145614 Got request: GET /verifiedserver HTTP/1.1
 19:27:51.145621 Are-we-friendly question received
 19:27:51.145643 Wrote request (93 bytes) input to log/22/server.input
 19:27:51.145657 Identifying ourselves as friends
 19:27:51.145722 Response sent (56 bytes) and written to log/22/server.response
 19:27:51.145730 special request received, no persistency
 19:27:51.145737 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 48502 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 990
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind990
 ==132358== 
 ==132358== Process terminating with default action of signal 4 (SIGILL)
 ==132358==  Illegal opcode at address 0x492B75F
 ==132358==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132358==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132358==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132358==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132358==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132358==    by 0x49908EB: curl_version_info (version.c:600)
 ==132358==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132358==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind990
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/19/server/pop3_server.pid" --logfile "log/19/pop3_server.log" --logdir "log/19" --portfile "log/19/server/pop3_server.port" --srcdir "/startdir/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 45669 (log/19/server/pop3_server.port)
RUN: POP3 server is PID 132050 port 45669
* pid pop3 => 132050 132050
test 0982 [POP3 STARTTLS pipelined server response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind982 ../src/curl -q --output log/19/curl982.out  --include --trace-ascii log/19/trace982 --trace-time pop3://127.0.0.1:45669/982 -u user:secret --ssl > log/19/stdout982 2> log/19/stderr982

 982: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 982
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind982 ../src/curl -q --output log/19/curl982.out  --include --trace-ascii log/19/trace982 --trace-time pop3://127.0.0.1:45669/982 -u user:secret --ssl > log/19/stdout982 2> log/19/stderr982
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:50.975653 POP3 server listens on port IPv4/45669
 19:27:50.975780 logged pid 132050 in log/19/server/pop3_server.pid
 19:27:50.975833 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:50.578074 Running IPv4 version
 19:27:50.578179 Listening on port 45669
 19:27:5CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind986 ../src/curl -q --output log/14/curl986.out  --include --trace-ascii log/14/trace986 --trace-time --ssl-reqd --ftp-ssl-control ftp://127.0.0.1:37411/986 -T log/14/test986.txt -u user:secret > log/14/stdout986 2> log/14/stderr986
0.578217 Wrote pid 132062 to log/19/server/pop3_sockfilt.pid
 19:27:50.578244 Wrote port 45669 to log/19/server/pop3_server.port
 19:27:50.580824 Received PING (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 CAPA STLS USER
 REPLY STLS -ERR currently unavailable\r\n+OK user accepted\r\n+OK authenticated
 REPLY PASS -ERR Authentication credentials invalid
 Testnum 982
=== End of file server.cmd
=== Start of file valgrind982
 ==132464== 
 ==132464== Process terminating with default action of signal 4 (SIGILL)
 ==132464==  Illegal opcode at address 0x492B75F
 ==132464==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132464==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132464==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132464==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132464==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132464==    by 0x49908EB: curl_version_info (version.c:600)
 ==132464==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132464==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132464==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132464==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind982
test 0986 [FTP require STARTTLS while preauthenticated]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind986 ../src/curl -q --output log/14/curl986.out  --include --trace-ascii log/14/trace986 --trace-time --ssl-reqd --ftp-ssl-control ftp://127.0.0.1:37411/986 -T log/14/test986.txt -u user:secret > log/14/stdout986 2> log/14/stderr986

 986: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 986
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind986 ../src/curl -q --output log/14/curl986.out  --include --trace-ascii log/14/trace986 --trace-time --ssl-reqd --ftp-ssl-control ftp://127.0.0.1:37411/986 -T log/14/test986.txt -u user:secret > log/14/stdout986 2> log/14/stderr986
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:51.467428 ====> Client connect
 19:27:51.467630 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:51.472417 < "USER anonymous"
 19:27:51.472470 > "331 We are happy you popped in![CR][LF]"
 19:27:51.472620 < "PASS ftp@example.com"
 19:27:51.472648 > "230 Welcome you silly person[CR][LF]"
 19:27:51.472780 < "PWD"
 19:27:51.472810 > "257 "/" is current directory[CR][LF]"
 19:27:51.472952 < "EPSV"
 19:27:51.472977 ====> Passive DATA channel requested by client
 19:27:51.472989 DATA sockfilt for passive data channel starting...
 19:27:51.479921 DATA sockfilt for passive data channel started (pid 132326)
 19:27:51.480058 DATA sockfilt for passive data channel listens on port 39775
 19:27:51.480102 > "229 Entering Passive Mode (|||39775|)[CR][LF]"
 19:27:51.480118 Client has been notified that upcoming DATA connection is awaited on port 39775
 19:27:51.480558 Client connects to port 39775
 19:27:51.480586 ====> Client established passive DATA connection on port 39775
 19:27:51.480672 < "TYPE I"
 19:27:51.480702 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:51.480844 < "SIZE verifiedserver"
 19:27:51.480875 > "213 17[CR][LF]"
 19:27:51.481008 < "RETR verifiedserver"
 19:27:51.481039 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:51.481126 =====> Closing passive DATA connection...
 19:27:51.481140 Server disconnects passive DATA connection
 19:27:51.481341 Server disconnected passive DATA connection
 19:27:51.481366 DATA sockfilt for passive data channel quits (pid 132326)
 19:27:51.481618 DATA sockfilt for passive data channel quit (pid 132326)
 19:27:51.481642 =====> Closed passive DATA connection
 19:27:51.481668 > "226 File transfer complete[CR][LF]"
 19:27:51.525706 < "QUIT"
 19:27:51.525766 > "221 bye bye baby[CR][LF]"
 19:27:51.527051 MAIN sockfilt said DISC
 19:27:51.527086 ====> Client disconnected
 19:27:51.527180 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:52.072559 ====> Client connect
 19:27:52.072903 Received DATA (on stdin)
 19:27:52.072915 > 146 bytes data, server => client
 19:27:52.072926 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:52.072935 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:52.072944 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:52.077428 < 16 bytes data, client => server
 19:27:52.077470 'USER anonymous\r\n'
 19:27:52.077735 Received DATA (on stdin)
 19:27:52.077745 > 33 bytes data, server => client
 19:27:52.077754 '331 We are happy you popped in!\r\n'
 19:27:52.077804 < 22 bytes data, client => server
 19:27:52.077813 'PASS ftp@example.com\r\n'
 19:27:52.077908 Received DATA (on stdin)
 19:27:52.077918 > 30 bytes data, server => client
 19:27:52.077926 '230 Welcome you silly person\r\n'
 19:27:52.077970 < 5 bytes data, client => server
 19:27:52.077979 'PWD\r\n'
 19:27:52.078070 Received DATA (on stdin)
 19:27:52.078079 > 30 bytes data, server => client
 19:27:52.078088 '257 "/" is current directory\r\n'
 19:27:52.078143 < 6 bytes data, client => server
 19:27:52.078151 'EPSV\r\n'
 19:27:52.085389 Received DATA (on stdin)
 19:27:52.085406 > 39 bytes data, server => client
 19:27:52.085415 '229 Entering Passive Mode (|||39775|)\r\n'
 19:27:52.085744 < 8 bytes data, client => server
 19:27:52.085759 'TYPE I\r\n'
 19:27:52.085964 Received DATA (on stdin)
 19:27:52.085975 > 33 bytes data, server => client
 19:27:52.085983 '200 I modify TYPE as you wanted\r\n'
 19:27:52.086033 < 21 bytes data, client => server
 19:27:52.086042 'SIZE verifiedserver\r\n'
 19:27:52.086135 Received DATA (on stdin)
 19:27:52.086144 > 8 bytes data, server => client
 19:27:52.086152 '213 17\r\n'
 19:27:52.086198 < 21 bytes data, client => server
 19:27:52.086207 'RETR verifiedserver\r\n'
 19:27:52.086479 Received DATA (on stdin)
 19:27:52.086489 > 29 bytes data, server => client
 19:27:52.086498 '150 Binary junk (17 bytes).\r\n'
 19:27:52.086930 Received DATA (on stdin)
 19:27:52.086940 > 28 bytes data, server => client
 19:27:52.086949 '226 File transfer complete\r\n'
 19:27:52.130758 < 6 bytes data, client => server
 19:27:52.130796 'QUIT\r\n'
 19:27:52.131028 Received DATA (on stdin)
 19:27:52.131039 > 18 bytes data, server => client
 19:27:52.131048 '221 bye bye baby\r\n'
 19:27:52.132258 ====> Client disconnect
 19:27:52.132438 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:51.084811 Running IPv4 version
 19:27:51.084911 Listening on port 39775
 19:27:51.084946 Wrote pid 132326 to log/14/server/ftp_sockdata.pid
 19:27:51.085127 Received PING (on stdin)
 19:27:51.085221 Received PORT (on stdin)
 19:27:51.085777 ====> Client connect
 19:27:51.086400 Received DATA (on stdin)
 19:27:51.086411 > 17 bytes data, server => client
 19:27:51.086419 'WE ROOLZ: 85053\r\n'
 19:27:51.086445 Received DISC (on stdin)
 19:27:51.086456 ====> Client forcibly disconnected
 19:27:51.086635 Received QUIT (on stdin)
 19:27:51.086645 quits
 19:27:51.086710 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY welcome 230 Welcome
 REPLY AUTH 500 unknown command
 Testnum 986
=== End of file server.cmd
=== Start of file test986.txt
 data
     to
       see
 that FTPS
 works
   so does it?
=== End of file test986.txt
=== Start of file valgrind986
 ==132348== 
 ==132348== Process terminating with default action of signal 4 (SIGILL)
 ==132348==  Illegal opcode at address 0x492B75F
 ==132348==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132348==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132348==    by 0x492B67B: curl_msnprintf (mprintf.CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind991 ../src/curl -q --output log/15/curl991.out  --include --trace-ascii log/15/trace991 --trace-time http://127.0.0.1:40321/991 -w '%output{>>log/15/output}%{http_code}' > log/15/stdout991 2> log/15/stderr991
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind995 ../src/curl -q --trace-ascii log/8/trace995 --trace-time -o log/8/there http://127.0.0.1:44467/995 --skip-existing > log/8/stdout995 2> log/8/stderr995
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind993 ../src/curl -q --output log/18/curl993.out  --include --trace-ascii log/18/trace993 --trace-time pop3://127.0.0.1:41229/ -u user:secret > log/18/stdout993 2> log/18/stderr993
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind997 ../src/curl -q --output log/10/curl997.out  --include --trace-ascii log/10/trace997 --trace-time pop3://127.0.0.1:33971 -u user:secret -X 'STAT' > log/10/stdout997 2> log/10/stderr997
c:1277)
 ==132348==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132348==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132348==    by 0x49908EB: curl_version_info (version.c:600)
 ==132348==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132348==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132348==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132348==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind986
test 0991 [use -w %output{} append]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind991 ../src/curl -q --output log/15/curl991.out  --include --trace-ascii log/15/trace991 --trace-time http://127.0.0.1:40321/991 -w '%output{>>log/15/output}%{http_code}' > log/15/stdout991 2> log/15/stderr991

 991: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 991
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind991 ../src/curl -q --output log/15/curl991.out  --include --trace-ascii log/15/trace991 --trace-time http://127.0.0.1:40321/991 -w '%output{>>log/15/output}%{http_code}' > log/15/stdout991 2> log/15/stderr991
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.706357 ====> Client connect
 19:27:52.706395 accept_connection 3 returned 4
 19:27:52.710686 Read 93 bytes
 19:27:52.710709 Process 93 bytes request
 19:27:52.710722 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.710730 Are-we-friendly question received
 19:27:52.710768 Wrote request (93 bytes) input to log/15/server.input
 19:27:52.710785 Identifying ourselves as friends
 19:27:52.710841 Response sent (56 bytes) and written to log/15/server.response
 19:27:52.710849 special request received, no persistency
 19:27:52.710857 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 55982 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file output
 line one
=== End of file output
=== Start of file server.cmd
 Testnum 991
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind991
 ==132535== 
 ==132535== Process terminating with default action of signal 4 (SIGILL)
 ==132535==  Illegal opcode at address 0x492B75F
 ==132535==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132535==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132535==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132535==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132535==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132535==    by 0x49908EB: curl_version_info (version.c:600)
 ==132535==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132535==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132535==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132535==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind991
test 0995 [--skip-existing without file present]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind995 ../src/curl -q --trace-ascii log/8/trace995 --trace-time -o log/8/there http://127.0.0.1:44467/995 --skip-existing > log/8/stdout995 2> log/8/stderr995

 995: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 995
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind995 ../src/curl -q --trace-ascii log/8/trace995 --trace-time -o log/8/there http://127.0.0.1:44467/995 --skip-existing > log/8/stdout995 2> log/8/stderr995
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.004113 ====> Client connect
 19:27:52.004151 accept_connection 3 returned 4
 19:27:52.004177 Read 93 bytes
 19:27:52.004188 Process 93 bytes request
 19:27:52.004200 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.004209 Are-we-friendly question received
 19:27:52.004247 Wrote request (93 bytes) input to log/8/server.input
 19:27:52.004270 Identifying ourselves as friends
 19:27:52.004350 Response sent (56 bytes) and written to log/8/server.response
 19:27:52.004362 special request received, no persistency
 19:27:52.004371 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 59280 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 995
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind995
 ==132735== 
 ==132735== Process terminating with default action of signal 4 (SIGILL)
 ==132735==  Illegal opcode at address 0x492B75F
 ==132735==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132735==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132735==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132735==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132735==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132735==    by 0x49908EB: curl_version_info (version.c:600)
 ==132735==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132735==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132735==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132735==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind995
test 0997 [POP3 retrieve STAT (CUSTOMREQUEST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind997 ../src/curl -q --output log/10/curl997.out  --include --trace-ascii log/10/trace997 --trace-time pop3://127.0.0.1:33971 -u user:secret -X 'STAT' > log/10/stdout997 2> log/10/stderr997

 997: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 997
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind997 ../src/curl -q --output log/10/curl997.out  --include --trace-ascii log/10/trace997 --trace-time pop3://127.0.0.1:33971 -u user:secret -X 'STAT' > log/10/stdout997 2> log/10/stderr997
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:52.518527 ====> Client connect
 19:27:52.518750 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind994 ../src/curl -q --include --trace-ascii log/2/trace994 --trace-time -o "log/2/#1" "http://127.0.0.1:34531/994/{hey,ho}" --skip-existing > log/2/stdout994 2> log/2/stderr994
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind992 ../src/curl -q --output log/24/curl992.out  --include --trace-ascii log/24/trace992 --trace-time smtp://127.0.0.1:40147/992 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --login-options "AUTH=XOAUTH2" -T - <log/24/stdin-for-992 > log/24/stdout992 2> log/24/stderr992
F]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:52.520356 < "CAPA"
 19:27:52.520415 > "-ERR Unrecognized command[CR][LF]"
 19:27:52.521545 < "RETR verifiedserver"
 19:27:52.521580 return proof we are we
 19:27:52.521612 > "+OK Mail transfer starts[CR][LF]"
 19:27:52.521636 > "WE ROOLZ: 124839[CR][LF]"
 19:27:52.521654 > ".[CR][LF]"
 19:27:52.565691 < "QUIT"
 19:27:52.565791 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:52.565849 MAIN sockfilt said DISC
 19:27:52.565867 ====> Client disconnected
 19:27:52.565936 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:53.123573 ====> Client connect
 19:27:53.124015 Received DATA (on stdin)
 19:27:53.124038 > 164 bytes data, server => client
 19:27:53.124051 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:53.124062 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:53.124073 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:53.125340 < 6 bytes data, client => server
 19:27:53.125358 'CAPA\r\n'
 19:27:53.125592 Received DATA (on stdin)
 19:27:53.125606 > 27 bytes data, server => client
 19:27:53.125616 '-ERR Unrecognized command\r\n'
 19:27:53.126562 < 21 bytes data, client => server
 19:27:53.126581 'RETR verifiedserver\r\n'
 19:27:53.127149 Received DATA (on stdin)
 19:27:53.127166 > 26 bytes data, server => client
 19:27:53.127177 '+OK Mail transfer starts\r\n'
 19:27:53.127202 Received DATA (on stdin)
 19:27:53.127213 > 18 bytes data, server => client
 19:27:53.127222 'WE ROOLZ: 124839\r\n'
 19:27:53.127235 Received DATA (on stdin)
 19:27:53.127243 > 3 bytes data, server => client
 19:27:53.127252 '.\r\n'
 19:27:53.170668 < 6 bytes data, client => server
 19:27:53.170699 'QUIT\r\n'
 19:27:53.170882 Received DATA (on stdin)
 19:27:53.170891 > 34 bytes data, server => client
 19:27:53.170905 '+OK curl POP3 server signing off\r\n'
 19:27:53.170974 ====> Client disconnect
 19:27:53.171107 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 CAPA TOP USER
 Testnum 997
=== End of file server.cmd
=== Start of file valgrind997
 ==132968== 
 ==132968== Process terminating with default action of signal 4 (SIGILL)
 ==132968==  Illegal opcode at address 0x492B75F
 ==132968==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132968==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132968==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132968==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132968==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132968==    by 0x49908EB: curl_version_info (version.c:600)
 ==132968==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132968==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132968==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132968==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind997
test 0993 [POP3 LIST 1000 messages]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind993 ../src/curl -q --output log/18/curl993.out  --include --trace-ascii log/18/trace993 --trace-time pop3://127.0.0.1:41229/ -u user:secret > log/18/stdout993 2> log/18/stderr993

 993: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 993
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind993 ../src/curl -q --output log/18/curl993.out  --include --trace-ascii log/18/trace993 --trace-time pop3://127.0.0.1:41229/ -u user:secret > log/18/stdout993 2> log/18/stderr993
=== End of file commands.log
=== Start of file pop3_server.log
 19:27:52.217803 ====> Client connect
 19:27:52.217981 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:27:52.218281 < "CAPA"
 19:27:52.218322 > "-ERR Unrecognized command[CR][LF]"
 19:27:52.218521 < "RETR verifiedserver"
 19:27:52.218554 return proof we are we
 19:27:52.218583 > "+OK Mail transfer starts[CR][LF]"
 19:27:52.218612 > "WE ROOLZ: 125319[CR][LF]"
 19:27:52.218634 > ".[CR][LF]"
 19:27:52.265638 < "QUIT"
 19:27:52.265696 > "+OK curl POP3 server signing off[CR][LF]"
 19:27:52.266122 MAIN sockfilt said DISC
 19:27:52.266159 ====> Client disconnected
 19:27:52.266237 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:27:52.822871 ====> Client connect
 19:27:52.823193 Received DATA (on stdin)
 19:27:52.823211 > 164 bytes data, server => client
 19:27:52.823223 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:27:52.823233 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:27:52.823242 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:27:52.823321 < 6 bytes data, client => server
 19:27:52.823334 'CAPA\r\n'
 19:27:52.823519 Received DATA (on stdin)
 19:27:52.823531 > 27 bytes data, server => client
 19:27:52.823541 '-ERR Unrecognized command\r\n'
 19:27:52.823602 < 21 bytes data, client => server
 19:27:52.823614 'RETR verifiedserver\r\n'
 19:27:52.823843 Received DATA (on stdin)
 19:27:52.823855 > 26 bytes data, server => client
 19:27:52.823865 '+OK Mail transfer starts\r\n'
 19:27:52.823890 Received DATA (on stdin)
 19:27:52.823902 > 18 bytes data, server => client
 19:27:52.823911 'WE ROOLZ: 125319\r\n'
 19:27:52.823924 Received DATA (on stdin)
 19:27:52.823934 > 3 bytes data, server => client
 19:27:52.823943 '.\r\n'
 19:27:52.870645 < 6 bytes data, client => server
 19:27:52.870675 'QUIT\r\n'
 19:27:52.870894 Received DATA (on stdin)
 19:27:52.870908 > 34 bytes data, server => client
 19:27:52.870918 '+OK curl POP3 server signing off\r\n'
 19:27:52.871255 ====> Client disconnect
 19:27:52.871427 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 Testnum 993
=== End of file server.cmd
=== Start of file valgrind993
 ==132616== 
 ==132616== Process terminating with default action of signal 4 (SIGILL)
 ==132616==  Illegal opcode at address 0x492B75F
 ==132616==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132616==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132616==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132616==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132616==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132616==    by 0x49908EB: curl_version_info (version.c:600)
 ==132616==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132616==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132616==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132616==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind993
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1004 ../src/curl -q --output log/23/curl1004.out  --include --trace-ascii log/23/trace1004 --trace-time http://127.0.0.1:44711/1004 --proxy "" > log/23/stdout1004 2> log/23/stderr1004
test 0994 [--skip-existing with globbing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind994 ../src/curl -q --include --trace-ascii log/2/trace994 --trace-time -o "log/2/#1" "http://127.0.0.1:34531/994/{hey,ho}" --skip-existing > log/2/stdout994 2> log/2/stderr994

 994: stderr FAILED:
--- log/2/check-expected	2026-10-15 19:27:54.832799595 +0000
+++ log/2/check-generated	2026-10-15 19:27:54.829897026 +0000
@@ -1,2 +0,0 @@
-Note: skips transfer, "log/2/hey" exists locally[CR][LF]
-Note: skips transfer, "log/2/ho" exists locally[CR][LF]
== Contents of files in the log/2/ directory after test 994
=== Start of file check-expected
 Note: skips transfer, "log/2/hey" exists locally[CR][LF]
 Note: skips transfer, "log/2/ho" exists locally[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind994 ../src/curl -q --include --trace-ascii log/2/trace994 --trace-time -o "log/2/#1" "http://127.0.0.1:34531/994/{hey,ho}" --skip-existing > log/2/stdout994 2> log/2/stderr994
=== End of file commands.log
=== Start of file hey
 content
=== End of file hey
=== Start of file ho
 content
=== End of file ho
=== Start of file http_server.log
 19:27:52.997482 ====> Client connect
 19:27:52.997521 accept_connection 3 returned 4
 19:27:53.000238 Read 93 bytes
 19:27:53.000259 Process 93 bytes request
 19:27:53.000274 Got request: GET /verifiedserver HTTP/1.1
 19:27:53.000284 Are-we-friendly question received
 19:27:53.000324 Wrote request (93 bytes) input to log/2/server.input
 19:27:53.000343 Identifying ourselves as friends
 19:27:53.000410 Response sent (56 bytes) and written to log/2/server.response
 19:27:53.000420 special request received, no persistency
 19:27:53.000429 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 46708 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 994
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind994
 ==132718== 
 ==132718== Process terminating with default action of signal 4 (SIGILL)
 ==132718==  Illegal opcode at address 0x492B75F
 ==132718==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132718==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132718==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132718==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132718==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132718==    by 0x49908EB: curl_version_info (version.c:600)
 ==132718==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132718==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132718==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132718==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind994
test 0992 [SASL verify default mechanisms are reset by login options]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind992 ../src/curl -q --output log/24/curl992.out  --include --trace-ascii log/24/trace992 --trace-time smtp://127.0.0.1:40147/992 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --login-options "AUTH=XOAUTH2" -T - <log/24/stdin-for-992 > log/24/stdout992 2> log/24/stderr992

 992: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 992
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind992 ../src/curl -q --output log/24/curl992.out  --include --trace-ascii log/24/trace992 --trace-time smtp://127.0.0.1:40147/992 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --login-options "AUTH=XOAUTH2" -T - <log/24/stdin-for-992 > log/24/stdout992 2> log/24/stderr992
=== End of file commands.log
=== Start of file server.cmd
 AUTH OAUTHBEARER XOAUTH2
 REPLY AUTH 334 XOAUTH2 supported
 REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB 235 Authenticated
 Testnum 992
=== End of file server.cmd
=== Start of file smtp_server.log
 19:27:52.215493 ====> Client connect
 19:27:52.218745 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:52.232201 < "EHLO verifiedserver"
 19:27:52.232276 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:27:52.235647 < "HELP"
 19:27:52.235701 > "214 WE ROOLZ: 127811[CR][LF]"
 19:27:52.235719 return proof we are we
 19:27:52.235984 < "QUIT"
 19:27:52.236027 > "221 curl ESMTP server signing off[CR][LF]"
 19:27:52.238381 MAIN sockfilt said DISC
 19:27:52.238421 ====> Client disconnected
 19:27:52.238507 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:27:52.820536 ====> Client connect
 19:27:52.823847 Received DATA (on stdin)
 19:27:52.823878 > 146 bytes data, server => client
 19:27:52.823966 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:52.823978 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:52.823988 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:52.830525 < 21 bytes data, client => server
 19:27:52.830557 'EHLO verifiedserver\r\n'
 19:27:52.840525 Received DATA (on stdin)
 19:27:52.840558 > 53 bytes data, server => client
 19:27:52.840571 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:27:52.840693 < 6 bytes data, client => server
 19:27:52.840708 'HELP\r\n'
 19:27:52.840914 Received DATA (on stdin)
 19:27:52.840926 > 22 bytes data, server => client
 19:27:52.840936 '214 WE ROOLZ: 127811\r\n'
 19:27:52.841064 < 6 bytes data, client => server
 19:27:52.841080 'QUIT\r\n'
 19:27:52.841224 Received DATA (on stdin)
 19:27:52.841236 > 35 bytes data, server => client
 19:27:52.841246 '221 curl ESMTP server signing off\r\n'
 19:27:52.843516 ====> Client disconnect
 19:27:52.843710 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-992
 mail body
=== End of file stdin-for-992
=== Start of file valgrind992
 ==132608== 
 ==132608== Process terminating with default action of signal 4 (SIGILL)
 ==132608==  Illegal opcode at address 0x492B75F
 ==132608==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132608==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132608==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132608==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132608==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132608==    by 0x49908EB: curl_version_info (version.c:600)
 ==132608==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132608==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132608==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132608==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind992
test 1004 [HTTP GET with empty proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/vaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind999 ../src/curl -q --output log/9/curl999.out  --include --trace-ascii log/9/trace999 --trace-time -x 127.0.0.1:43733 http://alberto:einstein@somewhere.example/999 http://somewhere.else.example/999 > log/9/stdout999 2> log/9/stderr999
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind998 ../src/curl -q --output log/20/curl998.out  --include --trace-ascii log/20/trace998 --trace-time -x 127.0.0.1:33897 http://alberto:einstein@somewhere.example/998 --location-trusted > log/20/stdout998 2> log/20/stderr998
lgrind.supp --num-callers=16 --log-file=log/23/valgrind1004 ../src/curl -q --output log/23/curl1004.out  --include --trace-ascii log/23/trace1004 --trace-time http://127.0.0.1:44711/1004 --proxy "" > log/23/stdout1004 2> log/23/stderr1004

 1004: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1004
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1004 ../src/curl -q --output log/23/curl1004.out  --include --trace-ascii log/23/trace1004 --trace-time http://127.0.0.1:44711/1004 --proxy "" > log/23/stdout1004 2> log/23/stderr1004
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.383910 ====> Client connect
 19:27:52.383961 accept_connection 3 returned 4
 19:27:52.383992 Read 93 bytes
 19:27:52.384003 Process 93 bytes request
 19:27:52.384017 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.384026 Are-we-friendly question received
 19:27:52.384055 Wrote request (93 bytes) input to log/23/server.input
 19:27:52.384073 Identifying ourselves as friends
 19:27:52.384161 Response sent (56 bytes) and written to log/23/server.response
 19:27:52.384173 special request received, no persistency
 19:27:52.384182 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 60900 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1004
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1004
 ==133230== 
 ==133230== Process terminating with default action of signal 4 (SIGILL)
 ==133230==  Illegal opcode at address 0x492B75F
 ==133230==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133230==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133230==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133230==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133230==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133230==    by 0x49908EB: curl_version_info (version.c:600)
 ==133230==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133230==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133230==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133230==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1004
test 0999 [HTTP with auth in first URL but not second]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind999 ../src/curl -q --output log/9/curl999.out  --include --trace-ascii log/9/trace999 --trace-time -x 127.0.0.1:43733 http://alberto:einstein@somewhere.example/999 http://somewhere.else.example/999 > log/9/stdout999 2> log/9/stderr999

 999: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 999
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind999 ../src/curl -q --output log/9/curl999.out  --include --trace-ascii log/9/trace999 --trace-time -x 127.0.0.1:43733 http://alberto:einstein@somewhere.example/999 http://somewhere.else.example/999 > log/9/stdout999 2> log/9/stderr999
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.123481 ====> Client connect
 19:27:52.123521 accept_connection 3 returned 4
 19:27:52.123701 Read 93 bytes
 19:27:52.123718 Process 93 bytes request
 19:27:52.123732 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.123742 Are-we-friendly question received
 19:27:52.123779 Wrote request (93 bytes) input to log/9/server.input
 19:27:52.123835 Identifying ourselves as friends
 19:27:52.123913 Response sent (56 bytes) and written to log/9/server.response
 19:27:52.123926 special request received, no persistency
 19:27:52.123935 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 37418 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 999
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind999
 ==132930== 
 ==132930== Process terminating with default action of signal 4 (SIGILL)
 ==132930==  Illegal opcode at address 0x492B75F
 ==132930==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132930==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132930==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132930==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132930==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132930==    by 0x49908EB: curl_version_info (version.c:600)
 ==132930==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132930==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132930==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132930==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind999
test 0998 [HTTP with auth in URL redirected to another host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind998 ../src/curl -q --output log/20/curl998.out  --include --trace-ascii log/20/trace998 --trace-time -x 127.0.0.1:33897 http://alberto:einstein@somewhere.example/998 --location-trusted > log/20/stdout998 2> log/20/stderr998

 998: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 998
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind998 ../src/curl -q --output log/20/curl998.out  --include --trace-ascii log/20/trace998 --trace-time -x 127.0.0.1:33897 http://alberto:einstein@somewhere.example/998 --location-trusted > log/20/stdout998 2> log/20/stderr998
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.093488 ====> Client connect
 19:27:52.093521 accept_connection 3 returned 4
 19:27:52.093544 Read 93 bytes
 19:27:52.093553 Process 93 bytes request
 19:27:52.093564 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.093573 Are-we-friendly question received
 19:27:52.093597 Wrote request (93 bytes) input to log/20/server.input
 19:27:52.093614 Identifying ourselves as friends
 19:27:52.093676 Response sent (56 bytes) and written to log/20/server.response
 19:27:52.093685 special request received, no persistency
 19:27:52.093693 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 * CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1000 ../src/curl -q --output log/13/curl1000.out  --include --trace-ascii log/13/trace1000 --trace-time ftp://127.0.0.1:33695/1000/ -I > log/13/stdout1000 2> log/13/stderr1000
  Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54668 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 998
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind998
 ==132897== 
 ==132897== Process terminating with default action of signal 4 (SIGILL)
 ==132897==  Illegal opcode at address 0x492B75F
 ==132897==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132897==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132897==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132897==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132897==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132897==    by 0x49908EB: curl_version_info (version.c:600)
 ==132897==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132897==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132897==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132897==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind998
test 1000 [FTP dir list PASV with -I]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1000 ../src/curl -q --output log/13/curl1000.out  --include --trace-ascii log/13/trace1000 --trace-time ftp://127.0.0.1:33695/1000/ -I > log/13/stdout1000 2> log/13/stderr1000

 1000: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1000
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1000 ../src/curl -q --output log/13/curl1000.out  --include --trace-ascii log/13/trace1000 --trace-time ftp://127.0.0.1:33695/1000/ -I > log/13/stdout1000 2> log/13/stderr1000
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:52.651943 ====> Client connect
 19:27:52.652345 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:52.652684 < "USER anonymous"
 19:27:52.652723 > "331 We are happy you popped in![CR][LF]"
 19:27:52.652911 < "PASS ftp@example.com"
 19:27:52.652943 > "230 Welcome you silly person[CR][LF]"
 19:27:52.653124 < "PWD"
 19:27:52.653164 > "257 "/" is current directory[CR][LF]"
 19:27:52.653364 < "EPSV"
 19:27:52.653398 ====> Passive DATA channel requested by client
 19:27:52.653415 DATA sockfilt for passive data channel starting...
 19:27:52.662034 DATA sockfilt for passive data channel started (pid 133026)
 19:27:52.669252 DATA sockfilt for passive data channel listens on port 40157
 19:27:52.669318 > "229 Entering Passive Mode (|||40157|)[CR][LF]"
 19:27:52.669338 Client has been notified that upcoming DATA connection is awaited on port 40157
 19:27:52.669632 Client connects to port 40157
 19:27:52.669665 ====> Client established passive DATA connection on port 40157
 19:27:52.669815 < "TYPE I"
 19:27:52.669849 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:52.670023 < "SIZE verifiedserver"
 19:27:52.670060 > "213 17[CR][LF]"
 19:27:52.670213 < "RETR verifiedserver"
 19:27:52.670247 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:52.670333 =====> Closing passive DATA connection...
 19:27:52.670347 Server disconnects passive DATA connection
 19:27:52.670458 Server disconnected passive DATA connection
 19:27:52.670479 DATA sockfilt for passive data channel quits (pid 133026)
 19:27:52.670752 DATA sockfilt for passive data channel quit (pid 133026)
 19:27:52.670775 =====> Closed passive DATA connection
 19:27:52.670803 > "226 File transfer complete[CR][LF]"
 19:27:52.717322 < "QUIT"
 19:27:52.717374 > "221 bye bye baby[CR][LF]"
 19:27:52.718549 MAIN sockfilt said DISC
 19:27:52.718589 ====> Client disconnected
 19:27:52.718683 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:52.256943 ====> Client connect
 19:27:52.257426 Received DATA (on stdin)
 19:27:52.257449 > 146 bytes data, server => client
 19:27:52.257520 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:52.257537 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:52.257546 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:52.257672 < 16 bytes data, client => server
 19:27:52.257689 'USER anonymous\r\n'
 19:27:52.257884 Received DATA (on stdin)
 19:27:52.257896 > 33 bytes data, server => client
 19:27:52.257907 '331 We are happy you popped in!\r\n'
 19:27:52.257967 < 22 bytes data, client => server
 19:27:52.257981 'PASS ftp@example.com\r\n'
 19:27:52.258102 Received DATA (on stdin)
 19:27:52.258114 > 30 bytes data, server => client
 19:27:52.258124 '230 Welcome you silly person\r\n'
 19:27:52.258184 < 5 bytes data, client => server
 19:27:52.258198 'PWD\r\n'
 19:27:52.258323 Received DATA (on stdin)
 19:27:52.258336 > 30 bytes data, server => client
 19:27:52.258346 '257 "/" is current directory\r\n'
 19:27:52.258421 < 6 bytes data, client => server
 19:27:52.258436 'EPSV\r\n'
 19:27:52.274501 Received DATA (on stdin)
 19:27:52.274517 > 39 bytes data, server => client
 19:27:52.274527 '229 Entering Passive Mode (|||40157|)\r\n'
 19:27:52.274840 < 8 bytes data, client => server
 19:27:52.274853 'TYPE I\r\n'
 19:27:52.275004 Received DATA (on stdin)
 19:27:52.275015 > 33 bytes data, server => client
 19:27:52.275025 '200 I modify TYPE as you wanted\r\n'
 19:27:52.275085 < 21 bytes data, client => server
 19:27:52.275095 'SIZE verifiedserver\r\n'
 19:27:52.275212 Received DATA (on stdin)
 19:27:52.275222 > 8 bytes data, server => client
 19:27:52.275231 '213 17\r\n'
 19:27:52.275282 < 21 bytes data, client => server
 19:27:52.275292 'RETR verifiedserver\r\n'
 19:27:52.275824 Received DATA (on stdin)
 19:27:52.275839 > 29 bytes data, server => client
 19:27:52.275849 '150 Binary junk (17 bytes).\r\n'
 19:27:52.275955 Received DATA (on stdin)
 19:27:52.275965 > 28 bytes data, server => client
 19:27:52.275975 '226 File transfer complete\r\n'
 19:27:52.322305 < 6 bytes data, client => server
 19:27:52.322328 'QUIT\r\n'
 19:27:52.322532 Received DATA (on stdin)
 19:27:52.322546 > 18 bytes data, server => client
 19:27:52.322555 '221 bye bye baby\r\n'
 19:27:52.323638 ====> Client disconnect
 19:27:52.327136 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:52.264626 Running IPv4 version
 19:27:52.264710 Listening on port 40157
 19:27:52.264752 Wrote pid 133026 to log/13/server/ftp_sockdata.pid
 19:27:52.266124 Received PING (on stdin)
 19:27:52.274260 Received PORT (on stdin)
 19:27:52.274730 ====> Client connect
 19:27:52.275502 Received DATA (on stdin)
 19:27:52.275514 > 17 bytes data, server => client
 19:27:52.275524 'WE ROOLZ: 93286\r\n'
 19:27:52.275550 Received DISC (on stdin)
 19:27:52.275561 ====> Client forcibly disconnected
 19:27:52.275636 Received QUIT (on stdin)
 19:27:52.275645 quits
 19:27:52.275704 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1000
=== End of file server.cmd
=== Start of file valgrind1000
 ==133133== 
 ==133133== Process terminating with default action of signal 4 (SIGILL)
 ==133133==  Illegal opcode at address 0x492B75F
 ==133133==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133133==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133133==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133133==    by 0x49A9B9CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind996 ../src/curl -q --include --trace-ascii log/7/trace996 --trace-time -o log/7/there http://127.0.0.1:40859/996 --skip-existing > log/7/stdout996 2> log/7/stderr996
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1002 ../src/curl -q --output log/11/curl1002.out  --include --trace-ascii log/11/trace1002 --trace-time http://127.0.0.1:40989/1002.upload1 -T log/11/1002 http://127.0.0.1:40989/1002.upload2 -T log/11/1002 -u auser:apasswd --digest -x  http://127.0.0.1:40989 -C 0 -X GET > log/11/stdout1002 2> log/11/stderr1002
E: Curl_ossl_version (openssl.c:5473)
 ==133133==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133133==    by 0x49908EB: curl_version_info (version.c:600)
 ==133133==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133133==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133133==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133133==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1000
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1005 ../src/curl -q --output log/17/curl1005.out  --include --trace-ascii log/17/trace1005 --trace-time ftp://127.0.0.1:46137/path/1005 > log/17/stdout1005 2> log/17/stderr1005
test 0996 [--skip-existing with file present]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind996 ../src/curl -q --include --trace-ascii log/7/trace996 --trace-time -o log/7/there http://127.0.0.1:40859/996 --skip-existing > log/7/stdout996 2> log/7/stderr996

 996: stderr FAILED:
--- log/7/check-expected	2026-10-15 19:27:55.229917362 +0000
+++ log/7/check-generated	2026-10-15 19:27:55.229455917 +0000
@@ -1 +0,0 @@
-Note: skips transfer, "log/7/there" exists locally[CR][LF]
== Contents of files in the log/7/ directory after test 996
=== Start of file check-expected
 Note: skips transfer, "log/7/there" exists locally[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind996 ../src/curl -q --include --trace-ascii log/7/trace996 --trace-time -o log/7/there http://127.0.0.1:40859/996 --skip-existing > log/7/stdout996 2> log/7/stderr996
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.063064 ====> Client connect
 19:27:52.063096 accept_connection 3 returned 4
 19:27:52.063117 Read 93 bytes
 19:27:52.063126 Process 93 bytes request
 19:27:52.063139 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.063147 Are-we-friendly question received
 19:27:52.063174 Wrote request (93 bytes) input to log/7/server.input
 19:27:52.063191 Identifying ourselves as friends
 19:27:52.063253 Response sent (56 bytes) and written to log/7/server.response
 19:27:52.063263 special request received, no persistency
 19:27:52.063271 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 58114 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 996
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file there
 content
=== End of file there
=== Start of file valgrind996
 ==132832== 
 ==132832== Process terminating with default action of signal 4 (SIGILL)
 ==132832==  Illegal opcode at address 0x492B75F
 ==132832==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==132832==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==132832==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==132832==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==132832==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==132832==    by 0x49908EB: curl_version_info (version.c:600)
 ==132832==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==132832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==132832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==132832==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind996
test 1002 [HTTP Digest uploads with zero resume offset and custom method]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1002 ../src/curl -q --output log/11/curl1002.out  --include --trace-ascii log/11/trace1002 --trace-time http://127.0.0.1:40989/1002.upload1 -T log/11/1002 http://127.0.0.1:40989/1002.upload2 -T log/11/1002 -u auser:apasswd --digest -x  http://127.0.0.1:40989 -C 0 -X GET > log/11/stdout1002 2> log/11/stderr1002

 1002: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1002
=== Start of file 1002
 test
=== End of file 1002
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1002 ../src/curl -q --output log/11/curl1002.out  --include --trace-ascii log/11/trace1002 --trace-time http://127.0.0.1:40989/1002.upload1 -T log/11/1002 http://127.0.0.1:40989/1002.upload2 -T log/11/1002 -u auser:apasswd --digest -x  http://127.0.0.1:40989 -C 0 -X GET > log/11/stdout1002 2> log/11/stderr1002
=== End of file commands.log
=== Start of file http_server.log
 19:27:52.320646 ====> Client connect
 19:27:52.320686 accept_connection 3 returned 4
 19:27:52.320707 Read 93 bytes
 19:27:52.320716 Process 93 bytes request
 19:27:52.320727 Got request: GET /verifiedserver HTTP/1.1
 19:27:52.320735 Are-we-friendly question received
 19:27:52.320759 Wrote request (93 bytes) input to log/11/server.input
 19:27:52.320774 Identifying ourselves as friends
 19:27:52.320831 Response sent (56 bytes) and written to log/11/server.response
 19:27:52.320839 special request received, no persistency
 19:27:52.320846 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 50586 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1002
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1002
 ==133165== 
 ==133165== Process terminating with default action of signal 4 (SIGILL)
 ==133165==  Illegal opcode at address 0x492B75F
 ==133165==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133165==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133165==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133165==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133165==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133165==    by 0x49908EB: curl_version_info (version.c:600)
 ==133165==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133165==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133165==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133165==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1002
test 1005 [FTP with excessively large number of server command response lines]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1005 ../src/curl -q --output log/17/curl1005.out  --include --trace-ascii log/17/trace1005 --trace-time ftp://127.0.0.1:46137/path/1005 > log/17/stdout1005 2> log/17/stderr1005

 1005: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1005
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1005 ../src/curl -q --output log/17/curl1005.out  --include --trace-ascii log/17/trace1005 --trace-time ftp://127.0.0.1:46137/path/1005 > log/17/stdout1005 2> log/17/stderr1005
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:52.945474 ====> Client connect
 19:27:52.945722 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:52.959004 < "USER anonymous"
 19:27:52.959101 > "331 We are happy you popped in![CR][LF]"
 19:27:52.968885 < "PASS ftp@example.com"
 19:27:52.968945 > "230 Welcome you silly person[CR][LF]"
 19:27:52.969155 < "PWD"
 19:27:52.969186 > "257 "/" is current directory[CR][LF]"
 19:27:52.969340 < "EPSV"
 19:27:52.969366 ====> Passive DATA channel requested by client
 19:27:52.969379 DATA sockfilt for passive data channel starting...
 19:27:52.975543 DATA sockfilt for passive data channel started (pid 133427)
 19:27:52.975668 DATA sockfilt for passive data channel listens on port 36127
 19:27:52.975713 > "229 Entering Passive Mode (|||36127|)[CR][LF]"
 19:27:52.975730 Client has been notified that upcoming DATA connection is awaited on port 36127
 19:27:52.976020 Client connects to port 36127
 19:27:52.976049 ====> Client established passive DATA connection on port 36127
 19:27:52.976132 < "TYPE I"
 19:27:52.976161 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:52.976302 < "SIZE verifiedserver"
 19:27:52.976338 > "213 17[CR][LF]"
 19:27:52.976473 < "RETR verifiedserver"
 19:27:52.976502 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:52.976589 =====> Closing passive DATA connection...
 19:27:52.976603 Server disconnects passive DATA connection
 19:27:52.976810 Server disconnected passive DATA connection
 19:27:52.976834 DATA sockfilt for passive data channel quits (pid 133427)
 19:27:52.977087 DATA sockfilt for passive data channel quit (pid 133427)
 19:27:52.977109 =====> Closed passive DATA connection
 19:27:52.977133 > "226 File transfer complete[CR][LF]"
 19:27:53.019192 < "QUIT"
 19:27:53.019257 > "221 bye bye baby[CR][LF]"
 19:27:53.020683 MAIN sockfilt said DISC
 19:27:53.020724 ====> Client disconnected
 19:27:53.020801 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:52.550465 ====> Client connect
 19:27:52.550866 Received DATA (on stdin)
 19:27:52.550881 > 146 bytes data, server => client
 19:27:52.550891 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:52.550900 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:52.550908 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:52.563813 < 16 bytes data, client => server
 19:27:52.563867 'USER anonymous\r\n'
 19:27:52.564172 Received DATA (on stdin)
 19:27:52.564183 > 33 bytes data, server => client
 19:27:52.564229 '331 We are happy you popped in!\r\n'
 19:27:52.573802 < 22 bytes data, client => server
 19:27:52.573836 'PASS ftp@example.com\r\n'
 19:27:52.574074 Received DATA (on stdin)
 19:27:52.574084 > 30 bytes data, server => client
 19:27:52.574095 '230 Welcome you silly person\r\n'
 19:27:52.574198 < 5 bytes data, client => server
 19:27:52.574208 'PWD\r\n'
 19:27:52.574309 Received DATA (on stdin)
 19:27:52.574319 > 30 bytes data, server => client
 19:27:52.574329 '257 "/" is current directory\r\n'
 19:27:52.574389 < 6 bytes data, client => server
 19:27:52.574398 'EPSV\r\n'
 19:27:52.580861 Received DATA (on stdin)
 19:27:52.580876 > 39 bytes data, server => client
 19:27:52.580887 '229 Entering Passive Mode (|||36127|)\r\n'
 19:27:52.581093 < 8 bytes data, client => server
 19:27:52.581103 'TYPE I\r\n'
 19:27:52.581284 Received DATA (on stdin)
 19:27:52.581294 > 33 bytes data, server => client
 19:27:52.581304 '200 I modify TYPE as you wanted\r\n'
 19:27:52.581351 < 21 bytes data, client => server
 19:27:52.581361 'SIZE verifiedserver\r\n'
 19:27:52.581460 Received DATA (on stdin)
 19:27:52.581470 > 8 bytes data, server => client
 19:27:52.581479 '213 17\r\n'
 19:27:52.581524 < 21 bytes data, client => server
 19:27:52.581534 'RETR verifiedserver\r\n'
 19:27:52.581807 Received DATA (on stdin)
 19:27:52.581818 > 29 bytes data, server => client
 19:27:52.581828 '150 Binary junk (17 bytes).\r\n'
 19:27:52.582257 Received DATA (on stdin)
 19:27:52.582268 > 28 bytes data, server => client
 19:27:52.582278 '226 File transfer complete\r\n'
 19:27:52.624036 < 6 bytes data, client => server
 19:27:52.624097 'QUIT\r\n'
 19:27:52.624382 Received DATA (on stdin)
 19:27:52.624392 > 18 bytes data, server => client
 19:27:52.624402 '221 bye bye baby\r\n'
 19:27:52.625743 ====> Client disconnect
 19:27:52.625920 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:52.578230 Running IPv4 version
 19:27:52.578324 Listening on port 36127
 19:27:52.578372 Wrote pid 133427 to log/17/server/ftp_sockdata.pid
 19:27:52.580599 Received PING (on stdin)
 19:27:52.580700 Received PORT (on stdin)
 19:27:52.581069 ====> Client connect
 19:27:52.581728 Received DATA (on stdin)
 19:27:52.581739 > 17 bytes data, server => client
 19:27:52.581749 'WE ROOLZ: 84749\r\n'
 19:27:52.581774 Received DISC (on stdin)
 19:27:52.581784 ====> Client forcibly disconnected
 19:27:52.581965 Received QUIT (on stdin)
 19:27:52.581975 quits
 19:27:52.582043 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1001 ../src/curl -q --output log/16/curl1001.out  --include --trace-ascii log/16/trace1001 --trace-time http://127.0.0.1:35903/1001 -u auser:apasswd --digest -T log/16/1001 -x  http://127.0.0.1:35903 --range 0-4 -X GET > log/16/stdout1001 2> log/16/stderr1001
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250 Finally, here is the response
 Testnum 1005
=== End of file server.cmd
=== Start of file valgrind1005
 ==133479== 
 ==133479== Process terminating with default action of signal 4 (SIGILL)
 ==133479==  Illegal opcode at address 0x492B75F
 ==133479==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133479==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133479==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133479==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133479==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133479==    by 0x49908EB: curl_version_info (version.c:600)
 ==133479==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133479==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133479==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133479==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1005
test 1001 [HTTP Digest range upload with a modified method]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1001 ../src/curl -q --output log/16/curl1001.out  --include --trace-ascii log/16/trace1001 --trace-time http://127.0.0.1:35903/1001 -u auser:apasswd --digest -T log/16/1001 -x  http://127.0.0.1:35903 --range 0-4 -X GET > log/16/stdout1001 2> log/16/stderr1001

 1001: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1001
=== Start of file 1001
 test
=== End of file 1001
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1001 ../src/curl -q --output log/16/curl1001.out  --include --trace-ascii log/16/trace1001 --trace-time http://127.0.0.1:35903/1001 -u auser:apasswd --digest -T log/16/1001 -x  httCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1006 ../src/curl -q --output log/12/curl1006.out  --include --trace-ascii log/12/trace1006 --trace-time ftp://127.0.0.1:40417/path/1006 > log/12/stdout1006 2> log/12/stderr1006
p://127.0.0.1:35903 --range 0-4 -X GET > log/16/stdout1001 2> log/16/stderr1001
=== End of file commands.log
=== Start of file http_server.log
 19:27:53.317198 ====> Client connect
 19:27:53.317234 accept_connection 3 returned 4
 19:27:53.317256 Read 93 bytes
 19:27:53.317266 Process 93 bytes request
 19:27:53.317278 Got request: GET /verifiedserver HTTP/1.1
 19:27:53.317286 Are-we-friendly question received
 19:27:53.317311 Wrote request (93 bytes) input to log/16/server.input
 19:27:53.317327 Identifying ourselves as friends
 19:27:53.317396 Response sent (56 bytes) and written to log/16/server.response
 19:27:53.317405 special request received, no persistency
 19:27:53.317414 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 49664 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1001
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1001
 ==133169== 
 ==133169== Process terminating with default action of signal 4 (SIGILL)
 ==133169==  Illegal opcode at address 0x492B75F
 ==133169==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133169==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133169==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133169==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133169==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133169==    by 0x49908EB: curl_version_info (version.c:600)
 ==133169==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133169==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133169==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133169==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1001
test 1006 [FTP with large number of command response lines (boundary condition)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1006 ../src/curl -q --output log/12/curl1006.out  --include --trace-ascii log/12/trace1006 --trace-time ftp://127.0.0.1:40417/path/1006 > log/12/stdout1006 2> log/12/stderr1006

 1006: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1006
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1006 ../src/curl -q --output log/12/curl1006.out  --include --trace-ascii log/12/trace1006 --trace-time ftp://127.0.0.1:40417/path/1006 > log/12/stdout1006 2> log/12/stderr1006
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:53.071624 ====> Client connect
 19:27:53.071844 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:53.072256 < "USER anonymous"
 19:27:53.072297 > "331 We are happy you popped in![CR][LF]"
 19:27:53.072450 < "PASS ftp@example.com"
 19:27:53.072473 > "230 Welcome you silly person[CR][LF]"
 19:27:53.072605 < "PWD"
 19:27:53.072634 > "257 "/" is current directory[CR][LF]"
 19:27:53.072774 < "EPSV"
 19:27:53.072795 ====> Passive DATA channel requested by client
 19:27:53.072808 DATA sockfilt for passive data channel starting...
 19:27:53.086540 DATA sockfilt for passive data channel started (pid 133502)
 19:27:53.086678 DATA sockfilt for passive data channel listens on port 36131
 19:27:53.086725 > "229 Entering Passive Mode (|||36131|)[CR][LF]"
 19:27:53.086742 Client has been notified that upcoming DATA connection is awaited on port 36131
 19:27:53.092082 Client connects to port 36131
 19:27:53.092143 ====> Client established passive DATA connection on port 36131
 19:27:53.092259 < "TYPE I"
 19:27:53.092298 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:53.095908 < "SIZE verifiedserver"
 19:27:53.095967 > "213 17[CR][LF]"
 19:27:53.102133 < "RETR verifiedserver"
 19:27:53.102201 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:53.102300 =====> Closing passive DATA connection...
 19:27:53.102318 Server disconnects passive DATA connection
 19:27:53.102518 Server disconnected passive DATA connection
 19:27:53.102541 DATA sockfilt for passive data channel quits (pid 133502)
 19:27:53.102813 DATA sockfilt for passive data channel quit (pid 133502)
 19:27:53.102838 =====> Closed passive DATA connection
 19:27:53.102867 > "226 File transfer complete[CR][LF]"
 19:27:53.152228 < "QUIT"
 19:27:53.152294 > "221 bye bye baby[CR][LF]"
 19:27:53.158766 MAIN sockfilt said DISC
 19:27:53.158830 ====> Client disconnected
 19:27:53.158935 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:53.676618 ====> Client connect
 19:27:53.676969 Received DATA (on stdin)
 19:27:53.676982 > 146 bytes data, server => client
 19:27:53.676992 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:53.677001 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:53.677009 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:53.677203 < 16 bytes data, client => server
 19:27:53.677216 'USER anonymous\r\n'
 19:27:53.677418 Received DATA (on stdin)
 19:27:53.677428 > 33 bytes data, server => client
 19:27:53.677438 '331 We are happy you popped in!\r\n'
 19:27:53.677486 < 22 bytes data, client => server
 19:27:53.677496 'PASS ftp@example.com\r\n'
 19:27:53.677586 Received DATA (on stdin)
 19:27:53.677595 > 30 bytes data, server => client
 19:27:53.677604 '230 Welcome you silly person\r\n'
 19:27:53.677648 < 5 bytes data, client => server
 19:27:53.677657 'PWD\r\n'
 19:27:53.677746 Received DATA (on stdin)
 19:27:53.677755 > 30 bytes data, server => client
 19:27:53.677764 '257 "/" is current directory\r\n'
 19:27:53.677816 < 6 bytes data, client => server
 19:27:53.677825 'EPSV\r\n'
 19:27:53.691818 Received DATA (on stdin)
 19:27:53.691842 > 39 bytes data, server => client
 19:27:53.691852 '229 Entering Passive Mode (|||36131|)\r\n'
 19:27:53.692046 < 8 bytes data, client => server
 19:27:53.692060 'TYPE I\r\n'
 19:27:53.697418 Received DATA (on stdin)
 19:27:53.697432 > 33 bytes data, server => client
 19:27:53.697442 '200 I modify TYPE as you wanted\r\n'
 19:27:53.700539 < 21 bytes data, client => server
 19:27:53.700564 'SIZE verifiedserver\r\n'
 19:27:53.703774 Received DATA (on stdin)
 19:27:53.703793 > 8 bytes data, server => client
 19:27:53.703802 '213 17\r\n'
 19:27:53.703889 < 21 bytes data, client => server
 19:27:53.703899 'RETR verifiedserver\r\n'
 19:27:53.707437 Received DATA (on stdin)
 19:27:53.707453 > 29 bytes data, server => client
 19:27:53.707462 '150 Binary junk (17 bytes).\r\n'
 19:27:53.707985 Received DATA (on stdin)
 19:27:53.707996 > 28 bytes data, server => client
 19:27:53.708006 '226 File transfer complete\r\n'
 19:27:53.757119 < 6 bytes data, client => server
 19:27:53.757164 'QUIT\r\n'
 19:27:53.757412 Received DATA (on stdin)
 19:27:53.757425 > 18 bytes data, server => client
 19:27:53.757435 '221 bye bye baby\r\n'
 19:27:53.763773 ====> Client disconnect
 19:27:53.764053 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:53.691259 Running IPv4 version
 19:27:53.691355 Listening on port 36131
 19:27:53.691397 Wrote pid 133502 to log/12/server/ftp_sockdata.pid
 19:27:53.691596 Received PING (on stdin)
 19:27:53.691696 Received PORT (on stdin)
 19:27:53.697114 ====> Client connect
 19:27:53.707512 Received DATA (on stdin)
 19:27:53.707530 > 17 bytes data, server => client
 19:27:53.707540 'WE ROOLZ: 85158\r\n'
 19:27:53.707569 Received DISC (on stdin)
 19:27:53.707579 ====> Client forcibly disconnected
 19:27:53.707661 Received QUIT (on stdin)
 19:27:53.707671 quits
 19:27:53.707750 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 250-AAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1003 ../src/curl -q --output log/4/curl1003.out  --include --trace-ascii log/4/trace1003 --trace-time ftp://127.0.0.1:39739/path/1003 > log/4/stdout1003 2> log/4/stderr1003
AAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250 Finally, here is the response
 Testnum 1006
=== End of file server.cmd
=== Start of file valgrind1006
 ==133532== 
 ==133532== Process terminating with default action of signal 4 (SIGILL)
 ==133532==  Illegal opcode at address 0x492B75F
 ==133532==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133532==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133532==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133532==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133532==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133532==    by 0x49908EB: curl_version_info (version.c:600)
 ==133532==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133532==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133532==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133532==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1006
test 1003 [FTP with excessively large server command response line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1003 ../src/curl -q --output log/4/curl1003.out  --include --trace-ascii log/4/trace1003 --trace-time ftp://127.0.0.1:39739/path/1003 > log/4/stdout1003 2> log/4/stderr1003

 1003: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1003
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1003 ../src/curl -q --output log/4/curl1003.out  --include --trace-ascii log/4/trace1003 --trace-time ftp://127.0.0.1:39739/path/1003 > log/4/stdout1003 2> log/4/stderr1003
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:52.728799 ====> Client connect
 19:27:52.729029 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:52.729359 < "USER anonymous"
 19:27:52.729399 > "331 We are happy you popped in![CR][LF]"
 19:27:52.729594 < "PASS ftp@example.com"
 19:27:52.729624 > "230 Welcome you silly person[CR][LF]"
 19:27:52.729809 < "PWD"
 19:27:52.729847 > "257 "/" is current directory[CR][LF]"
 19:27:52.730040 < "EPSV"
 19:27:52.730071 ====> Passive DATA channel requested by client
 19:27:52.730089 DATA sockfilt for passive data channel starting...
 19:27:52.732066 DATA sockfilt for passive data channel started (pid 133127)
 19:27:52.732167 DATA sockfilt for passive data channel listens on port 42573
 19:27:52.732201 > "229 Entering Passive Mode (|||42573|)[CR][LF]"
 19:27:52.732218 Client has been notified that upcoming DATA connection is awaited on port 42573
 19:27:52.734592 Client connects to port 42573
 19:27:52.734631 ====> Client established passive DATA connection on port 42573
 19:27:52.734733 < "TYPE I"
 19:27:52.734772 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:52.736466 < "SIZE verifiedserver"
 19:27:52.736515 > "213 17[CR][LF]"
 19:27:52.736721 < "RETR verifiedserver"
 19:27:52.736767 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:52.736874 =====> Closing passive DATA connection...
 19:27:52.736897 Server disconnects passive DATA connection
 19:27:52.737187 Server disconnected passive DATA connection
 19:27:52.737220 DATA sockfilt for passive data channel quits (pid 133127)
 19:27:52.737498 DATA sockfilt for passive data channel quit (pid 133127)
 19:27:52.737526 =====> Closed passive DATA connection
 19:27:52.737557 > "226 File transfer complete[CR][LF]"
 19:27:52.785706 < "QUIT"
 19:27:52.785768 > "221 bye bye baby[CR][LF]"
 19:27:52.787081 MAIN sockfilt said DISC
 19:27:52.787179 ====> Client disconnected
 19:27:52.787276 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:52.333812 ====> Client connect
 19:27:52.334198 Received DATA (on stdin)
 19:27:52.334215 > 146 bytes data, server => client
 19:27:52.334227 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:52.334238 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:52.334248 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:52.334349 < 16 bytes data, client => server
 19:27:52.334364 'USER anonymous\r\n'
 19:27:52.334554 Received DATA (on stdin)
 19:27:52.334567 > 33 bytes data, server => client
 19:27:52.334578 '331 We are happy you popped in!\r\n'
 19:27:52.334638 < 22 bytes data, client => server
 19:27:52.334655 'PASS ftp@example.com\r\n'
 19:27:52.334776 Received DATA (on stdin)
 19:27:52.334788 > 30 bytes data, server => client
 19:27:52.334799 '230 Welcome you silly person\r\n'
 19:27:52.334860 < 5 bytes data, client => server
 19:27:52.334874 'PWD\r\n'
 19:27:52.335000 Received DATA (on stdin)
 19:27:52.335013 > 30 bytes data, server => client
 19:27:52.335024 '257 "/" is current directory\r\n'
 19:27:52.335093 < 6 bytes data, client => server
 19:27:52.335106 'EPSV\r\n'
 19:27:52.337368 Received DATA (on stdin)
 19:27:52.337379 > 39 bytes data, server => client
 19:27:52.337388 '229 Entering Passive Mode (|||42573|)\r\n'
 19:27:52.337517 < 8 bytes data, client => server
 19:27:52.337531 'TYPE I\r\n'
 19:27:52.339928 Received DATA (on stdin)
 19:27:52.339943 > 33 bytes data, server => client
 19:27:52.339954 '200 I modify TYPE as you wanted\r\n'
 19:27:52.340023 < 21 bytes data, client => server
 19:27:52.340038 'SIZE verifiedserver\r\n'
 19:27:52.341672 Received DATA (on stdin)
 19:27:52.341688 > 8 bytes data, server => client
 19:27:52.341701 '213 17\r\n'
 19:27:52.341768 < 21 bytes data, client => server
 19:27:52.341783 'RETR verifiedserver\r\n'
 19:27:52.342052 Received DATA (on stdin)
 19:27:52.342066 > 29 bytes data, server => client
 19:27:52.342077 '150 Binary junk (17 bytes).\r\n'
 19:27:52.342712 Received DATA (on stdin)
 19:27:52.342725 > 28 bytes data, server => client
 19:27:52.342736 '226 File transfer complete\r\n'
 19:27:52.390661 < 6 bytes data, client => server
 19:27:52.390692 'QUIT\r\n'
 19:27:52.390926 Received DATA (on stdin)
 19:27:52.390944 > 18 bytes data, server => client
 19:27:52.390954 '221 bye bye baby\r\n'
 19:27:52.392165 ====> Client disconnect
 19:27:52.392244 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:52.336872 Running IPv4 version
 19:27:52.336941 Listening on port 42573
 19:27:52.336991 Wrote pid 133127 to log/4/server/ftp_sockdata.pid
 19:27:52.337152 Received PING (on stdin)
 19:27:52.337234 Received PORT (on stdin)
 19:27:52.339680 ====> Client connect
 19:27:52.342144 Received DATA (on stdin)
 19:27:52.342161 > 17 bytes data, server => client
 19:27:52.342172 'WE ROOLZ: 85249\r\n'
 19:27:52.342205 Received DISC (on stdin)
 19:27:52.342221 ====> Client forcibly disconnected
 19:27:52.342381 Received QUIT (on stdin)
 19:27:52.342395 quits
 19:27:52.342460 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 250 CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1011 ../src/curl -q --output log/5/curl1011.out  --include --trace-ascii log/5/trace1011 --trace-time http://127.0.0.1:37089/blah/1011 -L -d "moo" > log/5/stdout1011 2> log/5/stderr1011
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1010 ../src/curl -q --output log/21/curl1010.out  --include --trace-ascii log/21/trace1010 --trace-time ftp://127.0.0.1:35787//list/this/path/1010/ ftp://127.0.0.1:35787//list/this/path/1010/ --ftp-method nocwd > log/21/stdout1010 2> log/21/stderr1010
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB
 Testnum 1003
=== End of file server.cmd
=== Start of file valgrind1003
 ==133233== 
 ==133233== Process terminating with default action of signal 4 (SIGILL)
 ==133233==  Illegal opcode at address 0x492B75F
 ==133233==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133233==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133233==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133233==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133233==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133233==    by 0x49908EB: curl_version_info (version.c:600)
 ==133233==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133233==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133233==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133233==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1003
test 1011 [HTTP POST with 301 redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1011 ../src/curl -q --output log/5/curl1011.out  --include --trace-ascii log/5/trace1011 --trace-time http://127.0.0.1:37089/blah/1011 -L -d "moo" > log/5/stdout1011 2> log/5/stderr1011

 1011: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1011
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1011 ../src/curl -q --output log/5/curl1011.out  --include --trace-ascii log/5/trace1011 --trace-time http://127.0.0.1:37089/blah/1011 -L -d "moo" > log/5/stdout1011 2> log/5/stderr1011
=== End of file commands.log
=== Start of file http_server.log
 19:27:53.307115 ====> Client connect
 19:27:53.307157 accept_connection 3 returned 4
 19:27:53.307180 Read 93 bytes
 19:27:53.307189 Process 93 bytes request
 19:27:53.307201 Got request: GET /verifiedserver HTTP/1.1
 19:27:53.307209 Are-we-friendly question received
 19:27:53.307238 Wrote request (93 bytes) input to log/5/server.input
 19:27:53.307252 Identifying ourselves as friends
 19:27:53.307325 Response sent (56 bytes) and written to log/5/server.response
 19:27:53.307333 special request received, no persistency
 19:27:53.307340 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 39938 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1011
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1011
 ==133676== 
 ==133676== Process terminating with default action of signal 4 (SIGILL)
 ==133676==  Illegal opcode at address 0x492B75F
 ==133676==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133676==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133676==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133676==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133676==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133676==    by 0x49908EB: curl_version_info (version.c:600)
 ==133676==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133676==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133676==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133676==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1011
test 1010 [FTP dir list nocwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1010 ../src/curl -q --output log/21/curl1010.out  --include --trace-ascii log/21/trace1010 --trace-time ftp://127.0.0.1:35787//list/this/path/1010/ ftp://127.0.0.1:35787//list/this/path/1010/ --ftp-method nocwd > log/21/stdout1010 2> log/21/stderr1010

 1010: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1010
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1010 ../src/curl -q --output log/21/curl1010.out  --include --trace-ascii log/21/trace1010 --trace-time ftp://127.0.0.1:35787//list/this/path/1010/ ftp://127.0.0.1:35787//list/this/path/1010/ --ftp-method nocwd > log/21/stdout1010 2> log/21/stderr1010
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:53.602025 ====> Client connect
 19:27:53.602264 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:53.602563 < "USER anonymous"
 19:27:53.602602 > "331 We are happy you popped in![CR][LF]"
 19:27:53.602778 < "PASS ftp@example.com"
 19:27:53.602805 > "230 Welcome you silly person[CR][LF]"
 19:27:53.602942 < "PWD"
 19:27:53.602970 > "257 "/" is current directory[CR][LF]"
 19:27:53.603111 < "EPSV"
 19:27:53.603134 ====> Passive DATA channel requested by client
 19:27:53.603146 DATA sockfilt for passive data channel starting...
 19:27:53.614102 DATA sockfilt for passive data channel started (pid 133632)
 19:27:53.614249 DATA sockfilt for passive data channel listens on port 37113
 19:27:53.614297 > "229 Entering Passive Mode (|||37113|)[CR][LF]"
 19:27:53.614312 Client has been notified that upcoming DATA connection is awaited on port 37113
 19:27:53.614600 Client connects to port 37113
 19:27:53.614629 ====> Client established passive DATA connection on port 37113
 19:27:53.614713 < "TYPE I"
 19:27:53.614741 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:53.614893 < "SIZE verifiedserver"
 19:27:53.614928 > "213 17[CR][LF]"
 19:27:53.615067 < "RETR verifiedserver"
 19:27:53.615098 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:53.615183 =====> Closing passive DATA connection...
 19:27:53.615199 Server disconnects passive DATA connection
 19:27:53.615416 Server disconnected passive DATA connection
 19:27:53.615444 DATA sockfilt for passive data channel quits (pid 133632)
 19:27:53.615699 DATA sockfilt for passive data channel quit (pid 133632)
 19:27:53.615722 =====> Closed passive DATA connection
 19:27:53.615750 > "226 File transfer complete[CR][LF]"
 19:27:53.665532 < "QUIT"
 19:27:53.665586 > "221 bye bye baby[CR][LF]"
 19:27:53.666591 MAIN sockfilt said DISC
 19:27:53.666629 ====> Client disconnected
 19:27:53.666708 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:53.206252 ====> Client connect
 19:27:53.207350 Received DATA (on stdin)
 19:27:53.207368 > 146 bytes data, server => client
 19:27:53.207379 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:53.207389 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:53.207398 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:53.207CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1012 ../src/curl -q --output log/3/curl1012.out  --include --trace-ascii log/3/trace1012 --trace-time http://127.0.0.1:36161/blah/1012 -L -d "moo" --post301 > log/3/stdout1012 2> log/3/stderr1012
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1013 ../src/curl -q --output log/22/curl1013.out  --include --trace-ascii log/22/trace1013 --trace-time --version > log/22/stdout1013 2> log/22/stderr1013
Use of uninitialized value $1 in split at /startdir/src/curl/tests/libtest/test1013.pl line 47.
Mismatch in protocols lists:
curl:        
curl-config: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt mqtts pop3 pop3s rtsp scp sftp smtp smtps telnet tftp ws wss
CMD (256): /usr/bin/perl /startdir/src/curl/tests/libtest/test1013.pl ../curl-config log/22/stdout1013 protocols
482 < 16 bytes data, client => server
 19:27:53.207493 'USER anonymous\r\n'
 19:27:53.207673 Received DATA (on stdin)
 19:27:53.207685 > 33 bytes data, server => client
 19:27:53.207695 '331 We are happy you popped in!\r\n'
 19:27:53.207749 < 22 bytes data, client => server
 19:27:53.207759 'PASS ftp@example.com\r\n'
 19:27:53.207871 Received DATA (on stdin)
 19:27:53.207880 > 30 bytes data, server => client
 19:27:53.207889 '230 Welcome you silly person\r\n'
 19:27:53.207935 < 5 bytes data, client => server
 19:27:53.207944 'PWD\r\n'
 19:27:53.208034 Received DATA (on stdin)
 19:27:53.208043 > 30 bytes data, server => client
 19:27:53.208053 '257 "/" is current directory\r\n'
 19:27:53.208106 < 6 bytes data, client => server
 19:27:53.208115 'EPSV\r\n'
 19:27:53.219388 Received DATA (on stdin)
 19:27:53.219404 > 39 bytes data, server => client
 19:27:53.219415 '229 Entering Passive Mode (|||37113|)\r\n'
 19:27:53.219589 < 8 bytes data, client => server
 19:27:53.219602 'TYPE I\r\n'
 19:27:53.219808 Received DATA (on stdin)
 19:27:53.219818 > 33 bytes data, server => client
 19:27:53.219828 '200 I modify TYPE as you wanted\r\n'
 19:27:53.219880 < 21 bytes data, client => server
 19:27:53.219891 'SIZE verifiedserver\r\n'
 19:27:53.219993 Received DATA (on stdin)
 19:27:53.220002 > 8 bytes data, server => client
 19:27:53.220011 '213 17\r\n'
 19:27:53.220058 < 21 bytes data, client => server
 19:27:53.220067 'RETR verifiedserver\r\n'
 19:27:53.220265 Received DATA (on stdin)
 19:27:53.220275 > 29 bytes data, server => client
 19:27:53.220285 '150 Binary junk (17 bytes).\r\n'
 19:27:53.220816 Received DATA (on stdin)
 19:27:53.220828 > 28 bytes data, server => client
 19:27:53.220838 '226 File transfer complete\r\n'
 19:27:53.270407 < 6 bytes data, client => server
 19:27:53.270438 'QUIT\r\n'
 19:27:53.270652 Received DATA (on stdin)
 19:27:53.270663 > 18 bytes data, server => client
 19:27:53.270672 '221 bye bye baby\r\n'
 19:27:53.271598 ====> Client disconnect
 19:27:53.271769 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:53.214427 Running IPv4 version
 19:27:53.214505 Listening on port 37113
 19:27:53.214685 Wrote pid 133632 to log/21/server/ftp_sockdata.pid
 19:27:53.219086 Received PING (on stdin)
 19:27:53.219217 Received PORT (on stdin)
 19:27:53.219622 ====> Client connect
 19:27:53.220309 Received DATA (on stdin)
 19:27:53.220320 > 17 bytes data, server => client
 19:27:53.220329 'WE ROOLZ: 84694\r\n'
 19:27:53.220352 Received DISC (on stdin)
 19:27:53.220362 ====> Client forcibly disconnected
 19:27:53.220522 Received QUIT (on stdin)
 19:27:53.220532 quits
 19:27:53.220601 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1010
=== End of file server.cmd
=== Start of file valgrind1010
 ==133667== 
 ==133667== Process terminating with default action of signal 4 (SIGILL)
 ==133667==  Illegal opcode at address 0x492B75F
 ==133667==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133667==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133667==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133667==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133667==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133667==    by 0x49908EB: curl_version_info (version.c:600)
 ==133667==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133667==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133667==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133667==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1010
test 1012 [HTTP POST with 301 redirect and --post301]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1012 ../src/curl -q --output log/3/curl1012.out  --include --trace-ascii log/3/trace1012 --trace-time http://127.0.0.1:36161/blah/1012 -L -d "moo" --post301 > log/3/stdout1012 2> log/3/stderr1012

 1012: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1012
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1012 ../src/curl -q --output log/3/curl1012.out  --include --trace-ascii log/3/trace1012 --trace-time http://127.0.0.1:36161/blah/1012 -L -d "moo" --post301 > log/3/stdout1012 2> log/3/stderr1012
=== End of file commands.log
=== Start of file http_server.log
 19:27:54.330010 ====> Client connect
 19:27:54.330049 accept_connection 3 returned 4
 19:27:54.337249 Read 93 bytes
 19:27:54.337275 Process 93 bytes request
 19:27:54.337288 Got request: GET /verifiedserver HTTP/1.1
 19:27:54.337297 Are-we-friendly question received
 19:27:54.337348 Wrote request (93 bytes) input to log/3/server.input
 19:27:54.337369 Identifying ourselves as friends
 19:27:54.337440 Response sent (56 bytes) and written to log/3/server.response
 19:27:54.337451 special request received, no persistency
 19:27:54.337460 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36358 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1012
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1012
 ==133712== 
 ==133712== Process terminating with default action of signal 4 (SIGILL)
 ==133712==  Illegal opcode at address 0x492B75F
 ==133712==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133712==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133712==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133712==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133712==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133712==    by 0x49908EB: curl_version_info (version.c:600)
 ==133712==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133712==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1012
test 1013 [Compare curl --version with curl-config --protocols]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1013 ../src/curl -q --output log/22/curl1013.out  --include --trace-ascii log/22/trace1013 --trace-time --version > log/22/stdout1013 2> log/22/stderr1013
postcheck /usr/bin/perl /startdir/src/curl/tests/libtest/test1013.pl ../curl-config log/22/stdout1013 protocols
 1013: postcheck FAILED
== Contents of files in the log/22/ directory after test 1013
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1013 ../src/curl -q --output log/22/curl1013.out  --include --trace-ascii log/22/trace1013 --trace-time --version > log/22/stdout1013 2> log/22/stderr1013
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1013
=== End of file server.cmd
=== Start of file valgrind1013
 ==133821== 
 ==133821== Process terminating with default action of signal 4 (SIGILL)
 ==133821==  Illegal opcode at address 0x492B75F
 ==133821==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1007 ../src/curl -q --output log/1/curl1007.out  --include --trace-ascii log/1/trace1007 --trace-time -T log/1/test1007.txt tftp://127.0.0.1:35053//invalid-file -sS > log/1/stdout1007 2> log/1/stderr1007
 ==133821==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133821==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133821==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133821==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133821==    by 0x49908EB: curl_version_info (version.c:600)
 ==133821==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133821==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133821==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133821==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1013
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1014 ../src/curl -q --output log/19/curl1014.out  --include --trace-ascii log/19/trace1014 --trace-time --version > log/19/stdout1014 2> log/19/stderr1014
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1015 ../src/curl -q --output log/14/curl1015.out  --include --trace-ascii log/14/trace1015 --trace-time http://127.0.0.1:45467/1015 --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@log/14/1015.txt" --data-urlencode @log/14/1015.txt > log/14/stdout1015 2> log/14/stderr1015
Use of uninitialized value $1 in split at /startdir/src/curl/tests/libtest/test1013.pl line 47.
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1016 ../src/curl -q --trace-ascii log/15/trace1016 --trace-time -r 1-4 file://localhost/startdir/src/build-curl/tests/log/15/test1016.txt > log/15/stdout1016 2> log/15/stderr1016
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/1/server/tftp_server.pid" --portfile "log/1/server/tftp_server.port" --logfile "log/1/tftp_server.log" --logdir "log/1" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 133606 port 35053
* pid tftp => 133606 133606
test 1007 [TFTP send with invalid permission on server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1007 ../src/curl -q --output log/1/curl1007.out  --include --trace-ascii log/1/trace1007 --trace-time -T log/1/test1007.txt tftp://127.0.0.1:35053//invalid-file -sS > log/1/stdout1007 2> log/1/stderr1007

 1007: stderr FAILED:
--- log/1/check-expected	2026-10-15 19:27:56.769451557 +0000
+++ log/1/check-generated	2026-10-15 19:27:56.766730537 +0000
@@ -1 +0,0 @@
-curl: (69) TFTP: Access Violation[CR][LF]
== Contents of files in the log/1/ directory after test 1007
=== Start of file check-expected
 curl: (69) TFTP: Access Violation[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1007 ../src/curl -q --output log/1/curl1007.out  --include --trace-ascii log/1/trace1007 --trace-time -T log/1/test1007.txt tftp://127.0.0.1:35053//invalid-file -sS > log/1/stdout1007 2> log/1/stderr1007
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1007
=== End of file server.cmd
=== Start of file test1007.txt
 This data will not be sent
=== End of file test1007.txt
=== Start of file tftp_server.log
 19:27:53.036004 Wrote pid 133606 to log/1/server/tftp_server.pid
 19:27:53.036059 Wrote port 35053 to log/1/server/tftp_server.port
 19:27:53.036070 Running IPv4 version on port UDP/35053
=== End of file tftp_server.log
=== Start of file valgrind1007
 ==133947== 
 ==133947== Process terminating with default action of signal 4 (SIGILL)
 ==133947==  Illegal opcode at address 0x492B75F
 ==133947==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133947==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133947==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133947==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133947==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133947==    by 0x49908EB: curl_version_info (version.c:600)
 ==133947==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133947==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133947==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133947==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1007
test 1015 [--data-urlencode]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1015 ../src/curl -q --output log/14/curl1015.out  --include --trace-ascii log/14/trace1015 --trace-time http://127.0.0.1:45467/1015 --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@log/14/1015.txt" --data-urlencode @log/14/1015.txt > log/14/stdout1015 2> log/14/stderr1015

 1015: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1015
=== Start of file 1015.txt
 content to _?!#$'|<>
=== End of file 1015.txt
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1015 ../src/curl -q --output log/14/curl1015.out  --include --trace-ascii log/14/trace1015 --trace-time http://127.0.0.1:45467/1015 --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@log/14/1015.txt" --data-urlencode @log/14/1015.txt > log/14/stdout1015 2> log/14/stderr1015
=== End of file commands.log
=== Start of file http_server.log
 19:27:54.083586 ====> Client connect
 19:27:54.083768 accept_connection 3 returned 4
 19:27:54.084187 Read 93 bytes
 19:27:54.084205 Process 93 bytes request
 19:27:54.084220 Got request: GET /verifiedserver HTTP/1.1
 19:27:54.084229 Are-we-friendly question received
 19:27:54.084265 Wrote request (93 bytes) input to log/14/server.input
 19:27:54.084286 Identifying ourselves as friends
 19:27:54.084361 Response sent (56 bytes) and written to log/14/server.response
 19:27:54.084374 special request received, no persistency
 19:27:54.084383 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 41642 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1015
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1015
 ==133995== 
 ==133995== Process terminating with default action of signal 4 (SIGILL)
 ==133995==  Illegal opcode at address 0x492B75F
 ==133995==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133995==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133995==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133995==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133995==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133995==    by 0x49908EB: curl_version_info (version.c:600)
 ==133995==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133995==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133995==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133995==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1015
CMD (256): /usr/bin/perl /startdir/src/curl/tests/libtest/test1013.pl ../curl-config log/19/stdout1014 features > log/19/result1014
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1009 ../src/curl -q --output log/6/curl1009.out  --include --trace-ascii log/6/trace1009 --trace-time tftp://127.0.0.1:56094//1009 --local-port 44444-45444 > log/6/stdout1009 2> log/6/stderr1009
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1017 ../src/curl -q --trace-ascii log/8/trace1017 --trace-time -r 0-3 file://localhost/startdir/src/build-curl/tests/log/8/test1017.txt > log/8/stdout1017 2> log/8/stderr1017
test 1016 [X-Y range on a file:// URL to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1016 ../src/curl -q --trace-ascii log/15/trace1016 --trace-time -r 1-4 file://localhost/startdir/src/build-curl/tests/log/15/test1016.txt > log/15/stdout1016 2> log/15/stderr1016

 1016: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:27:56.919282610 +0000
+++ log/15/check-generated	2026-10-15 19:27:56.916743285 +0000
@@ -1 +0,0 @@
-2345
== Contents of files in the log/15/ directory after test 1016
=== Start of file check-expected
 2345
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1016 ../src/curl -q --trace-ascii log/15/trace1016 --trace-time -r 1-4 file://localhost/startdir/src/build-curl/tests/log/15/test1016.txt > log/15/stdout1016 2> log/15/stderr1016
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1016
=== End of file server.cmd
=== Start of file test1016.txt
 1234567890
=== End of file test1016.txt
=== Start of file valgrind1016
 ==134089== 
 ==134089== Process terminating with default action of signal 4 (SIGILL)
 ==134089==  Illegal opcode at address 0x492B75F
 ==134089==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134089==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134089==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134089==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134089==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134089==    by 0x49908EB: curl_version_info (version.c:600)
 ==134089==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134089==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134089==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134089==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1016
test 1014 [Compare curl --version with curl-config --features]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1014 ../src/curl -q --output log/19/curl1014.out  --include --trace-ascii log/19/trace1014 --trace-time --version > log/19/stdout1014 2> log/19/stderr1014
postcheck /usr/bin/perl /startdir/src/curl/tests/libtest/test1013.pl ../curl-config log/19/stdout1014 features > log/19/result1014
 1014: postcheck FAILED
== Contents of files in the log/19/ directory after test 1014
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1014 ../src/curl -q --output log/19/curl1014.out  --include --trace-ascii log/19/trace1014 --trace-time --version > log/19/stdout1014 2> log/19/stderr1014
=== End of file commands.log
=== Start of file result1014
 Mismatch in features lists:
 curl:        
 curl-config: AsynchDNS GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile PSL SPNEGO SSL UnixSockets alt-svc brotli libz threadsafe zstd
=== End of file result1014
=== Start of file server.cmd
 Testnum 1014
=== End of file server.cmd
=== Start of file valgrind1014
 ==133894== 
 ==133894== Process terminating with default action of signal 4 (SIGILL)
 ==133894==  Illegal opcode at address 0x492B75F
 ==133894==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133894==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133894==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133894==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133894==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133894==    by 0x49908EB: curl_version_info (version.c:600)
 ==133894==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133894==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133894==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133894==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1014
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/6/server/tftp_server.pid" --portfile "log/6/server/tftp_server.port" --logfile "log/6/tftp_server.log" --logdir "log/6" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 133608 port 56094
* pid tftp => 133608 133608
test 1009 [TFTP retrieve with --local-port]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1009 ../src/curl -q --output log/6/curl1009.out  --include --trace-ascii log/6/trace1009 --trace-time tftp://127.0.0.1:56094//1009 --local-port 44444-45444 > log/6/stdout1009 2> log/6/stderr1009

 1009: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1009
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1009 ../src/curl -q --output log/6/curl1009.out  --include --trace-ascii log/6/trace1009 --trace-time tftp://127.0.0.1:56094//1009 --local-port 44444-45444 > log/6/stdout1009 2> log/6/stderr1009
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1009
=== End of file server.cmd
=== Start of file tftp_server.log
 19:27:53.094339 Wrote pid 133608 to log/6/server/tftp_server.pid
 19:27:53.094395 Wrote port 56094 to log/6/server/tftp_server.port
 19:27:53.094406 Running IPv4 version on port UDP/56094
=== End of file tftp_server.log
=== Start of file valgrind1009
 ==133967== 
 ==133967== Process terminating with default action of signal 4 (SIGILL)
 ==133967==  Illegal opcode at address 0x492B75F
 ==133967==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==133967==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==133967==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==133967==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==133967==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==133967==    by 0x49908EB: curl_version_info (version.c:600)
 ==133967==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==133967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==133967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==133967==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1009
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1022 ../src/curl -q --output log/2/curl1022.out  --include --trace-ascii log/2/trace1022 --trace-time --version > log/2/stdout1022 2> log/2/stderr1022
Use of uninitialized value $_ in scalar chomp at /startdir/src/curl/tests/libtest/test1022.pl line 39.
Use of uninitialized value $_ in pattern match (m//) at /startdir/src/curl/tests/libtest/test1022.pl line 40.
Use of uninitialized value $version in string ne at /startdir/src/curl/tests/libtest/test1022.pl line 73.
Use of uninitialized value $version in concatenation (.) or string at /startdir/src/curl/tests/libtest/test1022.pl line 76.
Mismatch in --version:
curl:        
curl-config: 8.23.0
CMD (256): /usr/bin/perl /startdir/src/curl/tests/libtest/test1022.pl ../curl-config log/2/stdout1022 version
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1019 ../src/curl -q --trace-ascii log/18/trace1019 --trace-time -r 7- file://localhost/startdir/src/build-curl/tests/log/18/test1019.txt > log/18/stdout1019 2> log/18/stderr1019
test 1017 [0-Y range on a file:// URL to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1017 ../src/curl -q --trace-ascii log/8/trace1017 --trace-time -r 0-3 file://localhost/startdir/src/build-curl/tests/log/8/test1017.txt > log/8/stdout1017 2> log/8/stderr1017

 1017: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:27:57.216007648 +0000
+++ log/8/check-generated	2026-10-15 19:27:57.213434821 +0000
@@ -1 +0,0 @@
-1234
== Contents of files in the log/8/ directory after test 1017
=== Start of file check-expected
 1234
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1017 ../src/curl -q --trace-ascii log/8/trace1017 --trace-time -r 0-3 file://localhost/startdir/src/build-curl/tests/log/8/test1017.txt > log/8/stdout1017 2> log/8/stderr1017
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1017
=== End of file server.cmd
=== Start of file test1017.txt
 1234567890
=== End of file test1017.txt
=== Start of file valgrind1017
 ==134172== 
 ==134172== Process terminating with default action of signal 4 (SIGILL)
 ==134172==  Illegal opcode at address 0x492B75F
 ==134172==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134172==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134172==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134172==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134172==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134172==    by 0x49908EB: curl_version_info (version.c:600)
 ==134172==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134172==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134172==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134172==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1017
test 1022 [Compare curl --version with curl-config --version]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1022 ../src/curl -q --output log/2/curl1022.out  --include --trace-ascii log/2/trace1022 --trace-time --version > log/2/stdout1022 2> log/2/stderr1022
postcheck /usr/bin/perl /startdir/src/curl/tests/libtest/test1022.pl ../curl-config log/2/stdout1022 version
 1022: postcheck FAILED
== Contents of files in the log/2/ directory after test 1022
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1022 ../src/curl -q --output log/2/curl1022.out  --include --trace-ascii log/2/trace1022 --trace-time --version > log/2/stdout1022 2> log/2/stderr1022
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1022
=== End of file server.cmd
=== Start of file valgrind1022
 ==134220== 
 ==134220== Process terminating with default action of signal 4 (SIGILL)
 ==134220==  Illegal opcode at address 0x492B75F
 ==134220==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134220==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134220==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134220==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134220==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134220==    by 0x49908EB: curl_version_info (version.c:600)
 ==134220==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134220==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134220==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134220==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1022
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1018 ../src/curl -q --trace-ascii log/10/trace1018 --trace-time -r 4-4 file://localhost/startdir/src/build-curl/tests/log/10/test1018.txt > log/10/stdout1018 2> log/10/stderr1018
test 1019 [X- range on a file:// URL to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1019 ../src/curl -q --trace-ascii log/18/trace1019 --trace-time -r 7- file://localhost/startdir/src/build-curl/tests/log/18/test1019.txt > log/18/stdout1019 2> log/18/stderr1019

 1019: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:27:57.408578108 +0000
+++ log/18/check-generated	2026-10-15 19:27:57.407552038 +0000
@@ -1,2 +0,0 @@
-890[LF]
-1234567890[LF]
== Contents of files in the log/18/ directory after test 1019
=== Start of file check-expected
 890[LF]
 1234567890[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1019 ../src/curl -q --trace-ascii log/18/trace1019 --trace-time -r 7- file://localhost/startdir/src/build-curl/tests/log/18/test1019.txt > log/18/stdout1019 2> log/18/stderr1019
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1019
=== End of file server.cmd
=== Start of file test1019.txt
 1234567890
 1234567890
=== End of file test1019.txt
=== Start of file valgrind1019
 ==134200== 
 ==134200== Process terminating with default action of signal 4 (SIGILL)
 ==134200==  Illegal opcode at address 0x492B75F
 ==134200==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134200==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134200==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134200==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134200==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134200==    by 0x49908EB: curl_version_info (version.c:600)
 ==134200==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134200==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134200==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1019
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1024 ../src/curl -q --output log/9/curl1024.out  --include --trace-ascii log/9/trace1024 --trace-time http://127.0.0.1:43733/want/1024 -L -c log/9/jar1024 > log/9/stdout1024 2> log/9/stderr1024
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1020 ../src/curl -q --trace-ascii log/24/trace1020 --trace-time -r -9 file://localhost/startdir/src/build-curl/tests/log/24/test1020.txt > log/24/stdout1020 2> log/24/stderr1020
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1027 ../src/curl -q --output log/13/curl1027.out  --include --trace-ascii log/13/trace1027 --trace-time --help > log/13/stdout1027 2> log/13/stderr1027
test 1018 [X-X range on a file:// URL to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1018 ../src/curl -q --trace-ascii log/10/trace1018 --trace-time -r 4-4 file://localhost/startdir/src/build-curl/tests/log/10/test1018.txt > log/10/stdout1018 2> log/10/stderr1018

 1018: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:27:57.441150632 +0000
+++ log/10/check-generated	2026-10-15 19:27:57.436786770 +0000
@@ -1 +0,0 @@
-5
== Contents of files in the log/10/ directory after test 1018
=== Start of file check-expected
 5
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1018 ../src/curl -q --trace-ascii log/10/trace1018 --trace-time -r 4-4 file://localhost/startdir/src/build-curl/tests/log/10/test1018.txt > log/10/stdout1018 2> log/10/stderr1018
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1018
=== End of file server.cmd
=== Start of file test1018.txt
 1234567890
=== End of file test1018.txt
=== Start of file valgrind1018
 ==134193== 
 ==134193== Process terminating with default action of signal 4 (SIGILL)
 ==134193==  Illegal opcode at address 0x492B75F
 ==134193==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134193==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134193==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134193==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134193==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134193==    by 0x49908EB: curl_version_info (version.c:600)
 ==134193==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134193==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1018
test 1024 [HTTP Location: following with cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1024 ../src/curl -q --output log/9/curl1024.out  --include --trace-ascii log/9/trace1024 --trace-time http://127.0.0.1:43733/want/1024 -L -c log/9/jar1024 > log/9/stdout1024 2> log/9/stderr1024

 1024: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1024
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1024 ../src/curl -q --output log/9/curl1024.out  --include --trace-ascii log/9/trace1024 --trace-time http://127.0.0.1:43733/want/1024 -L -c log/9/jar1024 > log/9/stdout1024 2> log/9/stderr1024
=== End of file commands.log
=== Start of file http_server.log
 19:27:54.616111 ====> Client connect
 19:27:54.616146 accept_connection 3 returned 4
 19:27:54.616169 Read 93 bytes
 19:27:54.616178 Process 93 bytes request
 19:27:54.616191 Got request: GET /verifiedserver HTTP/1.1
 19:27:54.616199 Are-we-friendly question received
 19:27:54.616224 Wrote request (93 bytes) input to log/9/server.input
 19:27:54.616240 Identifying ourselves as friends
 19:27:54.616300 Response sent (56 bytes) and written to log/9/server.response
 19:27:54.616309 special request received, no persistency
 19:27:54.616317 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 37420 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1024
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1024
 ==134440== 
 ==134440== Process terminating with default action of signal 4 (SIGILL)
 ==134440==  Illegal opcode at address 0x492B75F
 ==134440==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134440==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134440==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134440==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134440==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134440==    by 0x49908EB: curl_version_info (version.c:600)
 ==134440==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134440==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134440==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134440==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1024
CMD (256): /usr/bin/perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(Usage: curl )|(--version\s*Show version)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/13/stdout1027
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1028 ../src/curl -q --include --trace-ascii log/7/trace1028 --trace-time http://127.0.0.1:40859/10280001 -L > log/7/stdout1028 2> log/7/stderr1028
test 1020 [-Y range on a file:// URL to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1020 ../src/curl -q --trace-ascii log/24/trace1020 --trace-time -r -9 file://localhost/startdir/src/build-curl/tests/log/24/test1020.txt > log/24/stdout1020 2> log/24/stderr1020

 1020: stdout FAILED:
--- log/24/check-expected	2026-10-15 19:27:57.485872989 +0000
+++ log/24/check-generated	2026-10-15 19:27:57.483457327 +0000
@@ -1 +0,0 @@
-34567890[LF]
== Contents of files in the log/24/ directory after test 1020
=== Start of file check-expected
 34567890[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1020 ../src/curl -q --trace-ascii log/24/trace1020 --trace-time -r -9 file://localhost/startdir/src/build-curl/tests/log/24/test1020.txt > log/24/stdout1020 2> log/24/stderr1020
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1020
=== End of file server.cmd
=== Start of file test1020.txt
 1234567890
 1234567890
=== End of file test1020.txt
=== Start of file valgrind1020
 ==134202== 
 ==134202== Process terminating with default action of signal 4 (SIGILL)
 ==134202==  Illegal opcode at address 0x492B75F
 ==134202==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134202==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134202==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134202==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134202==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134202==    by 0x49908EB: curl_version_info (version.c:600)
 ==134202==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134202==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134202==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134202==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1020
test 1027 [curl --help]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1027 ../src/curl -q --output log/13/curl1027.out  --include --trace-ascii log/13/trace1027 --trace-time --help > log/13/stdout1027 2> log/13/stderr1027
postcheck /usr/bin/perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(Usage: curl )|(--version\s*Show version)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/13/stdout1027
 1027: postcheck FAILED
== Contents of files in the log/13/ directory after test 1027
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1027 ../src/curl -q --output log/13/curl1027.out  --include --trace-ascii log/13/trace1027 --trace-time --help > log/13/stdout1027 2> log/13/stderr1027
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1027
=== End of file server.cmd
=== Start of file valgrind1027
 ==134494== 
 ==134494== Process terminating with default action of signal 4 (SIGILL)
 ==134494==  Illegal opcode at address 0x492B75F
 ==134494==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134494==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134494==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134494==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134494==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134494==    by 0x49908EB: curl_version_info (version.c:600)
 ==134494==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134494==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134494==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134494==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1027
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1023 ../src/curl -q --output log/23/curl1023.out  --include --trace-ascii log/23/trace1023 --trace-time --version > log/23/stdout1023 2> log/23/stderr1023
Use of uninitialized value $_ in scalar chomp at /startdir/src/curl/tests/libtest/test1022.pl line 39.
Use of uninitialized value $_ in pattern match (m//) at /startdir/src/curl/tests/libtest/test1022.pl line 40.
Use of uninitialized value $version in substitution (s///) at /startdir/src/curl/tests/libtest/test1022.pl line 69, <CURLCONFIG> line 1.
Use of uninitialized value $version in string ne at /startdir/src/curl/tests/libtest/test1022.pl line 73.
Use of uninitialized value $version in concatenation (.) or string at /startdir/src/curl/tests/libtest/test1022.pl line 76.
Mismatch in --version:
curl:        
curl-config: 8.23.0
CMD (256): /usr/bin/perl /startdir/src/curl/tests/libtest/test1022.pl ../curl-config log/23/stdout1023 vernum
test 1028 [HTTP Location: redirect to FTP URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1028 ../src/curl -q --include --trace-ascii log/7/trace1028 --trace-time http://127.0.0.1:40859/10280001 -L > log/7/stdout1028 2> log/7/stderr1028

 1028: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:27:57.656862318 +0000
+++ log/7/check-generated	2026-10-15 19:27:57.653471497 +0000
@@ -1,15 +0,0 @@
-HTTP/1.1 302 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake swsclose[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-Location: ftp://127.0.0.1:44283/10280002[CR][LF]
-Content-Length: 0[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
== Contents of files in the log/7/ directory after test 1028
=== Start of file check-expected
 HTTP/1.1 302 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake swsclose[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 Location: ftp://127.0.0.1:44283/10280002[CR][LF]
 Content-Length: 0[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1028 ../src/curl -q --include --trace-ascii log/7/trace1028 --trace-time http://127.0.0.1:40859/10280001 -L > log/7/stdout1028 2> log/7/stderr1028
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:55.418704 ====> Client connect
 19:27:55.419001 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:55.419393 < "USER anonymous"
 19:27:55.419440 > "331 We are happy you popped in![CR][LF]"
 19:27:55.419647 < "PASS ftp@example.com"
 19:27:55.419682 > "230 Welcome you silly person[CR][LF]"
 19:27:55.419862 < "PWD"
 19:27:55.419897 > "257 "/" is current directory[CR][LF]"
 19:27:55.420078 < "EPSV"
 19:27:55.420106 ====> Passive DATA channel requested by client
 19:27:55.420121 DATA sockfilt for passive data channel starting...
 19:27:55.428620 DATA sockfilt for passive data channel started (pid 134774)
 19:27:55.428813 DATA sockfilt for passive data channel listens on port 36695
 19:27:55.428860 > "229 Entering Passive Mode (|||36695|)[CR][LF]"
 19:27:55.428876 Client has been notified that upcoming DATA connection is awaited on port 36695
 19:27:55.429208 Client connects to port 36695
 19:27:55.429237 ====> Client established passive DATA connection on port 36695
 19:27:55.429321 < "TYPE I"
 19:27:55.429351 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:55.429496 < "SIZE verifiedserver"
 19:27:55.429531 > "213 17[CR][LF]"
 19:27:55.429667 < "RETR verifiedserver"
 19:27:55.429699 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:55.429784 =====> Closing passive DATA connection...
 19:27:55.429800 Server disconnects passive DATA connection
 19:27:55.429941 Server disconnected passive DATA connection
 19:27:55.429964 DATA sockfilt for passive data channel quits (pid 134774)
 19:27:55.430221 DATA sockfilt for passive data channel quit (pid 134774)
 19:27:55.430242 =====> Closed passive DATA connection
 19:27:55.430267 > "226 File transfer complete[CR][LF]"
 19:27:55.479124 < "QUIT"
 19:27:55.479189 > "221 bye bye baby[CR][LF]"
 19:27:55.480431 MAIN sockfilt said DISC
 19:27:55.480472 ====> Client disconnected
 19:27:55.480604 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:56.008356 ====> Client connect
 19:27:56.023942 Received DATA (on stdin)
 19:27:56.023966 > 146 bytes data, server => client
 19:27:56.023978 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:56.023988 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:56.023998 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:56.024148 < 16 bytes data, client => server
 19:27:56.024165 'USER anonymous\r\n'
 19:27:56.024357 Received DATA (on stdin)
 19:27:56.024370 > 33 bytes data, server => client
 19:27:56.024381 '331 We are happy you popped in!\r\n'
 19:27:56.024448 < 22 bytes data, client => server
 19:27:56.024462 'PASS ftp@example.com\r\n'
 19:27:56.024594 Received DATA (on stdin)
 19:27:56.024606 > 30 bytes data, server => client
 19:27:56.024615 '230 Welcome you silly person\r\n'
 19:27:56.024676 < 5 bytes data, client => server
 19:27:56.024688 'PWD\r\n'
 19:27:56.024806 Received DATA (on stdin)
 19:27:56.024818 > 30 bytes data, server => client
 19:27:56.024828 '257 "/" is current directory\r\n'
 19:27:56.024896 < 6 bytes data, client => server
 19:27:56.024908 'EPSV\r\n'
 19:27:56.033808 Received DATA (on stdin)
 19:27:56.033826 > 39 bytes data, server => client
 19:27:56.033835 '229 Entering Passive Mode (|||36695|)\r\n'
 19:27:56.034038 < 8 bytes data, client => server
 19:27:56.034052 'TYPE I\r\n'
 19:27:56.034257 Received DATA (on stdin)
 19:27:56.034267 > 33 bytes data, server => client
 19:27:56.034277 '200 I modify TYPE as you wanted\r\n'
 19:27:56.034326 < 21 bytes data, client => server
 19:27:56.034335 'SIZE verifiedserver\r\n'
 19:27:56.034436 Received DATA (on stdin)
 19:27:56.034445 > 8 bytes data, server => client
 19:27:56.034453 '213 17\r\n'
 19:27:56.034499 < 21 bytes data, client => server
 19:27:56.034509 'RETR verifiedserver\r\n'
 19:27:56.034706 Received DATA (on stdin)
 19:27:56.034716 > 29 bytes data, server => client
 19:27:56.034725 '150 Binary junk (17 bytes).\r\n'
 19:27:56.035173 Received DATA (on stdin)
 19:27:56.035183 > 28 bytes data, server => client
 19:27:56.035193 '226 File transfer complete\r\n'
 19:27:56.083772 < 6 bytes data, client => server
 19:27:56.083806 'QUIT\r\n'
 19:27:56.084097 Received DATA (on stdin)
 19:27:56.084108 > 18 bytes data, server => client
 19:27:56.084118 '221 bye bye baby\r\n'
 19:27:56.085273 ====> Client disconnect
 19:27:56.085511 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:55.028620 Running IPv4 version
 19:27:55.028715 Listening on port 36695
 19:27:55.028755 Wrote pid 134774 to log/7/server/ftp_sockdata.pid
 19:27:55.033428 Received PING (on stdin)
 19:27:55.033613 Received PORT (on stdin)
 19:27:55.034071 ====> Client connect
 19:27:55.034748 Received DATA (on stdin)
 19:27:55.034758 > 17 bytes data, server => client
 19:27:55.034768 'WE ROOLZ: 84721\r\n'
 19:27:55.034789 Received DISC (on stdin)
 19:27:55.034800 ====> Client forcibly disconnected
 19:27:55.034874 Received QUIT (on stdin)
 19:27:55.034883 quits
 19:27:55.034956 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:27:54.924500 ====> Client connect
 19:27:54.924731 accept_connection 3 returned 4
 19:27:54.924817 Read 93 bytes
 19:27:54.924826 Process 93 bytes request
 19:27:54.924837 Got request: GET /verifiedserver HTTP/1.1
 19:27:54.924845 Are-we-friendly question received
 19:27:54.924873 Wrote request (93 bytes) input to log/7/server.input
 19:27:54.924887 Identifying ourselves as friends
 19:27:54.924956 Response sent (56 bytes) and written to log/7/server.response
 19:27:54.924965 special request received, no persistency
 19:27:54.926002 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 58120 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1032 ../src/curl -q --output log/12/curl1032.out  --include --trace-ascii log/12/trace1032 --trace-time --range 1-3 --head http://127.0.0.1:40921/1032 > log/12/stdout1032 2> log/12/stderr1032
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1025 ../src/curl -q --output log/20/curl1025.out  --include --trace-ascii log/20/trace1025 --trace-time http://127.0.0.1:33897/want/1025 -L -c log/20/jar1025 -b forcedcookie=yes > log/20/stdout1025 2> log/20/stderr1025
server.cmd
 Testnum 1028
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1028
 ==134871== 
 ==134871== Process terminating with default action of signal 4 (SIGILL)
 ==134871==  Illegal opcode at address 0x492B75F
 ==134871==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134871==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134871==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134871==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134871==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134871==    by 0x49908EB: curl_version_info (version.c:600)
 ==134871==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134871==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134871==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134871==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1028
test 1023 [Compare curl --version with curl-config --vernum]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1023 ../src/curl -q --output log/23/curl1023.out  --include --trace-ascii log/23/trace1023 --trace-time --version > log/23/stdout1023 2> log/23/stderr1023
postcheck /usr/bin/perl /startdir/src/curl/tests/libtest/test1022.pl ../curl-config log/23/stdout1023 vernum
 1023: postcheck FAILED
== Contents of files in the log/23/ directory after test 1023
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1023 ../src/curl -q --output log/23/curl1023.out  --include --trace-ascii log/23/trace1023 --trace-time --version > log/23/stdout1023 2> log/23/stderr1023
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1023
=== End of file server.cmd
=== Start of file valgrind1023
 ==134301== 
 ==134301== Process terminating with default action of signal 4 (SIGILL)
 ==134301==  Illegal opcode at address 0x492B75F
 ==134301==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134301==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134301==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134301==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134301==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134301==    by 0x49908EB: curl_version_info (version.c:600)
 ==134301==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134301==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134301==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134301==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1023
test 1032 [HTTP HEAD with --range]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1032 ../src/curl -q --output log/12/curl1032.out  --include --trace-ascii log/12/trace1032 --trace-time --range 1-3 --head http://127.0.0.1:40921/1032 > log/12/stdout1032 2> log/12/stderr1032

 1032: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1032
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1032 ../src/curl -q --output log/12/curl1032.out  --include --trace-ascii log/12/trace1032 --trace-time --range 1-3 --head http://127.0.0.1:40921/1032 > log/12/stdout1032 2> log/12/stderr1032
=== End of file commands.log
=== Start of file http_server.log
 19:27:55.057473 ====> Client connect
 19:27:55.057509 accept_connection 3 returned 4
 19:27:55.057690 Read 93 bytes
 19:27:55.057707 Process 93 bytes request
 19:27:55.057721 Got request: GET /verifiedserver HTTP/1.1
 19:27:55.057730 Are-we-friendly question received
 19:27:55.057763 Wrote request (93 bytes) input to log/12/server.input
 19:27:55.057782 Identifying ourselves as friends
 19:27:55.057848 Response sent (56 bytes) and written to log/12/server.response
 19:27:55.057858 special request received, no persistency
 19:27:55.057866 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 56130 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1032
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1032
 ==134821== 
 ==134821== Process terminating with default action of signal 4 (SIGILL)
 ==134821==  Illegal opcode at address 0x492B75F
 ==134821==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134821==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134821==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134821==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134821==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134821==    by 0x49908EB: curl_version_info (version.c:600)
 ==134821==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134821==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134821==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134821==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1032
test 1025 [HTTP Location: following with command-line and server cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1025 ../src/curl -q --output log/20/curl1025.out  --include --trace-ascii log/20/trace1025 --trace-time http://127.0.0.1:33897/want/1025 -L -c log/20/jar1025 -b forcedcookie=yes > log/20/stdout1025 2> log/20/stderr1025

 1025: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1025
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1025 ../src/curl -q --output log/20/curl1025.out  --include --trace-ascii log/20/trace1025 --trace-time http://127.0.0.1:33897/want/1025 -L -c log/20/jar1025 -b forcedcookie=yes > log/20/stdout1025 2> log/20/stderr1025
=== End of file commands.log
=== Start of file http_server.log
 19:27:54.750084 ====> Client connect
 19:27:54.750122 accept_connection 3 returned 4
 19:27:54.750142 Read 93 bytes
 19:27:54.750151 Process 93 bytes request
 19:27:54.750162 Got request: GET /verifiedserver HTTP/1.1
 19:27:54.750170 Are-we-friendly question received
 19:27:54.750196 Wrote request (93 bytes) input to log/20/server.input
 19:27:54.750210 Identifying ourselves as friends
 19:27:54.750288 Response sent (56 bytes) and written to log/20/server.response
 19:27:54.750297 special request received, no persistency
 19:27:54.750304 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54672 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1033 ../src/curl -q --output log/4/curl1033.out  --include --trace-ascii log/4/trace1033 --trace-time http://127.0.0.1:35735/1033 > log/4/stdout1033 2> log/4/stderr1033
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1035 ../src/curl -q --output log/21/curl1035.out  --include --trace-ascii log/21/trace1035 --trace-time http://too-long-IDN-name-cürl-rüleß-la-la-la-dee-da-flooby-nooby.local/page/1035 -x 127.0.0.1:47 > log/21/stdout1035 2> log/21/stderr1035
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1029 ../src/curl -q --include --trace-ascii log/11/trace1029 --trace-time http://127.0.0.1:40989/we/want/our/1029 -w '%{redirect_url} %{url} %{exitcode} %{errormsg}\n' > log/11/stdout1029 2> log/11/stderr1029
sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1025
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1025
 ==134560== 
 ==134560== Process terminating with default action of signal 4 (SIGILL)
 ==134560==  Illegal opcode at address 0x492B75F
 ==134560==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134560==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134560==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134560==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134560==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134560==    by 0x49908EB: curl_version_info (version.c:600)
 ==134560==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134560==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134560==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134560==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1025
test 1033 [HTTP GET with 102 response!]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1033 ../src/curl -q --output log/4/curl1033.out  --include --trace-ascii log/4/trace1033 --trace-time http://127.0.0.1:35735/1033 > log/4/stdout1033 2> log/4/stderr1033

 1033: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1033
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1033 ../src/curl -q --output log/4/curl1033.out  --include --trace-ascii log/4/trace1033 --trace-time http://127.0.0.1:35735/1033 > log/4/stdout1033 2> log/4/stderr1033
=== End of file commands.log
=== Start of file http_server.log
 19:27:56.066992 ====> Client connect
 19:27:56.067043 accept_connection 3 returned 4
 19:27:56.067073 Read 93 bytes
 19:27:56.067085 Process 93 bytes request
 19:27:56.067098 Got request: GET /verifiedserver HTTP/1.1
 19:27:56.067107 Are-we-friendly question received
 19:27:56.067139 Wrote request (93 bytes) input to log/4/server.input
 19:27:56.067159 Identifying ourselves as friends
 19:27:56.067247 Response sent (56 bytes) and written to log/4/server.response
 19:27:56.067261 special request received, no persistency
 19:27:56.067270 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 33668 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1033
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1033
 ==134820== 
 ==134820== Process terminating with default action of signal 4 (SIGILL)
 ==134820==  Illegal opcode at address 0x492B75F
 ==134820==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134820==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134820==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134820==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134820==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134820==    by 0x49908EB: curl_version_info (version.c:600)
 ==134820==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134820==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134820==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134820==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1033
setenv LC_ALL = C.UTF-8
test 1035 [HTTP over proxy with too long IDN hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1035 ../src/curl -q --output log/21/curl1035.out  --include --trace-ascii log/21/trace1035 --trace-time http://too-long-IDN-name-cürl-rüleß-la-la-la-dee-da-flooby-nooby.local/page/1035 -x 127.0.0.1:47 > log/21/stdout1035 2> log/21/stderr1035

curl returned 132, when expecting 3
 1035: exit FAILED
== Contents of files in the log/21/ directory after test 1035
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1035 ../src/curl -q --output log/21/curl1035.out  --include --trace-ascii log/21/trace1035 --trace-time http://too-long-IDN-name-cürl-rüleß-la-la-la-dee-da-flooby-nooby.local/page/1035 -x 127.0.0.1:47 > log/21/stdout1035 2> log/21/stderr1035
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1035
=== End of file server.cmd
=== Start of file valgrind1035
 ==135078== 
 ==135078== Process terminating with default action of signal 4 (SIGILL)
 ==135078==  Illegal opcode at address 0x492B75F
 ==135078==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135078==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135078==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135078==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135078==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135078==    by 0x49908EB: curl_version_info (version.c:600)
 ==135078==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135078==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135078==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135078==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1035
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1034 ../src/curl -q --output log/5/curl1034.out  --include --trace-ascii log/5/trace1034 --trace-time -K - -x 127.0.0.1:47 <log/5/stdin-for-1034 > log/5/stdout1034 2> log/5/stderr1034
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1030 ../src/curl -q --output log/17/curl1030.out  --include --trace-ascii log/17/trace1030 --trace-time http://127.0.0.1:35993/1030 -T log/17/put1030 -u testuser:testpass --anyauth > log/17/stdout1030 2> log/17/stderr1030
test 1029 [HTTP Location: and 'redirect_url' check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1029 ../src/curl -q --include --trace-ascii log/11/trace1029 --trace-time http://127.0.0.1:40989/we/want/our/1029 -w '%{redirect_url} %{url} %{exitcode} %{errormsg}\n' > log/11/stdout1029 2> log/11/stderr1029

 1029: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:27:58.077040568 +0000
+++ log/11/check-generated	2026-10-15 19:27:58.073506388 +0000
@@ -1,7 +0,0 @@
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: data/10290002.txt?coolsite=yes[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-This server reply is for testing a simple Location: following[LF]
-http://127.0.0.1:40989/we/want/our/data/10290002.txt?coolsite=yes http://127.0.0.1:40989/we/want/our/1029 0 [LF]
== Contents of files in the log/11/ directory after test 1029
=== Start of file check-expected
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: data/10290002.txt?coolsite=yes[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 This server reply is for testing a simple Location: following[LF]
 http://127.0.0.1:40989/we/want/our/data/10290002.txt?coolsite=yes http://127.0.0.1:40989/we/want/our/1029 0 [LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1029 ../src/curl -q --include --trace-ascii log/11/trace1029 --trace-time http://127.0.0.1:40989/we/want/our/1029 -w '%{redirect_url} %{url} %{exitcode} %{errormsg}\n' > log/11/stdout1029 2> log/11/stderr1029
=== End of file commands.log
=== Start of file http_server.log
 19:27:54.926148 ====> Client connect
 19:27:54.926184 accept_connection 3 returned 4
 19:27:54.926206 Read 93 bytes
 19:27:54.926217 Process 93 bytes request
 19:27:54.926228 Got request: GET /verifiedserver HTTP/1.1
 19:27:54.926237 Are-we-friendly question received
 19:27:54.926266 Wrote request (93 bytes) input to log/11/server.input
 19:27:54.926286 Identifying ourselves as friends
 19:27:54.926358 Response sent (56 bytes) and written to log/11/server.response
 19:27:54.926369 special request received, no persistency
 19:27:54.926379 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 50590 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1029
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1029
 ==134673== 
 ==134673== Process terminating with default action of signal 4 (SIGILL)
 ==134673==  Illegal opcode at address 0x492B75F
 ==134673==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134673==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134673==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134673==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134673==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134673==    by 0x49908EB: curl_version_info (version.c:600)
 ==134673==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134673==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134673==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134673==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1029
setenv LC_ALL = C.UTF-8
test 1034 [HTTP over proxy with malformatted IDN hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1034 ../src/curl -q --output log/5/curl1034.out  --include --trace-ascii log/5/trace1034 --trace-time -K - -x 127.0.0.1:47 <log/5/stdin-for-1034 > log/5/stdout1034 2> log/5/stderr1034

curl returned 132, when expecting 3
 1034: exit FAILED
== Contents of files in the log/5/ directory after test 1034
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1034 ../src/curl -q --output log/5/curl1034.out  --include --trace-ascii log/5/trace1034 --trace-time -K - -x 127.0.0.1:47 <log/5/stdin-for-1034 > log/5/stdout1034 2> log/5/stderr1034
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1034
=== End of file server.cmd
=== Start of file stdin-for-1034
 url = "http://invalid-utf8-.local/page/1034"
=== End of file stdin-for-1034
=== Start of file valgrind1034
 ==135056== 
 ==135056== Process terminating with default action of signal 4 (SIGILL)
 ==135056==  Illegal opcode at address 0x492B75F
 ==135056==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135056==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135056==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135056==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135056==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135056==    by 0x49908EB: curl_version_info (version.c:600)
 ==135056==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135056==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135056==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135056==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1034
test 1030 [HTTP PUT with --anyauth, picking Digest. Persistent connection.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1030 ../src/curl -q --output log/17/curl1030.out  --include --trace-ascii log/17/trace1030 --trace-time http://127.0.0.1:35993/1030 -T log/17/put1030 -u testuser:testpass --anyauth > log/17/stdout1030 2> log/17/stderr1030

 1030: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1030
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1030 ../src/curl -q --output log/17/curl1030.out  --include --trace-ascii log/17/trace1030 --trace-time http://127.0.0.1:35993/1030 -T log/17/put1030 -u testuser:testpass --anyauth > log/17/stdout1030 2> log/17/stderr1030
=== End of file commands.log
=== Start of file http_server.log
 19:27:55.948711 ====> Client connect
 19:27:55.948747 accept_connection 3 returned 4
 19:27:55.948767 Read 93 bytes
 19:27:55.948777 Process 93 bytes request
 19:27:55.948789 Got request: GET /verifiedserver HTTP/1.1
 19:27:55.948798 Are-we-friendly question received
 19:27:55.948824 Wrote request (93 bytes) input to log/17/server.input
 19:27:55.948839 Identifying ourselves as friends
 19:27:55.948901 Response sent (56 bytes) and written to log/17/server.response
 19:27:55.948910 special request received, no persistency
 19:27:55.948918 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 43316 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 20CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1031 ../src/curl -q --output log/16/curl1031.out  --include --trace-ascii log/16/trace1031 --trace-time http://127.0.0.1:35903/want/this/1031 -L > log/16/stdout1031 2> log/16/stderr1031
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1037 ../src/curl -q --output log/22/curl1037.out  --include --trace-ascii log/22/trace1037 --trace-time ftp://127.0.0.1:33255/1037 -C - > log/22/stdout1037 2> log/22/stderr1037
0 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file put1030
 This is data we upload with PUT
 a second line
 line three
 four is the number of lines
=== End of file put1030
=== Start of file server.cmd
 Testnum 1030
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1030
 ==134730== 
 ==134730== Process terminating with default action of signal 4 (SIGILL)
 ==134730==  Illegal opcode at address 0x492B75F
 ==134730==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134730==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134730==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134730==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134730==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134730==    by 0x49908EB: curl_version_info (version.c:600)
 ==134730==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134730==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134730==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134730==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1030
test 1031 [HTTP Location: following to a query string]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1031 ../src/curl -q --output log/16/curl1031.out  --include --trace-ascii log/16/trace1031 --trace-time http://127.0.0.1:35903/want/this/1031 -L > log/16/stdout1031 2> log/16/stderr1031

 1031: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1031
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1031 ../src/curl -q --output log/16/curl1031.out  --include --trace-ascii log/16/trace1031 --trace-time http://127.0.0.1:35903/want/this/1031 -L > log/16/stdout1031 2> log/16/stderr1031
=== End of file commands.log
=== Start of file http_server.log
 19:27:56.006990 ====> Client connect
 19:27:56.013797 accept_connection 3 returned 4
 19:27:56.016950 Read 93 bytes
 19:27:56.016968 Process 93 bytes request
 19:27:56.016981 Got request: GET /verifiedserver HTTP/1.1
 19:27:56.016989 Are-we-friendly question received
 19:27:56.017024 Wrote request (93 bytes) input to log/16/server.input
 19:27:56.017043 Identifying ourselves as friends
 19:27:56.017137 Response sent (56 bytes) and written to log/16/server.response
 19:27:56.017148 special request received, no persistency
 19:27:56.017156 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 49674 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1031
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1031
 ==134814== 
 ==134814== Process terminating with default action of signal 4 (SIGILL)
 ==134814==  Illegal opcode at address 0x492B75F
 ==134814==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==134814==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==134814==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==134814==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==134814==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==134814==    by 0x49908EB: curl_version_info (version.c:600)
 ==134814==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==134814==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==134814==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==134814==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1031
test 1037 [FTP download resume from end of empty file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1037 ../src/curl -q --output log/22/curl1037.out  --include --trace-ascii log/22/trace1037 --trace-time ftp://127.0.0.1:33255/1037 -C - > log/22/stdout1037 2> log/22/stderr1037

 1037: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1037
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1037 ../src/curl -q --output log/22/curl1037.out  --include --trace-ascii log/22/trace1037 --trace-time ftp://127.0.0.1:33255/1037 -C - > log/22/stdout1037 2> log/22/stderr1037
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:56.481459 ====> Client connect
 19:27:56.481691 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:56.482045 < "USER anonymous"
 19:27:56.482093 > "331 We are happy you popped in![CR][LF]"
 19:27:56.482305 < "PASS ftp@example.com"
 19:27:56.482343 > "230 Welcome you silly person[CR][LF]"
 19:27:56.482543 < "PWD"
 19:27:56.482586 > "257 "/" is current directory[CR][LF]"
 19:27:56.482794 < "EPSV"
 19:27:56.482824 ====> Passive DATA channel requested by client
 19:27:56.482840 DATA sockfilt for passive data channel starting...
 19:27:56.485043 DATA sockfilt for passive data channel started (pid 135229)
 19:27:56.485175 DATA sockfilt for passive data channel listens on port 44655
 19:27:56.485226 > "229 Entering Passive Mode (|||44655|)[CR][LF]"
 19:27:56.485252 Client has been notified that upcoming DATA connection is awaited on port 44655
 19:27:56.485549 Client connects to port 44655
 19:27:56.485584 ====> Client established passive DATA connection on port 44655
 19:27:56.485681 < "TYPE I"
 19:27:56.485720 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:56.485913 < "SIZE verifiedserver"
 19:27:56.485955 > "213 17[CR][LF]"
 19:27:56.486137 < "RETR verifiedserver"
 19:27:56.486180 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:56.486279 =====> Closing passive DATA connection...
 19:27:56.486302 Server disconnects passive DATA connection
 19:27:56.486548 Server disconnected passive DATA connection
 19:27:56.486579 DATA sockfilt for passive data channel quits (pid 135229)
 19:27:56.486837 DATA sockfilt for passive data channel quit (pid 135229)
 19:27:56.486867 =====> Closed passive DATA connection
 19:27:56.486897 > "226 File transfer complete[CR][LF]"
 19:27:56.535691 < "QUIT"
 19:27:56.535746 > "221 bye bye baby[CR][LF]"
 19:27:56.536970 MAIN sockfilt said DISC
 19:27:56.537010 ====> Client disconnected
 19:27:56.537095 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.086135 ====> Client connect
 19:27:57.086534 Received DATA (on stdin)
 19:27:57.086553 > 146 bytes data, server => client
 19:27:57.086566 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.086576 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.086585 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.086679 < 16 bytes data, client => server
 19:27:57.086696 'USER anonymousCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1043 ../src/curl -q --output log/8/curl1043.out  --include --trace-ascii log/8/trace1043 --trace-time http://127.0.0.1:44467/1043 -C - > log/8/stdout1043 2> log/8/stderr1043
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1040 ../src/curl -q --output log/15/curl1040.out  --include --trace-ascii log/15/trace1040 --trace-time http://127.0.0.1:40321/1040 -C - > log/15/stdout1040 2> log/15/stderr1040
\r\n'
 19:27:57.086920 Received DATA (on stdin)
 19:27:57.086933 > 33 bytes data, server => client
 19:27:57.086943 '331 We are happy you popped in!\r\n'
 19:27:57.087006 < 22 bytes data, client => server
 19:27:57.087022 'PASS ftp@example.com\r\n'
 19:27:57.087167 Received DATA (on stdin)
 19:27:57.087180 > 30 bytes data, server => client
 19:27:57.087191 '230 Welcome you silly person\r\n'
 19:27:57.087254 < 5 bytes data, client => server
 19:27:57.087270 'PWD\r\n'
 19:27:57.087409 Received DATA (on stdin)
 19:27:57.087422 > 30 bytes data, server => client
 19:27:57.087432 '257 "/" is current directory\r\n'
 19:27:57.087506 < 6 bytes data, client => server
 19:27:57.087522 'EPSV\r\n'
 19:27:57.090078 Received DATA (on stdin)
 19:27:57.090092 > 39 bytes data, server => client
 19:27:57.090104 '229 Entering Passive Mode (|||44655|)\r\n'
 19:27:57.090272 < 8 bytes data, client => server
 19:27:57.090290 'TYPE I\r\n'
 19:27:57.090543 Received DATA (on stdin)
 19:27:57.090556 > 33 bytes data, server => client
 19:27:57.090566 '200 I modify TYPE as you wanted\r\n'
 19:27:57.090627 < 21 bytes data, client => server
 19:27:57.090642 'SIZE verifiedserver\r\n'
 19:27:57.090776 Received DATA (on stdin)
 19:27:57.090789 > 8 bytes data, server => client
 19:27:57.090798 '213 17\r\n'
 19:27:57.090858 < 21 bytes data, client => server
 19:27:57.090871 'RETR verifiedserver\r\n'
 19:27:57.091122 Received DATA (on stdin)
 19:27:57.091135 > 29 bytes data, server => client
 19:27:57.091146 '150 Binary junk (17 bytes).\r\n'
 19:27:57.091714 Received DATA (on stdin)
 19:27:57.091724 > 28 bytes data, server => client
 19:27:57.091733 '226 File transfer complete\r\n'
 19:27:57.140283 < 6 bytes data, client => server
 19:27:57.140338 'QUIT\r\n'
 19:27:57.140562 Received DATA (on stdin)
 19:27:57.140573 > 18 bytes data, server => client
 19:27:57.140582 '221 bye bye baby\r\n'
 19:27:57.141723 ====> Client disconnect
 19:27:57.141904 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:56.089516 Running IPv4 version
 19:27:56.089595 Listening on port 44655
 19:27:56.089635 Wrote pid 135229 to log/22/server/ftp_sockdata.pid
 19:27:56.089793 Received PING (on stdin)
 19:27:56.089898 Received PORT (on stdin)
 19:27:56.090316 ====> Client connect
 19:27:56.091176 Received DATA (on stdin)
 19:27:56.091190 > 17 bytes data, server => client
 19:27:56.091203 'WE ROOLZ: 84714\r\n'
 19:27:56.091230 Received DISC (on stdin)
 19:27:56.091243 ====> Client forcibly disconnected
 19:27:56.091406 Received QUIT (on stdin)
 19:27:56.091419 quits
 19:27:56.091486 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 1037
=== End of file server.cmd
=== Start of file valgrind1037
 ==135251== 
 ==135251== Process terminating with default action of signal 4 (SIGILL)
 ==135251==  Illegal opcode at address 0x492B75F
 ==135251==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135251==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135251==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135251==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135251==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135251==    by 0x49908EB: curl_version_info (version.c:600)
 ==135251==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135251==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135251==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135251==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1037
test 1043 [HTTP GET with resume from end of file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1043 ../src/curl -q --output log/8/curl1043.out  --include --trace-ascii log/8/trace1043 --trace-time http://127.0.0.1:44467/1043 -C - > log/8/stdout1043 2> log/8/stderr1043

 1043: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1043
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1043 ../src/curl -q --output log/8/curl1043.out  --include --trace-ascii log/8/trace1043 --trace-time http://127.0.0.1:44467/1043 -C - > log/8/stdout1043 2> log/8/stderr1043
=== End of file commands.log
=== Start of file curl1043.out
 012345678
 012345678
 012345678
 012345678
=== End of file curl1043.out
=== Start of file http_server.log
 19:27:56.922326 ====> Client connect
 19:27:56.922359 accept_connection 3 returned 4
 19:27:56.922498 Read 93 bytes
 19:27:56.922510 Process 93 bytes request
 19:27:56.922523 Got request: GET /verifiedserver HTTP/1.1
 19:27:56.922531 Are-we-friendly question received
 19:27:56.922560 Wrote request (93 bytes) input to log/8/server.input
 19:27:56.922576 Identifying ourselves as friends
 19:27:56.922632 Response sent (56 bytes) and written to log/8/server.response
 19:27:56.922640 special request received, no persistency
 19:27:56.922648 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 59284 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1043
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1043
 ==135712== 
 ==135712== Process terminating with default action of signal 4 (SIGILL)
 ==135712==  Illegal opcode at address 0x492B75F
 ==135712==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135712==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135712==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135712==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135712==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135712==    by 0x49908EB: curl_version_info (version.c:600)
 ==135712==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135712==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1043
test 1040 [HTTP GET with resume from end of entirely-downloaded file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1040 ../src/curl -q --output log/15/curl1040.out  --include --trace-ascii log/15/trace1040 --trace-time http://127.0.0.1:40321/1040 -C - > log/15/stdout1040 2> log/15/stderr1040

 1040: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1040
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1040 ../src/curl -q --output log/15/curl1040.out  --include --trace-ascii log/15/trace1040 --trace-time http://127.0.0.1:40321/1040 -C - > log/15/stdout1040 2> log/15/stderr1040
=== End of file commands.log
=== Start of file curl1040.out
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file curl1040.out
=== Start of file http_server.log
 19:27:57.656861 ====> ClieCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1041 ../src/curl -q --output log/19/curl1041.out  --include --trace-ascii log/19/trace1041 --trace-time http://127.0.0.1:46497/1041 -Tlog/19/test1041.txt -C - --no-progress-meter > log/19/stdout1041 2> log/19/stderr1041
nt connect
 19:27:57.656906 accept_connection 3 returned 4
 19:27:57.656931 Read 93 bytes
 19:27:57.656944 Process 93 bytes request
 19:27:57.656956 Got request: GET /verifiedserver HTTP/1.1
 19:27:57.656964 Are-we-friendly question received
 19:27:57.656999 Wrote request (93 bytes) input to log/15/server.input
 19:27:57.657015 Identifying ourselves as friends
 19:27:57.657105 Response sent (56 bytes) and written to log/15/server.response
 19:27:57.657114 special request received, no persistency
 19:27:57.657122 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 55992 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1040
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1040
 ==135481== 
 ==135481== Process terminating with default action of signal 4 (SIGILL)
 ==135481==  Illegal opcode at address 0x492B75F
 ==135481==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135481==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135481==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135481==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135481==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135481==    by 0x49908EB: curl_version_info (version.c:600)
 ==135481==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135481==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1040
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1036 ../src/curl -q --output log/3/curl1036.out  --include --trace-ascii log/3/trace1036 --trace-time ftp://127.0.0.1:42249/1036 -C - > log/3/stdout1036 2> log/3/stderr1036
test 1041 [HTTP PUT rejects automatic upload resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1041 ../src/curl -q --output log/19/curl1041.out  --include --trace-ascii log/19/trace1041 --trace-time http://127.0.0.1:46497/1041 -Tlog/19/test1041.txt -C - --no-progress-meter > log/19/stdout1041 2> log/19/stderr1041

 1041: stderr FAILED:
--- log/19/check-expected	2026-10-15 19:27:59.188221735 +0000
+++ log/19/check-generated	2026-10-15 19:27:59.183596810 +0000
@@ -1 +0,0 @@
-curl: (43) HTTP upload cannot be resumed[CR][LF]
== Contents of files in the log/19/ directory after test 1041
=== Start of file check-expected
 curl: (43) HTTP upload cannot be resumed[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1041 ../src/curl -q --output log/19/curl1041.out  --include --trace-ascii log/19/trace1041 --trace-time http://127.0.0.1:46497/1041 -Tlog/19/test1041.txt -C - --no-progress-meter > log/19/stdout1041 2> log/19/stderr1041
=== End of file commands.log
=== Start of file http_server.log
 19:27:56.632929 ====> Client connect
 19:27:56.632963 accept_connection 3 returned 4
 19:27:56.632984 Read 93 bytes
 19:27:56.632994 Process 93 bytes request
 19:27:56.633006 Got request: GET /verifiedserver HTTP/1.1
 19:27:56.633014 Are-we-friendly question received
 19:27:56.633039 Wrote request (93 bytes) input to log/19/server.input
 19:27:56.633056 Identifying ourselves as friends
 19:27:56.633117 Response sent (56 bytes) and written to log/19/server.response
 19:27:56.633126 special request received, no persistency
 19:27:56.633134 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 33156 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1041
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file test1041.txt
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file test1041.txt
=== Start of file valgrind1041
 ==135459== 
 ==135459== Process terminating with default action of signal 4 (SIGILL)
 ==135459==  Illegal opcode at address 0x492B75F
 ==135459==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135459==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135459==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135459==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135459==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135459==    by 0x49908EB: curl_version_info (version.c:600)
 ==135459==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135459==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135459==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135459==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1041
test 1036 [FTP download resume from end of file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1036 ../src/curl -q --output log/3/curl1036.out  --include --trace-ascii log/3/trace1036 --trace-time ftp://127.0.0.1:42249/1036 -C - > log/3/stdout1036 2> log/3/stderr1036

 1036: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1036
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1036 ../src/curl -q --output log/3/curl1036.out  --include --trace-ascii log/3/trace1036 --trace-time ftp://127.0.0.1:42249/1036 -C - > log/3/stdout1036 2> log/3/stderr1036
=== End of file commands.log
=== Start of file curl1036.out
 This is the start!
=== End of file curl1036.out
=== Start of file ftp_server.log
 19:27:56.395780 ====> Client connect
 19:27:56.395988 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:56.397141 < "USER anonymous"
 19:27:56.397179 > "331 We are happy you popped in![CR][LF]"
 19:27:56.402174 < "PASS ftp@example.com"
 19:27:56.402235 > "230 Welcome you silly person[CR][LF]"
 19:27:56.402406 < "PWD"
 19:27:56.402441 > "257 "/" is current directory[CR][LF]"
 19:27:56.402597 < "EPSV"
 19:27:56.402623 ====> Passive DATA channel requested by client
 19:27:56.402636 DATA sockfilt for passive data channel starting...
 19:27:56.415473 DATA sockfilt for passive data channel started (pid 135209)
 19:27:56.422106 DATA sockfilt for passive data channel listens on port 37043
 19:27:56.422197 > "229 Entering Passive Mode (|||37043|)[CR][LF]"
 19:27:56.422218 Client has been notified that upcoming DATA connection is awaited on port 37043
 19:27:56.425428 Client connects to port 37043
 19:27:56.425480 ====> Client established passive DATA connection on port 37043
 19:27:56.425590 < "TYPE I"
 19:27:56.425629 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:56.425822 < "SIZE verifiedserver"
 19:27:56.425864 > "213 17[CR][LF]"
 19:27:56.426017 < "RETR verifiedserver"
 19:27:56.426050 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:56.426147 =====> Closing passive DATA connection...
 19:27:56.426165 Server disconnects passive DATA connection
 19:27:56.426329 Server disconnected passive DATA connection
 19:27:56.426353 DATA sockfilt for passive data channel quits (pid 135209)
 19:27:56.426629 DATA sockfilt for passive data channel quit (pid 135209)
 19:27:56.426653 =====> Closed passive DATA connection
 19:27:56.426682 > "226 File transfer complete[CR][LF]"
 19:27:56.475604 < "QUIT"
 19:27:56.475663 > "221 bye bye baby[CR][LF]"
 19:27:56.476974 MAIN sockfilt said DISC
 19:27:56.477006 ====> Client disconnected
 19:27:56.477092 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.000476 ====> Client connect
 19:27:57.000820 Received DATA (on stdin)
 19:27:57.000833 > 146 bytes data, server => client
 19:27:57.000843 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.000854 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.000863 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.001793 < 16 bytes data, client => server
 19:27:57.001811 'USER anonymous\r\n'
 19:27:57.002014 Received DATA (on stdin)
 19:27:57.002027 > 33 bytes data, server => client
 19:27:57.002037 '331 We are happy you popped in!\r\n'
 19:27:57.006827 < 22 bytes data, client => server
 19:27:57.006856 'PASS ftp@example.com\r\n'
 19:27:57.007061 Received DATA (on stdin)
 19:27:57.007071 > 30 bytes data, server => client
 19:27:57.007081 '230 Welcome you silly person\r\n'
 19:27:57.007142 < 5 bytes data, client => server
 19:27:57.007152 'PWD\r\n'
 19:27:57.007262 Received DATA (on stdin)
 19:27:57.007273 > 30 bytes data, server => client
 19:27:57.007283 '257 "/" is current directory\r\n'
 19:27:57.007342 < 6 bytes data, client => server
 19:27:57.007352 'EPSV\r\n'
 19:27:57.027052 Received DATA (on stdin)
 19:27:57.027071 > 39 bytes data, server => client
 19:27:57.027081 '229 Entering Passive Mode (|||37043|)\r\n'
 19:27:57.027283 < 8 bytes data, clientCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1044 ../src/curl -q --include --trace-ascii log/2/trace1044 --trace-time ftp://127.0.0.1:38033/blalbla/1044 -I > log/2/stdout1044 2> log/2/stderr1044
 => server
 19:27:57.027299 'TYPE I\r\n'
 19:27:57.030452 Received DATA (on stdin)
 19:27:57.030465 > 33 bytes data, server => client
 19:27:57.030475 '200 I modify TYPE as you wanted\r\n'
 19:27:57.030550 < 21 bytes data, client => server
 19:27:57.030560 'SIZE verifiedserver\r\n'
 19:27:57.030685 Received DATA (on stdin)
 19:27:57.030695 > 8 bytes data, server => client
 19:27:57.030704 '213 17\r\n'
 19:27:57.030756 < 21 bytes data, client => server
 19:27:57.030766 'RETR verifiedserver\r\n'
 19:27:57.031081 Received DATA (on stdin)
 19:27:57.031093 > 29 bytes data, server => client
 19:27:57.031102 '150 Binary junk (17 bytes).\r\n'
 19:27:57.031504 Received DATA (on stdin)
 19:27:57.031516 > 28 bytes data, server => client
 19:27:57.031525 '226 File transfer complete\r\n'
 19:27:57.080159 < 6 bytes data, client => server
 19:27:57.080208 'QUIT\r\n'
 19:27:57.080484 Received DATA (on stdin)
 19:27:57.080495 > 18 bytes data, server => client
 19:27:57.080505 '221 bye bye baby\r\n'
 19:27:57.081741 ====> Client disconnect
 19:27:57.081909 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:56.011474 Running IPv4 version
 19:27:56.011583 Listening on port 37043
 19:27:56.011633 Wrote pid 135209 to log/3/server/ftp_sockdata.pid
 19:27:56.020197 Received PING (on stdin)
 19:27:56.023482 Received PORT (on stdin)
 19:27:56.030156 ====> Client connect
 19:27:56.030991 Received DATA (on stdin)
 19:27:56.031006 > 17 bytes data, server => client
 19:27:56.031016 'WE ROOLZ: 84710\r\n'
 19:27:56.031045 Received DISC (on stdin)
 19:27:56.031056 ====> Client forcibly disconnected
 19:27:56.031181 Received QUIT (on stdin)
 19:27:56.031191 quits
 19:27:56.031264 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 1036
=== End of file server.cmd
=== Start of file valgrind1036
 ==135233== 
 ==135233== Process terminating with default action of signal 4 (SIGILL)
 ==135233==  Illegal opcode at address 0x492B75F
 ==135233==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135233==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135233==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135233==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135233==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135233==    by 0x49908EB: curl_version_info (version.c:600)
 ==135233==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135233==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135233==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135233==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1036
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1039 ../src/curl -q --output log/14/curl1039.out  --include --trace-ascii log/14/trace1039 --trace-time ftp://127.0.0.1:37411/1039 -T log/14/upload1039 -C - > log/14/stdout1039 2> log/14/stderr1039
test 1044 [FTP download large file info with -I]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1044 ../src/curl -q --include --trace-ascii log/2/trace1044 --trace-time ftp://127.0.0.1:38033/blalbla/1044 -I > log/2/stdout1044 2> log/2/stderr1044

 1044: stdout FAILED:
--- log/2/check-expected	2026-10-15 19:27:59.409406218 +0000
+++ log/2/check-generated	2026-10-15 19:27:59.406948033 +0000
@@ -1,3 +0,0 @@
-Last-Modified: Sat, 26 Jul 2008 10:26:59 GMT[CR][LF]
-Content-Length: 9999999999[CR][LF]
-Accept-ranges: bytes[CR][LF]
== Contents of files in the log/2/ directory after test 1044
=== Start of file check-expected
 Last-Modified: Sat, 26 Jul 2008 10:26:59 GMT[CR][LF]
 Content-Length: 9999999999[CR][LF]
 Accept-ranges: bytes[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1044 ../src/curl -q --include --trace-ascii log/2/trace1044 --trace-time ftp://127.0.0.1:38033/blalbla/1044 -I > log/2/stdout1044 2> log/2/stderr1044
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:57.455377 ====> Client connect
 19:27:57.455624 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:57.468910 < "USER anonymous"
 19:27:57.468966 > "331 We are happy you popped in![CR][LF]"
 19:27:57.469198 < "PASS ftp@example.com"
 19:27:57.469231 > "230 Welcome you silly person[CR][LF]"
 19:27:57.469389 < "PWD"
 19:27:57.469423 > "257 "/" is current directory[CR][LF]"
 19:27:57.469585 < "EPSV"
 19:27:57.469609 ====> Passive DATA channel requested by client
 19:27:57.469621 DATA sockfilt for passive data channel starting...
 19:27:57.473791 DATA sockfilt for passive data channel started (pid 135784)
 19:27:57.473919 DATA sockfilt for passive data channel listens on port 44435
 19:27:57.473967 > "229 Entering Passive Mode (|||44435|)[CR][LF]"
 19:27:57.473986 Client has been notified that upcoming DATA connection is awaited on port 44435
 19:27:57.474306 Client connects to port 44435
 19:27:57.474339 ====> Client established passive DATA connection on port 44435
 19:27:57.474434 < "TYPE I"
 19:27:57.474475 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:57.474664 < "SIZE verifiedserver"
 19:27:57.474704 > "213 17[CR][LF]"
 19:27:57.475396 < "RETR verifiedserver"
 19:27:57.475436 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:57.475523 =====> Closing passive DATA connection...
 19:27:57.475544 Server disconnects passive DATA connection
 19:27:57.475736 Server disconnected passive DATA connection
 19:27:57.475767 DATA sockfilt for passive data channel quits (pid 135784)
 19:27:57.476018 DATA sockfilt for passive data channel quit (pid 135784)
 19:27:57.476052 =====> Closed passive DATA connection
 19:27:57.476084 > "226 File transfer complete[CR][LF]"
 19:27:57.519809 < "QUIT"
 19:27:57.519861 > "221 bye bye baby[CR][LF]"
 19:27:57.521228 MAIN sockfilt said DISC
 19:27:57.521265 ====> Client disconnected
 19:27:57.521334 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.058845 ====> Client connect
 19:27:57.060384 Received DATA (on stdin)
 19:27:57.060406 > 146 bytes data, server => client
 19:27:57.060417 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.060425 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.060434 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.073411 < 16 bytes data, client => server
 19:27:57.073448 'USER anonymous\r\n'
 19:27:57.073705 Received DATA (on stdin)
 19:27:57.073719 > 33 bytes data, server => client
 19:27:57.073730 '331 We are happy you popped in!\r\n'
 19:27:57.073825 < 22 bytes data, client => server
 19:27:57.073836 'PASS ftp@example.com\r\n'
 19:27:57.073962 Received DATA (on stdin)
 19:27:57.073972 > 30 bytes data, server => client
 19:27:57.073981 '230 Welcome you silly person\r\n'
 19:27:57.074036 < 5 bytes data, client => server
 19:27:57.074046 'PWD\r\n'
 19:27:57.074154 Received DATA (on stdin)
 19:27:57.074163 > 30 bytes data, server => client
 19:27:57.074172 '257 "/" is current directory\r\n'
 19:27:57.074235 < 6 bytes data, client => server
 19:27:57.074245 'EPSV\r\n'
 19:27:57.078728 Received DATA (on stdin)
 19:27:57.078746 > 39 bytes data, server => client
 19:27:57.078757 '229 Entering Passive Mode (|||44435|)\r\n'
 19:27:57.078952 < 8 bytes data, client => server
 19:27:57.078968 'TYPE I\r\n'
 19:27:57.079215 Received DATA (on stdin)
 19:27:57.079227 > 33 bytes data, server => client
 19:27:57.079238 '200 I modify TYPE as you wanted\r\n'
 19:27:57.079298 < 21 bytes data, client => server
 19:27:57.079312 'SIZE verifiedserver\r\n'
 19:27:57.079442 Received DATA (on stdin)
 19:27:57.079454 > 8 bytes data, server => client
 19:27:57.079464 '213 17\r\n'
 19:27:57.079523 < 21 bytes data, client => server
 19:27:57.079538 'RETR verifiedserver\r\n'
 19:27:57.080280 Received DATA (on stdin)
 19:27:57.080293 > 29 bytes data, server => client
 19:27:57.080303 '150 Binary junk (17 bytes).\r\n'
 19:27:57.080822 Received DATA (on stdin)
 19:27:57.080835 > 28 bytes data, server => client
 19:27:57.080846 '226 File transfer complete\r\n'
 19:27:57.124380 < 6 bytes data, client => server
 19:27:57.124398 'QUIT\r\n'
 19:27:57.124593 Received DATA (on stdin)
 19:27:57.124603 > 18 bytes data, server => client
 19:27:57.124613 '221 bye bye baby\r\n'
 19:27:57.124882 ====> Client disconnect
 19:27:57.126062 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:57.077492 Running IPv4 version
 19:27:57.077585 Listening on port 44435
 19:27:57.077628 Wrote pid 135784 to log/2/server/ftp_sockdata.pid
 19:27:57.078459 Received PING (on stdin)
 19:27:57.078555 Received PORT (on stdin)
 19:27:57.078988 ====> Client connect
 19:27:57.080264 Received DATA (on stdin)
 19:27:57.080283 > 17 bytes data, server => client
 19:27:57.080294 'WE ROOLZ: 85208\r\n'
 19:27:57.080324 Received DISC (on stdin)
 19:27:57.080340 ====> Client forcibly disconnected
 19:27:57.080514 Received QUIT (on stdin)
 19:27:57.080527 quits
 19:27:57.080594 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1044
=== End of file server.cmd
=== Start of file valgrind1044
 ==135837== 
 ==135837== Process terminating with default action of signal 4 (SIGILL)
 ==135837==  Illegal opcode at address 0x492B75F
 ==135837==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135837==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135837==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135837==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135837==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135837==    by 0x49908EB: curl_version_info (version.c:600)
 ==135837==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135837==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135837==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135837==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1044
test 1039 [FTP PASV upload resume from end of empty file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1039 ../src/curl -q --output log/14/curl1039.out  --include --trace-ascii log/14/trace1039 --trace-time ftp://127.0.0.1:37411/1039 -T log/14/upload1039 -C - > log/14/stdout1039 2> log/14/stderr1039

 1039: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1039
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/cuCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1047 ../src/curl -q --output log/9/curl1047.out  --include --trace-ascii log/9/trace1047 --trace-time ftp://127.0.0.1:36605/ --interface 127.0.0.1 > log/9/stdout1047 2> log/9/stderr1047
rl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1039 ../src/curl -q --output log/14/curl1039.out  --include --trace-ascii log/14/trace1039 --trace-time ftp://127.0.0.1:37411/1039 -T log/14/upload1039 -C - > log/14/stdout1039 2> log/14/stderr1039
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:57.011034 ====> Client connect
 19:27:57.011268 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:57.019265 < "USER anonymous"
 19:27:57.019321 > "331 We are happy you popped in![CR][LF]"
 19:27:57.022507 < "PASS ftp@example.com"
 19:27:57.022558 > "230 Welcome you silly person[CR][LF]"
 19:27:57.029160 < "PWD"
 19:27:57.029223 > "257 "/" is current directory[CR][LF]"
 19:27:57.029421 < "EPSV"
 19:27:57.029446 ====> Passive DATA channel requested by client
 19:27:57.029460 DATA sockfilt for passive data channel starting...
 19:27:57.038857 DATA sockfilt for passive data channel started (pid 135445)
 19:27:57.038990 DATA sockfilt for passive data channel listens on port 38811
 19:27:57.039034 > "229 Entering Passive Mode (|||38811|)[CR][LF]"
 19:27:57.039052 Client has been notified that upcoming DATA connection is awaited on port 38811
 19:27:57.039341 Client connects to port 38811
 19:27:57.039368 ====> Client established passive DATA connection on port 38811
 19:27:57.039455 < "TYPE I"
 19:27:57.039483 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:57.039627 < "SIZE verifiedserver"
 19:27:57.039661 > "213 17[CR][LF]"
 19:27:57.039801 < "RETR verifiedserver"
 19:27:57.039832 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:57.039922 =====> Closing passive DATA connection...
 19:27:57.039935 Server disconnects passive DATA connection
 19:27:57.040149 Server disconnected passive DATA connection
 19:27:57.040174 DATA sockfilt for passive data channel quits (pid 135445)
 19:27:57.040412 DATA sockfilt for passive data channel quit (pid 135445)
 19:27:57.040437 =====> Closed passive DATA connection
 19:27:57.040463 > "226 File transfer complete[CR][LF]"
 19:27:57.085517 < "QUIT"
 19:27:57.085571 > "221 bye bye baby[CR][LF]"
 19:27:57.102117 MAIN sockfilt said DISC
 19:27:57.102189 ====> Client disconnected
 19:27:57.102278 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.615669 ====> Client connect
 19:27:57.616059 Received DATA (on stdin)
 19:27:57.616074 > 146 bytes data, server => client
 19:27:57.616085 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.616095 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.616104 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.623452 < 16 bytes data, client => server
 19:27:57.623508 'USER anonymous\r\n'
 19:27:57.624097 Received DATA (on stdin)
 19:27:57.624109 > 33 bytes data, server => client
 19:27:57.624119 '331 We are happy you popped in!\r\n'
 19:27:57.627108 < 22 bytes data, client => server
 19:27:57.627142 'PASS ftp@example.com\r\n'
 19:27:57.627331 Received DATA (on stdin)
 19:27:57.627342 > 30 bytes data, server => client
 19:27:57.627352 '230 Welcome you silly person\r\n'
 19:27:57.633464 < 5 bytes data, client => server
 19:27:57.633491 'PWD\r\n'
 19:27:57.633997 Received DATA (on stdin)
 19:27:57.634009 > 30 bytes data, server => client
 19:27:57.634020 '257 "/" is current directory\r\n'
 19:27:57.634105 < 6 bytes data, client => server
 19:27:57.634117 'EPSV\r\n'
 19:27:57.643828 Received DATA (on stdin)
 19:27:57.643843 > 39 bytes data, server => client
 19:27:57.643852 '229 Entering Passive Mode (|||38811|)\r\n'
 19:27:57.644036 < 8 bytes data, client => server
 19:27:57.644049 'TYPE I\r\n'
 19:27:57.644252 Received DATA (on stdin)
 19:27:57.644262 > 33 bytes data, server => client
 19:27:57.644271 '200 I modify TYPE as you wanted\r\n'
 19:27:57.644319 < 21 bytes data, client => server
 19:27:57.644329 'SIZE verifiedserver\r\n'
 19:27:57.644428 Received DATA (on stdin)
 19:27:57.644438 > 8 bytes data, server => client
 19:27:57.644446 '213 17\r\n'
 19:27:57.644493 < 21 bytes data, client => server
 19:27:57.644503 'RETR verifiedserver\r\n'
 19:27:57.644701 Received DATA (on stdin)
 19:27:57.644710 > 29 bytes data, server => client
 19:27:57.644718 '150 Binary junk (17 bytes).\r\n'
 19:27:57.645231 Received DATA (on stdin)
 19:27:57.645242 > 28 bytes data, server => client
 19:27:57.645251 '226 File transfer complete\r\n'
 19:27:57.690108 < 6 bytes data, client => server
 19:27:57.690145 'QUIT\r\n'
 19:27:57.690338 Received DATA (on stdin)
 19:27:57.690350 > 18 bytes data, server => client
 19:27:57.690360 '221 bye bye baby\r\n'
 19:27:57.703427 ====> Client disconnect
 19:27:57.707049 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:57.641289 Running IPv4 version
 19:27:57.641383 Listening on port 38811
 19:27:57.641427 Wrote pid 135445 to log/14/server/ftp_sockdata.pid
 19:27:57.643558 Received PING (on stdin)
 19:27:57.643662 Received PORT (on stdin)
 19:27:57.644067 ====> Client connect
 19:27:57.644769 Received DATA (on stdin)
 19:27:57.644781 > 17 bytes data, server => client
 19:27:57.644792 'WE ROOLZ: 85053\r\n'
 19:27:57.644817 Received DISC (on stdin)
 19:27:57.644826 ====> Client forcibly disconnected
 19:27:57.644947 Received QUIT (on stdin)
 19:27:57.644957 quits
 19:27:57.645025 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1039
=== End of file server.cmd
=== Start of file upload1039
 this is the *****cr@p******** that we are gonna upload
 worx?
=== End of file upload1039
=== Start of file valgrind1039
 ==135538== 
 ==135538== Process terminating with default action of signal 4 (SIGILL)
 ==135538==  Illegal opcode at address 0x492B75F
 ==135538==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135538==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135538==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135538==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135538==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135538==    by 0x49908EB: curl_version_info (version.c:600)
 ==135538==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135538==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135538==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135538==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1039
test 1047 [FTP dir list PASV with localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1047 ../src/curl -q --output log/9/curl1047.out  --include --trace-ascii log/9/trace1047 --trace-time ftp://127.0.0.1:36605/ --interface 127.0.0.1 > log/9/stdout1047 2> log/9/stderr1047

 1047: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1047
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1047 ../src/curl -q --output log/9/curl1047.out  --include --trace-ascii log/9/trace1047 --trace-time ftp://127.0.0.1:36605/ --interface 127.0.0.1 > log/9/stdout1047 2> log/9/stderr1047
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:57.535526 ====> Client connect
 19:27:57.535734 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:57.536058 < "USER anonymous"
 19:27:57.536102 > "331 We are happy you popped in![CR][LF]"
 19:27:57.536289 < "PASS ftp@example.com"
 19:27:57.536325 > "230 Welcome you silly person[CR][LF]"
 19:27:57.551491 < "PWD"
 19:27:57.551552 > "257 "/" is current directory[CR][LF]"
 19:27:57.551808 < "EPSV"
 19:27:57.551838 ====> Passive DATA channel reqCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1042 ../src/curl -q --output log/6/curl1042.out  --include --trace-ascii log/6/trace1042 --trace-time http://127.0.0.1:33935/1042 -C 200 > log/6/stdout1042 2> log/6/stderr1042
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1038 ../src/curl -q --output log/1/curl1038.out  --include --trace-ascii log/1/trace1038 --trace-time ftp://127.0.0.1:40221/1038 -T log/1/upload1038 -C - > log/1/stdout1038 2> log/1/stderr1038
uested by client
 19:27:57.551850 DATA sockfilt for passive data channel starting...
 19:27:57.561676 DATA sockfilt for passive data channel started (pid 135845)
 19:27:57.561813 DATA sockfilt for passive data channel listens on port 35085
 19:27:57.561865 > "229 Entering Passive Mode (|||35085|)[CR][LF]"
 19:27:57.561884 Client has been notified that upcoming DATA connection is awaited on port 35085
 19:27:57.562215 Client connects to port 35085
 19:27:57.562244 ====> Client established passive DATA connection on port 35085
 19:27:57.562332 < "TYPE I"
 19:27:57.562365 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:57.562756 < "SIZE verifiedserver"
 19:27:57.562836 > "213 17[CR][LF]"
 19:27:57.562978 < "RETR verifiedserver"
 19:27:57.563015 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:57.563099 =====> Closing passive DATA connection...
 19:27:57.563118 Server disconnects passive DATA connection
 19:27:57.563382 Server disconnected passive DATA connection
 19:27:57.563412 DATA sockfilt for passive data channel quits (pid 135845)
 19:27:57.563638 DATA sockfilt for passive data channel quit (pid 135845)
 19:27:57.563663 =====> Closed passive DATA connection
 19:27:57.563690 > "226 File transfer complete[CR][LF]"
 19:27:57.608979 < "QUIT"
 19:27:57.609042 > "221 bye bye baby[CR][LF]"
 19:27:57.610293 MAIN sockfilt said DISC
 19:27:57.610328 ====> Client disconnected
 19:27:57.610416 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.140120 ====> Client connect
 19:27:57.140481 Received DATA (on stdin)
 19:27:57.140498 > 146 bytes data, server => client
 19:27:57.140509 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.140518 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.140527 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.140624 < 16 bytes data, client => server
 19:27:57.140638 'USER anonymous\r\n'
 19:27:57.140835 Received DATA (on stdin)
 19:27:57.140847 > 33 bytes data, server => client
 19:27:57.140856 '331 We are happy you popped in!\r\n'
 19:27:57.140907 < 22 bytes data, client => server
 19:27:57.140919 'PASS ftp@example.com\r\n'
 19:27:57.141056 Received DATA (on stdin)
 19:27:57.141069 > 30 bytes data, server => client
 19:27:57.141079 '230 Welcome you silly person\r\n'
 19:27:57.144711 < 5 bytes data, client => server
 19:27:57.144736 'PWD\r\n'
 19:27:57.156286 Received DATA (on stdin)
 19:27:57.156304 > 30 bytes data, server => client
 19:27:57.156313 '257 "/" is current directory\r\n'
 19:27:57.156420 < 6 bytes data, client => server
 19:27:57.156431 'EPSV\r\n'
 19:27:57.166618 Received DATA (on stdin)
 19:27:57.166634 > 39 bytes data, server => client
 19:27:57.166643 '229 Entering Passive Mode (|||35085|)\r\n'
 19:27:57.166855 < 8 bytes data, client => server
 19:27:57.166870 'TYPE I\r\n'
 19:27:57.167093 Received DATA (on stdin)
 19:27:57.167105 > 33 bytes data, server => client
 19:27:57.167115 '200 I modify TYPE as you wanted\r\n'
 19:27:57.167174 < 21 bytes data, client => server
 19:27:57.167187 'SIZE verifiedserver\r\n'
 19:27:57.167506 Received DATA (on stdin)
 19:27:57.167519 > 8 bytes data, server => client
 19:27:57.167565 '213 17\r\n'
 19:27:57.167620 < 21 bytes data, client => server
 19:27:57.167631 'RETR verifiedserver\r\n'
 19:27:57.167847 Received DATA (on stdin)
 19:27:57.167858 > 29 bytes data, server => client
 19:27:57.167868 '150 Binary junk (17 bytes).\r\n'
 19:27:57.168416 Received DATA (on stdin)
 19:27:57.168427 > 28 bytes data, server => client
 19:27:57.168437 '226 File transfer complete\r\n'
 19:27:57.213491 < 6 bytes data, client => server
 19:27:57.213526 'QUIT\r\n'
 19:27:57.213777 Received DATA (on stdin)
 19:27:57.213790 > 18 bytes data, server => client
 19:27:57.213800 '221 bye bye baby\r\n'
 19:27:57.214957 ====> Client disconnect
 19:27:57.215148 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:57.166053 Running IPv4 version
 19:27:57.166127 Listening on port 35085
 19:27:57.166168 Wrote pid 135845 to log/9/server/ftp_sockdata.pid
 19:27:57.166335 Received PING (on stdin)
 19:27:57.166439 Received PORT (on stdin)
 19:27:57.166890 ====> Client connect
 19:27:57.167933 Received DATA (on stdin)
 19:27:57.167948 > 17 bytes data, server => client
 19:27:57.167959 'WE ROOLZ: 84695\r\n'
 19:27:57.167989 Received DISC (on stdin)
 19:27:57.168001 ====> Client forcibly disconnected
 19:27:57.168150 Received QUIT (on stdin)
 19:27:57.168161 quits
 19:27:57.168223 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1047
=== End of file server.cmd
=== Start of file valgrind1047
 ==135895== 
 ==135895== Process terminating with default action of signal 4 (SIGILL)
 ==135895==  Illegal opcode at address 0x492B75F
 ==135895==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135895==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135895==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135895==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135895==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135895==    by 0x49908EB: curl_version_info (version.c:600)
 ==135895==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135895==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135895==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135895==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1047
test 1042 [HTTP GET beyond end of entirely-downloaded file, no server resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1042 ../src/curl -q --output log/6/curl1042.out  --include --trace-ascii log/6/trace1042 --trace-time http://127.0.0.1:33935/1042 -C 200 > log/6/stdout1042 2> log/6/stderr1042

 1042: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1042
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1042 ../src/curl -q --output log/6/curl1042.out  --include --trace-ascii log/6/trace1042 --trace-time http://127.0.0.1:33935/1042 -C 200 > log/6/stdout1042 2> log/6/stderr1042
=== End of file commands.log
=== Start of file curl1042.out
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file curl1042.out
=== Start of file http_server.log
 19:27:56.697205 ====> Client connect
 19:27:56.697244 accept_connection 3 returned 4
 19:27:56.697268 Read 93 bytes
 19:27:56.697277 Process 93 bytes request
 19:27:56.697289 Got request: GET /verifiedserver HTTP/1.1
 19:27:56.697297 Are-we-friendly question received
 19:27:56.697453 Wrote request (93 bytes) input to log/6/server.input
 19:27:56.697470 Identifying ourselves as friends
 19:27:56.697550 Response sent (56 bytes) and written to log/6/server.response
 19:27:56.697559 special request received, no persistency
 19:27:56.697568 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 51416 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1042
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1042
 ==135508== 
 ==135508== Process terminating with default action of signal 4 (SIGILL)
 ==135CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1049 ../src/curl -q --output log/13/curl1049.out  --include --trace-ascii log/13/trace1049 --trace-time tftp://127.0.0.1:52808//1049 --interface 127.0.0.1 > log/13/stdout1049 2> log/13/stderr1049
508==  Illegal opcode at address 0x492B75F
 ==135508==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135508==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135508==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135508==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135508==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135508==    by 0x49908EB: curl_version_info (version.c:600)
 ==135508==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135508==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135508==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135508==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1042
test 1038 [FTP PASV upload resume from end of file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1038 ../src/curl -q --output log/1/curl1038.out  --include --trace-ascii log/1/trace1038 --trace-time ftp://127.0.0.1:40221/1038 -T log/1/upload1038 -C - > log/1/stdout1038 2> log/1/stderr1038

 1038: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1038
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1038 ../src/curl -q --output log/1/curl1038.out  --include --trace-ascii log/1/trace1038 --trace-time ftp://127.0.0.1:40221/1038 -T log/1/upload1038 -C - > log/1/stdout1038 2> log/1/stderr1038
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:56.868693 ====> Client connect
 19:27:56.869084 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:56.875653 < "USER anonymous"
 19:27:56.875706 > "331 We are happy you popped in![CR][LF]"
 19:27:56.875897 < "PASS ftp@example.com"
 19:27:56.875927 > "230 Welcome you silly person[CR][LF]"
 19:27:56.876090 < "PWD"
 19:27:56.876121 > "257 "/" is current directory[CR][LF]"
 19:27:56.876306 < "EPSV"
 19:27:56.876331 ====> Passive DATA channel requested by client
 19:27:56.876345 DATA sockfilt for passive data channel starting...
 19:27:56.883204 DATA sockfilt for passive data channel started (pid 135367)
 19:27:56.883350 DATA sockfilt for passive data channel listens on port 45479
 19:27:56.883402 > "229 Entering Passive Mode (|||45479|)[CR][LF]"
 19:27:56.883419 Client has been notified that upcoming DATA connection is awaited on port 45479
 19:27:56.890048 Client connects to port 45479
 19:27:56.890118 ====> Client established passive DATA connection on port 45479
 19:27:56.890237 < "TYPE I"
 19:27:56.890279 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:56.892305 < "SIZE verifiedserver"
 19:27:56.892374 > "213 17[CR][LF]"
 19:27:56.892561 < "RETR verifiedserver"
 19:27:56.892600 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:56.892712 =====> Closing passive DATA connection...
 19:27:56.892737 Server disconnects passive DATA connection
 19:27:56.898697 Server disconnected passive DATA connection
 19:27:56.898770 DATA sockfilt for passive data channel quits (pid 135367)
 19:27:56.899232 DATA sockfilt for passive data channel quit (pid 135367)
 19:27:56.899264 =====> Closed passive DATA connection
 19:27:56.899310 > "226 File transfer complete[CR][LF]"
 19:27:56.935923 < "QUIT"
 19:27:56.935985 > "221 bye bye baby[CR][LF]"
 19:27:56.937225 MAIN sockfilt said DISC
 19:27:56.937259 ====> Client disconnected
 19:27:56.937345 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.472276 ====> Client connect
 19:27:57.473887 Received DATA (on stdin)
 19:27:57.473902 > 146 bytes data, server => client
 19:27:57.473914 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.473923 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.473932 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.480209 < 16 bytes data, client => server
 19:27:57.480239 'USER anonymous\r\n'
 19:27:57.480494 Received DATA (on stdin)
 19:27:57.480507 > 33 bytes data, server => client
 19:27:57.480518 '331 We are happy you popped in!\r\n'
 19:27:57.480576 < 22 bytes data, client => server
 19:27:57.480590 'PASS ftp@example.com\r\n'
 19:27:57.480711 Received DATA (on stdin)
 19:27:57.480722 > 30 bytes data, server => client
 19:27:57.480731 '230 Welcome you silly person\r\n'
 19:27:57.480786 < 5 bytes data, client => server
 19:27:57.480798 'PWD\r\n'
 19:27:57.480906 Received DATA (on stdin)
 19:27:57.480918 > 30 bytes data, server => client
 19:27:57.480928 '257 "/" is current directory\r\n'
 19:27:57.480996 < 6 bytes data, client => server
 19:27:57.481010 'EPSV\r\n'
 19:27:57.488161 Received DATA (on stdin)
 19:27:57.488186 > 39 bytes data, server => client
 19:27:57.488197 '229 Entering Passive Mode (|||45479|)\r\n'
 19:27:57.488403 < 8 bytes data, client => server
 19:27:57.488420 'TYPE I\r\n'
 19:27:57.496781 Received DATA (on stdin)
 19:27:57.496811 > 33 bytes data, server => client
 19:27:57.496822 '200 I modify TYPE as you wanted\r\n'
 19:27:57.496942 < 21 bytes data, client => server
 19:27:57.496957 'SIZE verifiedserver\r\n'
 19:27:57.497165 Received DATA (on stdin)
 19:27:57.497178 > 8 bytes data, server => client
 19:27:57.497187 '213 17\r\n'
 19:27:57.497246 < 21 bytes data, client => server
 19:27:57.497260 'RETR verifiedserver\r\n'
 19:27:57.497526 Received DATA (on stdin)
 19:27:57.497539 > 29 bytes data, server => client
 19:27:57.497550 '150 Binary junk (17 bytes).\r\n'
 19:27:57.504112 Received DATA (on stdin)
 19:27:57.504129 > 28 bytes data, server => client
 19:27:57.504140 '226 File transfer complete\r\n'
 19:27:57.540501 < 6 bytes data, client => server
 19:27:57.540534 'QUIT\r\n'
 19:27:57.540769 Received DATA (on stdin)
 19:27:57.540781 > 18 bytes data, server => client
 19:27:57.540791 '221 bye bye baby\r\n'
 19:27:57.541950 ====> Client disconnect
 19:27:57.542222 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:56.487734 Running IPv4 version
 19:27:56.487864 Listening on port 45479
 19:27:56.487904 Wrote pid 135367 to log/1/server/ftp_sockdata.pid
 19:27:56.487925 Received PING (on stdin)
 19:27:56.488031 Received PORT (on stdin)
 19:27:56.494742 ====> Client connect
 19:27:56.497619 Received DATA (on stdin)
 19:27:56.497642 > 17 bytes data, server => client
 19:27:56.497652 'WE ROOLZ: 84935\r\n'
 19:27:56.497685 Received DISC (on stdin)
 19:27:56.497700 ====> Client forcibly disconnected
 19:27:56.503694 Received QUIT (on stdin)
 19:27:56.503718 quits
 19:27:56.503812 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1038
=== End of file server.cmd
=== Start of file upload1038
 this is the *****cr@p******** that we are gonna upload
 worx?
=== End of file upload1038
=== Start of file valgrind1038
 ==135394== 
 ==135394== Process terminating with default action of signal 4 (SIGILL)
 ==135394==  Illegal opcode at address 0x492B75F
 ==135394==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135394==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135394==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135394==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135394==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135394==    by 0x49908EB: curl_version_info (version.c:600)
 ==135394==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135394==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135394==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135394==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1038
test 1049 [TFTP retrieve with localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-calleCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1045 ../src/curl -q --output log/18/curl1045.out  --include --trace-ascii log/18/trace1045 --trace-time http://127.0.0.1:43739/1045 --interface 127.0.0.1 > log/18/stdout1045 2> log/18/stderr1045
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1051 ../src/curl -q --output log/23/curl1051.out  --include --trace-ascii log/23/trace1051 --trace-time http://127.0.0.1:44711/want/1051 -L -T log/23/test1051.txt > log/23/stdout1051 2> log/23/stderr1051
rs=16 --log-file=log/13/valgrind1049 ../src/curl -q --output log/13/curl1049.out  --include --trace-ascii log/13/trace1049 --trace-time tftp://127.0.0.1:52808//1049 --interface 127.0.0.1 > log/13/stdout1049 2> log/13/stderr1049

 1049: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1049
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1049 ../src/curl -q --output log/13/curl1049.out  --include --trace-ascii log/13/trace1049 --trace-time tftp://127.0.0.1:52808//1049 --interface 127.0.0.1 > log/13/stdout1049 2> log/13/stderr1049
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1049
=== End of file server.cmd
=== Start of file tftp_server.log
 19:27:57.210149 trying to get file: verifiedserver mode 1
 19:27:57.210177 Are-we-friendly question received
 19:27:57.210191 write
 19:27:57.210222 read
 19:27:57.217977 read: 4
 19:27:57.218069 end of one transfer
=== End of file tftp_server.log
=== Start of file valgrind1049
 ==135897== 
 ==135897== Process terminating with default action of signal 4 (SIGILL)
 ==135897==  Illegal opcode at address 0x492B75F
 ==135897==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135897==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135897==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135897==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135897==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135897==    by 0x49908EB: curl_version_info (version.c:600)
 ==135897==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135897==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135897==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135897==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1049
test 1045 [HTTP GET with numeric localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1045 ../src/curl -q --output log/18/curl1045.out  --include --trace-ascii log/18/trace1045 --trace-time http://127.0.0.1:43739/1045 --interface 127.0.0.1 > log/18/stdout1045 2> log/18/stderr1045

 1045: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1045
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1045 ../src/curl -q --output log/18/curl1045.out  --include --trace-ascii log/18/trace1045 --trace-time http://127.0.0.1:43739/1045 --interface 127.0.0.1 > log/18/stdout1045 2> log/18/stderr1045
=== End of file commands.log
=== Start of file http_server.log
 19:27:58.145689 ====> Client connect
 19:27:58.145725 accept_connection 3 returned 4
 19:27:58.145745 Read 93 bytes
 19:27:58.145754 Process 93 bytes request
 19:27:58.145766 Got request: GET /verifiedserver HTTP/1.1
 19:27:58.145775 Are-we-friendly question received
 19:27:58.145802 Wrote request (93 bytes) input to log/18/server.input
 19:27:58.145818 Identifying ourselves as friends
 19:27:58.145879 Response sent (56 bytes) and written to log/18/server.response
 19:27:58.145889 special request received, no persistency
 19:27:58.145900 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 51714 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1045
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1045
 ==135855== 
 ==135855== Process terminating with default action of signal 4 (SIGILL)
 ==135855==  Illegal opcode at address 0x492B75F
 ==135855==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==135855==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==135855==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==135855==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==135855==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==135855==    by 0x49908EB: curl_version_info (version.c:600)
 ==135855==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==135855==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==135855==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==135855==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1045
test 1051 [HTTP PUT with Location: following]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1051 ../src/curl -q --output log/23/curl1051.out  --include --trace-ascii log/23/trace1051 --trace-time http://127.0.0.1:44711/want/1051 -L -T log/23/test1051.txt > log/23/stdout1051 2> log/23/stderr1051

 1051: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1051
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1051 ../src/curl -q --output log/23/curl1051.out  --include --trace-ascii log/23/trace1051 --trace-time http://127.0.0.1:44711/want/1051 -L -T log/23/test1051.txt > log/23/stdout1051 2> log/23/stderr1051
=== End of file commands.log
=== Start of file http_server.log
 19:27:57.330118 ====> Client connect
 19:27:57.330164 accept_connection 3 returned 4
 19:27:57.330196 Read 93 bytes
 19:27:57.330206 Process 93 bytes request
 19:27:57.330220 Got request: GET /verifiedserver HTTP/1.1
 19:27:57.330229 Are-we-friendly question received
 19:27:57.330256 Wrote request (93 bytes) input to log/23/server.input
 19:27:57.330274 Identifying ourselves as friends
 19:27:57.330375 Response sent (56 bytes) and written to log/23/server.response
 19:27:57.330387 special request received, no persistency
 19:27:57.330395 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 60914 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1051
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file test1051.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    PUT
       feature
=== End of file test1051.txt
=== Start of file valgrind1051
 ==136029== 
 ==136029== Process terminating with default action of signal 4 (SIGILL)
 ==136029==  Illegal opcode at address 0x492B75F
 ==136029==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136029==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1052 ../src/curl -q --output log/12/curl1052.out  --include --trace-ascii log/12/trace1052 --trace-time http://127.0.0.1:40921/want/1052 -0 -L -T log/12/test1052.txt > log/12/stdout1052 2> log/12/stderr1052
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1053 ../src/curl -q --output log/20/curl1053.out  --include --trace-ascii log/20/trace1053 --trace-time http://127.0.0.1:33897/we/want/1053 -L -F name=daniel -F tool=curl -F file=@log/20/test1053.txt > log/20/stdout1053 2> log/20/stderr1053
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1054 ../src/curl -q --output log/4/curl1054.out  --include --trace-ascii log/4/trace1054 --trace-time http://127.0.0.1:35735/blah/1054 -L -d @log/4/test1054.txt --post301 > log/4/stdout1054 2> log/4/stderr1054
 ==136029==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136029==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136029==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136029==    by 0x49908EB: curl_version_info (version.c:600)
 ==136029==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136029==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1051
test 1052 [HTTP 1.0 PUT with Location: following]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1052 ../src/curl -q --output log/12/curl1052.out  --include --trace-ascii log/12/trace1052 --trace-time http://127.0.0.1:40921/want/1052 -0 -L -T log/12/test1052.txt > log/12/stdout1052 2> log/12/stderr1052

 1052: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1052
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1052 ../src/curl -q --output log/12/curl1052.out  --include --trace-ascii log/12/trace1052 --trace-time http://127.0.0.1:40921/want/1052 -0 -L -T log/12/test1052.txt > log/12/stdout1052 2> log/12/stderr1052
=== End of file commands.log
=== Start of file http_server.log
 19:27:57.460114 ====> Client connect
 19:27:57.460159 accept_connection 3 returned 4
 19:27:57.460364 Read 93 bytes
 19:27:57.460378 Process 93 bytes request
 19:27:57.460392 Got request: GET /verifiedserver HTTP/1.1
 19:27:57.460401 Are-we-friendly question received
 19:27:57.460431 Wrote request (93 bytes) input to log/12/server.input
 19:27:57.460448 Identifying ourselves as friends
 19:27:57.460515 Response sent (56 bytes) and written to log/12/server.response
 19:27:57.460525 special request received, no persistency
 19:27:57.460533 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 56138 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1052
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file test1052.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    PUT
       feature
=== End of file test1052.txt
=== Start of file valgrind1052
 ==136124== 
 ==136124== Process terminating with default action of signal 4 (SIGILL)
 ==136124==  Illegal opcode at address 0x492B75F
 ==136124==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136124==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136124==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136124==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136124==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136124==    by 0x49908EB: curl_version_info (version.c:600)
 ==136124==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136124==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136124==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136124==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1052
test 1053 [HTTP RFC1867-type formposting from file with Location: following]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1053 ../src/curl -q --output log/20/curl1053.out  --include --trace-ascii log/20/trace1053 --trace-time http://127.0.0.1:33897/we/want/1053 -L -F name=daniel -F tool=curl -F file=@log/20/test1053.txt > log/20/stdout1053 2> log/20/stderr1053

 1053: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1053
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1053 ../src/curl -q --output log/20/curl1053.out  --include --trace-ascii log/20/trace1053 --trace-time http://127.0.0.1:33897/we/want/1053 -L -F name=daniel -F tool=curl -F file=@log/20/test1053.txt > log/20/stdout1053 2> log/20/stderr1053
=== End of file commands.log
=== Start of file http_server.log
 19:27:57.720295 ====> Client connect
 19:27:57.720337 accept_connection 3 returned 4
 19:27:57.720361 Read 93 bytes
 19:27:57.720371 Process 93 bytes request
 19:27:57.720384 Got request: GET /verifiedserver HTTP/1.1
 19:27:57.720392 Are-we-friendly question received
 19:27:57.720420 Wrote request (93 bytes) input to log/20/server.input
 19:27:57.720439 Identifying ourselves as friends
 19:27:57.720510 Response sent (56 bytes) and written to log/20/server.response
 19:27:57.720520 special request received, no persistency
 19:27:57.720528 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54676 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1053
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file test1053.txt
 foo-
 This is a moo-
 bar
=== End of file test1053.txt
=== Start of file valgrind1053
 ==136271== 
 ==136271== Process terminating with default action of signal 4 (SIGILL)
 ==136271==  Illegal opcode at address 0x492B75F
 ==136271==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136271==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136271==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136271==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136271==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136271==    by 0x49908EB: curl_version_info (version.c:600)
 ==136271==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136271==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136271==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136271==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1053
test 1054 [HTTP POST from file with 301 redirect and --post301]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1054 ../src/curl -q --output log/4/curl1054.out  --include --trace-ascii log/4/trace1054 --trace-time http://127.0.0.1:35735/blah/1054 -L -d @log/4/test1054.txt --post301 > log/4/stdout1054 2> log/4/stderr1054

 1054: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1054
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1058 ../src/curl -q --output log/17/curl1058.out  --include --trace-ascii log/17/trace1058 --trace-time http://127.0.0.1:35993/want/1058 -r -101 > log/17/stdout1058 2> log/17/stderr1058
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1048 ../src/curl -q --output log/24/curl1048.out  --include --trace-ascii log/24/trace1048 --trace-time -g "ftp://[::1]:46107/" --interface ::1 > log/24/stdout1048 2> log/24/stderr1048
-suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1054 ../src/curl -q --output log/4/curl1054.out  --include --trace-ascii log/4/trace1054 --trace-time http://127.0.0.1:35735/blah/1054 -L -d @log/4/test1054.txt --post301 > log/4/stdout1054 2> log/4/stderr1054
=== End of file commands.log
=== Start of file http_server.log
 19:27:58.733014 ====> Client connect
 19:27:58.733053 accept_connection 3 returned 4
 19:27:58.733075 Read 93 bytes
 19:27:58.733084 Process 93 bytes request
 19:27:58.733096 Got request: GET /verifiedserver HTTP/1.1
 19:27:58.733105 Are-we-friendly question received
 19:27:58.733132 Wrote request (93 bytes) input to log/4/server.input
 19:27:58.733149 Identifying ourselves as friends
 19:27:58.733217 Response sent (56 bytes) and written to log/4/server.response
 19:27:58.733226 special request received, no persistency
 19:27:58.733234 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 33680 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1054
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file test1054.txt
 field=data
=== End of file test1054.txt
=== Start of file valgrind1054
 ==136308== 
 ==136308== Process terminating with default action of signal 4 (SIGILL)
 ==136308==  Illegal opcode at address 0x492B75F
 ==136308==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136308==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136308==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136308==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136308==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136308==    by 0x49908EB: curl_version_info (version.c:600)
 ==136308==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136308==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136308==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136308==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1054
test 1058 [HTTP range relative to end of file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1058 ../src/curl -q --output log/17/curl1058.out  --include --trace-ascii log/17/trace1058 --trace-time http://127.0.0.1:35993/want/1058 -r -101 > log/17/stdout1058 2> log/17/stderr1058

 1058: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1058
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1058 ../src/curl -q --output log/17/curl1058.out  --include --trace-ascii log/17/trace1058 --trace-time http://127.0.0.1:35993/want/1058 -r -101 > log/17/stdout1058 2> log/17/stderr1058
=== End of file commands.log
=== Start of file http_server.log
 19:27:58.910053 ====> Client connect
 19:27:58.910095 accept_connection 3 returned 4
 19:27:58.910120 Read 93 bytes
 19:27:58.910130 Process 93 bytes request
 19:27:58.910142 Got request: GET /verifiedserver HTTP/1.1
 19:27:58.910150 Are-we-friendly question received
 19:27:58.910175 Wrote request (93 bytes) input to log/17/server.input
 19:27:58.910190 Identifying ourselves as friends
 19:27:58.910273 Response sent (56 bytes) and written to log/17/server.response
 19:27:58.910282 special request received, no persistency
 19:27:58.910290 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 43332 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1058
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1058
 ==136392== 
 ==136392== Process terminating with default action of signal 4 (SIGILL)
 ==136392==  Illegal opcode at address 0x492B75F
 ==136392==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136392==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136392==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136392==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136392==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136392==    by 0x49908EB: curl_version_info (version.c:600)
 ==136392==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136392==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136392==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136392==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1058
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/24/server/ftp_ipv6_server.pid" --logfile "log/24/ftp_ipv6_server.log" --logdir "log/24" --portfile "log/24/server/ftp_ipv6_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]"
PINGPONG runs on port 46107 (log/24/server/ftp_ipv6_server.port)
RUN: FTP-IPv6 server is PID 135809 port 46107
* pid ftp-ipv6 => 135809 135809
test 1048 [FTP-IPv6 dir list PASV with localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1048 ../src/curl -q --output log/24/curl1048.out  --include --trace-ascii log/24/trace1048 --trace-time -g "ftp://[::1]:46107/" --interface ::1 > log/24/stdout1048 2> log/24/stderr1048

 1048: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1048
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1048 ../src/curl -q --output log/24/curl1048.out  --include --trace-ascii log/24/trace1048 --trace-time -g "ftp://[::1]:46107/" --interface ::1 > log/24/stdout1048 2> log/24/stderr1048
=== End of file commands.log
=== Start of file ftp_ipv6_server.log
 19:27:57.580447 FTP server listens on port IPv6/46107
 19:27:57.580564 logged pid 135809 in log/24/server/ftp_ipv6_server.pid
 19:27:57.580601 Awaiting input
=== End of file ftp_ipv6_server.log
=== Start of file ftp_ipv6_sockctrl.log
 19:27:57.184665 Running IPv6 version
 19:27:57.184765 Listening on port 46107
 19:27:57.184818 Wrote pid 135863 to log/24/server/ftp_ipv6_sockctrl.pid
 19:27:57.184861 Wrote port 46107 to log/24/server/ftp_ipv6_server.port
 19:27:57.185052 Received PING (on stdin)
=== End of file ftp_ipv6_sockctrl.log
=== Start of file server.cmd
 Testnum 1048
=== End of file server.cmd
=== Start of file valgrind1048
 ==136640== 
 ==136640== Process terminating with default action of signal 4 (SIGILL)
 ==136640==  Illegal opcode at address 0x492B75F
 ==136640==    at 0x492B75CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1055 ../src/curl -q --output log/21/curl1055.out  --include --trace-ascii log/21/trace1055 --trace-time http://127.0.0.1:39881/1055 -L -T log/21/test1055.txt > log/21/stdout1055 2> log/21/stderr1055
F: formatf.constprop.2 (mprintf.c:1115)
 ==136640==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136640==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136640==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136640==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136640==    by 0x49908EB: curl_version_info (version.c:600)
 ==136640==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136640==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136640==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136640==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1048
test 1055 [HTTP PUT Location: redirect to FTP URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1055 ../src/curl -q --output log/21/curl1055.out  --include --trace-ascii log/21/trace1055 --trace-time http://127.0.0.1:39881/1055 -L -T log/21/test1055.txt > log/21/stdout1055 2> log/21/stderr1055

 1055: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1055
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1055 ../src/curl -q --output log/21/curl1055.out  --include --trace-ascii log/21/trace1055 --trace-time http://127.0.0.1:39881/1055 -L -T log/21/test1055.txt > log/21/stdout1055 2> log/21/stderr1055
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:58.265474 ====> Client connect
 19:27:58.265708 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:58.284087 < "USER anonymous"
 19:27:58.284140 > "331 We are happy you popped in![CR][LF]"
 19:27:58.284399 < "PASS ftp@example.com"
 19:27:58.284437 > "230 Welcome you silly person[CR][LF]"
 19:27:58.284608 < "PWD"
 19:27:58.284641 > "257 "/" is current directory[CR][LF]"
 19:27:58.284809 < "EPSV"
 19:27:58.284835 ====> Passive DATA channel requested by client
 19:27:58.284847 DATA sockfilt for passive data channel starting...
 19:27:58.287949 DATA sockfilt for passive data channel started (pid 136366)
 19:27:58.288068 DATA sockfilt for passive data channel listens on port 36635
 19:27:58.288114 > "229 Entering Passive Mode (|||36635|)[CR][LF]"
 19:27:58.288131 Client has been notified that upcoming DATA connection is awaited on port 36635
 19:27:58.288409 Client connects to port 36635
 19:27:58.288439 ====> Client established passive DATA connection on port 36635
 19:27:58.288516 < "TYPE I"
 19:27:58.288545 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:58.288722 < "SIZE verifiedserver"
 19:27:58.288761 > "213 17[CR][LF]"
 19:27:58.288924 < "RETR verifiedserver"
 19:27:58.288961 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:58.289047 =====> Closing passive DATA connection...
 19:27:58.289065 Server disconnects passive DATA connection
 19:27:58.289305 Server disconnected passive DATA connection
 19:27:58.289334 DATA sockfilt for passive data channel quits (pid 136366)
 19:27:58.289589 DATA sockfilt for passive data channel quit (pid 136366)
 19:27:58.289614 =====> Closed passive DATA connection
 19:27:58.289642 > "226 File transfer complete[CR][LF]"
 19:27:58.335542 < "QUIT"
 19:27:58.335602 > "221 bye bye baby[CR][LF]"
 19:27:58.341736 MAIN sockfilt said DISC
 19:27:58.341794 ====> Client disconnected
 19:27:58.341883 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.869998 ====> Client connect
 19:27:57.870396 Received DATA (on stdin)
 19:27:57.870412 > 146 bytes data, server => client
 19:27:57.870424 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.870433 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.870442 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.888365 < 16 bytes data, client => server
 19:27:57.888825 'USER anonymous\r\n'
 19:27:57.888840 Received DATA (on stdin)
 19:27:57.888848 > 33 bytes data, server => client
 19:27:57.888858 '331 We are happy you popped in!\r\n'
 19:27:57.888956 < 22 bytes data, client => server
 19:27:57.888968 'PASS ftp@example.com\r\n'
 19:27:57.889104 Received DATA (on stdin)
 19:27:57.889115 > 30 bytes data, server => client
 19:27:57.889124 '230 Welcome you silly person\r\n'
 19:27:57.889184 < 5 bytes data, client => server
 19:27:57.889194 'PWD\r\n'
 19:27:57.889306 Received DATA (on stdin)
 19:27:57.889316 > 30 bytes data, server => client
 19:27:57.889326 '257 "/" is current directory\r\n'
 19:27:57.889391 < 6 bytes data, client => server
 19:27:57.889401 'EPSV\r\n'
 19:27:57.892803 Received DATA (on stdin)
 19:27:57.892816 > 39 bytes data, server => client
 19:27:57.892826 '229 Entering Passive Mode (|||36635|)\r\n'
 19:27:57.892993 < 8 bytes data, client => server
 19:27:57.893008 'TYPE I\r\n'
 19:27:57.893210 Received DATA (on stdin)
 19:27:57.893221 > 33 bytes data, server => client
 19:27:57.893231 '200 I modify TYPE as you wanted\r\n'
 19:27:57.893286 < 21 bytes data, client => server
 19:27:57.893311 'SIZE verifiedserver\r\n'
 19:27:57.893427 Received DATA (on stdin)
 19:27:57.893438 > 8 bytes data, server => client
 19:27:57.893448 '213 17\r\n'
 19:27:57.893502 < 21 bytes data, client => server
 19:27:57.893515 'RETR verifiedserver\r\n'
 19:27:57.893732 Received DATA (on stdin)
 19:27:57.893744 > 29 bytes data, server => client
 19:27:57.893754 '150 Binary junk (17 bytes).\r\n'
 19:27:57.894308 Received DATA (on stdin)
 19:27:57.894320 > 28 bytes data, server => client
 19:27:57.894330 '226 File transfer complete\r\n'
 19:27:57.940006 < 6 bytes data, client => server
 19:27:57.940032 'QUIT\r\n'
 19:27:57.940271 Received DATA (on stdin)
 19:27:57.940285 > 18 bytes data, server => client
 19:27:57.940295 '221 bye bye baby\r\n'
 19:27:57.946320 ====> Client disconnect
 19:27:57.946558 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:58.892265 Running IPv4 version
 19:27:58.892360 Listening on port 36635
 19:27:58.892402 Wrote pid 136366 to log/21/server/ftp_sockdata.pid
 19:27:58.892553 Received PING (on stdin)
 19:27:58.892644 Received PORT (on stdin)
 19:27:58.893028 ====> Client connect
 19:27:58.893812 Received DATA (on stdin)
 19:27:58.893827 > 17 bytes data, server => client
 19:27:58.893837 'WE ROOLZ: 84694\r\n'
 19:27:58.893864 Received DISC (on stdin)
 19:27:58.893874 ====> Client forcibly disconnected
 19:27:58.894008 Received QUIT (on stdin)
 19:27:58.894019 quits
 19:27:58.894084 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:27:57.779163 ====> Client connect
 19:27:57.779208 accept_connection 3 returned 4
 19:27:57.779234 Read 93 bytes
 19:27:57.779245 Process 93 bytes request
 19:27:57.779258 Got request: GET /verifiedserver HTTP/1.1
 19:27:57.779267 Are-we-friendly question received
 19:27:57.779298 Wrote request (93 bytes) input to log/21/server.input
 19:27:57.779321 Identifying ourselves as friends
 19:27:57.779392 Response sent (56 bytes) and written to log/21/server.response
 19:27:57.779404 special request received, no persistency
 19:27:57.779413 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 46564 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1055
=== End of file server.cmd
=== Start of file server.reCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1046 ../src/curl -q --output log/10/curl1046.out  --include --trace-ascii log/10/trace1046 --trace-time -g "http://[::1]:39699/1046" --interface ::1 > log/10/stdout1046 2> log/10/stderr1046
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1057 ../src/curl -q --output log/5/curl1057.out  --include --trace-ascii log/5/trace1057 --trace-time -r -12 ftp://127.0.0.1:39641/1057 > log/5/stdout1057 2> log/5/stderr1057
sponse
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file test1055.txt
 Weird
      file
          to
    upload
 for
    testing
 the
    PUT
       feature
=== End of file test1055.txt
=== Start of file valgrind1055
 ==136508== 
 ==136508== Process terminating with default action of signal 4 (SIGILL)
 ==136508==  Illegal opcode at address 0x492B75F
 ==136508==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136508==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136508==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136508==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136508==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136508==    by 0x49908EB: curl_version_info (version.c:600)
 ==136508==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136508==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136508==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136508==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1055
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/10/server/http_ipv6_server.pid" --logfile "log/10/http_ipv6_server.log" --logdir "log/10" --portfile log/10/server/http_ipv6_server.port --config log/10/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 135779 port 39699
* pid http-ipv6 => 135779 135779
test 1046 [HTTP-IPv6 GET with numeric localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1046 ../src/curl -q --output log/10/curl1046.out  --include --trace-ascii log/10/trace1046 --trace-time -g "http://[::1]:39699/1046" --interface ::1 > log/10/stdout1046 2> log/10/stderr1046

 1046: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1046
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1046 ../src/curl -q --output log/10/curl1046.out  --include --trace-ascii log/10/trace1046 --trace-time -g "http://[::1]:39699/1046" --interface ::1 > log/10/stdout1046 2> log/10/stderr1046
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:27:57.124038 Running HTTP IPv6 version on port 39699
 19:27:57.124141 Wrote pid 135779 to log/10/server/http_ipv6_server.pid
 19:27:57.124174 Wrote port 39699 to log/10/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 1046
=== End of file server.cmd
=== Start of file valgrind1046
 ==136558== 
 ==136558== Process terminating with default action of signal 4 (SIGILL)
 ==136558==  Illegal opcode at address 0x492B75F
 ==136558==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136558==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136558==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136558==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136558==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136558==    by 0x49908EB: curl_version_info (version.c:600)
 ==136558==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136558==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136558==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136558==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1046
test 1057 [FTP retrieve a byte-range relative to end of file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1057 ../src/curl -q --output log/5/curl1057.out  --include --trace-ascii log/5/trace1057 --trace-time -r -12 ftp://127.0.0.1:39641/1057 > log/5/stdout1057 2> log/5/stderr1057

 1057: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1057
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1057 ../src/curl -q --output log/5/curl1057.out  --include --trace-ascii log/5/trace1057 --trace-time -r -12 ftp://127.0.0.1:39641/1057 > log/5/stdout1057 2> log/5/stderr1057
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:58.224681 ====> Client connect
 19:27:58.224883 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:58.225194 < "USER anonymous"
 19:27:58.225239 > "331 We are happy you popped in![CR][LF]"
 19:27:58.225436 < "PASS ftp@example.com"
 19:27:58.225463 > "230 Welcome you silly person[CR][LF]"
 19:27:58.225624 < "PWD"
 19:27:58.225658 > "257 "/" is current directory[CR][LF]"
 19:27:58.225845 < "EPSV"
 19:27:58.225872 ====> Passive DATA channel requested by client
 19:27:58.225885 DATA sockfilt for passive data channel starting...
 19:27:58.233333 DATA sockfilt for passive data channel started (pid 136319)
 19:27:58.236242 DATA sockfilt for passive data channel listens on port 39179
 19:27:58.236318 > "229 Entering Passive Mode (|||39179|)[CR][LF]"
 19:27:58.236344 Client has been notified that upcoming DATA connection is awaited on port 39179
 19:27:58.238373 Client connects to port 39179
 19:27:58.238421 ====> Client established passive DATA connection on port 39179
 19:27:58.238544 < "TYPE I"
 19:27:58.238595 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:58.238818 < "SIZE verifiedserver"
 19:27:58.238859 > "213 17[CR][LF]"
 19:27:58.239011 < "RETR verifiedserver"
 19:27:58.239046 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:58.239148 =====> Closing passive DATA connection...
 19:27:58.239170 Server disconnects passive DATA connection
 19:27:58.239360 Server disconnected passive DATA connection
 19:27:58.239392 DATA sockfilt for passive data channel quits (pid 136319)
 19:27:58.239821 DATA sockfilt for passive data channel quit (pid 136319)
 19:27:58.239852 =====> Closed passive DATA connection
 19:27:58.239884 > "226 File transfer complete[CR][LF]"
 19:27:58.283992 < "QUIT"
 19:27:58.284064 > "221 bye bye baby[CR][LF]"
 19:27:58.286191 MAIN sockfilt said DISC
 19:27:58.286224 ====> Client disconnected
 19:27:58.286515 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:57.829228 ====> Client connect
 19:27:57.829577 Received DATA (on stdin)
 19:27:57.829594 > 146 bytes data, server => client
 19:27:57.829606 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:57.829617 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:57.829626 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:57.829708 < 16 bytes data, client => server
 19:27:57.829723 'USER anonymous\r\n'
 19:27:57.829918 Received DATA (on stdin)
 19:27:57.829931 > 33 bytes data, server => client
 19:27:57.829942 '331 We are happy you popped in!\r\n'
 19:27:57.830008 < 22 bytes data, client => server
 19:27:57.830019 'PASS ftp@example.com\r\n'
 19:27:57.830132 Received DATA (on stdin)
 19:27:57.830141 > 30 bytes data, server => client
 19:27:57.830150 '230 Welcome you silly person\r\n'
 19:27:57.830198 < 5 bytes data, client => server
 19:27:57.830217 'PWD\r\n'
 19:27:57.830326 Received DATA (on stdin)
 19:27:57.830337 > 30 bytes data, server => client
 19:27:57.830346 '257 "/" is current directory\r\n'
 19:27:57.830427 < 6 bytes data, client => server
 19:27:57.830439 'EPSV\r\n'
 19:27:57.841031 Received DATA (on stdin)
 19:27:57.841050 > 39 bytes data, server => client
 19:27:57.841060 '229 Entering Passive Mode (|||39179|)\r\n'
 19:27:57.842929 < 8 bytes data, clientCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1050 ../src/curl -q --output log/7/curl1050.out  --include --trace-ascii log/7/trace1050 --trace-time -g "ftp://[::1]:46867/" -P ::1 > log/7/stdout1050 2> log/7/stderr1050
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1059 ../src/curl -q --output log/16/curl1059.out  --include --trace-ascii log/16/trace1059 --trace-time ftp://test-number:1059/wanted/page -p -x 127.0.0.1:35903 > log/16/stdout1059 2> log/16/stderr1059
 => server
 19:27:57.842953 'TYPE I\r\n'
 19:27:57.843278 Received DATA (on stdin)
 19:27:57.843293 > 33 bytes data, server => client
 19:27:57.843320 '200 I modify TYPE as you wanted\r\n'
 19:27:57.843385 < 21 bytes data, client => server
 19:27:57.843397 'SIZE verifiedserver\r\n'
 19:27:57.843528 Received DATA (on stdin)
 19:27:57.843538 > 8 bytes data, server => client
 19:27:57.843546 '213 17\r\n'
 19:27:57.843597 < 21 bytes data, client => server
 19:27:57.843607 'RETR verifiedserver\r\n'
 19:27:57.843947 Received DATA (on stdin)
 19:27:57.843961 > 29 bytes data, server => client
 19:27:57.843972 '150 Binary junk (17 bytes).\r\n'
 19:27:57.844559 Received DATA (on stdin)
 19:27:57.844572 > 28 bytes data, server => client
 19:27:57.844582 '226 File transfer complete\r\n'
 19:27:57.888445 < 6 bytes data, client => server
 19:27:57.888477 'QUIT\r\n'
 19:27:57.888748 Received DATA (on stdin)
 19:27:57.888766 > 18 bytes data, server => client
 19:27:57.888777 '221 bye bye baby\r\n'
 19:27:57.890799 ====> Client disconnect
 19:27:57.891033 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:58.832717 Running IPv4 version
 19:27:58.832809 Listening on port 39179
 19:27:58.832851 Wrote pid 136319 to log/5/server/ftp_sockdata.pid
 19:27:58.836653 Received PING (on stdin)
 19:27:58.840762 Received PORT (on stdin)
 19:27:58.842982 ====> Client connect
 19:27:58.843846 Received DATA (on stdin)
 19:27:58.843863 > 17 bytes data, server => client
 19:27:58.843873 'WE ROOLZ: 85245\r\n'
 19:27:58.843904 Received DISC (on stdin)
 19:27:58.843917 ====> Client forcibly disconnected
 19:27:58.844080 Received QUIT (on stdin)
 19:27:58.844095 quits
 19:27:58.844198 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1057
=== End of file server.cmd
=== Start of file valgrind1057
 ==136421== 
 ==136421== Process terminating with default action of signal 4 (SIGILL)
 ==136421==  Illegal opcode at address 0x492B75F
 ==136421==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136421==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136421==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136421==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136421==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136421==    by 0x49908EB: curl_version_info (version.c:600)
 ==136421==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136421==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136421==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136421==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1057
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/7/server/ftp_ipv6_server.pid" --logfile "log/7/ftp_ipv6_server.log" --logdir "log/7" --portfile "log/7/server/ftp_ipv6_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]"
PINGPONG runs on port 46867 (log/7/server/ftp_ipv6_server.port)
RUN: FTP-IPv6 server is PID 135955 port 46867
* pid ftp-ipv6 => 135955 135955
test 1050 [FTP-IPv6 dir list, EPRT with specified IP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1050 ../src/curl -q --output log/7/curl1050.out  --include --trace-ascii log/7/trace1050 --trace-time -g "ftp://[::1]:46867/" -P ::1 > log/7/stdout1050 2> log/7/stderr1050

 1050: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1050
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1050 ../src/curl -q --output log/7/curl1050.out  --include --trace-ascii log/7/trace1050 --trace-time -g "ftp://[::1]:46867/" -P ::1 > log/7/stdout1050 2> log/7/stderr1050
=== End of file commands.log
=== Start of file ftp_ipv6_server.log
 19:27:57.767644 FTP server listens on port IPv6/46867
 19:27:57.767975 logged pid 135955 in log/7/server/ftp_ipv6_server.pid
 19:27:57.768022 Awaiting input
=== End of file ftp_ipv6_server.log
=== Start of file ftp_ipv6_sockctrl.log
 19:27:57.371442 Running IPv6 version
 19:27:57.371540 Listening on port 46867
 19:27:57.371593 Wrote pid 136031 to log/7/server/ftp_ipv6_sockctrl.pid
 19:27:57.371629 Wrote port 46867 to log/7/server/ftp_ipv6_server.port
 19:27:57.372224 Received PING (on stdin)
=== End of file ftp_ipv6_sockctrl.log
=== Start of file server.cmd
 Testnum 1050
=== End of file server.cmd
=== Start of file valgrind1050
 ==136745== 
 ==136745== Process terminating with default action of signal 4 (SIGILL)
 ==136745==  Illegal opcode at address 0x492B75F
 ==136745==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136745==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136745==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136745==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136745==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136745==    by 0x49908EB: curl_version_info (version.c:600)
 ==136745==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136745==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136745==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136745==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1050
test 1059 [HTTP CONNECT with proxytunnel to unsupported FTP URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1059 ../src/curl -q --output log/16/curl1059.out  --include --trace-ascii log/16/trace1059 --trace-time ftp://test-number:1059/wanted/page -p -x 127.0.0.1:35903 > log/16/stdout1059 2> log/16/stderr1059

 1059: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1059
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1059 ../src/curl -q --output log/16/curl1059.out  --include --trace-ascii log/16/trace1059 --trace-time ftp://test-number:1059/wanted/page -p -x 127.0.0.1:35903 > log/16/stdout1059 2> log/16/stderr1059
=== End of file commands.log
=== Start of file http_server.log
 19:27:58.992487 ====> Client connect
 19:27:58.992530 accept_connection 3 returned 4
 19:27:58.992572 Read 93 bytes
 19:27:58.992583 Process 93 bytes request
 19:27:58.992596 Got request: GET /verifiedserver HTTP/1.1
 19:27:58.992605 Are-we-friendly question received
 19:27:58.992635 Wrote request (93 bytes) input to log/16/server.input
 19:27:58.992653 Identifying ourselves as friends
 19:27:58.992720 Response sent (56 bytes) and written to log/16/server.response
 19:27:58.992731 special request received, no persistency
 19:27:58.992740 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 49682 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1059
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1059
 ==136495== 
 ==136495== Process terminating with default action of signalCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1061 ../src/curl -q --output log/8/curl1061.out  --include --trace-ascii log/8/trace1061 --trace-time http://test.remote.haxx.se.1061:8990/path/10610002 --proxy http://127.0.0.1:44467 --proxy-user silly:person --proxy-digest --proxytunnel > log/8/stdout1061 2> log/8/stderr1061
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1064 ../src/curl -q --include --trace-ascii log/3/trace1064 --trace-time -H "Expect:" -T log/3/1064 http://127.0.0.1:36161/1064.upload1 -T log/3/1064 http://127.0.0.1:36161/10640002.upload2 > log/3/stdout1064 2> log/3/stderr1064
 4 (SIGILL)
 ==136495==  Illegal opcode at address 0x492B75F
 ==136495==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136495==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136495==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136495==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136495==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136495==    by 0x49908EB: curl_version_info (version.c:600)
 ==136495==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136495==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136495==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136495==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1059
test 1061 [HTTP proxy CONNECT auth Digest, large headers and chunked data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1061 ../src/curl -q --output log/8/curl1061.out  --include --trace-ascii log/8/trace1061 --trace-time http://test.remote.haxx.se.1061:8990/path/10610002 --proxy http://127.0.0.1:44467 --proxy-user silly:person --proxy-digest --proxytunnel > log/8/stdout1061 2> log/8/stderr1061

 1061: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1061
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1061 ../src/curl -q --output log/8/curl1061.out  --include --trace-ascii log/8/trace1061 --trace-time http://test.remote.haxx.se.1061:8990/path/10610002 --proxy http://127.0.0.1:44467 --proxy-user silly:person --proxy-digest --proxytunnel > log/8/stdout1061 2> log/8/stderr1061
=== End of file commands.log
=== Start of file http_server.log
 19:27:58.794794 ====> Client connect
 19:27:58.794838 accept_connection 3 returned 4
 19:27:58.794861 Read 93 bytes
 19:27:58.794871 Process 93 bytes request
 19:27:58.794884 Got request: GET /verifiedserver HTTP/1.1
 19:27:58.794893 Are-we-friendly question received
 19:27:58.794924 Wrote request (93 bytes) input to log/8/server.input
 19:27:58.794942 Identifying ourselves as friends
 19:27:58.795011 Response sent (56 bytes) and written to log/8/server.response
 19:27:58.795021 special request received, no persistency
 19:27:58.795030 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 59288 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1061
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1061
 ==136911== 
 ==136911== Process terminating with default action of signal 4 (SIGILL)
 ==136911==  Illegal opcode at address 0x492B75F
 ==136911==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136911==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136911==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136911==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136911==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136911==    by 0x49908EB: curl_version_info (version.c:600)
 ==136911==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136911==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136911==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136911==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1061
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1060 ../src/curl -q --output log/22/curl1060.out  --include --trace-ascii log/22/trace1060 --trace-time http://test.remote.haxx.se.1060:8990/path/10600002 --proxy http://127.0.0.1:35989 --proxy-user silly:person --proxy-digest --proxytunnel > log/22/stdout1060 2> log/22/stderr1060
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1056 ../src/curl -q --output log/11/curl1056.out  --include --trace-ascii log/11/trace1056 --trace-time http://127.0.0.1:40989/we/are/all/twits/1056 -L > log/11/stdout1056 2> log/11/stderr1056
test 1064 [HTTP PUT twice]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1064 ../src/curl -q --include --trace-ascii log/3/trace1064 --trace-time -H "Expect:" -T log/3/1064 http://127.0.0.1:36161/1064.upload1 -T log/3/1064 http://127.0.0.1:36161/10640002.upload2 > log/3/stdout1064 2> log/3/stderr1064

 1064: stdout FAILED:
--- log/3/check-expected	2026-10-15 19:28:01.536892858 +0000
+++ log/3/check-generated	2026-10-15 19:28:01.533781762 +0000
@@ -1,12 +0,0 @@
-HTTP/1.1 200 A OK[CR][LF]
-Server: curl test[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 3[CR][LF]
-[CR][LF]
-ok[LF]
-HTTP/1.1 200 A OK[CR][LF]
-Server: curl test[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 9[CR][LF]
-[CR][LF]
-still ok[LF]
== Contents of files in the log/3/ directory after test 1064
=== Start of file 1064
 test
=== End of file 1064
=== Start of file check-expected
 HTTP/1.1 200 A OK[CR][LF]
 Server: curl test[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 3[CR][LF]
 [CR][LF]
 ok[LF]
 HTTP/1.1 200 A OK[CR][LF]
 Server: curl test[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 9[CR][LF]
 [CR][LF]
 still ok[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1064 ../src/curl -q --include --trace-ascii log/3/trace1064 --trace-time -H "Expect:" -T log/3/1064 http://127.0.0.1:36161/1064.upload1 -T log/3/1064 http://127.0.0.1:36161/10640002.upload2 > log/3/stdout1064 2> log/3/stderr1064
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.032682 ====> Client connect
 19:28:00.032723 accept_connection 3 returned 4
 19:28:00.032746 Read 93 bytes
 19:28:00.032756 Process 93 bytes request
 19:28:00.032770 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.032779 Are-we-friendly question received
 19:28:00.032809 Wrote request (93 bytes) input to log/3/server.input
 19:28:00.032825 Identifying ourselves as friends
 19:28:00.035657 Response sent (56 bytes) and written to log/3/server.response
 19:28:00.035674 special request received, no persistency
 19:28:00.035683 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36360 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1064
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1064
 ==137131== 
 ==137131== Process terminating with default action of signal 4 (SIGILL)
 ==137131==  Illegal opcode at address 0x492B75F
 ==137131==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137131==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137131==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137131==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137131==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137131==    by 0x49908EB: curl_version_info (version.c:600)
 ==137131==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137131==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137131==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137131==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1064
test 1060 [HTTP proxy CONNECT auth Digest, large headers and data]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1060 ../src/curl -q --output log/22/curl1060.out  --include --trace-ascii log/22/trace1060 --trace-time http://test.remote.haxx.se.1060:8990/path/10600002 --proxy http://127.0.0.1:35989 --proxy-user silly:person --proxy-digest --proxytunnel > log/22/stdout1060 2> log/22/stderr1060

 1060: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1060
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1060 ../src/curl -q --output log/22/curl1060.out  --include --trace-ascii log/22/trace1060 --trace-time http://test.remote.haxx.se.1060:8990/path/10600002 --proxy http://127.0.0.1:35989 --proxy-user silly:person --proxy-digest --proxytunnel > log/22/stdout1060 2> log/22/stderr1060
=== End of file commands.log
=== Start of file http_server.log
 19:27:58.348980 ====> Client connect
 19:27:58.349028 accept_connection 3 returned 4
 19:27:58.349048 Read 93 bytes
 19:27:58.349058 Process 93 bytes request
 19:27:58.349071 Got request: GET /verifiedserver HTTP/1.1
 19:27:58.349080 Are-we-friendly question received
 19:27:58.349137 Wrote request (93 bytes) input to log/22/server.input
 19:27:58.349152 Identifying ourselves as friends
 19:27:58.349216 Response sent (56 bytes) and written to log/22/server.response
 19:27:58.349224 special request received, no persistency
 19:27:58.349232 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 45000 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1060
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1060
 ==136777== 
 ==136777== Process terminating with default action of signal 4 (SIGILL)
 ==136777==  Illegal opcode at address 0x492B75F
 ==136777==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136777==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136777==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136777==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136777==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136777==    by 0x49908EB: curl_version_info (version.c:600)
 ==136777==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136777==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136777==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136777==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1060
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/11/server/http_ipv6_server.pid" --logfile "log/11/http_ipv6_server.log" --logdir "log/11" --portfile log/11/server/http_ipv6_server.port --config log/11/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 136302 port 45501
* pid http-ipv6 => 136302 136302
test 1056 [HTTP follow redirect from IPv4 to IPv6 with scope]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1056 ../src/curl -q -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1063 ../src/curl -q --output log/19/curl1063.out  --include --trace-ascii log/19/trace1063 --trace-time -r 4294967303- file://localhost/startdir/src/build-curl/tests/log/19/test1063.txt > log/19/stdout1063 2> log/19/stderr1063
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1065 ../src/curl -q --include --trace-ascii log/2/trace1065 --trace-time -H "Expect:" -T log/2/1065 http://127.0.0.1:34531/1065.upload1 http://127.0.0.1:34531/10650002.url2 > log/2/stdout1065 2> log/2/stderr1065
-output log/11/curl1056.out  --include --trace-ascii log/11/trace1056 --trace-time http://127.0.0.1:40989/we/are/all/twits/1056 -L > log/11/stdout1056 2> log/11/stderr1056

 1056: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1056
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1056 ../src/curl -q --output log/11/curl1056.out  --include --trace-ascii log/11/trace1056 --trace-time http://127.0.0.1:40989/we/are/all/twits/1056 -L > log/11/stdout1056 2> log/11/stderr1056
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:27:58.843888 Running HTTP IPv6 version on port 45501
 19:27:58.844034 Wrote pid 136302 to log/11/server/http_ipv6_server.pid
 19:27:58.844068 Wrote port 45501 to log/11/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file http_server.log
 19:27:57.794013 ====> Client connect
 19:27:57.794046 accept_connection 3 returned 4
 19:27:57.794067 Read 93 bytes
 19:27:57.794076 Process 93 bytes request
 19:27:57.794089 Got request: GET /verifiedserver HTTP/1.1
 19:27:57.794097 Are-we-friendly question received
 19:27:57.794129 Wrote request (93 bytes) input to log/11/server.input
 19:27:57.794148 Identifying ourselves as friends
 19:27:57.794220 Response sent (56 bytes) and written to log/11/server.response
 19:27:57.794233 special request received, no persistency
 19:27:57.794242 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 50604 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1056
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1056
 ==136923== 
 ==136923== Process terminating with default action of signal 4 (SIGILL)
 ==136923==  Illegal opcode at address 0x492B75F
 ==136923==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136923==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136923==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136923==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136923==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136923==    by 0x49908EB: curl_version_info (version.c:600)
 ==136923==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136923==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136923==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136923==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1056
test 1063 [Invalid large X- range on a file://]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1063 ../src/curl -q --output log/19/curl1063.out  --include --trace-ascii log/19/trace1063 --trace-time -r 4294967303- file://localhost/startdir/src/build-curl/tests/log/19/test1063.txt > log/19/stdout1063 2> log/19/stderr1063

curl returned 132, when expecting 36
 1063: exit FAILED
== Contents of files in the log/19/ directory after test 1063
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1063 ../src/curl -q --output log/19/curl1063.out  --include --trace-ascii log/19/trace1063 --trace-time -r 4294967303- file://localhost/startdir/src/build-curl/tests/log/19/test1063.txt > log/19/stdout1063 2> log/19/stderr1063
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1063
=== End of file server.cmd
=== Start of file test1063.txt
 1234567890
 1234567890
=== End of file test1063.txt
=== Start of file valgrind1063
 ==136914== 
 ==136914== Process terminating with default action of signal 4 (SIGILL)
 ==136914==  Illegal opcode at address 0x492B75F
 ==136914==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136914==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136914==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136914==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136914==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136914==    by 0x49908EB: curl_version_info (version.c:600)
 ==136914==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136914==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136914==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136914==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1063
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1062 ../src/curl -q --output log/15/curl1062.out  --include --trace-ascii log/15/trace1062 --trace-time ftp://127.0.0.1:44883/path/1062 > log/15/stdout1062 2> log/15/stderr1062
test 1065 [HTTP PUT with one file but two URLs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1065 ../src/curl -q --include --trace-ascii log/2/trace1065 --trace-time -H "Expect:" -T log/2/1065 http://127.0.0.1:34531/1065.upload1 http://127.0.0.1:34531/10650002.url2 > log/2/stdout1065 2> log/2/stderr1065

 1065: stdout FAILED:
--- log/2/check-expected	2026-10-15 19:28:01.983950938 +0000
+++ log/2/check-generated	2026-10-15 19:28:01.980482784 +0000
@@ -1,12 +0,0 @@
-HTTP/1.1 200 A OK[CR][LF]
-Server: curl test[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 3[CR][LF]
-[CR][LF]
-ok[LF]
-HTTP/1.1 200 A OK[CR][LF]
-Server: curl test[CR][LF]
-Content-Type: text/html; charset=iso-8859-1[CR][LF]
-Content-Length: 9[CR][LF]
-[CR][LF]
-still ok[LF]
== Contents of files in the log/2/ directory after test 1065
=== Start of file 1065
 test
=== End of file 1065
=== Start of file check-expected
 HTTP/1.1 200 A OK[CR][LF]
 Server: curl test[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 3[CR][LF]
 [CR][LF]
 ok[LF]
 HTTP/1.1 200 A OK[CR][LF]
 Server: curl test[CR][LF]
 Content-Type: text/html; charset=iso-8859-1[CR][LF]
 Content-Length: 9[CR][LF]
 [CR][LF]
 still ok[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1065 ../src/curl -q --include --trace-ascii log/2/trace1065 --trace-time -H "Expect:" -T log/2/1065 http://127.0.0.1:34531/1065.upload1 http://127.0.0.1:34531/10650002.url2 > log/2/stdout1065 2> log/2/stderr1065
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.141536 ====> Client connect
 19:28:00.141573 accept_connection 3 returned 4
 19:28:00.141665 Read 93 bytes
 19:28:00.141677 Process 93 bytes request
 19:28:00.141689 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.141698 Are-we-friendly question received
 19:28:00.141727 Wrote request (93 bytes) input to log/2/server.input
 19:28:00.141744 Identifying ourselves as friends
 19:28:00.141800 Response sent (56 bytes) and written to log/2/server.response
 19:28:00.141809 special request received, no persistency
 19:28:00.141817 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 46718 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1065
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1065
 ==137180== 
 ==137180== Process terminating with default action of signal 4 (SIGILL)
 ==137180==  Illegal opcode at address 0x492B75F
 ==137180==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137180==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137180==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137180==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137180==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137180==    by 0x49908EB: curl_version_info (version.c:600)
 ==137180==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137180==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137180==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137180==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1065
test 1062 [FTP excessively long server command response lines, boundary condition]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1062 ../src/curl -q --output log/15/curl1062.out  --include --trace-ascii log/15/trace1062 --trace-time ftp://127.0.0.1:44883/path/1062 > log/15/stdout1062 2> log/15/stderr1062

 1062: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1062
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1062 ../src/curl -q --output log/15/curl1062.out  --include --trace-ascii log/15/trace1062 --trace-time ftp://127.0.0.1:44883/path/1062 > log/15/stdout1062 2> log/15/stderr1062
=== End of file commands.log
=== Start of file ftp_server.log
 19:27:59.217445 ====> Client connect
 19:27:59.217673 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:27:59.218016 < "USER anonymous"
 19:27:59.218064 > "331 We are happy you popped in![CR][LF]"
 19:27:59.218287 < "PASS ftp@example.com"
 19:27:59.218328 > "230 Welcome you silly person[CR][LF]"
 19:27:59.218523 < "PWD"
 19:27:59.218565 > "257 "/" is current directory[CR][LF]"
 19:27:59.218781 < "EPSV"
 19:27:59.218806 ====> Passive DATA channel requested by client
 19:27:59.218821 DATA sockfilt for passive data channel starting...
 19:27:59.221079 DATA sockfilt for passive data channel started (pid 136907)
 19:27:59.221204 DATA sockfilt for passive data channel listens on port 37897
 19:27:59.221258 > "229 Entering Passive Mode (|||37897|)[CR][LF]"
 19:27:59.221283 Client has been notified that upcoming DATA connection is awaited on port 37897
 19:27:59.221556 Client connects to port 37897
 19:27:59.221588 ====> Client established passive DATA connection on port 37897
 19:27:59.221669 < "TYPE I"
 19:27:59.221705 > "200 I modify TYPE as you wanted[CR][LF]"
 19:27:59.221881 < "SIZE verifiedserver"
 19:27:59.221924 > "213 17[CR][LF]"
 19:27:59.222111 < "RETR verifiedserver"
 19:27:59.222149 > "150 Binary junk (17 bytes).[CR][LF]"
 19:27:59.222249 =====> Closing passive DATA connection...
 19:27:59.222273 Server disconnects passive DATA connection
 19:27:59.222533 Server disconnected passive DATA connection
 19:27:59.222568 DATA sockfilt for passive data channel quits (pid 136907)
 19:27:59.222833 DATA sockfilt for passive data channel quit (pid 136907)
 19:27:59.222863 =====> Closed passive DATA connection
 19:27:59.222893 > "226 File transfer complete[CR][LF]"
 19:27:59.271271 < "QUIT"
 19:27:59.271340 > "221 bye bye baby[CR][LF]"
 19:27:59.275489 MAIN sockfilt said DISC
 19:27:59.275534 ====> Client disconnected
 19:27:59.275629 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:27:58.821905 ====> Client connect
 19:27:58.822288 Received DATA (on stdin)
 19:27:58.822305 > 146 bytes data, server => client
 19:27:58.822317 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:27:58.822327 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:27:58.822336 '220    \___|\___/|_| \_\_____|\r\n'
 19:27:58.822432 < 16 bytes data, client => server
 19:27:58.822449 'USER anonymous\r\n'
 19:27:58.822664 Received DATA (on stdin)
 19:27:58.822677 > 33 bytes data, server => client
 19:27:58.822688 '331 We are happy you popped in!\r\n'
 19:27:58.822754 < 22 bytes data, client => server
 19:27:58.822772 'PASS ftp@example.com\r\n'
 19:27:58.822925 Received DATA (on stdin)
 19:27:58.822939 > 30 bytes data, server => client
 19:27:58.822949 '230 Welcome you silly person\r\n'
 19:27:58.823010 < 5 bytes data, client => server
 19:27:58.823025 'PWD\r\n'
 19:27:58.823161 Received DATA (on stdin)
 19:27:58.823174 > 30 bytes data, server => client
 19:27:58.823184 '257 "/" is current directory\r\n'
 19:27:58.823275 < 6 bytes data, client => server
 19:27:58.823291 'EPSV\r\n'
 19:27:58.825885 Received DATA (on stdin)
 19:27:58.825899 > 39 bytes data, server => client
 19:27:58.825909 '229 Entering Passive Mode (|||37897|)\r\n'
 19:27:58.826054 < 8 bytes data, client => server
 19:27:58.826071 'TYPE I\r\n'
 19:27:58.826299 Received DATA (on stdin)
 19:27:58.826311 > 33 bytes data, server => client
 19:27:58.826321 '200 I modify TYPE as you wanted\r\n'
 19:27:58.826377 < 21 bytes data, client => server
 19:27:58.826388 'SIZE verifiedserver\r\n'
 19:27:58.826518 Received DATA (on stdin)
 19:27:58.826530 > 8 bytes data, server => client
 19:27:58.826540 '213 17\r\n'
 19:27:58.826603 < 21 bytes data, client => server
 19:27:58.826617 'RETR verifiedserver\r\n'
 19:27:58.826868 Received DATA (on stdin)
 19:27:58.826880 > 29 bytes data, server => client
 19:27:58.826891 '150 Binary junk (17 bytes).\r\n'
 19:27:58.827488 Received DATA (on stdin)
 19:27:58.827501 > 28 bytes data, server => client
 19:27:58.827512 '226 File transfer complete\r\n'
 19:27:58.875639 < 6 bytes data, client => server
 19:27:58.875676 'QUIT\r\n'
 19:27:58.875937 Received DATA (on stdin)
 19:27:58.875951 > 18 bytes data, server => client
 19:27:58.875961 '221 bye bye baby\r\n'
 19:27:58.880006 ====> Client disconnect
 19:27:58.880215 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:27:59.825328 Running IPv4 version
 19:27:59.825409 Listening on port 37897
 19:27:59.825448 Wrote pid 136907 to log/15/server/ftp_sockdata.pid
 19:27:59.825605 Received PING (on stdin)
 19:27:59.825701 Received PORT (on stdin)
 19:27:59.826096 ====> Client connect
 19:27:59.826952 Received DATA (on stdin)
 19:27:59.826967 > 17 bytes data, server => client
 19:27:59.826977 'WE ROOLZ: 84744\r\n'
 19:27:59.827006 Received DISC (on stdin)
 19:27:59.827020 ====> Client forcibly disconnected
 19:27:59.827168 Received QUIT (on stdin)
 19:27:59.827179 quits
 19:27:59.827245 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1066 ../src/curl -q --include --trace-ascii log/14/trace1066 --trace-time http://127.0.0.1:45467/want/1066 http://127.0.0.1:45467/want/10660001 --dump-header - > log/14/stdout1066 2> log/14/stderr1066
AAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n250-A Exactly fill curl's buffer\r\n250 Finally, here is the response, boundary condition
 Testnum 1062
=== End of file server.cmd
=== Start of file valgrind1062
 ==136942== 
 ==136942== Process terminating with default action of signal 4 (SIGILL)
 ==136942==  Illegal opcode at address 0x492B75F
 ==136942==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==136942==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==136942==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==136942==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==136942==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==136942==    by 0x49908EB: curl_version_info (version.c:600)
 ==136942==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==136942==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==136942==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==136942==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1062
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1070 ../src/curl -q --output log/13/curl1070.out  --include --trace-ascii log/13/trace1070 --trace-time -d @log/13/input1070 http://127.0.0.1:38821/1070 -H "Expect: 100-continue" > log/13/stdout1070 2> log/13/stderr1070
test 1066 [HTTP --dump-header - with two URLs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1066 ../src/curl -q --include --trace-ascii log/14/trace1066 --trace-time http://127.0.0.1:45467/want/1066 http://127.0.0.1:45467/want/10660001 --dump-header - > log/14/stdout1066 2> log/14/stderr1066

 1066: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:28:02.039453789 +0000
+++ log/14/check-generated	2026-10-15 19:28:02.037153753 +0000
@@ -1,22 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Server: thebest/1.0[CR][LF]
-Server: thebest/1.0[CR][LF]
-Content-Type: text/plain[CR][LF]
-Content-Type: text/plain[CR][LF]
-Content-Length: 6[CR][LF]
-Content-Length: 6[CR][LF]
-[CR][LF]
-[CR][LF]
-first[LF]
-HTTP/1.1 200 OK[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Server: thebest/1.0[CR][LF]
-Server: thebest/1.0[CR][LF]
-Content-Type: text/plain[CR][LF]
-Content-Type: text/plain[CR][LF]
-Content-Length: 7[CR][LF]
-Content-Length: 7[CR][LF]
-[CR][LF]
-[CR][LF]
-second[LF]
== Contents of files in the log/14/ directory after test 1066
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Server: thebest/1.0[CR][LF]
 Server: thebest/1.0[CR][LF]
 Content-Type: text/plain[CR][LF]
 Content-Type: text/plain[CR][LF]
 Content-Length: 6[CR][LF]
 Content-Length: 6[CR][LF]
 [CR][LF]
 [CR][LF]
 first[LF]
 HTTP/1.1 200 OK[CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Server: thebest/1.0[CR][LF]
 Server: thebest/1.0[CR][LF]
 Content-Type: text/plain[CR][LF]
 Content-Type: text/plain[CR][LF]
 Content-Length: 7[CR][LF]
 Content-Length: 7[CR][LF]
 [CR][LF]
 [CR][LF]
 second[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1066 ../src/curl -q --include --trace-ascii log/14/trace1066 --trace-time http://127.0.0.1:45467/want/1066 http://127.0.0.1:45467/want/10660001 --dump-header - > log/14/stdout1066 2> log/14/stderr1066
=== End of file commands.log
=== Start of file http_server.log
 19:27:59.196790 ====> Client connect
 19:27:59.196826 accept_connection 3 returned 4
 19:27:59.197217 Read 93 bytes
 19:27:59.197231 Process 93 bytes request
 19:27:59.197244 Got request: GET /verifiedserver HTTP/1.1
 19:27:59.197253 Are-we-friendly question received
 19:27:59.197361 Wrote request (93 bytes) input to log/14/server.input
 19:27:59.197377 Identifying ourselves as friends
 19:27:59.197433 Response sent (56 bytes) and written to log/14/server.response
 19:27:59.197441 special request received, no persistency
 19:27:59.197449 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 41658 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1066
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1066
 ==137207== 
 ==137207== Process terminating with default action of signal 4 (SIGILL)
 ==137207==  Illegal opcode at address 0x492B75F
 ==137207==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137207==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137207==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137207==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137207==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137207==    by 0x49908EB: curl_version_info (version.c:600)
 ==137207==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137207==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137207==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137207==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1066
test 1070 [HTTP POST with server closing connection before (all) data is received]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1070 ../src/curl -q --output log/13/curl1070.out  --include --trace-ascii log/13/trace1070 --trace-time -d @log/13/input1070 http://127.0.0.1:38821/1070 -H "Expect: 100-continue" > log/13/stdout1070 2> log/13/stderr1070

 1070: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1070
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1070 ../src/curl -q --output log/13/curl1070.out  --include --trace-ascii log/13/trace1070 --trace-time -d @log/13/input1070 http://127.0.0.1:38821/1070 -H "Expect: 100-continue" > log/13/stdout1070 2> log/13/stderr1070
=== End of file commands.log
=== Start of file http_server.log
 19:27:59.646740 ====> Client connect
 19:27:59.646789 accept_connection 3 returned 4
 19:27:59.646814 Read 93 bytes
 19:27:59.646824 Process 93 bytes request
 19:27:59.646837 Got request: GET /verifiedserver HTTP/1.1
 19:27:59.646845 Are-we-friendly question received
 19:27:59.646874 Wrote request (93 bytes) input to log/13/server.input
 19:27:59.646891 Identifying ourselves as friends
 19:27:59.646965 Response sent (56 bytes) and written to log/13/server.response
 19:27:59.646976 special request received, no persistency
 19:27:59.646984 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 58346 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file input1070
 This creates the named file with this content before the test case is run,
 which is useful if the test case needs a file to act on. We create this file
 rather large (larger than your typical TCP packet) so that not all of it can nor
 will be sent in one go as that is kind of the point of this test
 Here's 2000 x 'O':
 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1073 ../src/curl -q --output log/12/curl1073.out  --include --trace-ascii log/12/trace1073 --trace-time http://127.0.0.1:40921/1073 -T - -L <log/12/stdin-for-1073 > log/12/stdout1073 2> log/12/stderr1073
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1067 ../src/curl -q --output log/9/curl1067.out  --include --trace-ascii log/9/trace1067 --trace-time http://127.0.0.1:43733/want/1067 --silent --location --referer "firstone.html;auto" --write-out "%{stderr}|%{referer}|" > log/9/stdout1067 2> log/9/stderr1067
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
=== End of file input1070
=== Start of file server.cmd
 skip: 2300
 Testnum 1070
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1070
 ==137506== 
 ==137506== Process terminating with default action of signal 4 (SIGILL)
 ==137506==  Illegal opcode at address 0x492B75F
 ==137506==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137506==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137506==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137506==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137506==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137506==    by 0x49908EB: curl_version_info (version.c:600)
 ==137506==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137506==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1070
test 1073 [HTTP chunked PUT to HTTP 1.0 server with redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1073 ../src/curl -q --output log/12/curl1073.out  --include --trace-ascii log/12/trace1073 --trace-time http://127.0.0.1:40921/1073 -T - -L <log/12/stdin-for-1073 > log/12/stdout1073 2> log/12/stderr1073

 1073: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1073
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1073 ../src/curl -q --output log/12/curl1073.out  --include --trace-ascii log/12/trace1073 --trace-time http://127.0.0.1:40921/1073 -T - -L <log/12/stdin-for-1073 > log/12/stdout1073 2> log/12/stderr1073
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.082743 ====> Client connect
 19:28:00.082785 accept_connection 3 returned 4
 19:28:00.082809 Read 93 bytes
 19:28:00.082820 Process 93 bytes request
 19:28:00.082834 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.082843 Are-we-friendly question received
 19:28:00.082875 Wrote request (93 bytes) input to log/12/server.input
 19:28:00.082895 Identifying ourselves as friends
 19:28:00.082970 Response sent (56 bytes) and written to log/12/server.response
 19:28:00.082983 special request received, no persistency
 19:28:00.082992 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 56146 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1073
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file stdin-for-1073
 This is data we upload with PUT
 it comes from stdin so MUST be sent
 with chunked encoding
 which is impossible in HTTP/1.0
=== End of file stdin-for-1073
=== Start of file valgrind1073
 ==137684== 
 ==137684== Process terminating with default action of signal 4 (SIGILL)
 ==137684==  Illegal opcode at address 0x492B75F
 ==137684==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137684==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137684==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137684==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137684==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137684==    by 0x49908EB: curl_version_info (version.c:600)
 ==137684==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137684==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137684==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137684==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1073
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1071 ../src/curl -q --output log/18/curl1071.out  --include --trace-ascii log/18/trace1071 --trace-time http://127.0.0.1:43739/1071 -T log/18/put1071 -u testuser:testpass --anyauth > log/18/stdout1071 2> log/18/stderr1071
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1068 ../src/curl -q --output log/6/curl1068.out  --include --trace-ascii log/6/trace1068 --trace-time http://127.0.0.1:33935/bzz/1068 -T - <log/6/stdin-for-1068 > log/6/stdout1068 2> log/6/stderr1068
test 1067 [HTTP Location: following with auto-referer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1067 ../src/curl -q --output log/9/curl1067.out  --include --trace-ascii log/9/trace1067 --trace-time http://127.0.0.1:43733/want/1067 --silent --location --referer "firstone.html;auto" --write-out "%{stderr}|%{referer}|" > log/9/stdout1067 2> log/9/stderr1067

 1067: stderr FAILED:
--- log/9/check-expected	2026-10-15 19:28:02.441030566 +0000
+++ log/9/check-generated	2026-10-15 19:28:02.437183887 +0000
@@ -1 +0,0 @@
-|http://127.0.0.1:43733/want/1067|
== Contents of files in the log/9/ directory after test 1067
=== Start of file check-expected
 |http://127.0.0.1:43733/want/1067|
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1067 ../src/curl -q --output log/9/curl1067.out  --include --trace-ascii log/9/trace1067 --trace-time http://127.0.0.1:43733/want/1067 --silent --location --referer "firstone.html;auto" --write-out "%{stderr}|%{referer}|" > log/9/stdout1067 2> log/9/stderr1067
=== End of file commands.log
=== Start of file http_server.log
 19:27:59.373290 ====> Client connect
 19:27:59.373334 accept_connection 3 returned 4
 19:27:59.373355 Read 93 bytes
 19:27:59.373364 Process 93 bytes request
 19:27:59.373377 Got request: GET /verifiedserver HTTP/1.1
 19:27:59.373385 Are-we-friendly question received
 19:27:59.373410 Wrote request (93 bytes) input to log/9/server.input
 19:27:59.373425 Identifying ourselves as friends
 19:27:59.373488 Response sent (56 bytes) and written to log/9/server.response
 19:27:59.373497 special request received, no persistency
 19:27:59.373505 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 37432 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1067
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1067
 ==137345== 
 ==137345== Process terminating with default action of signal 4 (SIGILL)
 ==137345==  Illegal opcode at address 0x492B75F
 ==137345==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137345==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137345==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137345==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137345==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137345==    by 0x49908EB: curl_version_info (version.c:600)
 ==137345==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137345==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137345==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137345==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1067
test 1071 [Downgraded HTTP PUT to HTTP 1.0 with authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1071 ../src/curl -q --output log/18/curl1071.out  --include --trace-ascii log/18/trace1071 --trace-time http://127.0.0.1:43739/1071 -T log/18/put1071 -u testuser:testpass --anyauth > log/18/stdout1071 2> log/18/stderr1071

 1071: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1071
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1071 ../src/curl -q --output log/18/curl1071.out  --include --trace-ascii log/18/trace1071 --trace-time http://127.0.0.1:43739/1071 -T log/18/put1071 -u testuser:testpass --anyauth > log/18/stdout1071 2> log/18/stderr1071
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.966298 ====> Client connect
 19:28:00.966335 accept_connection 3 returned 4
 19:28:00.966505 Read 93 bytes
 19:28:00.966520 Process 93 bytes request
 19:28:00.966533 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.966542 Are-we-friendly question received
 19:28:00.966574 Wrote request (93 bytes) input to log/18/server.input
 19:28:00.966591 Identifying ourselves as friends
 19:28:00.966647 Response sent (56 bytes) and written to log/18/server.response
 19:28:00.966656 special request received, no persistency
 19:28:00.966663 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 51724 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file put1071
 This is data we upload with PUT
 a second line
 line three
 four is the number of lines
=== End of file put1071
=== Start of file server.cmd
 Testnum 1071
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1071
 ==137633== 
 ==137633== Process terminating with default action of signal 4 (SIGILL)
 ==137633==  Illegal opcode at address 0x492B75F
 ==137633==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137633==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137633==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137633==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137633==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137633==    by 0x49908EB: curl_version_info (version.c:600)
 ==137633==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137633==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1071
test 1068 [HTTP PUT from stdin]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1068 ../src/curl -q --output log/6/curl1068.out  --include --trace-ascii log/6/trace1068 --trace-time http://127.0.0.1:33935/bzz/1068 -T - <log/6/stdin-for-1068 > log/6/stdout1068 2> log/6/stderr1068

 1068: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1068
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1068 ../src/curl -q --output log/6/curl1068.out  --include --trace-ascii log/6/trace1068 --trace-time http://127.0.0.1:33935/bzz/1068 -T - <log/6/stdin-for-1068 > log/6/stdout1068 2> log/6/stderr1068
=== End of file commands.log
=== Start of file http_server.log
 19:27:59.522761 ====> Client connect
 19:27:59.522798 accept_connection 3 returned 4
 19:27:59.5CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1069 ../src/curl -q --output log/1/curl1069.out  --include --trace-ascii log/1/trace1069 --trace-time http://127.0.0.1:38815/bzz/1069 -T - -0 <log/1/stdin-for-1069 > log/1/stdout1069 2> log/1/stderr1069
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1072 ../src/curl -q --output log/23/curl1072.out  --include --trace-ascii log/23/trace1072 --trace-time http://127.0.0.1:44711/1072 -T - -u testuser:testpass --anyauth <log/23/stdin-for-1072 > log/23/stdout1072 2> log/23/stderr1072
22941 Read 93 bytes
 19:27:59.522955 Process 93 bytes request
 19:27:59.522969 Got request: GET /verifiedserver HTTP/1.1
 19:27:59.522976 Are-we-friendly question received
 19:27:59.523008 Wrote request (93 bytes) input to log/6/server.input
 19:27:59.523024 Identifying ourselves as friends
 19:27:59.523083 Response sent (56 bytes) and written to log/6/server.response
 19:27:59.523091 special request received, no persistency
 19:27:59.523099 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 51430 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1068
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file stdin-for-1068
 more than one byte
=== End of file stdin-for-1068
=== Start of file valgrind1068
 ==137430== 
 ==137430== Process terminating with default action of signal 4 (SIGILL)
 ==137430==  Illegal opcode at address 0x492B75F
 ==137430==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137430==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137430==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137430==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137430==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137430==    by 0x49908EB: curl_version_info (version.c:600)
 ==137430==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137430==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1068
test 1069 [HTTP 1.0 PUT from stdin with no content length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1069 ../src/curl -q --output log/1/curl1069.out  --include --trace-ascii log/1/trace1069 --trace-time http://127.0.0.1:38815/bzz/1069 -T - -0 <log/1/stdin-for-1069 > log/1/stdout1069 2> log/1/stderr1069

curl returned 132, when expecting 25
 1069: exit FAILED
== Contents of files in the log/1/ directory after test 1069
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1069 ../src/curl -q --output log/1/curl1069.out  --include --trace-ascii log/1/trace1069 --trace-time http://127.0.0.1:38815/bzz/1069 -T - -0 <log/1/stdin-for-1069 > log/1/stdout1069 2> log/1/stderr1069
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.515599 ====> Client connect
 19:28:00.515647 accept_connection 3 returned 4
 19:28:00.515675 Read 93 bytes
 19:28:00.515687 Process 93 bytes request
 19:28:00.515701 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.515710 Are-we-friendly question received
 19:28:00.515745 Wrote request (93 bytes) input to log/1/server.input
 19:28:00.515766 Identifying ourselves as friends
 19:28:00.515847 Response sent (56 bytes) and written to log/1/server.response
 19:28:00.515860 special request received, no persistency
 19:28:00.515869 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 46104 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1069
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file stdin-for-1069
 this data cannot be sent
=== End of file stdin-for-1069
=== Start of file valgrind1069
 ==137408== 
 ==137408== Process terminating with default action of signal 4 (SIGILL)
 ==137408==  Illegal opcode at address 0x492B75F
 ==137408==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137408==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137408==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137408==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137408==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137408==    by 0x49908EB: curl_version_info (version.c:600)
 ==137408==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137408==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137408==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137408==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1069
test 1072 [HTTP chunked PUT to HTTP 1.0 server with authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1072 ../src/curl -q --output log/23/curl1072.out  --include --trace-ascii log/23/trace1072 --trace-time http://127.0.0.1:44711/1072 -T - -u testuser:testpass --anyauth <log/23/stdin-for-1072 > log/23/stdout1072 2> log/23/stderr1072

 1072: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1072
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1072 ../src/curl -q --output log/23/curl1072.out  --include --trace-ascii log/23/trace1072 --trace-time http://127.0.0.1:44711/1072 -T - -u testuser:testpass --anyauth <log/23/stdin-for-1072 > log/23/stdout1072 2> log/23/stderr1072
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.051514 ====> Client connect
 19:28:00.051559 accept_connection 3 returned 4
 19:28:00.051586 Read 93 bytes
 19:28:00.051597 Process 93 bytes request
 19:28:00.051611 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.051620 Are-we-friendly question received
 19:28:00.051650 Wrote request (93 bytes) input to log/23/server.input
 19:28:00.051669 Identifying ourselves as friends
 19:28:00.051770 Response sent (56 bytes) and written to log/23/server.response
 19:28:00.051783 special request received, no persistency
 19:28:00.051793 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 60920 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1072
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file stdin-for-1072
 This is data we upload with PUT
 it comes from stdin so MUST be sent
 with chunked encoding
 which is impossible in HTTP/1.0
=== End of file stdin-for-1072
=== Start of file valgrind1072
 ==137670== 
 ==137670CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1077 ../src/curl -q --output log/24/curl1077.out  --include --trace-ascii log/24/trace1077 --trace-time -x 127.0.0.1:38895 ftp://127.0.0.1:38895/we/want/that/page/1077 ftp://127.0.0.1:38895/we/want/that/page/10770002 > log/24/stdout1077 2> log/24/stderr1077
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1074 ../src/curl -q --include --trace-ascii log/20/trace1074 --trace-time http://127.0.0.1:33897/want/1074 http://127.0.0.1:33897/wantmore/10740001 > log/20/stdout1074 2> log/20/stderr1074
== Process terminating with default action of signal 4 (SIGILL)
 ==137670==  Illegal opcode at address 0x492B75F
 ==137670==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137670==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137670==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137670==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137670==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137670==    by 0x49908EB: curl_version_info (version.c:600)
 ==137670==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137670==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137670==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137670==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1072
test 1077 [FTP over HTTP proxy with downgrade to HTTP 1.0]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1077 ../src/curl -q --output log/24/curl1077.out  --include --trace-ascii log/24/trace1077 --trace-time -x 127.0.0.1:38895 ftp://127.0.0.1:38895/we/want/that/page/1077 ftp://127.0.0.1:38895/we/want/that/page/10770002 > log/24/stdout1077 2> log/24/stderr1077

 1077: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1077
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1077 ../src/curl -q --output log/24/curl1077.out  --include --trace-ascii log/24/trace1077 --trace-time -x 127.0.0.1:38895 ftp://127.0.0.1:38895/we/want/that/page/1077 ftp://127.0.0.1:38895/we/want/that/page/10770002 > log/24/stdout1077 2> log/24/stderr1077
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.576512 ====> Client connect
 19:28:00.576560 accept_connection 3 returned 4
 19:28:00.576590 Read 93 bytes
 19:28:00.576601 Process 93 bytes request
 19:28:00.576615 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.576625 Are-we-friendly question received
 19:28:00.576655 Wrote request (93 bytes) input to log/24/server.input
 19:28:00.576675 Identifying ourselves as friends
 19:28:00.576768 Response sent (56 bytes) and written to log/24/server.response
 19:28:00.576781 special request received, no persistency
 19:28:00.576790 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 59436 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1077
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1077
 ==137983== 
 ==137983== Process terminating with default action of signal 4 (SIGILL)
 ==137983==  Illegal opcode at address 0x492B75F
 ==137983==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137983==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137983==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137983==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137983==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137983==    by 0x49908EB: curl_version_info (version.c:600)
 ==137983==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137983==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137983==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137983==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1077
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1079 ../src/curl -q --output log/10/curl1079.out  --include --trace-ascii log/10/trace1079 --trace-time http://127.0.0.1:40913/1079 -u testuser:testpass --digest > log/10/stdout1079 2> log/10/stderr1079
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1076 ../src/curl -q --output log/17/curl1076.out  --include --trace-ascii log/17/trace1076 --trace-time http://127.0.0.1:35993/blah/1076 -L -d "moo" --post302 > log/17/stdout1076 2> log/17/stderr1076
test 1074 [HTTP downgrade to HTTP/1.0 on second request]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1074 ../src/curl -q --include --trace-ascii log/20/trace1074 --trace-time http://127.0.0.1:33897/want/1074 http://127.0.0.1:33897/wantmore/10740001 > log/20/stdout1074 2> log/20/stderr1074

 1074: stdout FAILED:
--- log/20/check-expected	2026-10-15 19:28:03.309254479 +0000
+++ log/20/check-generated	2026-10-15 19:28:03.307248951 +0000
@@ -1,11 +0,0 @@
-HTTP/1.0 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 9[CR][LF]
-Connection: Keep-Alive[CR][LF]
-[CR][LF]
-surprise[LF]
-HTTP/1.0 200 OK swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-surprise2[LF]
== Contents of files in the log/20/ directory after test 1074
=== Start of file check-expected
 HTTP/1.0 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 9[CR][LF]
 Connection: Keep-Alive[CR][LF]
 [CR][LF]
 surprise[LF]
 HTTP/1.0 200 OK swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 surprise2[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1074 ../src/curl -q --include --trace-ascii log/20/trace1074 --trace-time http://127.0.0.1:33897/want/1074 http://127.0.0.1:33897/wantmore/10740001 > log/20/stdout1074 2> log/20/stderr1074
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.416523 ====> Client connect
 19:28:00.416563 accept_connection 3 returned 4
 19:28:00.416588 Read 93 bytes
 19:28:00.416597 Process 93 bytes request
 19:28:00.416612 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.416620 Are-we-friendly question received
 19:28:00.416650 Wrote request (93 bytes) input to log/20/server.input
 19:28:00.416665 Identifying ourselves as friends
 19:28:00.416737 Response sent (56 bytes) and written to log/20/server.response
 19:28:00.416746 special request received, no persistency
 19:28:00.416755 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 54688 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1074
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1074
 ==137865== 
 ==137865== Process terminating with default action of signal 4 (SIGILL)
 ==137865==  Illegal opcode at address 0x492B75F
 ==137865==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137865==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137865==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137865==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137865==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137865==    by 0x49908EB: curl_version_info (version.c:600)
 ==137865==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137865==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137865==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137865==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1074
test 1079 [HTTP retry after closed connection and empty response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1079 ../src/curl -q --output log/10/curl1079.out  --include --trace-ascii log/10/trace1079 --trace-time http://127.0.0.1:40913/1079 -u testuser:testpass --digest > log/10/stdout1079 2> log/10/stderr1079

 1079: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1079
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1079 ../src/curl -q --output log/10/curl1079.out  --include --trace-ascii log/10/trace1079 --trace-time http://127.0.0.1:40913/1079 -u testuser:testpass --digest > log/10/stdout1079 2> log/10/stderr1079
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.776524 ====> Client connect
 19:28:00.776566 accept_connection 3 returned 4
 19:28:00.776588 Read 93 bytes
 19:28:00.776598 Process 93 bytes request
 19:28:00.776611 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.776619 Are-we-friendly question received
 19:28:00.776648 Wrote request (93 bytes) input to log/10/server.input
 19:28:00.776664 Identifying ourselves as friends
 19:28:00.776816 Response sent (56 bytes) and written to log/10/server.response
 19:28:00.776836 special request received, no persistency
 19:28:00.776847 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 42166 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1079
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1079
 ==138129== 
 ==138129== Process terminating with default action of signal 4 (SIGILL)
 ==138129==  Illegal opcode at address 0x492B75F
 ==138129==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138129==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138129==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138129==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138129==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138129==    by 0x49908EB: curl_version_info (version.c:600)
 ==138129==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138129==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138129==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138129==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1079
test 1076 [HTTP POST with 302 redirect and --post302]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1076 ../src/curl -q --output log/17/curl1076.out  --include --trace-ascii log/17/trace1076 --trace-time http://127.0.0.1:35993/blah/1076 -L -d "moo" --post302 > log/17/stdout1076 2> log/17/stderr1076

 1076: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1076
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1076 ../src/curl -q --output log/17/curl1076.out  --include --trace-ascii log/17/trace1076 --trace-time http://127.0.0.1:35993/blah/1076 -L -d "CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1082 ../src/curl -q --output log/16/curl1082.out  --include --trace-ascii log/16/trace1082 --trace-time http://127.0.0.1:35903/1082 -4 --interface 127.0.0.1 > log/16/stdout1082 2> log/16/stderr1082
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1075 ../src/curl -q --output log/4/curl1075.out  --include --trace-ascii log/4/trace1075 --trace-time http://127.0.0.1:35735/1075 -T log/4/put1075 -u testuser:testpass --anyauth > log/4/stdout1075 2> log/4/stderr1075
moo" --post302 > log/17/stdout1076 2> log/17/stderr1076
=== End of file commands.log
=== Start of file http_server.log
 19:28:01.460392 ====> Client connect
 19:28:01.460429 accept_connection 3 returned 4
 19:28:01.460449 Read 93 bytes
 19:28:01.460459 Process 93 bytes request
 19:28:01.460470 Got request: GET /verifiedserver HTTP/1.1
 19:28:01.460479 Are-we-friendly question received
 19:28:01.460505 Wrote request (93 bytes) input to log/17/server.input
 19:28:01.460521 Identifying ourselves as friends
 19:28:01.460582 Response sent (56 bytes) and written to log/17/server.response
 19:28:01.460592 special request received, no persistency
 19:28:01.460600 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 43338 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1076
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1076
 ==137875== 
 ==137875== Process terminating with default action of signal 4 (SIGILL)
 ==137875==  Illegal opcode at address 0x492B75F
 ==137875==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137875==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137875==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137875==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137875==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137875==    by 0x49908EB: curl_version_info (version.c:600)
 ==137875==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137875==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137875==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137875==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1076
prechecked /usr/bin/perl -e "print 'Test requires default test client host address' if('127.0.0.1' ne '127.0.0.1');"
test 1082 [HTTP GET with localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1082 ../src/curl -q --output log/16/curl1082.out  --include --trace-ascii log/16/trace1082 --trace-time http://127.0.0.1:35903/1082 -4 --interface 127.0.0.1 > log/16/stdout1082 2> log/16/stderr1082

 1082: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1082
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1082 ../src/curl -q --output log/16/curl1082.out  --include --trace-ascii log/16/trace1082 --trace-time http://127.0.0.1:35903/1082 -4 --interface 127.0.0.1 > log/16/stdout1082 2> log/16/stderr1082
=== End of file commands.log
=== Start of file http_server.log
 19:28:01.933657 ====> Client connect
 19:28:01.933695 accept_connection 3 returned 4
 19:28:01.933716 Read 93 bytes
 19:28:01.933725 Process 93 bytes request
 19:28:01.933737 Got request: GET /verifiedserver HTTP/1.1
 19:28:01.933745 Are-we-friendly question received
 19:28:01.933772 Wrote request (93 bytes) input to log/16/server.input
 19:28:01.933787 Identifying ourselves as friends
 19:28:01.933851 Response sent (56 bytes) and written to log/16/server.response
 19:28:01.933860 special request received, no persistency
 19:28:01.933868 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 49696 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1082
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1082
 ==138206== 
 ==138206== Process terminating with default action of signal 4 (SIGILL)
 ==138206==  Illegal opcode at address 0x492B75F
 ==138206==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138206==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138206==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138206==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138206==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138206==    by 0x49908EB: curl_version_info (version.c:600)
 ==138206==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138206==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138206==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138206==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1082
test 1075 [HTTP PUT with --anyauth authorization (picking Basic)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1075 ../src/curl -q --output log/4/curl1075.out  --include --trace-ascii log/4/trace1075 --trace-time http://127.0.0.1:35735/1075 -T log/4/put1075 -u testuser:testpass --anyauth > log/4/stdout1075 2> log/4/stderr1075

 1075: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1075
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1075 ../src/curl -q --output log/4/curl1075.out  --include --trace-ascii log/4/trace1075 --trace-time http://127.0.0.1:35735/1075 -T log/4/put1075 -u testuser:testpass --anyauth > log/4/stdout1075 2> log/4/stderr1075
=== End of file commands.log
=== Start of file http_server.log
 19:28:01.427183 ====> Client connect
 19:28:01.427236 accept_connection 3 returned 4
 19:28:01.427263 Read 93 bytes
 19:28:01.427273 Process 93 bytes request
 19:28:01.427286 Got request: GET /verifiedserver HTTP/1.1
 19:28:01.427295 Are-we-friendly question received
 19:28:01.427325 Wrote request (93 bytes) input to log/4/server.input
 19:28:01.427341 Identifying ourselves as friends
 19:28:01.427433 Response sent (56 bytes) and written to log/4/server.response
 19:28:01.427446 special request received, no persistency
 19:28:01.427455 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 33688 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file put1075
 This is data we upload with PUT
 a second line
 line three
 four is the number of lines
=== End of file put1075
=== Start of file server.cmd
 Testnum 1075
=== End of file server.cmd
=== Start of file server.response
 HCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1080 ../src/curl -q --include --trace-ascii log/5/trace1080 --trace-time http://127.0.0.1:37089/we/want/our/1080 http://127.0.0.1:37089/we/want/our/1080 -w '%{redirect_url}\n' > log/5/stdout1080 2> log/5/stderr1080
TTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1075
 ==137866== 
 ==137866== Process terminating with default action of signal 4 (SIGILL)
 ==137866==  Illegal opcode at address 0x492B75F
 ==137866==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==137866==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==137866==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==137866==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==137866==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==137866==    by 0x49908EB: curl_version_info (version.c:600)
 ==137866==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==137866==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==137866==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==137866==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1075
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1078 ../src/curl -q --include --trace-ascii log/21/trace1078 --trace-time --proxy1.0 127.0.0.1:44633 -p http://127.0.0.1:39881/we/want/that/page/1078 http://127.0.0.1:39881/we/want/that/page/1078 > log/21/stdout1078 2> log/21/stderr1078
test 1080 [HTTP Location: on two URLs 'redirect_url' check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1080 ../src/curl -q --include --trace-ascii log/5/trace1080 --trace-time http://127.0.0.1:37089/we/want/our/1080 http://127.0.0.1:37089/we/want/our/1080 -w '%{redirect_url}\n' > log/5/stdout1080 2> log/5/stderr1080

 1080: stdout FAILED:
--- log/5/check-expected	2026-10-15 19:28:03.719371677 +0000
+++ log/5/check-generated	2026-10-15 19:28:03.717279196 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: data/10800002.txt?coolsite=yes[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-This server reply is for testing a simple Location: following[LF]
-http://127.0.0.1:37089/we/want/our/data/10800002.txt?coolsite=yes[LF]
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: data/10800002.txt?coolsite=yes[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-This server reply is for testing a simple Location: following[LF]
-http://127.0.0.1:37089/we/want/our/data/10800002.txt?coolsite=yes[LF]
== Contents of files in the log/5/ directory after test 1080
=== Start of file check-expected
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: data/10800002.txt?coolsite=yes[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 This server reply is for testing a simple Location: following[LF]
 http://127.0.0.1:37089/we/want/our/data/10800002.txt?coolsite=yes[LF]
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: data/10800002.txt?coolsite=yes[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 This server reply is for testing a simple Location: following[LF]
 http://127.0.0.1:37089/we/want/our/data/10800002.txt?coolsite=yes[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1080 ../src/curl -q --include --trace-ascii log/5/trace1080 --trace-time http://127.0.0.1:37089/we/want/our/1080 http://127.0.0.1:37089/we/want/our/1080 -w '%{redirect_url}\n' > log/5/stdout1080 2> log/5/stderr1080
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.918734 ====> Client connect
 19:28:00.918772 accept_connection 3 returned 4
 19:28:00.918795 Read 93 bytes
 19:28:00.918805 Process 93 bytes request
 19:28:00.918816 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.918825 Are-we-friendly question received
 19:28:00.918853 Wrote request (93 bytes) input to log/5/server.input
 19:28:00.918870 Identifying ourselves as friends
 19:28:00.918933 Response sent (56 bytes) and written to log/5/server.response
 19:28:00.918943 special request received, no persistency
 19:28:00.918952 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 39948 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1080
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1080
 ==138240== 
 ==138240== Process terminating with default action of signal 4 (SIGILL)
 ==138240==  Illegal opcode at address 0x492B75F
 ==138240==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138240==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138240==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138240==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138240==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138240==    by 0x49908EB: curl_version_info (version.c:600)
 ==138240==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138240==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138240==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138240==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1080
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1085 ../src/curl -q --output log/22/curl1085.out  --include --trace-ascii log/22/trace1085 --trace-time -g "http://[::1]:47/1085" --interface non-existing-host.haxx.se. > log/22/stdout1085 2> log/22/stderr1085
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1081 ../src/curl -q --include --trace-ascii log/7/trace1081 --trace-time http://127.0.0.1:40859/we/want/our/1081 http://127.0.0.1:40859/we/want/our/10810002 -w '%{redirect_url}\n' > log/7/stdout1081 2> log/7/stderr1081
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/21/server/http2_server.pid" --logfile "log/21/http2_server.log" --logdir "log/21" --portfile log/21/server/http2_server.port --config log/21/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 137984 port 44633
* pid http-proxy => 137984 137984
test 1078 [HTTP 1.0 CONNECT with proxytunnel and downgrade GET to HTTP/1.0]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1078 ../src/curl -q --include --trace-ascii log/21/trace1078 --trace-time --proxy1.0 127.0.0.1:44633 -p http://127.0.0.1:39881/we/want/that/page/1078 http://127.0.0.1:39881/we/want/that/page/1078 > log/21/stdout1078 2> log/21/stderr1078

 1078: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:28:03.940570508 +0000
+++ log/21/check-generated	2026-10-15 19:28:03.937295426 +0000
@@ -1,21 +0,0 @@
-HTTP/1.1 200 Mighty fine indeed[CR][LF]
-Server: test tunnel 2000[CR][LF]
-[CR][LF]
-HTTP/1.0 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 9[CR][LF]
-Connection: keep-alive[CR][LF]
-[CR][LF]
-contents[LF]
-HTTP/1.0 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 9[CR][LF]
-Connection: keep-alive[CR][LF]
-[CR][LF]
-contents[LF]
== Contents of files in the log/21/ directory after test 1078
=== Start of file check-expected
 HTTP/1.1 200 Mighty fine indeed[CR][LF]
 Server: test tunnel 2000[CR][LF]
 [CR][LF]
 HTTP/1.0 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 9[CR][LF]
 Connection: keep-alive[CR][LF]
 [CR][LF]
 contents[LF]
 HTTP/1.0 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 9[CR][LF]
 Connection: keep-alive[CR][LF]
 [CR][LF]
 contents[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1078 ../src/curl -q --include --trace-ascii log/21/trace1078 --trace-time --proxy1.0 127.0.0.1:44633 -p http://127.0.0.1:39881/we/want/that/page/1078 http://127.0.0.1:39881/we/want/that/page/1078 > log/21/stdout1078 2> log/21/stderr1078
=== End of file commands.log
=== Start of file http2_server.log
 19:28:01.669345 Run as proxy, CONNECT to host 127.0.0.1
 19:28:01.669482 Running HTTP IPv4 version on port 44633
 19:28:01.669528 Wrote pid 137984 to log/21/server/http2_server.pid
 19:28:01.669559 Wrote port 44633 to log/21/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:28:00.596539 ====> Client connect
 19:28:00.596583 accept_connection 3 returned 4
 19:28:00.606461 Read 93 bytes
 19:28:00.606490 Process 93 bytes request
 19:28:00.606505 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.606512 Are-we-friendly question received
 19:28:00.606551 Wrote request (93 bytes) input to log/21/server.input
 19:28:00.606571 Identifying ourselves as friends
 19:28:00.606654 Response sent (56 bytes) and written to log/21/server.response
 19:28:00.606666 special request received, no persistency
 19:28:00.606676 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 46572 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1078
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1078
 ==138653== 
 ==138653== Process terminating with default action of signal 4 (SIGILL)
 ==138653==  Illegal opcode at address 0x492B75F
 ==138653==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138653==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138653==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138653==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138653==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138653==    by 0x49908EB: curl_version_info (version.c:600)
 ==138653==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138653==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138653==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138653==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1078
prechecked ./server/servers resolve --ipv6 ::1
test 1085 [HTTP-IPv6 GET with invalid --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1085 ../src/curl -q --output log/22/curl1085.out  --include --trace-ascii log/22/trace1085 --trace-time -g "http://[::1]:47/1085" --interface non-existing-host.haxx.se. > log/22/stdout1085 2> log/22/stderr1085

curl returned 132, when expecting 45
 1085: exit FAILED
== Contents of files in the log/22/ directory after test 1085
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1085 ../src/curl -q --output log/22/curl1085.out  --include --trace-ascii log/22/trace1085 --trace-time -g "http://[::1]:47/1085" --interface non-existing-host.haxx.se. > log/22/stdout1085 2> log/22/stderr1085
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1085
=== End of file server.cmd
=== Start of file valgrind1085
 ==138442== 
 ==138442== Process terminating with default action of signal 4 (SIGILL)
 ==138442==  Illegal opcode at address 0x492B75F
 ==138442==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138442==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138442==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138442==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138442==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138442==    by 0x49908EB: curl_version_info (version.c:600)
 ==138442==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138442==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138442==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138442==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1085
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1084 ../src/curl -q --output log/3/curl1084.out  --include --trace-ascii log/3/trace1084 --trace-time http://127.0.0.1:47/1084 --interface non-existing-host.haxx.se. > log/3/stdout1084 2> log/3/stderr1084
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1086 ../src/curl -q --output log/11/curl1086.out  --include --trace-ascii log/11/trace1086 --trace-time ftp://127.0.0.1:37735/1086 -m 5 > log/11/stdout1086 2> log/11/stderr1086
* kill pid for ftp-ctrl => 84852
RUN: Process with pid 84823 signalled to die
RUN: Process with pid 84823 gracefully died
test 1081 [HTTP no Location: on second URL 'redirect_url' check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1081 ../src/curl -q --include --trace-ascii log/7/trace1081 --trace-time http://127.0.0.1:40859/we/want/our/1081 http://127.0.0.1:40859/we/want/our/10810002 -w '%{redirect_url}\n' > log/7/stdout1081 2> log/7/stderr1081

 1081: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:28:04.021811622 +0000
+++ log/7/check-generated	2026-10-15 19:28:04.021392045 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: data/10810099.txt?coolsite=yes[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-This server reply is for testing a simple Location: following[LF]
-http://127.0.0.1:40859/we/want/our/data/10810099.txt?coolsite=yes[LF]
-HTTP/1.1 200 Followed here fine swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Length: 41[CR][LF]
-[CR][LF]
-This second URL does not have a location[LF]
-[LF]
== Contents of files in the log/7/ directory after test 1081
=== Start of file check-expected
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: data/10810099.txt?coolsite=yes[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 This server reply is for testing a simple Location: following[LF]
 http://127.0.0.1:40859/we/want/our/data/10810099.txt?coolsite=yes[LF]
 HTTP/1.1 200 Followed here fine swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Length: 41[CR][LF]
 [CR][LF]
 This second URL does not have a location[LF]
 [LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1081 ../src/curl -q --include --trace-ascii log/7/trace1081 --trace-time http://127.0.0.1:40859/we/want/our/1081 http://127.0.0.1:40859/we/want/our/10810002 -w '%{redirect_url}\n' > log/7/stdout1081 2> log/7/stderr1081
=== End of file commands.log
=== Start of file http_server.log
 19:28:00.901252 ====> Client connect
 19:28:00.901287 accept_connection 3 returned 4
 19:28:00.901308 Read 93 bytes
 19:28:00.901317 Process 93 bytes request
 19:28:00.901329 Got request: GET /verifiedserver HTTP/1.1
 19:28:00.901337 Are-we-friendly question received
 19:28:00.901360 Wrote request (93 bytes) input to log/7/server.input
 19:28:00.901375 Identifying ourselves as friends
 19:28:00.901437 Response sent (56 bytes) and written to log/7/server.response
 19:28:00.901445 special request received, no persistency
 19:28:00.901452 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 58126 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1081
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1081
 ==138235== 
 ==138235== Process terminating with default action of signal 4 (SIGILL)
 ==138235==  Illegal opcode at address 0x492B75F
 ==138235==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138235==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138235==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138235==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138235==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138235==    by 0x49908EB: curl_version_info (version.c:600)
 ==138235==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138235==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138235==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138235==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1081
test 1084 [HTTP GET with invalid --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1084 ../src/curl -q --output log/3/curl1084.out  --include --trace-ascii log/3/trace1084 --trace-time http://127.0.0.1:47/1084 --interface non-existing-host.haxx.se. > log/3/stdout1084 2> log/3/stderr1084

curl returned 132, when expecting 45
 1084: exit FAILED
== Contents of files in the log/3/ directory after test 1084
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1084 ../src/curl -q --output log/3/curl1084.out  --include --trace-ascii log/3/trace1084 --trace-time http://127.0.0.1:47/1084 --interface non-existing-host.haxx.se. > log/3/stdout1084 2> log/3/stderr1084
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1084
=== End of file server.cmd
=== Start of file valgrind1084
 ==138375== 
 ==138375== Process terminating with default action of signal 4 (SIGILL)
 ==138375==  Illegal opcode at address 0x492B75F
 ==138375==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138375==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138375==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138375==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138375==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138375==    by 0x49908EB: curl_version_info (version.c:600)
 ==138375==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138375==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138375==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138375==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1084
test 1086 [FTP download with strict timeout and slow data transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1086 ../src/curl -q --output log/11/curl1086.out  --include --trace-ascii log/11/trace1086 --trace-time ftp://127.0.0.1:37735/1086 -m 5 > log/11/stdout1086 2> log/11/stderr1086

 1086: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1086
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1086 ../src/curl -q --output log/11/curl1086.out  --include --trace-ascii log/11/trace1086 --trace-time ftp://127.0.0.1:37735/1086 -m 5 > log/11/stdout1086 2> log/11/stderr1086
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:01.788709 ====> Client connect
 19:28:01.788992 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:01.789331 < "USER anonymous"
 19:28:01.789367 > "331 We are happy you popped in![CR][LF]"
 19:28:01.789530 < "PASS ftp@example.com"
 19:28:01.789554 > "230 Welcome you silly person[CR][LF]"
 19:28:01.789697 < "PWD"
 19:28:01.789727 > "257 "/" is current directory[CR][LF]"
 19:28:01.789882 < "EPSV"
 19:28:01.789905 ====> Passive DATA channel requested by client
 19:28:01.789918 DATA sockfilt for passive data channel starting...
 19:28:01.796674 DATA sockfilt for passive data channel started (pid 138492CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1089 ../src/curl -q --include --trace-ascii log/15/trace1089 --trace-time http://127.0.0.1:40321/1089 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/15/stdout1089 2> log/15/stderr1089
)
 19:28:01.796802 DATA sockfilt for passive data channel listens on port 33087
 19:28:01.796845 > "229 Entering Passive Mode (|||33087|)[CR][LF]"
 19:28:01.796863 Client has been notified that upcoming DATA connection is awaited on port 33087
 19:28:01.797135 Client connects to port 33087
 19:28:01.797162 ====> Client established passive DATA connection on port 33087
 19:28:01.797243 < "TYPE I"
 19:28:01.797271 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:01.797403 < "SIZE verifiedserver"
 19:28:01.797435 > "213 17[CR][LF]"
 19:28:01.797562 < "RETR verifiedserver"
 19:28:01.797591 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:01.797676 =====> Closing passive DATA connection...
 19:28:01.797691 Server disconnects passive DATA connection
 19:28:01.797890 Server disconnected passive DATA connection
 19:28:01.797913 DATA sockfilt for passive data channel quits (pid 138492)
 19:28:01.798096 DATA sockfilt for passive data channel quit (pid 138492)
 19:28:01.798114 =====> Closed passive DATA connection
 19:28:01.798135 > "226 File transfer complete[CR][LF]"
 19:28:01.842365 < "QUIT"
 19:28:01.842422 > "221 bye bye baby[CR][LF]"
 19:28:01.843655 MAIN sockfilt said DISC
 19:28:01.843691 ====> Client disconnected
 19:28:01.843782 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:01.383097 ====> Client connect
 19:28:01.393401 Received DATA (on stdin)
 19:28:01.393426 > 146 bytes data, server => client
 19:28:01.393437 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:01.393448 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:01.393456 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:01.393572 < 16 bytes data, client => server
 19:28:01.393583 'USER anonymous\r\n'
 19:28:01.393756 Received DATA (on stdin)
 19:28:01.393767 > 33 bytes data, server => client
 19:28:01.393777 '331 We are happy you popped in!\r\n'
 19:28:01.393831 < 22 bytes data, client => server
 19:28:01.393841 'PASS ftp@example.com\r\n'
 19:28:01.393939 Received DATA (on stdin)
 19:28:01.393949 > 30 bytes data, server => client
 19:28:01.393958 '230 Welcome you silly person\r\n'
 19:28:01.394006 < 5 bytes data, client => server
 19:28:01.394015 'PWD\r\n'
 19:28:01.394112 Received DATA (on stdin)
 19:28:01.394122 > 30 bytes data, server => client
 19:28:01.394132 '257 "/" is current directory\r\n'
 19:28:01.394192 < 6 bytes data, client => server
 19:28:01.394202 'EPSV\r\n'
 19:28:01.401258 Received DATA (on stdin)
 19:28:01.401274 > 39 bytes data, server => client
 19:28:01.401284 '229 Entering Passive Mode (|||33087|)\r\n'
 19:28:01.401447 < 8 bytes data, client => server
 19:28:01.401460 'TYPE I\r\n'
 19:28:01.401655 Received DATA (on stdin)
 19:28:01.401664 > 33 bytes data, server => client
 19:28:01.401673 '200 I modify TYPE as you wanted\r\n'
 19:28:01.401718 < 21 bytes data, client => server
 19:28:01.401726 'SIZE verifiedserver\r\n'
 19:28:01.401818 Received DATA (on stdin)
 19:28:01.401827 > 8 bytes data, server => client
 19:28:01.401835 '213 17\r\n'
 19:28:01.401877 < 21 bytes data, client => server
 19:28:01.401886 'RETR verifiedserver\r\n'
 19:28:01.402076 Received DATA (on stdin)
 19:28:01.402085 > 29 bytes data, server => client
 19:28:01.402094 '150 Binary junk (17 bytes).\r\n'
 19:28:01.402517 Received DATA (on stdin)
 19:28:01.402526 > 28 bytes data, server => client
 19:28:01.402534 '226 File transfer complete\r\n'
 19:28:01.446515 < 6 bytes data, client => server
 19:28:01.446553 'QUIT\r\n'
 19:28:01.446808 Received DATA (on stdin)
 19:28:01.446819 > 18 bytes data, server => client
 19:28:01.446829 '221 bye bye baby\r\n'
 19:28:01.447985 ====> Client disconnect
 19:28:01.448165 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:01.400668 Running IPv4 version
 19:28:01.400782 Listening on port 33087
 19:28:01.400824 Wrote pid 138492 to log/11/server/ftp_sockdata.pid
 19:28:01.400998 Received PING (on stdin)
 19:28:01.401096 Received PORT (on stdin)
 19:28:01.401479 ====> Client connect
 19:28:01.402146 Received DATA (on stdin)
 19:28:01.402159 > 17 bytes data, server => client
 19:28:01.402168 'WE ROOLZ: 84823\r\n'
 19:28:01.402190 Received DISC (on stdin)
 19:28:01.402198 ====> Client forcibly disconnected
 19:28:01.402301 Received QUIT (on stdin)
 19:28:01.402309 quits
 19:28:01.402360 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 SLOWDOWNDATA
 REPLY welcome 220 Hey
 REPLY USER 331 OK
 REPLY PASS 230 OK
 REPLY PWD 257 "/"
 REPLY TYPE 200 OK
 Testnum 1086
=== End of file server.cmd
=== Start of file valgrind1086
 ==138527== 
 ==138527== Process terminating with default action of signal 4 (SIGILL)
 ==138527==  Illegal opcode at address 0x492B75F
 ==138527==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138527==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138527==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138527==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138527==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138527==    by 0x49908EB: curl_version_info (version.c:600)
 ==138527==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138527==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138527==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138527==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1086
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1087 ../src/curl -q --output log/19/curl1087.out  --include --trace-ascii log/19/trace1087 --trace-time http://first.host.it.is/we/want/that/page/10871000 -x 127.0.0.1:46497 --user iam:myself --location --anyauth > log/19/stdout1087 2> log/19/stderr1087
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1088 ../src/curl -q --output log/2/curl1088.out  --include --trace-ascii log/2/trace1088 --trace-time http://first.host.it.is/we/want/that/page/10881000 -x 127.0.0.1:34531 --user iam:myself --location-trusted --anyauth > log/2/stdout1088 2> log/2/stderr1088
test 1089 [HTTP GET --write-out with redirected fetch]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1089 ../src/curl -q --include --trace-ascii log/15/trace1089 --trace-time http://127.0.0.1:40321/1089 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/15/stdout1089 2> log/15/stderr1089

 1089: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:28:04.400289120 +0000
+++ log/15/check-generated	2026-10-15 19:28:04.397328745 +0000
@@ -1,20 +0,0 @@
-HTTP/1.1 302 OK swsbounce swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 8[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/plain[CR][LF]
-Location: ./10890001[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 15[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/plain; charset=us-ascii[CR][LF]
-[CR][LF]
-bigger monster[LF]
-2[LF]
-1[LF]
-15[LF]
-http://127.0.0.1:40321/10890001[LF]
-text/plain; charset=us-ascii[LF]
-200[LF]
== Contents of files in the log/15/ directory after test 1089
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 8[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/plain[CR][LF]
 Location: ./10890001[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 15[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/plain; charset=us-ascii[CR][LF]
 [CR][LF]
 bigger monster[LF]
 2[LF]
 1[LF]
 15[LF]
 http://127.0.0.1:40321/10890001[LF]
 text/plain; charset=us-ascii[LF]
 200[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1089 ../src/curl -q --include --trace-ascii log/15/trace1089 --trace-time http://127.0.0.1:40321/1089 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/15/stdout1089 2> log/15/stderr1089
=== End of file commands.log
=== Start of file http_server.log
 19:28:02.695664 ====> Client connect
 19:28:02.695697 accept_connection 3 returned 4
 19:28:02.695847 Read 93 bytes
 19:28:02.695859 Process 93 bytes request
 19:28:02.695872 Got request: GET /verifiedserver HTTP/1.1
 19:28:02.695881 Are-we-friendly question received
 19:28:02.695909 Wrote request (93 bytes) input to log/15/server.input
 19:28:02.695925 Identifying ourselves as friends
 19:28:02.695984 Response sent (56 bytes) and written to log/15/server.response
 19:28:02.695993 special request received, no persistency
 19:28:02.696001 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 53234 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1089
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1089
 ==138709== 
 ==138709== Process terminating with default action of signal 4 (SIGILL)
 ==138709==  Illegal opcode at address 0x492B75F
 ==138709==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138709==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138709==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138709==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138709==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138709==    by 0x49908EB: curl_version_info (version.c:600)
 ==138709==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138709==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138709==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138709==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1089
test 1087 [HTTP, proxy with --anyauth and Location: to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1087 ../src/curl -q --output log/19/curl1087.out  --include --trace-ascii log/19/trace1087 --trace-time http://first.host.it.is/we/want/that/page/10871000 -x 127.0.0.1:46497 --user iam:myself --location --anyauth > log/19/stdout1087 2> log/19/stderr1087

 1087: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1087
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1087 ../src/curl -q --output log/19/curl1087.out  --include --trace-ascii log/19/trace1087 --trace-time http://first.host.it.is/we/want/that/page/10871000 -x 127.0.0.1:46497 --user iam:myself --location --anyauth > log/19/stdout1087 2> log/19/stderr1087
=== End of file commands.log
=== Start of file http_server.log
 19:28:01.372573 ====> Client connect
 19:28:01.372609 accept_connection 3 returned 4
 19:28:01.376551 Read 93 bytes
 19:28:01.376568 Process 93 bytes request
 19:28:01.376582 Got request: GET /verifiedserver HTTP/1.1
 19:28:01.376591 Are-we-friendly question received
 19:28:01.376629 Wrote request (93 bytes) input to log/19/server.input
 19:28:01.376647 Identifying ourselves as friends
 19:28:01.376708 Response sent (56 bytes) and written to log/19/server.response
 19:28:01.376718 special request received, no persistency
 19:28:01.376727 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 34190 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1087
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind1087
 ==138501== 
 ==138501== Process terminating with default action of signal 4 (SIGILL)
 ==138501==  Illegal opcode at address 0x492B75F
 ==138501==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138501==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138501==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138501==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138501==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138501==    by 0x49908EB: curl_version_info (version.c:600)
 ==138501==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138501==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138501==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138501==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1087
test 1088 [HTTP, proxy with --anyauth and Location: using location-trusted]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1088 ../src/curCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1093 ../src/curl -q --output log/9/curl1093.out  --include --trace-ascii log/9/trace1093 --trace-time "tftp://127.0.0.1:38065//1093;mode=octet" --use-ascii > log/9/stdout1093 2> log/9/stderr1093
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1083 ../src/curl -q --output log/8/curl1083.out  --include --trace-ascii log/8/trace1083 --trace-time -g "http://[::1]:40327/1083" --interface ip6-localhost > log/8/stdout1083 2> log/8/stderr1083
l -q --output log/2/curl1088.out  --include --trace-ascii log/2/trace1088 --trace-time http://first.host.it.is/we/want/that/page/10881000 -x 127.0.0.1:34531 --user iam:myself --location-trusted --anyauth > log/2/stdout1088 2> log/2/stderr1088

 1088: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1088
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1088 ../src/curl -q --output log/2/curl1088.out  --include --trace-ascii log/2/trace1088 --trace-time http://first.host.it.is/we/want/that/page/10881000 -x 127.0.0.1:34531 --user iam:myself --location-trusted --anyauth > log/2/stdout1088 2> log/2/stderr1088
=== End of file commands.log
=== Start of file http_server.log
 19:28:02.686426 ====> Client connect
 19:28:02.686721 accept_connection 3 returned 4
 19:28:02.686752 Read 93 bytes
 19:28:02.686764 Process 93 bytes request
 19:28:02.686777 Got request: GET /verifiedserver HTTP/1.1
 19:28:02.686786 Are-we-friendly question received
 19:28:02.686819 Wrote request (93 bytes) input to log/2/server.input
 19:28:02.686838 Identifying ourselves as friends
 19:28:02.686929 Response sent (56 bytes) and written to log/2/server.response
 19:28:02.686941 special request received, no persistency
 19:28:02.686950 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 41874 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1088
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1088
 ==138708== 
 ==138708== Process terminating with default action of signal 4 (SIGILL)
 ==138708==  Illegal opcode at address 0x492B75F
 ==138708==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138708==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138708==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138708==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138708==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138708==    by 0x49908EB: curl_version_info (version.c:600)
 ==138708==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138708==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138708==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138708==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1088
test 1093 [TFTP retrieve with mode=octet]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1093 ../src/curl -q --output log/9/curl1093.out  --include --trace-ascii log/9/trace1093 --trace-time "tftp://127.0.0.1:38065//1093;mode=octet" --use-ascii > log/9/stdout1093 2> log/9/stderr1093

 1093: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1093
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1093 ../src/curl -q --output log/9/curl1093.out  --include --trace-ascii log/9/trace1093 --trace-time "tftp://127.0.0.1:38065//1093;mode=octet" --use-ascii > log/9/stdout1093 2> log/9/stderr1093
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1093
=== End of file server.cmd
=== Start of file tftp_server.log
 19:28:03.219774 trying to get file: verifiedserver mode 1
 19:28:03.219802 Are-we-friendly question received
 19:28:03.219822 write
 19:28:03.219849 read
 19:28:03.223305 read: 4
 19:28:03.223384 end of one transfer
=== End of file tftp_server.log
=== Start of file valgrind1093
 ==139022== 
 ==139022== Process terminating with default action of signal 4 (SIGILL)
 ==139022==  Illegal opcode at address 0x492B75F
 ==139022==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139022==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139022==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139022==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139022==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139022==    by 0x49908EB: curl_version_info (version.c:600)
 ==139022==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139022==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139022==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139022==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1093
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/8/server/http_ipv6_server.pid" --logfile "log/8/http_ipv6_server.log" --logdir "log/8" --portfile log/8/server/http_ipv6_server.port --config log/8/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 138203 port 40327
* pid http-ipv6 => 138203 138203
prechecked /usr/bin/perl -e "if('[::1]' ne '[::1]') {print 'Test requires default test client host address';} else {exec './server/servers resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
test 1083 [HTTP-IPv6 GET with ip6-localhost --interface]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1083 ../src/curl -q --output log/8/curl1083.out  --include --trace-ascii log/8/trace1083 --trace-time -g "http://[::1]:40327/1083" --interface ip6-localhost > log/8/stdout1083 2> log/8/stderr1083

 1083: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1083
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1083 ../src/curl -q --output log/8/curl1083.out  --include --trace-ascii log/8/trace1083 --trace-time -g "http://[::1]:40327/1083" --interface ip6-localhost > log/8/stdout1083 2> log/8/stderr1083
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:28:01.016266 Running HTTP IPv6 version on port 40327
 19:28:01.020481 Wrote pid 138203 to log/8/server/http_ipv6_server.pid
 19:28:01.020535 Wrote port 40327 to log/8/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 1083
=== End of file server.cmd
=== Start of file valgrind1083
 ==138901== 
 ==138901== Process terminating with default action of signal 4 (SIGILL)
 ==138901==  Illegal opcode at address 0x492B75F
 ==138901==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138901==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138901==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138901==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138901==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138901==    by 0x49908EB: curl_version_info (version.c:600)
 ==138901==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138901==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138901==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138901==    by 0x4003269: main (tool_mCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1092 ../src/curl -q --output log/12/curl1092.out  --include --trace-ascii log/12/trace1092 --trace-time "ftp://127.0.0.1:40921/we/want/that/page/1092;type=i" --use-ascii -x 127.0.0.1:40921 > log/12/stdout1092 2> log/12/stderr1092
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1099 ../src/curl -q --include --trace-ascii log/24/trace1099 --trace-time tftp://127.0.0.1:36714/an/invalid-file tftp://127.0.0.1:36714//1099 > log/24/stdout1099 2> log/24/stderr1099
ain.c:195)
=== End of file valgrind1083
test 1092 [FTP with type=i over HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1092 ../src/curl -q --output log/12/curl1092.out  --include --trace-ascii log/12/trace1092 --trace-time "ftp://127.0.0.1:40921/we/want/that/page/1092;type=i" --use-ascii -x 127.0.0.1:40921 > log/12/stdout1092 2> log/12/stderr1092

 1092: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1092
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1092 ../src/curl -q --output log/12/curl1092.out  --include --trace-ascii log/12/trace1092 --trace-time "ftp://127.0.0.1:40921/we/want/that/page/1092;type=i" --use-ascii -x 127.0.0.1:40921 > log/12/stdout1092 2> log/12/stderr1092
=== End of file commands.log
=== Start of file http_server.log
 19:28:02.158899 ====> Client connect
 19:28:02.158940 accept_connection 3 returned 4
 19:28:02.158963 Read 93 bytes
 19:28:02.158972 Process 93 bytes request
 19:28:02.158985 Got request: GET /verifiedserver HTTP/1.1
 19:28:02.158994 Are-we-friendly question received
 19:28:02.159024 Wrote request (93 bytes) input to log/12/server.input
 19:28:02.159042 Identifying ourselves as friends
 19:28:02.159111 Response sent (56 bytes) and written to log/12/server.response
 19:28:02.159122 special request received, no persistency
 19:28:02.159130 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59056 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1092
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1092
 ==138997== 
 ==138997== Process terminating with default action of signal 4 (SIGILL)
 ==138997==  Illegal opcode at address 0x492B75F
 ==138997==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138997==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138997==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138997==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138997==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138997==    by 0x49908EB: curl_version_info (version.c:600)
 ==138997==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138997==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138997==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138997==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1092
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1096 ../src/curl -q --output log/1/curl1096.out  --include --trace-ascii log/1/trace1096 --trace-time ftp://127.0.0.1:40221/dir/1096 ftp://127.0.0.1:40221/dir/1096 > log/1/stdout1096 2> log/1/stderr1096
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1091 ../src/curl -q --output log/13/curl1091.out  --include --trace-ascii log/13/trace1091 --trace-time "ftp://127.0.0.1:33695/%2ftmp/moo/1091;type=i" --use-ascii > log/13/stdout1091 2> log/13/stderr1091
test 1099 [TFTP get first a non-existing file then an existing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1099 ../src/curl -q --include --trace-ascii log/24/trace1099 --trace-time tftp://127.0.0.1:36714/an/invalid-file tftp://127.0.0.1:36714//1099 > log/24/stdout1099 2> log/24/stderr1099

 1099: stdout FAILED:
--- log/24/check-expected	2026-10-15 19:28:05.029382348 +0000
+++ log/24/check-generated	2026-10-15 19:28:05.027374201 +0000
@@ -1 +0,0 @@
-data for 1099[LF]
== Contents of files in the log/24/ directory after test 1099
=== Start of file check-expected
 data for 1099[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1099 ../src/curl -q --include --trace-ascii log/24/trace1099 --trace-time tftp://127.0.0.1:36714/an/invalid-file tftp://127.0.0.1:36714//1099 > log/24/stdout1099 2> log/24/stderr1099
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1099
=== End of file server.cmd
=== Start of file tftp_server.log
 19:28:02.641208 trying to get file: verifiedserver mode 1
 19:28:02.641241 Are-we-friendly question received
 19:28:02.641257 write
 19:28:02.641284 read
 19:28:02.647628 read: 4
 19:28:02.647740 end of one transfer
=== End of file tftp_server.log
=== Start of file valgrind1099
 ==139308== 
 ==139308== Process terminating with default action of signal 4 (SIGILL)
 ==139308==  Illegal opcode at address 0x492B75F
 ==139308==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139308==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139308==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139308==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139308==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139308==    by 0x49908EB: curl_version_info (version.c:600)
 ==139308==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139308==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139308==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139308==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1099
test 1096 [Two FTP downloads, with failed RETR but reused control connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1096 ../src/curl -q --output log/1/curl1096.out  --include --trace-ascii log/1/trace1096 --trace-time ftp://127.0.0.1:40221/dir/1096 ftp://127.0.0.1:40221/dir/1096 > log/1/stdout1096 2> log/1/stderr1096

 1096: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1096
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1096 ../src/curl -q --output log/1/curl1096.out  --include --trace-ascii log/1/trace1096 --trace-time ftp://127.0.0.1:40221/dir/1096 ftp://127.0.0.1:40221/dir/1096 > log/1/stdout1096 2> log/1/stderr1096
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:02.914292 ====> Client connect
 19:28:02.914522 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:02.914849 < "USER anonymous"
 19:28:02.914892 > "331 We are happy you popped in![CR][LF]"
 19:28:02.915086 < "PASS ftp@example.com"
 19:28:02.915121 > "230 Welcome you silly person[CR][LF]"
 19:28:02.915299 < "PWD"
 19:28:02.918311 > "257 "/" is current directory[CR][LF]"
 19:28:02.918550 < "EPSV"
 19:28:02.918580 ====> Passive DATA channel requested by client
 19:28:02.918596 DATA sockfilt for passive data channel starting...
 19:28:02.923047 DATA sockfilt for passive data channel started (pid 139198)
 19:28:02.923186 DATA sockfilt for passive data channel listens on port 37181
 19:28:02.923232 > "229 Entering Passive Mode (|||37181|)[CR][LF]"
 19:28:02.923249 Client has been notified that upcoming DATA connection is awaited on port 37181
 19:28:02.923560 Client connects to port 37181
 19:28:02.923592 ====> Client established passive DATA connection on port 37181
 19:28:02.923683 < "TYPE I"
 19:28:02.923719 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:02.923884 < "SIZE verifiedserver"
 19:28:02.923927 > "213 17[CR][LF]"
 19:28:02.924082 < "RETR verifiedserver"
 19:28:02.924116 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:02.924250 =====> Closing passive DATA connection...
 19:28:02.924267 Server disconnects passive DATA connection
 19:28:02.924468 Server disconnected passive DATA connection
 19:28:02.924492 DATA sockfilt for passive data channel quits (pid 139198)
 19:28:02.924769 DATA sockfilt for passive data channel quit (pid 139198)
 19:28:02.924795 =====> Closed passive DATA connection
 19:28:02.924824 > "226 File transfer complete[CR][LF]"
 19:28:02.975493 < "QUIT"
 19:28:02.975560 > "221 bye bye baby[CR][LF]"
 19:28:02.982112 MAIN sockfilt said DISC
 19:28:02.982179 ====> Client disconnected
 19:28:02.982275 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:03.518466 ====> Client connect
 19:28:03.518857 Received DATA (on stdin)
 19:28:03.518876 > 146 bytes data, server => client
 19:28:03.518888 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:03.518898 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:03.518907 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:03.518994 < 16 bytes data, client => server
 19:28:03.519009 'USER anonymous\r\n'
 19:28:03.519200 Received DATA (on stdin)
 19:28:03.519212 > 33 bytes data, server => client
 19:28:03.519223 '331 We are happy you popped in!\r\n'
 19:28:03.519282 < 22 bytes data, client => server
 19:28:03.519295 'PASS ftp@example.com\r\n'
 19:28:03.519428 Received DATA (on stdin)
 19:28:03.519439 > 30 bytes data, server => client
 19:28:03.519449 '230 Welcome you silly person\r\n'
 19:28:03.519506 < 5 bytes data, client => server
 19:28:03.519519 'PWD\r\n'
 19:28:03.522636 Received DATA (on stdin)
 19:28:03.522653 > 30 bytes data, server => client
 19:28:03.522663 '257 "/" is current directory\r\n'
 19:28:03.522744 < 6 bytes data, client => server
 19:28:03.522760 'EPSV\r\n'
 19:28:03.527558 Received DATA (on stdin)
 19:28:03.527573 > 39 bytes data, server => client
 19:28:03.527583 '229 Entering Passive Mode (|||37181|)\r\n'
 19:28:03.527779 < 8 bytes data, client => server
 19:28:03.527794 'TYPE I\r\n'
 19:28:03.528023 Received DATA (on stdin)
 19:28:03.528035 > 33 bytes data, server => client
 19:28:03.528045 '200 I modify TYPE as you wanted\r\n'
 19:28:03.528098 < 21 bytes data, client => server
 19:28:03.528109 'SIZE verifiedserver\r\n'
 19:28:03.528228 Received DATA (on stdin)
 19:28:03.528239 > 8 bytes data, server => client
 19:28:03.528249 '213 17\r\n'
 19:28:03.528299 < 21 bytes data, client => server
 19:28:03.528310 'RETR verifiedserver\r\n'
 19:28:03.528571 Received DATA (on stdin)
 19:28:03.528583 > 29 bytes data, server => client
 19:28:03.528593 '150 Binary junk (17 bytes).\r\n'
 19:28:03.529127 Received DATA (on stdin)
 19:28:03.529139 > 28 bytes data, server => client
 19:28:03.529150 '226 File transfer complete\r\n'
 19:28:03.573129 < 6 bytes data, client => server
 19:28:03.573161 'QUIT\r\n'
 19:28:03.580822 Received DATA (on stdin)
 19:28:03.580853 > 18 bytes data, server => client
 19:28:03.580865 '221 bye bye baby\r\n'
 19:28:03.586316 ====> Client disconnect
 19:28:03.586579 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:02.526714 Running IPv4 version
 19:28:02.526784 Listening on port 37181
 19:28:02.526824 Wrote pid 139198 to log/1/server/ftp_sockdata.pid
 19:28:02.526982 Received PING (on stdin)
 19:28:02.527390 Received PORT (on stdin)
 19:28:02.527814 ====> Client connect
 19:28:02.528653 Received DATA (on stdin)
 19:28:02.528667 > 17 bytes data, server => client
 19:28:02.528677 'WE ROOLZ: 84935\r\n'
 19:28:02.528706 Received DISC (on stdin)
 19:28:02.528718 ====> Client forcibly disconnected
 19:28:02.528850 Received QUIT (on stdin)
 19:28:02.528863 quits
 19:28:02.528921 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY RETR 550 no such file
 REPLY SIZE 500 command not understood
 Testnum 1096
=== End of file server.cmd
=== Start of file valgrind1096
 ==139246== 
 ==139246== Process terminating with default action of signal 4 (SIGILL)
 ==139246==  Illegal opcode at address 0x492B75F
 ==139246==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139246==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139246==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139246==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139246==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139246==    by 0x49908EB: curl_version_info (version.c:600)
 ==139246==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139246==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139246==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139246==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1096
test 1091 [FTP URL with type=i]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1091 ../src/curl -q --output log/13/curl1091.out  --include --trace-ascii log/13/trace1091 --trace-time "ftp://127.0.0.1:33695/%2ftmp/moo/1091;type=i" --use-ascii > log/13/stdout1091 2> log/13/stderr1091

 1091: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1091
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1091 ../src/curl -q --output log/13/curl1091.out  --include --trace-ascii log/13/trace1091 --trace-time "ftp://127.0.0.1:33695/%2ftmp/moo/1091;type=i" --use-ascii > log/13/stdout1091 2> log/13/stderr1091
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:02.341699 ====> Client connect
 19:28:02.341905 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:02.355582 < "USER anonymous"
 19:28:02.355640 > "331 We are happy you popped in![CR][LF]"
 19:28:02.359032 < "PASS ftp@example.com"
 19:28:02.359072 > "230 Welcome you silly person[CR][LF]"
 19:28:02.365467 < "PWD"
 19:28:02.365517 > "257 "/" is current directory[CR][LF]"
 19:28:02.365871 < "EPSV"
 19:28:02.365898 ====> Passive DATA channel requested by client
 19:28:02.365911 DATA sockfilt for passive data channel starting...
 19:28:02.370091 DATA sockfilt for passive data channel started (pid 138897)
 19:28:02.370200 DATA sockfilt for passive data channel listens on port 33605
 19:28:02.370242 > "229 Entering Passive Mode (|||33605|)[CR][LF]"
 19:28:02.370261 Client has been notified that upcoming DATA connection is awaited on port 33605
 19:28:02.370536 Client connects to port 33605
 19:28:02.370566 ====> Client established passive DATA connection on port 33605
 19:28:02.370646 < "TYPE I"
 19:28:02.370674 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:02.370826 < "SIZE verifiedserver"
 19:28:02.370858 > "213 17[CR][LF]"
 19:28:02.371001 < "RETR verifiedserver"
 19:28:02.371031 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:02.371117 =====> Closing passive DATA connection...
 19:28:02.371133 Server disconnects passive DATA connection
 19:28:02.371343 Server disconnected passive DATA connection
 19:28:02.371370 DATA sockfilt for passive data channel quits (pid 138897)
 19:28:02.371575 DATA sockfilt for passive data channel quit (pid 138897)
 19:28:02.371598 =====> Closed passive DATA connection
 19:28:02.371624 > "226 File transfer complete[CR][LF]"
 19:28:02.418076 < "QUIT"
 19:28:02.418270 > "221 bye bye baby[CR][LF]"
 19:28:02.421762 MAIN sockfilt said DISC
 19:28:02.421786 ====> Client disconnected
 19:28:02.421853 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:01.945904 ====> Client connect
 19:28:01.946262 Received DATA (on stdin)
 19:28:01.946276 > 146 bytes data, server => client
 19:28:01.946287 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:01.946298 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:01.946307 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:01.959679 < 16 bytes data, client => server
 19:28:01.959717 'USER anonymous\r\n'
 19:28:01.959989 Received DATA (on stdin)
 19:28:01.960002 > 33 bytes data, server => client
 19:28:01.960012 '331 We are happy you popped in!\r\n'
 19:28:01.963248 < 22 bytes data, client => server
 19:28:01.963265 'PASS ftp@example.com\r\n'
 19:28:01.963416 Received DATA (on stdin)
 19:28:01.963426 > 30 bytes data, server => client
 19:28:01.963435 '230 Welcome you silly person\r\n'
 19:28:01.969670 < 5 bytes data, client => server
 19:28:01.969691 'PWD\r\n'
 19:28:01.969860 Received DATA (on stdin)
 19:28:01.969869 > 30 bytes data, server => client
 19:28:01.969878 '257 "/" is current directory\r\n'
 19:28:01.970126 < 6 bytes data, client => server
 19:28:01.970141 'EPSV\r\n'
 19:28:01.974611 Received DATA (on stdin)
 19:28:01.974625 > 39 bytes data, server => client
 19:28:01.974635 '229 Entering Passive Mode (|||33605|)\r\n'
 19:28:01.974801 < 8 bytes data, client => server
 19:28:01.974814 'TYPE I\r\n'
 19:28:01.975017 Received DATA (on stdin)
 19:28:01.975028 > 33 bytes data, server => client
 19:28:01.975037 '200 I modify TYPE as you wanted\r\n'
 19:28:01.975087 < 21 bytes data, client => server
 19:28:01.975097 'SIZE verifiedserver\r\n'
 19:28:01.975201 Received DATA (on stdin)
 19:28:01.975211 > 8 bytes data, server => client
 19:28:01.975220 '213 17\r\n'
 19:28:01.975267 < 21 bytes data, client => server
 19:28:01.975277 'RETR verifiedserver\r\n'
 19:28:01.975477 Received DATA (on stdin)
 19:28:01.975487 > 29 bytes data, server => client
 19:28:01.975497 '150 Binary junk (17 bytes).\r\n'
 19:28:01.975966 Received DATA (on stdin)
 19:28:01.975978 > 28 bytes data, server => client
 19:28:01.975987 '226 File transfer complete\r\n'
 19:28:02.021954 < 6 bytes data, client => server
 19:28:02.021981 'QUIT\r\n'
 19:28:02.022624 Received DATA (on stdin)
 19:28:02.022669 > 18 bytes data, server => client
 19:28:02.025010 '221 bye bye baby\r\n'
 19:28:02.026016 ====> Client disconnect
 19:28:02.026189 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:02.974106 Running IPv4 version
 19:28:02.974182 Listening on port 33605
 19:28:02.974218 Wrote pid 138897 to log/13/server/ftp_sockdata.pid
 19:28:02.974377 Received PING (on stdin)
 19:28:02.974458 Received PORT (on stdin)
 19:28:02.974834 ====> Client connect
 19:28:02.975521 Received DATA (on stdin)
 19:28:02.975532 > 17 bytes data, server => client
 19:28:02.975541 'WE ROOLZ: 93286\r\n'
 19:28:02.975564 Received DISC (on stdin)
 19:28:02.975574 ====> Client forcibly disconnected
 19:28:02.975719 Received QUIT (on stdin)
 19:28:02.975729 quits
 19:28:02.975785 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1091
=== End of file server.cmd
=== Start of file valgrind1091
 ==138956== 
 ==138956== Process terminating with default action of signal 4 (SIGILL)
 ==138956==  Illegal opcode at address 0x492B75F
 ==138956==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138956==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138956==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138956==    by 0x49A9B9E: Curl_ossl_verCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1098 ../src/curl -q --include --trace-ascii log/23/trace1098 --trace-time ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://127.0.0.1:44711 > log/23/stdout1098 2> log/23/stderr1098
sion (openssl.c:5473)
 ==138956==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138956==    by 0x49908EB: curl_version_info (version.c:600)
 ==138956==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138956==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138956==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138956==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1091
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1090 ../src/curl -q --include --trace-ascii log/14/trace1090 --trace-time http://127.0.0.1:45467/1090 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/14/stdout1090 2> log/14/stderr1090
test 1098 [FTP RETR twice over proxy confirming persistent connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1098 ../src/curl -q --include --trace-ascii log/23/trace1098 --trace-time ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://127.0.0.1:44711 > log/23/stdout1098 2> log/23/stderr1098

 1098: stdout FAILED:
--- log/23/check-expected	2026-10-15 19:28:05.303171722 +0000
+++ log/23/check-generated	2026-10-15 19:28:05.300726852 +0000
@@ -1,10 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 6[CR][LF]
-[CR][LF]
-hello[LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 6[CR][LF]
-[CR][LF]
-hello[LF]
== Contents of files in the log/23/ directory after test 1098
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 6[CR][LF]
 [CR][LF]
 hello[LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 6[CR][LF]
 [CR][LF]
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1098 ../src/curl -q --include --trace-ascii log/23/trace1098 --trace-time ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://127.0.0.1:44711 > log/23/stdout1098 2> log/23/stderr1098
=== End of file commands.log
=== Start of file http_server.log
 19:28:02.526356 ====> Client connect
 19:28:02.526399 accept_connection 3 returned 4
 19:28:02.529783 Read 93 bytes
 19:28:02.529801 Process 93 bytes request
 19:28:02.529812 Got request: GET /verifiedserver HTTP/1.1
 19:28:02.529820 Are-we-friendly question received
 19:28:02.529851 Wrote request (93 bytes) input to log/23/server.input
 19:28:02.529867 Identifying ourselves as friends
 19:28:02.529922 Response sent (56 bytes) and written to log/23/server.response
 19:28:02.529930 special request received, no persistency
 19:28:02.529938 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 45344 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1098
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1098
 ==139219== 
 ==139219== Process terminating with default action of signal 4 (SIGILL)
 ==139219==  Illegal opcode at address 0x492B75F
 ==139219==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139219==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139219==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139219==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139219==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139219==    by 0x49908EB: curl_version_info (version.c:600)
 ==139219==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139219==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139219==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139219==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1098
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1095 ../src/curl -q --output log/6/curl1095.out  --include --trace-ascii log/6/trace1095 --trace-time http://127.0.0.1:33935/1095 -u testuser:testpass --digest > log/6/stdout1095 2> log/6/stderr1095
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1104 ../src/curl -q --output log/16/curl1104.out  --include --trace-ascii log/16/trace1104 --trace-time http://127.0.0.1:35903/want/1104 -L -x 127.0.0.1:35903 -c log/16/cookies1104.jar > log/16/stdout1104 2> log/16/stderr1104
test 1090 [HTTP GET --write-out with redirected fetch and chunked reply]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1090 ../src/curl -q --include --trace-ascii log/14/trace1090 --trace-time http://127.0.0.1:45467/1090 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/14/stdout1090 2> log/14/stderr1090

 1090: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:28:05.329419482 +0000
+++ log/14/check-generated	2026-10-15 19:28:05.327395404 +0000
@@ -1,20 +0,0 @@
-HTTP/1.1 302 OK swsbounce swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 8[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/plain[CR][LF]
-Location: ./10900001[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Transfer-Encoding: chunked[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/plain; charset=us-ascii[CR][LF]
-[CR][LF]
-bigger monster[LF]
-2[LF]
-1[LF]
-15[LF]
-http://127.0.0.1:45467/10900001[LF]
-text/plain; charset=us-ascii[LF]
-200[LF]
== Contents of files in the log/14/ directory after test 1090
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 8[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/plain[CR][LF]
 Location: ./10900001[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Transfer-Encoding: chunked[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/plain; charset=us-ascii[CR][LF]
 [CR][LF]
 bigger monster[LF]
 2[LF]
 1[LF]
 15[LF]
 http://127.0.0.1:45467/10900001[LF]
 text/plain; charset=us-ascii[LF]
 200[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1090 ../src/curl -q --include --trace-ascii log/14/trace1090 --trace-time http://127.0.0.1:45467/1090 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/14/stdout1090 2> log/14/stderr1090
=== End of file commands.log
=== Start of file http_server.log
 19:28:01.713093 ====> Client connect
 19:28:01.713140 accept_connection 3 returned 4
 19:28:01.713326 Read 93 bytes
 19:28:01.713342 Process 93 bytes request
 19:28:01.713356 Got request: GET /verifiedserver HTTP/1.1
 19:28:01.713365 Are-we-friendly question received
 19:28:01.713398 Wrote request (93 bytes) input to log/14/server.input
 19:28:01.713419 Identifying ourselves as friends
 19:28:01.713490 Response sent (56 bytes) and written to log/14/server.response
 19:28:01.713502 special request received, no persistency
 19:28:01.713510 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 35694 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1090
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1090
 ==138726== 
 ==138726== Process terminating with default action of signal 4 (SIGILL)
 ==138726==  Illegal opcode at address 0x492B75F
 ==138726==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==138726==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==138726==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==138726==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==138726==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==138726==    by 0x49908EB: curl_version_info (version.c:600)
 ==138726==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==138726==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==138726==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==138726==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1090
test 1095 [HTTP with Digest and realm with quoted quotes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1095 ../src/curl -q --output log/6/curl1095.out  --include --trace-ascii log/6/trace1095 --trace-time http://127.0.0.1:33935/1095 -u testuser:testpass --digest > log/6/stdout1095 2> log/6/stderr1095

 1095: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1095
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1095 ../src/curl -q --output log/6/curl1095.out  --include --trace-ascii log/6/trace1095 --trace-time http://127.0.0.1:33935/1095 -u testuser:testpass --digest > log/6/stdout1095 2> log/6/stderr1095
=== End of file commands.log
=== Start of file http_server.log
 19:28:02.482906 ====> Client connect
 19:28:02.482963 accept_connection 3 returned 4
 19:28:02.484708 Read 93 bytes
 19:28:02.484728 Process 93 bytes request
 19:28:02.484742 Got request: GET /verifiedserver HTTP/1.1
 19:28:02.484751 Are-we-friendly question received
 19:28:02.484788 Wrote request (93 bytes) input to log/6/server.input
 19:28:02.484805 Identifying ourselves as friends
 19:28:02.484869 Response sent (56 bytes) and written to log/6/server.response
 19:28:02.484879 special request received, no persistency
 19:28:02.484887 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 43526 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1095
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1095
 ==139197== 
 ==139197== Process terminating with default action of signal 4 (SIGILL)
 ==139197==  Illegal opcode at address 0x492B75F
 ==139197==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139197==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139197==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139197==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139197==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139197==    by 0x49908EB: curl_version_info (version.c:600)
 ==139197==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139197==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139197==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139197==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1095
test 1104 [HTTP cookie expiry date at Jan 1 00:00:00 GMT 1970]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1104 ../src/curl -q --output log/16/curl1104.out  --include --trace-ascii log/16/trace1104 --trace-time http://127.0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1103 ../src/curl -q --output log/17/curl1103.out  --include --trace-ascii log/17/trace1103 --trace-time ftp://127.0.0.1:46137/1103 > log/17/stdout1103 2> log/17/stderr1103
.0.1:35903/want/1104 -L -x 127.0.0.1:35903 -c log/16/cookies1104.jar > log/16/stdout1104 2> log/16/stderr1104

 1104: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1104
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1104 ../src/curl -q --output log/16/curl1104.out  --include --trace-ascii log/16/trace1104 --trace-time http://127.0.0.1:35903/want/1104 -L -x 127.0.0.1:35903 -c log/16/cookies1104.jar > log/16/stdout1104 2> log/16/stderr1104
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.173054 ====> Client connect
 19:28:04.173089 accept_connection 3 returned 4
 19:28:04.173112 Read 93 bytes
 19:28:04.173122 Process 93 bytes request
 19:28:04.173134 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.173142 Are-we-friendly question received
 19:28:04.173171 Wrote request (93 bytes) input to log/16/server.input
 19:28:04.173187 Identifying ourselves as friends
 19:28:04.173254 Response sent (56 bytes) and written to log/16/server.response
 19:28:04.173264 special request received, no persistency
 19:28:04.173272 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 37410 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1104
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1104
 ==139604== 
 ==139604== Process terminating with default action of signal 4 (SIGILL)
 ==139604==  Illegal opcode at address 0x492B75F
 ==139604==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139604==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139604==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139604==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139604==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139604==    by 0x49908EB: curl_version_info (version.c:600)
 ==139604==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139604==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139604==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139604==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1104
test 1103 [FTP non-OS/400 server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1103 ../src/curl -q --output log/17/curl1103.out  --include --trace-ascii log/17/trace1103 --trace-time ftp://127.0.0.1:46137/1103 > log/17/stdout1103 2> log/17/stderr1103

 1103: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1103
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1103 ../src/curl -q --output log/17/curl1103.out  --include --trace-ascii log/17/trace1103 --trace-time ftp://127.0.0.1:46137/1103 > log/17/stdout1103 2> log/17/stderr1103
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:03.432026 ====> Client connect
 19:28:03.432251 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:03.435627 < "USER anonymous"
 19:28:03.435676 > "331 We are happy you popped in![CR][LF]"
 19:28:03.435843 < "PASS ftp@example.com"
 19:28:03.435873 > "230 Welcome you silly person[CR][LF]"
 19:28:03.436027 < "PWD"
 19:28:03.436059 > "257 "/" is current directory[CR][LF]"
 19:28:03.436211 < "EPSV"
 19:28:03.436236 ====> Passive DATA channel requested by client
 19:28:03.436248 DATA sockfilt for passive data channel starting...
 19:28:03.445383 DATA sockfilt for passive data channel started (pid 139472)
 19:28:03.445507 DATA sockfilt for passive data channel listens on port 37091
 19:28:03.445558 > "229 Entering Passive Mode (|||37091|)[CR][LF]"
 19:28:03.445578 Client has been notified that upcoming DATA connection is awaited on port 37091
 19:28:03.445892 Client connects to port 37091
 19:28:03.445922 ====> Client established passive DATA connection on port 37091
 19:28:03.446019 < "TYPE I"
 19:28:03.446053 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:03.446211 < "SIZE verifiedserver"
 19:28:03.446248 > "213 17[CR][LF]"
 19:28:03.446377 < "RETR verifiedserver"
 19:28:03.446404 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:03.446486 =====> Closing passive DATA connection...
 19:28:03.446501 Server disconnects passive DATA connection
 19:28:03.446699 Server disconnected passive DATA connection
 19:28:03.446725 DATA sockfilt for passive data channel quits (pid 139472)
 19:28:03.446974 DATA sockfilt for passive data channel quit (pid 139472)
 19:28:03.446998 =====> Closed passive DATA connection
 19:28:03.447024 > "226 File transfer complete[CR][LF]"
 19:28:03.492209 < "QUIT"
 19:28:03.492267 > "221 bye bye baby[CR][LF]"
 19:28:03.493584 MAIN sockfilt said DISC
 19:28:03.493632 ====> Client disconnected
 19:28:03.493716 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:03.035145 ====> Client connect
 19:28:03.039587 Received DATA (on stdin)
 19:28:03.039614 > 146 bytes data, server => client
 19:28:03.039625 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:03.039636 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:03.039645 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:03.039732 < 16 bytes data, client => server
 19:28:03.039743 'USER anonymous\r\n'
 19:28:03.039942 Received DATA (on stdin)
 19:28:03.039954 > 33 bytes data, server => client
 19:28:03.039965 '331 We are happy you popped in!\r\n'
 19:28:03.040017 < 22 bytes data, client => server
 19:28:03.040027 'PASS ftp@example.com\r\n'
 19:28:03.040135 Received DATA (on stdin)
 19:28:03.040146 > 30 bytes data, server => client
 19:28:03.040155 '230 Welcome you silly person\r\n'
 19:28:03.040210 < 5 bytes data, client => server
 19:28:03.040220 'PWD\r\n'
 19:28:03.040321 Received DATA (on stdin)
 19:28:03.040331 > 30 bytes data, server => client
 19:28:03.040341 '257 "/" is current directory\r\n'
 19:28:03.040397 < 6 bytes data, client => server
 19:28:03.040406 'EPSV\r\n'
 19:28:03.049851 Received DATA (on stdin)
 19:28:03.049867 > 39 bytes data, server => client
 19:28:03.049878 '229 Entering Passive Mode (|||37091|)\r\n'
 19:28:03.050067 < 8 bytes data, client => server
 19:28:03.050084 'TYPE I\r\n'
 19:28:03.050318 Received DATA (on stdin)
 19:28:03.050330 > 33 bytes data, server => client
 19:28:03.050340 '200 I modify TYPE as you wanted\r\n'
 19:28:03.050393 < 21 bytes data, client => server
 19:28:03.050403 'SIZE verifiedserver\r\n'
 19:28:03.050507 Received DATA (on stdin)
 19:28:03.050516 > 8 bytes data, server => client
 19:28:03.050524 '213 17\r\n'
 19:28:03.050568 < 21 bytes data, client => server
 19:28:03.050577 'RETR verifiedserver\r\n'
 19:28:03.050762 Received DATA (on stdin)
 19:28:03.050771 > 29 bytes data, server => client
 19:28:03.050780 '150 Binary junk (17 bytes).\r\n'
 19:28:03.051287 Received DATA (on stdin)
 19:28:03.051299 > 28 bytes data, server => client
 19:28:03.051309 '226 File transfer complete\r\n'
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1101 ../src/curl -q --output log/20/curl1101.out  --include --trace-ascii log/20/trace1101 --trace-time http://user:secret@127.0.0.1:33897/gimme/1101 > log/20/stdout1101 2> log/20/stderr1101
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1094 ../src/curl -q --output log/18/curl1094.out  --include --trace-ascii log/18/trace1094 --trace-time "tftp://127.0.0.1:57959//1094;mode=netascii" > log/18/stdout1094 2> log/18/stderr1094
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1119.pl /startdir/src/curl/tests/.. ../include/curl > log/24/stdout1119 2> log/24/stderr1119
8:03.096275 < 6 bytes data, client => server
 19:28:03.096307 'QUIT\r\n'
 19:28:03.096534 Received DATA (on stdin)
 19:28:03.096547 > 18 bytes data, server => client
 19:28:03.096557 '221 bye bye baby\r\n'
 19:28:03.097777 ====> Client disconnect
 19:28:03.097979 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:03.045899 Running IPv4 version
 19:28:03.045972 Listening on port 37091
 19:28:03.046014 Wrote pid 139472 to log/17/server/ftp_sockdata.pid
 19:28:03.049574 Received PING (on stdin)
 19:28:03.049681 Received PORT (on stdin)
 19:28:03.050106 ====> Client connect
 19:28:03.050803 Received DATA (on stdin)
 19:28:03.050814 > 17 bytes data, server => client
 19:28:03.050822 'WE ROOLZ: 84749\r\n'
 19:28:03.050844 Received DISC (on stdin)
 19:28:03.050853 ====> Client forcibly disconnected
 19:28:03.050995 Received QUIT (on stdin)
 19:28:03.051005 quits
 19:28:03.051068 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 257 "C:/somedir" is the current directory
 REPLY SYST 215  unknown-OS runs this server
 Testnum 1103
=== End of file server.cmd
=== Start of file valgrind1103
 ==139510== 
 ==139510== Process terminating with default action of signal 4 (SIGILL)
 ==139510==  Illegal opcode at address 0x492B75F
 ==139510==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139510==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139510==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139510==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139510==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139510==    by 0x49908EB: curl_version_info (version.c:600)
 ==139510==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139510==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139510==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139510==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1103
setenv no_proxy = 127.0.0.1
setenv http_proxy = http://non-existing-host.haxx.se:3128/
test 1101 [NO_PROXY test, with username in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1101 ../src/curl -q --output log/20/curl1101.out  --include --trace-ascii log/20/trace1101 --trace-time http://user:secret@127.0.0.1:33897/gimme/1101 > log/20/stdout1101 2> log/20/stderr1101

 1101: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1101
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1101 ../src/curl -q --output log/20/curl1101.out  --include --trace-ascii log/20/trace1101 --trace-time http://user:secret@127.0.0.1:33897/gimme/1101 > log/20/stdout1101 2> log/20/stderr1101
=== End of file commands.log
=== Start of file http_server.log
 19:28:03.015538 ====> Client connect
 19:28:03.015582 accept_connection 3 returned 4
 19:28:03.015694 Read 93 bytes
 19:28:03.015711 Process 93 bytes request
 19:28:03.015725 Got request: GET /verifiedserver HTTP/1.1
 19:28:03.015734 Are-we-friendly question received
 19:28:03.015771 Wrote request (93 bytes) input to log/20/server.input
 19:28:03.015789 Identifying ourselves as friends
 19:28:03.015850 Response sent (56 bytes) and written to log/20/server.response
 19:28:03.015860 special request received, no persistency
 19:28:03.015869 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 60826 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1101
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1101
 ==139474== 
 ==139474== Process terminating with default action of signal 4 (SIGILL)
 ==139474==  Illegal opcode at address 0x492B75F
 ==139474==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139474==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139474==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139474==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139474==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139474==    by 0x49908EB: curl_version_info (version.c:600)
 ==139474==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139474==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139474==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139474==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1101
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/18/server/tftp_server.pid" --portfile "log/18/server/tftp_server.port" --logfile "log/18/tftp_server.log" --logdir "log/18" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 139095 port 57959
* pid tftp => 139095 139095
test 1094 [TFTP retrieve with mode=netascii]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1094 ../src/curl -q --output log/18/curl1094.out  --include --trace-ascii log/18/trace1094 --trace-time "tftp://127.0.0.1:57959//1094;mode=netascii" > log/18/stdout1094 2> log/18/stderr1094

 1094: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1094
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1094 ../src/curl -q --output log/18/curl1094.out  --include --trace-ascii log/18/trace1094 --trace-time "tftp://127.0.0.1:57959//1094;mode=netascii" > log/18/stdout1094 2> log/18/stderr1094
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1094
=== End of file server.cmd
=== Start of file tftp_server.log
 19:28:02.386518 Wrote pid 139095 to log/18/server/tftp_server.pid
 19:28:02.386579 Wrote port 57959 to log/18/server/tftp_server.port
 19:28:02.386591 Running IPv4 version on port UDP/57959
=== End of file tftp_server.log
=== Start of file valgrind1094
 ==139760== 
 ==139760== Process terminating with default action of signal 4 (SIGILL)
 ==139760==  Illegal opcode at address 0x492B75F
 ==139760==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139760==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139760==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139760==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139760==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139760==    by 0x49908EB: curl_version_info (version.c:600)
 ==139760==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139760==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139760==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139760==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1094
test 1119 [Verify that symbols-in-versions and headers are in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1119.pl /startdir/src/curl/tests/.. ../include/curl > log/24/stdout1119 2> log/24/stderr1119
 valgrind SKIPPED
s------e--- OK (1020 out of 1890, remaining: 01:50, took 0.85CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1105 ../src/curl -q --output log/4/curl1105.out  --include --trace-ascii log/4/trace1105 --trace-time "http://127.0.0.1:35735/we/want/1105?parm1=this*that/other/thing&parm2=foobar/1105" -c log/4/cookie1105.txt -d "userid=myname&password=mypassword" > log/4/stdout1105 2> log/4/stderr1105
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1102 ../src/curl -q --output log/10/curl1102.out  --include --trace-ascii log/10/trace1102 --trace-time ftp://127.0.0.1:44817/1102 > log/10/stdout1102 2> log/10/stderr1102
9s, duration: 02:08)
test 1105 [HTTP POST with cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1105 ../src/curl -q --output log/4/curl1105.out  --include --trace-ascii log/4/trace1105 --trace-time "http://127.0.0.1:35735/we/want/1105?parm1=this*that/other/thing&parm2=foobar/1105" -c log/4/cookie1105.txt -d "userid=myname&password=mypassword" > log/4/stdout1105 2> log/4/stderr1105

 1105: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1105
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1105 ../src/curl -q --output log/4/curl1105.out  --include --trace-ascii log/4/trace1105 --trace-time "http://127.0.0.1:35735/we/want/1105?parm1=this*that/other/thing&parm2=foobar/1105" -c log/4/cookie1105.txt -d "userid=myname&password=mypassword" > log/4/stdout1105 2> log/4/stderr1105
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.162964 ====> Client connect
 19:28:04.163011 accept_connection 3 returned 4
 19:28:04.163036 Read 93 bytes
 19:28:04.163045 Process 93 bytes request
 19:28:04.163058 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.163066 Are-we-friendly question received
 19:28:04.163095 Wrote request (93 bytes) input to log/4/server.input
 19:28:04.163112 Identifying ourselves as friends
 19:28:04.163189 Response sent (56 bytes) and written to log/4/server.response
 19:28:04.163199 special request received, no persistency
 19:28:04.163207 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 51408 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1105
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1105
 ==139590== 
 ==139590== Process terminating with default action of signal 4 (SIGILL)
 ==139590==  Illegal opcode at address 0x492B75F
 ==139590==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139590==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139590==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139590==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139590==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139590==    by 0x49908EB: curl_version_info (version.c:600)
 ==139590==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139590==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139590==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139590==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1105
test 1102 [FTP OS/400 server name format check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1102 ../src/curl -q --output log/10/curl1102.out  --include --trace-ascii log/10/trace1102 --trace-time ftp://127.0.0.1:44817/1102 > log/10/stdout1102 2> log/10/stderr1102

 1102: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1102
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1102 ../src/curl -q --output log/10/curl1102.out  --include --trace-ascii log/10/trace1102 --trace-time ftp://127.0.0.1:44817/1102 > log/10/stdout1102 2> log/10/stderr1102
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:03.421538 ====> Client connect
 19:28:03.421753 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:03.429903 < "USER anonymous"
 19:28:03.429960 > "331 We are happy you popped in![CR][LF]"
 19:28:03.435419 < "PASS ftp@example.com"
 19:28:03.435470 > "230 Welcome you silly person[CR][LF]"
 19:28:03.435663 < "PWD"
 19:28:03.435697 > "257 "/" is current directory[CR][LF]"
 19:28:03.435859 < "EPSV"
 19:28:03.435884 ====> Passive DATA channel requested by client
 19:28:03.435899 DATA sockfilt for passive data channel starting...
 19:28:03.443990 DATA sockfilt for passive data channel started (pid 139471)
 19:28:03.444379 DATA sockfilt for passive data channel listens on port 35363
 19:28:03.444441 > "229 Entering Passive Mode (|||35363|)[CR][LF]"
 19:28:03.444468 Client has been notified that upcoming DATA connection is awaited on port 35363
 19:28:03.452217 Client connects to port 35363
 19:28:03.452273 ====> Client established passive DATA connection on port 35363
 19:28:03.453028 < "TYPE I"
 19:28:03.453070 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:03.453229 < "SIZE verifiedserver"
 19:28:03.453266 > "213 17[CR][LF]"
 19:28:03.453404 < "RETR verifiedserver"
 19:28:03.453434 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:03.453527 =====> Closing passive DATA connection...
 19:28:03.453543 Server disconnects passive DATA connection
 19:28:03.453724 Server disconnected passive DATA connection
 19:28:03.453745 DATA sockfilt for passive data channel quits (pid 139471)
 19:28:03.454021 DATA sockfilt for passive data channel quit (pid 139471)
 19:28:03.454044 =====> Closed passive DATA connection
 19:28:03.454072 > "226 File transfer complete[CR][LF]"
 19:28:03.495733 < "QUIT"
 19:28:03.495789 > "221 bye bye baby[CR][LF]"
 19:28:03.496991 MAIN sockfilt said DISC
 19:28:03.497033 ====> Client disconnected
 19:28:03.497116 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:04.025659 ====> Client connect
 19:28:04.026032 Received DATA (on stdin)
 19:28:04.026047 > 146 bytes data, server => client
 19:28:04.026058 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:04.026068 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:04.026077 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:04.033012 < 16 bytes data, client => server
 19:28:04.033039 'USER anonymous\r\n'
 19:28:04.036246 Received DATA (on stdin)
 19:28:04.036271 > 33 bytes data, server => client
 19:28:04.036282 '331 We are happy you popped in!\r\n'
 19:28:04.036350 < 22 bytes data, client => server
 19:28:04.036361 'PASS ftp@example.com\r\n'
 19:28:04.039744 Received DATA (on stdin)
 19:28:04.039760 > 30 bytes data, server => client
 19:28:04.039769 '230 Welcome you silly person\r\n'
 19:28:04.039842 < 5 bytes data, client => server
 19:28:04.039853 'PWD\r\n'
 19:28:04.039961 Received DATA (on stdin)
 19:28:04.039971 > 30 bytes data, server => client
 19:28:04.039982 '257 "/" is current directory\r\n'
 19:28:04.040040 < 6 bytes data, client => server
 19:28:04.040049 'EPSV\r\n'
 19:28:04.054601 Received DATA (on stdin)
 19:28:04.054623 > 39 bytes data, server => client
 19:28:04.054634 '229 Entering Passive Mode (|||35363|)\r\n'
 19:28:04.057145 < 8 bytes data, client => server
 19:28:04.057163 'TYPE I\r\n'
 19:28:04.057334 Received DATA (on stdin)
 19:28:04.057345 > 33 bytes data, server => client
 19:28:04.057355 '200 I modify TYPE as you wanted\r\n'
 19:28:04.057412 < 21 bytes data, client => server
 19:28:04.057423 'SIZE verifiedserver\r\n'
 19:28:04.057526 ReceiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1106 ../src/curl -q --output log/5/curl1106.out  --include --trace-ascii log/5/trace1106 --trace-time ftp://127.0.0.1:23456/1106 > log/5/stdout1106 2> log/5/stderr1106
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1113 ./libtest/libtests lib574 "ftp://127.0.0.1:38555/fully_simulated/DOS/*.txt" > log/19/stdout1113 2> log/19/stderr1113
ved DATA (on stdin)
 19:28:04.057535 > 8 bytes data, server => client
 19:28:04.057545 '213 17\r\n'
 19:28:04.057591 < 21 bytes data, client => server
 19:28:04.057601 'RETR verifiedserver\r\n'
 19:28:04.057806 Received DATA (on stdin)
 19:28:04.057817 > 29 bytes data, server => client
 19:28:04.057827 '150 Binary junk (17 bytes).\r\n'
 19:28:04.058335 Received DATA (on stdin)
 19:28:04.058346 > 28 bytes data, server => client
 19:28:04.058357 '226 File transfer complete\r\n'
 19:28:04.099823 < 6 bytes data, client => server
 19:28:04.099849 'QUIT\r\n'
 19:28:04.100056 Received DATA (on stdin)
 19:28:04.100069 > 18 bytes data, server => client
 19:28:04.100080 '221 bye bye baby\r\n'
 19:28:04.101190 ====> Client disconnect
 19:28:04.101378 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:03.044091 Running IPv4 version
 19:28:03.044179 Listening on port 35363
 19:28:03.044225 Wrote pid 139471 to log/10/server/ftp_sockdata.pid
 19:28:03.044246 Received PING (on stdin)
 19:28:03.048530 Received PORT (on stdin)
 19:28:03.056409 ====> Client connect
 19:28:03.057880 Received DATA (on stdin)
 19:28:03.057893 > 17 bytes data, server => client
 19:28:03.057903 'WE ROOLZ: 85153\r\n'
 19:28:03.057927 Received DISC (on stdin)
 19:28:03.057938 ====> Client forcibly disconnected
 19:28:03.058055 Received QUIT (on stdin)
 19:28:03.058066 quits
 19:28:03.058132 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 257 "QGPL" is the current library
 REPLY SYST 215  OS/400 runs this server
 REPLY SITE 250 Name format set to 1
 Testnum 1102
=== End of file server.cmd
=== Start of file valgrind1102
 ==139523== 
 ==139523== Process terminating with default action of signal 4 (SIGILL)
 ==139523==  Illegal opcode at address 0x492B75F
 ==139523==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139523==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139523==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139523==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139523==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139523==    by 0x49908EB: curl_version_info (version.c:600)
 ==139523==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139523==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139523==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139523==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1102
setenv ftp_proxy = http://127.0.0.1:37089/
test 1106 [FTP URL and with ftp_proxy environment variable set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1106 ../src/curl -q --output log/5/curl1106.out  --include --trace-ascii log/5/trace1106 --trace-time ftp://127.0.0.1:23456/1106 > log/5/stdout1106 2> log/5/stderr1106

 1106: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1106
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1106 ../src/curl -q --output log/5/curl1106.out  --include --trace-ascii log/5/trace1106 --trace-time ftp://127.0.0.1:23456/1106 > log/5/stdout1106 2> log/5/stderr1106
=== End of file commands.log
=== Start of file http_server.log
 19:28:03.389616 ====> Client connect
 19:28:03.389661 accept_connection 3 returned 4
 19:28:03.389686 Read 93 bytes
 19:28:03.389695 Process 93 bytes request
 19:28:03.389708 Got request: GET /verifiedserver HTTP/1.1
 19:28:03.389717 Are-we-friendly question received
 19:28:03.389746 Wrote request (93 bytes) input to log/5/server.input
 19:28:03.389762 Identifying ourselves as friends
 19:28:03.389846 Response sent (56 bytes) and written to log/5/server.response
 19:28:03.389856 special request received, no persistency
 19:28:03.389864 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 36696 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1106
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1106
 ==139792== 
 ==139792== Process terminating with default action of signal 4 (SIGILL)
 ==139792==  Illegal opcode at address 0x492B75F
 ==139792==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139792==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139792==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139792==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139792==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139792==    by 0x49908EB: curl_version_info (version.c:600)
 ==139792==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139792==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139792==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139792==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1106
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1107 ../src/curl -q --output log/21/curl1107.out  --include --trace-ascii log/21/trace1107 --trace-time ftp://127.0.0.1:35787/1107 --ftp-pret > log/21/stdout1107 2> log/21/stderr1107
test 1113 [FTP wildcard download - changed fnmatch, 2x perform (DOS LIST)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1113 ./libtest/libtests lib574 "ftp://127.0.0.1:38555/fully_simulated/DOS/*.txt" > log/19/stdout1113 2> log/19/stderr1113

 1113: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:28:06.526580271 +0000
+++ log/19/check-generated	2026-10-15 19:28:06.524145844 +0000
@@ -1,10 +0,0 @@
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
-This file should have permissions 444[LF]
-This file should have permissions 666[LF]
-This file should have permissions 777[LF]
-This is content of file "file.txt"[LF]
-Some junk ;-) This file does not really exist.[LF]
== Contents of files in the log/19/ directory after test 1113
=== Start of file check-expected
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
 This file should have permissions 444[LF]
 This file should have permissions 666[LF]
 This file should have permissions 777[LF]
 This is content of file "file.txt"[LF]
 Some junk ;-) This file does not really exist.[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1113 ./libtest/libtests lib574 "ftp://127.0.0.1:38555/fully_simulated/DOS/*.txt" > log/19/stdout1113 2> log/19/stderr1113
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:04.537586 ====> Client connect
 19:28:04.537852 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:04.538463 < "USER anonymous"
 19:28:04.538553 > "331 We are happy you popped in![CR][LF]"
 19:28:04.538777 < "PASS ftp@example.com"
 19:28:04.538818 > "230 Welcome you silly person[CR][LF]"
 19:28:04.539031 < "PWD"
 19:28:04.539072 > "257 "/" is current directory[CR][LF]"
 19:28:04.539291 < "EPSV"
 19:28:04.539319 ====> Passive DATA channel requested by client
 19:28:04.539334 DATA sockfilt for passive data channel starting...
 19:28:04.546460 DATA sockfilt for passive data channel started (pid 140225)
 19:28:04.546592 DATA sockfilt for passive data channel listens on port 35423
 19:28:04.546641 > "229 Entering Passive Mode (|||35423|)[CR][LF]"
 19:28:04.546662 Client has been notified that upcoming DATA connection is awaited on port 35423
 19:28:04.546956 Client connects to port 35423
 19:28:04.546987 ====> Client established passive DATA connection on port 35423
 19:28:04.547073 < "TYPE I"
 19:28:04.547107 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:04.547278 < "SIZE verifiedserver"
 19:28:04.547318 > "213 17[CR][LF]"
 19:28:04.547482 < "RETR verifiedserver"
 19:28:04.547516 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:04.547606 =====> Closing passive DATA connection...
 19:28:04.547626 Server disconnects passive DATA connection
 19:28:04.547786 Server disconnected passive DATA connection
 19:28:04.547809 DATA sockfilt for passive data channel quits (pid 140225)
 19:28:04.548041 DATA sockfilt for passive data channel quit (pid 140225)
 19:28:04.548067 =====> Closed passive DATA connection
 19:28:04.548097 > "226 File transfer complete[CR][LF]"
 19:28:04.595599 < "QUIT"
 19:28:04.595662 > "221 bye bye baby[CR][LF]"
 19:28:04.596739 MAIN sockfilt said DISC
 19:28:04.596782 ====> Client disconnected
 19:28:04.596869 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:04.141629 ====> Client connect
 19:28:04.142304 Received DATA (on stdin)
 19:28:04.142331 > 146 bytes data, server => client
 19:28:04.142344 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:04.142354 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:04.142364 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:04.142452 < 16 bytes data, client => server
 19:28:04.142467 'USER anonymous\r\n'
 19:28:04.142746 Received DATA (on stdin)
 19:28:04.142759 > 33 bytes data, server => client
 19:28:04.142770 '331 We are happy you popped in!\r\n'
 19:28:04.142838 < 22 bytes data, client => server
 19:28:04.142852 'PASS ftp@example.com\r\n'
 19:28:04.143004 Received DATA (on stdin)
 19:28:04.143016 > 30 bytes data, server => client
 19:28:04.143054 '230 Welcome you silly person\r\n'
 19:28:04.143115 < 5 bytes data, client => server
 19:28:04.143127 'PWD\r\n'
 19:28:04.143257 Received DATA (on stdin)
 19:28:04.143268 > 30 bytes data, server => client
 19:28:04.143278 '257 "/" is current directory\r\n'
 19:28:04.143350 < 6 bytes data, client => server
 19:28:04.143363 'EPSV\r\n'
 19:28:04.150853 Received DATA (on stdin)
 19:28:04.150867 > 39 bytes data, server => client
 19:28:04.150878 '229 Entering Passive Mode (|||35423|)\r\n'
 19:28:04.151085 < 8 bytes data, client => server
 19:28:04.151097 'TYPE I\r\n'
 19:28:04.151291 Received DATA (on stdin)
 19:28:04.151302 > 33 bytes data, server => client
 19:28:04.151312 '200 I modify TYPE as you wanted\r\n'
 19:28:04.151370 < 21 bytes data, client => server
 19:28:04.151381 'SIZE verifiedserver\r\n'
 19:28:04.151503 Received DATA (on stdin)
 19:28:04.151514 > 8 bytes data, server => client
 19:28:04.151523 '213 17\r\n'
 19:28:04.151577 < 21 bytes data, client => server
 19:28:04.151588 'RETR verifiedserver\r\n'
 19:28:04.151898 Received DATA (on stdin)
 19:28:04.151910 > 29 bytes data, server => client
 19:28:04.151920 '150 Binary junk (17 bytes).\r\n'
 19:28:04.152282 Received DATA (on stdin)
 19:28:04.152294 > 28 bytes data, server => client
 19:28:04.152304 '226 File transfer complete\r\n'
 19:28:04.199595 < 6 bytes data, client => server
 19:28:04.199628 'QUIT\r\n'
 19:28:04.199853 Received DATA (on stdin)
 19:28:04.199866 > 18 bytes data, server => client
 19:28:04.199877 '221 bye bye baby\r\n'
 19:28:04.200855 ====> Client disconnect
 19:28:04.201055 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:04.150282 Running IPv4 version
 19:28:04.150367 Listening on port 35423
 19:28:04.150409 Wrote pid 140225 to log/19/server/ftp_sockdata.pid
 19:28:04.150581 Received PING (on stdin)
 19:28:04.150677 Received PORT (on stdin)
 19:28:04.151055 ====> Client connect
 19:28:04.151810 Received DATA (on stdin)
 19:28:04.151822 > 17 bytes data, server => client
 19:28:04.151832 'WE ROOLZ: 84587\r\n'
 19:28:04.151860 Received DISC (on stdin)
 19:28:04.151873 ====> Client forcibly disconnected
 19:28:04.151999 Received QUIT (on stdin)
 19:28:04.152010 quits
 19:28:04.152075 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1113
=== End of file server.cmd
=== Start of file valgrind1113
 ==140250== 
 ==140250== Process terminating with default action of signal 4 (SIGILL)
 ==140250==  Illegal opcode at address 0x51CC63F
 ==140250==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==140250==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==140250==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==140250==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1113
test 1107 [FTP RETR PASV with PRET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1107 ../src/curl -q --output log/21/curl1107.out  --include --trace-ascii log/21/trace1107 --trace-time ftp://127.0.0.1:35787/1107 --ftp-pret > log/21/stdout1107 2> log/21/stderr1107

 1107: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files inCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1114 ./libtest/libtests lib576 ftp://127.0.0.1:44883/fully_simulated/DOS/* > log/15/stdout1114 2> log/15/stderr1114
 the log/21/ directory after test 1107
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1107 ../src/curl -q --output log/21/curl1107.out  --include --trace-ascii log/21/trace1107 --trace-time ftp://127.0.0.1:35787/1107 --ftp-pret > log/21/stdout1107 2> log/21/stderr1107
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:04.038885 ====> Client connect
 19:28:04.039164 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:04.042346 < "USER anonymous"
 19:28:04.042392 > "331 We are happy you popped in![CR][LF]"
 19:28:04.042554 < "PASS ftp@example.com"
 19:28:04.042576 > "230 Welcome you silly person[CR][LF]"
 19:28:04.042722 < "PWD"
 19:28:04.042750 > "257 "/" is current directory[CR][LF]"
 19:28:04.042903 < "EPSV"
 19:28:04.042926 ====> Passive DATA channel requested by client
 19:28:04.042940 DATA sockfilt for passive data channel starting...
 19:28:04.048903 DATA sockfilt for passive data channel started (pid 139916)
 19:28:04.049043 DATA sockfilt for passive data channel listens on port 42397
 19:28:04.049089 > "229 Entering Passive Mode (|||42397|)[CR][LF]"
 19:28:04.049105 Client has been notified that upcoming DATA connection is awaited on port 42397
 19:28:04.055501 Client connects to port 42397
 19:28:04.055570 ====> Client established passive DATA connection on port 42397
 19:28:04.055689 < "TYPE I"
 19:28:04.055731 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:04.055948 < "SIZE verifiedserver"
 19:28:04.055990 > "213 17[CR][LF]"
 19:28:04.056141 < "RETR verifiedserver"
 19:28:04.056177 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:04.056277 =====> Closing passive DATA connection...
 19:28:04.056292 Server disconnects passive DATA connection
 19:28:04.056509 Server disconnected passive DATA connection
 19:28:04.056535 DATA sockfilt for passive data channel quits (pid 139916)
 19:28:04.067214 DATA sockfilt for passive data channel quit (pid 139916)
 19:28:04.067266 =====> Closed passive DATA connection
 19:28:04.067313 > "226 File transfer complete[CR][LF]"
 19:28:04.100369 < "QUIT"
 19:28:04.100437 > "221 bye bye baby[CR][LF]"
 19:28:04.101752 MAIN sockfilt said DISC
 19:28:04.101786 ====> Client disconnected
 19:28:04.101885 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:03.641237 ====> Client connect
 19:28:03.646211 Received DATA (on stdin)
 19:28:03.646244 > 146 bytes data, server => client
 19:28:03.646255 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:03.646265 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:03.646274 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:03.646397 < 16 bytes data, client => server
 19:28:03.646409 'USER anonymous\r\n'
 19:28:03.646616 Received DATA (on stdin)
 19:28:03.646627 > 33 bytes data, server => client
 19:28:03.646637 '331 We are happy you popped in!\r\n'
 19:28:03.646690 < 22 bytes data, client => server
 19:28:03.646700 'PASS ftp@example.com\r\n'
 19:28:03.646794 Received DATA (on stdin)
 19:28:03.646804 > 30 bytes data, server => client
 19:28:03.646814 '230 Welcome you silly person\r\n'
 19:28:03.646863 < 5 bytes data, client => server
 19:28:03.646873 'PWD\r\n'
 19:28:03.646967 Received DATA (on stdin)
 19:28:03.646978 > 30 bytes data, server => client
 19:28:03.646987 '257 "/" is current directory\r\n'
 19:28:03.647046 < 6 bytes data, client => server
 19:28:03.647055 'EPSV\r\n'
 19:28:03.656213 Received DATA (on stdin)
 19:28:03.656242 > 39 bytes data, server => client
 19:28:03.656254 '229 Entering Passive Mode (|||42397|)\r\n'
 19:28:03.656448 < 8 bytes data, client => server
 19:28:03.656464 'TYPE I\r\n'
 19:28:03.659954 Received DATA (on stdin)
 19:28:03.659968 > 33 bytes data, server => client
 19:28:03.659979 '200 I modify TYPE as you wanted\r\n'
 19:28:03.660077 < 21 bytes data, client => server
 19:28:03.660089 'SIZE verifiedserver\r\n'
 19:28:03.660207 Received DATA (on stdin)
 19:28:03.660217 > 8 bytes data, server => client
 19:28:03.660227 '213 17\r\n'
 19:28:03.660279 < 21 bytes data, client => server
 19:28:03.660290 'RETR verifiedserver\r\n'
 19:28:03.660509 Received DATA (on stdin)
 19:28:03.660520 > 29 bytes data, server => client
 19:28:03.660529 '150 Binary junk (17 bytes).\r\n'
 19:28:03.671549 Received DATA (on stdin)
 19:28:03.671569 > 28 bytes data, server => client
 19:28:03.671580 '226 File transfer complete\r\n'
 19:28:03.704357 < 6 bytes data, client => server
 19:28:03.704397 'QUIT\r\n'
 19:28:03.704665 Received DATA (on stdin)
 19:28:03.704679 > 18 bytes data, server => client
 19:28:03.704689 '221 bye bye baby\r\n'
 19:28:03.705913 ====> Client disconnect
 19:28:03.706114 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:04.649311 Running IPv4 version
 19:28:04.649385 Listening on port 42397
 19:28:04.649423 Wrote pid 139916 to log/21/server/ftp_sockdata.pid
 19:28:04.653045 Received PING (on stdin)
 19:28:04.653158 Received PORT (on stdin)
 19:28:04.659633 ====> Client connect
 19:28:04.660555 Received DATA (on stdin)
 19:28:04.660567 > 17 bytes data, server => client
 19:28:04.660576 'WE ROOLZ: 84694\r\n'
 19:28:04.660600 Received DISC (on stdin)
 19:28:04.660610 ====> Client forcibly disconnected
 19:28:04.660760 Received QUIT (on stdin)
 19:28:04.660770 quits
 19:28:04.669850 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PRET 200 fine
 Testnum 1107
=== End of file server.cmd
=== Start of file valgrind1107
 ==139939== 
 ==139939== Process terminating with default action of signal 4 (SIGILL)
 ==139939==  Illegal opcode at address 0x492B75F
 ==139939==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139939==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139939==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139939==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139939==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139939==    by 0x49908EB: curl_version_info (version.c:600)
 ==139939==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139939==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139939==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139939==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1107
test 1114 [FTP wildcard download - skip/correctness/FNMATCH_FUNCTION (DOS)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1114 ./libtest/libtests lib576 ftp://127.0.0.1:44883/fully_simulated/DOS/* > log/15/stdout1114 2> log/15/stderr1114

 1114: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:28:06.673878808 +0000
+++ log/15/check-generated	2026-10-15 19:28:06.670822651 +0000
@@ -1,96 +0,0 @@
-=============================================================[LF]
-Remains:      12[LF]
-Filename:     .[LF]
-Size:         0B[LF]
-Time:         04-27-10  05:12AM[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      11[LF]
-Filename:     ..[LF]
-Size:         0B[LF]
-Time:         04-23-10  03:12AM[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      10[LF]
-Filename:     chmod1[LF]
-Size:         38B[LF]
-Time:         01-11-10  10:00AM[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This file should have permissions 444[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      9[LF]
-Filename:     chmod2[LF]
-Size:         38B[LF]
-Time:         02-01-10  08:00AM[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This file should have permissions 666[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      8[LF]
-Filename:     chmod3[LF]
-Size:         38B[LF]
-Time:         02-01-10  08:00AM[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This file should have permissions 777[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      7[LF]
-Filename:     chmod4[LF]
-Size:         0B[LF]
-Time:         05-04-10  04:31AM[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      6[LF]
-Filename:     chmod5[LF]
-Size:         0B[LF]
-Time:         05-04-10  04:31AM[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      5[LF]
-Filename:     empty_file.dat[LF]
-Size:         0B[LF]
-Time:         04-27-10  11:01AM[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      4[LF]
-Filename:     file.txt[LF]
-Size:         35B[LF]
-Time:         04-27-10  11:01AM[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-This is content of file "file.txt"[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      3[LF]
-Filename:     .NeXT[LF]
-Size:         0B[LF]
-Time:         01-23-05  02:05AM[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
-Remains:      2[LF]
-Filename:     someothertext.txt[LF]
-Size:         47B[LF]
-Time:         04-27-10  11:01AM[LF]
-Filetype:     regular file[LF]
-Content:[LF]
--------------------------------------------------------------[LF]
-# THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF]
--------------------------------------------------------------[LF]
-=============================================================[LF]
-Remains:      1[LF]
-Filename:     weirddir.txt[LF]
-Size:         0B[LF]
-Time:         04-23-10  03:12AM[LF]
-Filetype:     directory[LF]
-=============================================================[LF]
== Contents of files in the log/15/ directory after test 1114
=== Start of file check-expected
 =============================================================[LF]
 Remains:      12[LF]
 Filename:     .[LF]
 Size:         0B[LF]
 Time:         04-27-10  05:12AM[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      11[LF]
 Filename:     ..[LF]
 Size:         0B[LF]
 Time:         04-23-10  03:12AM[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      10[LF]
 Filename:     chmod1[LF]
 Size:         38B[LF]
 Time:         01-11-10  10:00AM[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This file should have permissions 444[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      9[LF]
 Filename:     chmod2[LF]
 Size:         38B[LF]
 Time:         02-01-10  08:00AM[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This file should have permissions 666[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      8[LF]
 Filename:     chmod3[LF]
 Size:         38B[LF]
 Time:         02-01-10  08:00AM[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This file should have permissions 777[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      7[LF]
 Filename:     chmod4[LF]
 Size:         0B[LF]
 Time:         05-04-10  04:31AM[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      6[LF]
 Filename:     chmod5[LF]
 Size:         0B[LF]
 Time:         05-04-10  04:31AM[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      5[LF]
 Filename:     empty_file.dat[LF]
 Size:         0B[LF]
 Time:         04-27-10  11:01AM[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      4[LF]
 Filename:     file.txt[LF]
 Size:         35B[LF]
 Time:         04-27-10  11:01AM[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 This is content of file "file.txt"[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      3[LF]
 Filename:     .NeXT[LF]
 Size:         0B[LF]
 Time:         01-23-05  02:05AM[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
 Remains:      2[LF]
 Filename:     someothertext.txt[LF]
 Size:         47B[LF]
 Time:         04-27-10  11:01AM[LF]
 Filetype:     regular file[LF]
 Content:[LF]
 -------------------------------------------------------------[LF]
 # THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF]
 -------------------------------------------------------------[LF]
 =============================================================[LF]
 Remains:      1[LF]
 Filename:     weirddir.txt[LF]
 Size:         0B[LF]
 Time:         04-23-10  03:12AM[LF]
 Filetype:     directory[LF]
 =============================================================[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1114 ./libtest/libtCMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1135.pl /startdir/src/curl/tests/.. > log/15/stdout1135 2> log/15/stderr1135
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1115 ../src/curl -q --output log/2/curl1115.out  --include --trace-ascii log/2/trace1115 --trace-time http://127.0.0.1:34531/1115 > log/2/stdout1115 2> log/2/stderr1115
ests lib576 ftp://127.0.0.1:44883/fully_simulated/DOS/* > log/15/stdout1114 2> log/15/stderr1114
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:04.509627 ====> Client connect
 19:28:04.509885 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:04.510516 < "USER anonymous"
 19:28:04.510563 > "331 We are happy you popped in![CR][LF]"
 19:28:04.510765 < "PASS ftp@example.com"
 19:28:04.510801 > "230 Welcome you silly person[CR][LF]"
 19:28:04.510977 < "PWD"
 19:28:04.511014 > "257 "/" is current directory[CR][LF]"
 19:28:04.511201 < "EPSV"
 19:28:04.511227 ====> Passive DATA channel requested by client
 19:28:04.511241 DATA sockfilt for passive data channel starting...
 19:28:04.516606 DATA sockfilt for passive data channel started (pid 140213)
 19:28:04.516737 DATA sockfilt for passive data channel listens on port 36851
 19:28:04.516791 > "229 Entering Passive Mode (|||36851|)[CR][LF]"
 19:28:04.516813 Client has been notified that upcoming DATA connection is awaited on port 36851
 19:28:04.517156 Client connects to port 36851
 19:28:04.517189 ====> Client established passive DATA connection on port 36851
 19:28:04.517279 < "TYPE I"
 19:28:04.517316 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:04.517495 < "SIZE verifiedserver"
 19:28:04.517535 > "213 17[CR][LF]"
 19:28:04.517704 < "RETR verifiedserver"
 19:28:04.517739 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:04.517831 =====> Closing passive DATA connection...
 19:28:04.517851 Server disconnects passive DATA connection
 19:28:04.518051 Server disconnected passive DATA connection
 19:28:04.518079 DATA sockfilt for passive data channel quits (pid 140213)
 19:28:04.518402 DATA sockfilt for passive data channel quit (pid 140213)
 19:28:04.518430 =====> Closed passive DATA connection
 19:28:04.518459 > "226 File transfer complete[CR][LF]"
 19:28:04.568839 < "QUIT"
 19:28:04.568903 > "221 bye bye baby[CR][LF]"
 19:28:04.570198 MAIN sockfilt said DISC
 19:28:04.570247 ====> Client disconnected
 19:28:04.570343 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:04.109137 ====> Client connect
 19:28:04.114352 Received DATA (on stdin)
 19:28:04.114383 > 146 bytes data, server => client
 19:28:04.114395 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:04.114406 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:04.114415 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:04.114532 < 16 bytes data, client => server
 19:28:04.114547 'USER anonymous\r\n'
 19:28:04.114756 Received DATA (on stdin)
 19:28:04.114769 > 33 bytes data, server => client
 19:28:04.114779 '331 We are happy you popped in!\r\n'
 19:28:04.114842 < 22 bytes data, client => server
 19:28:04.114854 'PASS ftp@example.com\r\n'
 19:28:04.114990 Received DATA (on stdin)
 19:28:04.115001 > 30 bytes data, server => client
 19:28:04.115011 '230 Welcome you silly person\r\n'
 19:28:04.115069 < 5 bytes data, client => server
 19:28:04.115079 'PWD\r\n'
 19:28:04.115201 Received DATA (on stdin)
 19:28:04.115212 > 30 bytes data, server => client
 19:28:04.115224 '257 "/" is current directory\r\n'
 19:28:04.115294 < 6 bytes data, client => server
 19:28:04.115307 'EPSV\r\n'
 19:28:04.121013 Received DATA (on stdin)
 19:28:04.121038 > 39 bytes data, server => client
 19:28:04.121049 '229 Entering Passive Mode (|||36851|)\r\n'
 19:28:04.121248 < 8 bytes data, client => server
 19:28:04.121270 'TYPE I\r\n'
 19:28:04.121503 Received DATA (on stdin)
 19:28:04.121515 > 33 bytes data, server => client
 19:28:04.121526 '200 I modify TYPE as you wanted\r\n'
 19:28:04.121586 < 21 bytes data, client => server
 19:28:04.121599 'SIZE verifiedserver\r\n'
 19:28:04.121721 Received DATA (on stdin)
 19:28:04.121733 > 8 bytes data, server => client
 19:28:04.121742 '213 17\r\n'
 19:28:04.121799 < 21 bytes data, client => server
 19:28:04.121810 'RETR verifiedserver\r\n'
 19:28:04.122037 Received DATA (on stdin)
 19:28:04.122049 > 29 bytes data, server => client
 19:28:04.122059 '150 Binary junk (17 bytes).\r\n'
 19:28:04.122647 Received DATA (on stdin)
 19:28:04.122659 > 28 bytes data, server => client
 19:28:04.122669 '226 File transfer complete\r\n'
 19:28:04.169562 < 6 bytes data, client => server
 19:28:04.169600 'QUIT\r\n'
 19:28:04.173096 Received DATA (on stdin)
 19:28:04.173118 > 18 bytes data, server => client
 19:28:04.173129 '221 bye bye baby\r\n'
 19:28:04.174312 ====> Client disconnect
 19:28:04.174534 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:04.117633 Running IPv4 version
 19:28:04.117702 Listening on port 36851
 19:28:04.117739 Wrote pid 140213 to log/15/server/ftp_sockdata.pid
 19:28:04.120723 Received PING (on stdin)
 19:28:04.120827 Received PORT (on stdin)
 19:28:04.121292 ====> Client connect
 19:28:04.122120 Received DATA (on stdin)
 19:28:04.122134 > 17 bytes data, server => client
 19:28:04.122144 'WE ROOLZ: 84744\r\n'
 19:28:04.122172 Received DISC (on stdin)
 19:28:04.122184 ====> Client forcibly disconnected
 19:28:04.122332 Received QUIT (on stdin)
 19:28:04.122347 quits
 19:28:04.122411 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1114
=== End of file server.cmd
=== Start of file valgrind1114
 ==140238== 
 ==140238== Process terminating with default action of signal 4 (SIGILL)
 ==140238==  Illegal opcode at address 0x51CC63F
 ==140238==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==140238==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==140238==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==140238==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1114
test 1135 [Verify CURL_EXTERN order]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1135.pl /startdir/src/curl/tests/.. > log/15/stdout1135 2> log/15/stderr1135
 valgrind SKIPPED
s------e--- OK (1036 out of 1890, remaining: 01:47, took 0.073s, duration: 02:09)
test 1115 [HTTP GET with unexpected 1xx response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1115 ../src/curl -q --output log/2/curl1115.out  --include --trace-ascii log/2/trace1115 --trace-time http://127.0.0.1:34531/1115 > log/2/stdout1115 2> log/2/stderr1115

 1115: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1115
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1115 ../src/curl -q --output log/2/curl1115.out  --include --trace-ascii log/2/trace1115 --trace-time http://127.0.0.1:34531/1115 > log/2/stdout1115 2> log/2/stderr1115
=== End of file commands.log
=== Start of file http_server.log
 19:28:05.277144 ====> Client connect
 19:28:05.277197 accept_connection 3 returned 4
 19:28:05.277224 Read 93 bytes
 19:28:05.277235 Process 93 bytes request
 19:28:05.277249 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.277257 Are-we-friendly question received
 19:28:05.277290 Wrote request (93 bytes) input to log/2/server.input
 19:28:05.277317 Identifying ourselves as friends
 19:28:05.277394 Response sent (56 bytes) and written to log/2/server.response
 19:28:05.277406 special request received, no persistency
 19:28:05.277415 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 41880 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1109 ../src/curl -q --output log/7/curl1109.out  --include --trace-ascii log/7/trace1109 --trace-time http://127.0.0.1:40859/1109#test > log/7/stdout1109 2> log/7/stderr1109
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1108 ../src/curl -q --output log/22/curl1108.out  --include --trace-ascii log/22/trace1108 --trace-time ftp://127.0.0.1:33255/1108 --ftp-pret > log/22/stdout1108 2> log/22/stderr1108
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1115
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1115
 ==140334== 
 ==140334== Process terminating with default action of signal 4 (SIGILL)
 ==140334==  Illegal opcode at address 0x492B75F
 ==140334==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140334==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140334==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140334==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140334==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140334==    by 0x49908EB: curl_version_info (version.c:600)
 ==140334==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140334==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1115
test 1109 [HTTP GET with URL that contains fragment after the path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1109 ../src/curl -q --output log/7/curl1109.out  --include --trace-ascii log/7/trace1109 --trace-time http://127.0.0.1:40859/1109#test > log/7/stdout1109 2> log/7/stderr1109

 1109: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1109
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1109 ../src/curl -q --output log/7/curl1109.out  --include --trace-ascii log/7/trace1109 --trace-time http://127.0.0.1:40859/1109#test > log/7/stdout1109 2> log/7/stderr1109
=== End of file commands.log
=== Start of file http_server.log
 19:28:03.746253 ====> Client connect
 19:28:03.746291 accept_connection 3 returned 4
 19:28:03.746314 Read 93 bytes
 19:28:03.746324 Process 93 bytes request
 19:28:03.746335 Got request: GET /verifiedserver HTTP/1.1
 19:28:03.746343 Are-we-friendly question received
 19:28:03.746367 Wrote request (93 bytes) input to log/7/server.input
 19:28:03.746382 Identifying ourselves as friends
 19:28:03.746465 Response sent (56 bytes) and written to log/7/server.response
 19:28:03.746474 special request received, no persistency
 19:28:03.746481 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 49224 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1109
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1109
 ==139953== 
 ==139953== Process terminating with default action of signal 4 (SIGILL)
 ==139953==  Illegal opcode at address 0x492B75F
 ==139953==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139953==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139953==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139953==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139953==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139953==    by 0x49908EB: curl_version_info (version.c:600)
 ==139953==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139953==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139953==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139953==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1109
test 1108 [FTP RETR PASV with PRET not supported]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1108 ../src/curl -q --output log/22/curl1108.out  --include --trace-ascii log/22/trace1108 --trace-time ftp://127.0.0.1:33255/1108 --ftp-pret > log/22/stdout1108 2> log/22/stderr1108

 1108: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1108
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1108 ../src/curl -q --output log/22/curl1108.out  --include --trace-ascii log/22/trace1108 --trace-time ftp://127.0.0.1:33255/1108 --ftp-pret > log/22/stdout1108 2> log/22/stderr1108
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:04.052029 ====> Client connect
 19:28:04.060764 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:04.065457 < "USER anonymous"
 19:28:04.065524 > "331 We are happy you popped in![CR][LF]"
 19:28:04.066006 < "PASS ftp@example.com"
 19:28:04.066047 > "230 Welcome you silly person[CR][LF]"
 19:28:04.066232 < "PWD"
 19:28:04.066273 > "257 "/" is current directory[CR][LF]"
 19:28:04.066455 < "EPSV"
 19:28:04.066482 ====> Passive DATA channel requested by client
 19:28:04.066497 DATA sockfilt for passive data channel starting...
 19:28:04.073964 DATA sockfilt for passive data channel started (pid 139922)
 19:28:04.074117 DATA sockfilt for passive data channel listens on port 44805
 19:28:04.074177 > "229 Entering Passive Mode (|||44805|)[CR][LF]"
 19:28:04.074200 Client has been notified that upcoming DATA connection is awaited on port 44805
 19:28:04.074561 Client connects to port 44805
 19:28:04.074599 ====> Client established passive DATA connection on port 44805
 19:28:04.074707 < "TYPE I"
 19:28:04.074748 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:04.074950 < "SIZE verifiedserver"
 19:28:04.074993 > "213 17[CR][LF]"
 19:28:04.075180 < "RETR verifiedserver"
 19:28:04.075224 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:04.075326 =====> Closing passive DATA connection...
 19:28:04.075349 Server disconnects passive DATA connection
 19:28:04.075624 Server disconnected passive DATA connection
 19:28:04.075653 DATA sockfilt for passive data channel quits (pid 139922)
 19:28:04.075931 DATA sockfilt for passive data channel quit (pid 139922)
 19:28:04.075963 =====> Closed passive DATA connection
 19:28:04.076025 > "226 File transfer complete[CR][LF]"
 19:28:04.122314 < "QUIT"
 19:28:04.122368 > "221 bye bye baby[CR][LF]"
 19:28:04.123639 MAIN sockfilt said DISC
 19:28:04.123681 ====> Client disconnected
 19:28:04.123768 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:04.648197 ====> Client connect
 19:28:04.665010 Received DATA (on stdin)
 19:28:04.665030 > 146 bytes data, server => client
 19:28:04.665040 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:04.665049 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:04.665057 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:04.665174 < 16 bytes data, client => server
 19:28:04.665185 'USER anonymous\r\n'
 19:28:04.669759 Received DATA (on stdin)
 19:28:04.669779 > 33 bytes data, server => client
 19:28:04.669789 '331 We are happy you popped in!\r\n'
 19:28:04.670084 < 22 bytes data, client => server
 19:28:04.670100 'PASS ftp@example.com\r\n'
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1118 ../src/curl -q --output log/12/curl1118.out  --include --trace-ascii log/12/trace1118 --trace-time http://127.0.0.1:40921?email=name@example.com/1118 > log/12/stdout1118 2> log/12/stderr1118
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1139.pl /startdir/src/curl/tests/.. /startdir/src/build-curl/tests/.. > log/22/stdout1139 2> log/22/stderr1139
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1140.pl /startdir/src/build-curl/tests/../docs/ /startdir/src/build-curl/tests/../docs/libcurl/*.3 /startdir/src/build-curl/tests/../docs/libcurl/opts/*.3 /startdir/src/build-curl/tests/../docs/*.1 /startdir/src/build-curl/tests/../docs/cmdline-opts/*.1 > log/12/stdout1140 2> log/12/stderr1140
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1111 ../src/curl -q --output log/11/curl1111.out  --include --trace-ascii log/11/trace1111 --trace-time http://127.0.0.1:40989/1111?q=foobar#fragment#fragment2 > log/11/stdout1111 2> log/11/stderr1111
:28:04.670267 Received DATA (on stdin)
 19:28:04.670279 > 30 bytes data, server => client
 19:28:04.670289 '230 Welcome you silly person\r\n'
 19:28:04.670348 < 5 bytes data, client => server
 19:28:04.670359 'PWD\r\n'
 19:28:04.670491 Received DATA (on stdin)
 19:28:04.670501 > 30 bytes data, server => client
 19:28:04.670514 '257 "/" is current directory\r\n'
 19:28:04.670580 < 6 bytes data, client => server
 19:28:04.670592 'EPSV\r\n'
 19:28:04.678432 Received DATA (on stdin)
 19:28:04.678451 > 39 bytes data, server => client
 19:28:04.678462 '229 Entering Passive Mode (|||44805|)\r\n'
 19:28:04.678687 < 8 bytes data, client => server
 19:28:04.678706 'TYPE I\r\n'
 19:28:04.678972 Received DATA (on stdin)
 19:28:04.678987 > 33 bytes data, server => client
 19:28:04.678998 '200 I modify TYPE as you wanted\r\n'
 19:28:04.679065 < 21 bytes data, client => server
 19:28:04.679079 'SIZE verifiedserver\r\n'
 19:28:04.679213 Received DATA (on stdin)
 19:28:04.679225 > 8 bytes data, server => client
 19:28:04.679234 '213 17\r\n'
 19:28:04.679298 < 21 bytes data, client => server
 19:28:04.679312 'RETR verifiedserver\r\n'
 19:28:04.679570 Received DATA (on stdin)
 19:28:04.679583 > 29 bytes data, server => client
 19:28:04.679594 '150 Binary junk (17 bytes).\r\n'
 19:28:04.680188 Received DATA (on stdin)
 19:28:04.680200 > 28 bytes data, server => client
 19:28:04.680245 '226 File transfer complete\r\n'
 19:28:04.726332 < 6 bytes data, client => server
 19:28:04.726366 'QUIT\r\n'
 19:28:04.726585 Received DATA (on stdin)
 19:28:04.726598 > 18 bytes data, server => client
 19:28:04.726607 '221 bye bye baby\r\n'
 19:28:04.727793 ====> Client disconnect
 19:28:04.727980 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:04.677736 Running IPv4 version
 19:28:04.677859 Listening on port 44805
 19:28:04.677912 Wrote pid 139922 to log/22/server/ftp_sockdata.pid
 19:28:04.678110 Received PING (on stdin)
 19:28:04.678227 Received PORT (on stdin)
 19:28:04.678729 ====> Client connect
 19:28:04.679659 Received DATA (on stdin)
 19:28:04.679674 > 17 bytes data, server => client
 19:28:04.679685 'WE ROOLZ: 84714\r\n'
 19:28:04.679717 Received DISC (on stdin)
 19:28:04.679732 ====> Client forcibly disconnected
 19:28:04.679884 Received QUIT (on stdin)
 19:28:04.679897 quits
 19:28:04.679963 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PRET 550 unknown command
 Testnum 1108
=== End of file server.cmd
=== Start of file valgrind1108
 ==139945== 
 ==139945== Process terminating with default action of signal 4 (SIGILL)
 ==139945==  Illegal opcode at address 0x492B75F
 ==139945==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==139945==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==139945==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==139945==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==139945==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==139945==    by 0x49908EB: curl_version_info (version.c:600)
 ==139945==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==139945==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==139945==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==139945==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1108
test 1118 [URL without slash and @-letter in query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1118 ../src/curl -q --output log/12/curl1118.out  --include --trace-ascii log/12/trace1118 --trace-time http://127.0.0.1:40921?email=name@example.com/1118 > log/12/stdout1118 2> log/12/stderr1118

 1118: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1118
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1118 ../src/curl -q --output log/12/curl1118.out  --include --trace-ascii log/12/trace1118 --trace-time http://127.0.0.1:40921?email=name@example.com/1118 > log/12/stdout1118 2> log/12/stderr1118
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.710120 ====> Client connect
 19:28:04.710170 accept_connection 3 returned 4
 19:28:04.711842 Read 93 bytes
 19:28:04.711860 Process 93 bytes request
 19:28:04.711874 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.711884 Are-we-friendly question received
 19:28:04.711922 Wrote request (93 bytes) input to log/12/server.input
 19:28:04.711942 Identifying ourselves as friends
 19:28:04.712016 Response sent (56 bytes) and written to log/12/server.response
 19:28:04.712029 special request received, no persistency
 19:28:04.712038 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59060 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1118
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1118
 ==140565== 
 ==140565== Process terminating with default action of signal 4 (SIGILL)
 ==140565==  Illegal opcode at address 0x492B75F
 ==140565==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140565==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140565==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140565==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140565==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140565==    by 0x49908EB: curl_version_info (version.c:600)
 ==140565==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140565==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140565==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140565==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1118
test 1139 [Verify that all libcurl options have man pages]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1139.pl /startdir/src/curl/tests/.. /startdir/src/build-curl/tests/.. > log/22/stdout1139 2> log/22/stderr1139
 valgrind SKIPPED
-r-----e--- OK (1040 out of 1890, remaining: 01:46, took 0.082s, duration: 02:10)
test 1140 [Verify the nroff of man pages]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1140.pl /startdir/src/build-curl/tests/../docs/ /startdir/src/build-curl/tests/../docs/libcurl/*.3 /startdir/src/build-curl/tests/../docs/libcurl/opts/*.3 /startdir/src/build-curl/tests/../docs/*.1 /startdir/src/build-curl/tests/../docs/cmdline-opts/*.1 > log/12/stdout1140 2> log/12/stderr1140
 valgrind SKIPPED
s------e--- OK (1041 out of 1890, remaining: 01:46, took 0.077s, duration: 02:10)
test 1111 [HTTP GET with URL whose fragment contains a # (which is illegal)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1111 ../src/curl -q --output log/11/curl1111.out  --include --trace-ascii log/11/trace1111 --trace-time http://127.0.0.1:40989/1111?q=foobar#fragment#fragment2 > log/11/stdout1111 2> log/11/stderr1111

 1111: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1111
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1117 ../src/curl -q --include --trace-ascii log/8/trace1117 --trace-time -r 10-22 http://127.0.0.1:44467/want/1117 http://127.0.0.1:44467/wantmore/11170001 > log/8/stdout1117 2> log/8/stderr1117
rind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1111 ../src/curl -q --output log/11/curl1111.out  --include --trace-ascii log/11/trace1111 --trace-time http://127.0.0.1:40989/1111?q=foobar#fragment#fragment2 > log/11/stdout1111 2> log/11/stderr1111
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.031397 ====> Client connect
 19:28:04.031439 accept_connection 3 returned 4
 19:28:04.031463 Read 93 bytes
 19:28:04.031473 Process 93 bytes request
 19:28:04.031486 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.031495 Are-we-friendly question received
 19:28:04.031523 Wrote request (93 bytes) input to log/11/server.input
 19:28:04.031540 Identifying ourselves as friends
 19:28:04.031614 Response sent (56 bytes) and written to log/11/server.response
 19:28:04.031624 special request received, no persistency
 19:28:04.031633 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 54218 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1111
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1111
 ==140185== 
 ==140185== Process terminating with default action of signal 4 (SIGILL)
 ==140185==  Illegal opcode at address 0x492B75F
 ==140185==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140185==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140185==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140185==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140185==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140185==    by 0x49908EB: curl_version_info (version.c:600)
 ==140185==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140185==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140185==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140185==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1111
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1110 ../src/curl -q --output log/3/curl1110.out  --include --trace-ascii log/3/trace1110 --trace-time http://127.0.0.1:36161/1110?q=foobar#fragment > log/3/stdout1110 2> log/3/stderr1110
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1120 ../src/curl -q --output log/13/curl1120.out  --include --trace-ascii log/13/trace1120 --trace-time ftp://127.0.0.1:33695/a/path/1120 > log/13/stdout1120 2> log/13/stderr1120
test 1117 [HTTP with invalid range then another URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1117 ../src/curl -q --include --trace-ascii log/8/trace1117 --trace-time -r 10-22 http://127.0.0.1:44467/want/1117 http://127.0.0.1:44467/wantmore/11170001 > log/8/stdout1117 2> log/8/stderr1117

 1117: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:28:07.291076426 +0000
+++ log/8/check-generated	2026-10-15 19:28:07.287531523 +0000
@@ -1,15 +0,0 @@
-HTTP/1.1 416 Requested Range Not Satisfiable[CR][LF]
-Date: Tue, 09 Sep 2010 14:49:00 GMT[CR][LF]
-Accept-Ranges: bytes[CR][LF]
-Content-Length: 115[CR][LF]
-[CR][LF]
-This is a long error message that is large enough that the test server is[LF]
-guaranteed to split it into two packets.[LF]
-HTTP/1.1 206 Partial Content[CR][LF]
-Date: Tue, 09 Sep 2010 14:49:01 GMT[CR][LF]
-Accept-Ranges: bytes[CR][LF]
-Content-Range: bytes 10-18/155[CR][LF]
-Content-Length: 13[CR][LF]
-Content-Type: text/plain[CR][LF]
-[CR][LF]
-partial body[LF]
== Contents of files in the log/8/ directory after test 1117
=== Start of file check-expected
 HTTP/1.1 416 Requested Range Not Satisfiable[CR][LF]
 Date: Tue, 09 Sep 2010 14:49:00 GMT[CR][LF]
 Accept-Ranges: bytes[CR][LF]
 Content-Length: 115[CR][LF]
 [CR][LF]
 This is a long error message that is large enough that the test server is[LF]
 guaranteed to split it into two packets.[LF]
 HTTP/1.1 206 Partial Content[CR][LF]
 Date: Tue, 09 Sep 2010 14:49:01 GMT[CR][LF]
 Accept-Ranges: bytes[CR][LF]
 Content-Range: bytes 10-18/155[CR][LF]
 Content-Length: 13[CR][LF]
 Content-Type: text/plain[CR][LF]
 [CR][LF]
 partial body[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1117 ../src/curl -q --include --trace-ascii log/8/trace1117 --trace-time -r 10-22 http://127.0.0.1:44467/want/1117 http://127.0.0.1:44467/wantmore/11170001 > log/8/stdout1117 2> log/8/stderr1117
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.562932 ====> Client connect
 19:28:04.562969 accept_connection 3 returned 4
 19:28:04.562992 Read 93 bytes
 19:28:04.563002 Process 93 bytes request
 19:28:04.563014 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.563023 Are-we-friendly question received
 19:28:04.563049 Wrote request (93 bytes) input to log/8/server.input
 19:28:04.563064 Identifying ourselves as friends
 19:28:04.563140 Response sent (56 bytes) and written to log/8/server.response
 19:28:04.563149 special request received, no persistency
 19:28:04.563157 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 50594 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 100
 Testnum 1117
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1117
 ==140468== 
 ==140468== Process terminating with default action of signal 4 (SIGILL)
 ==140468==  Illegal opcode at address 0x492B75F
 ==140468==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140468==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140468==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140468==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140468==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140468==    by 0x49908EB: curl_version_info (version.c:600)
 ==140468==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140468==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140468==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140468==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1117
test 1110 [HTTP GET with URL that contains a fragment after the query part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1110 ../src/curl -q --output log/3/curl1110.out  --include --trace-ascii log/3/trace1110 --trace-time http://127.0.0.1:36161/1110?q=foobar#fragment > log/3/stdout1110 2> log/3/stderr1110

 1110: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1110
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1110 ../src/curl -q --output log/3/curl1110.out  --include --trace-ascii log/3/trace1110 --trace-time http://127.0.0.1:36161/1110?q=foobar#fragment > log/3/stdout1110 2> log/3/stderr1110
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.822930 ====> Client connect
 19:28:04.822968 accept_connection 3 returned 4
 19:28:04.822990 Read 93 bytes
 19:28:04.822999 Process 93 bytes request
 19:28:04.823012 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.823020 Are-we-friendly question received
 19:28:04.823049 Wrote request (93 bytes) input to log/3/server.input
 19:28:04.823065 Identifying ourselves as friends
 19:28:04.823131 Response sent (56 bytes) and written to log/3/server.response
 19:28:04.823140 special request received, no persistency
 19:28:04.823147 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 58670 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1110
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1110
 ==140050== 
 ==140050== Process terminating with default action of signal 4 (SIGILL)
 ==140050==  Illegal opcode at address 0x492B75F
 ==140050==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140050==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140050==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140050==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140050==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140050==    by 0x49908EB: curl_version_info (version.c:600)
 ==140050==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140050==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140050==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140050==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1110
test 1120 [FTP with 421 timeout response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1120 ../src/curl -q --output log/13/curl1120.out  --include --trace-ascii log/13/trace1120 --trace-time ftp://127.0.0.1:33695/a/path/1120 > log/13/stdout1120 2> log/13/stderr1120

 1120: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server gCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1123 ../src/curl -q --output log/6/curl1123.out  --include --trace-ascii log/6/trace1123 --trace-time http://127.0.0.1:33935/1123 --tr-encoding > log/6/stdout1123 2> log/6/stderr1123
litch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1120
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1120 ../src/curl -q --output log/13/curl1120.out  --include --trace-ascii log/13/trace1120 --trace-time ftp://127.0.0.1:33695/a/path/1120 > log/13/stdout1120 2> log/13/stderr1120
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:05.382169 ====> Client connect
 19:28:05.382394 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:05.392326 < "USER anonymous"
 19:28:05.392389 > "331 We are happy you popped in![CR][LF]"
 19:28:05.392657 < "PASS ftp@example.com"
 19:28:05.392704 > "230 Welcome you silly person[CR][LF]"
 19:28:05.392908 < "PWD"
 19:28:05.392950 > "257 "/" is current directory[CR][LF]"
 19:28:05.393157 < "EPSV"
 19:28:05.393187 ====> Passive DATA channel requested by client
 19:28:05.393203 DATA sockfilt for passive data channel starting...
 19:28:05.405450 DATA sockfilt for passive data channel started (pid 140705)
 19:28:05.405612 DATA sockfilt for passive data channel listens on port 43707
 19:28:05.405665 > "229 Entering Passive Mode (|||43707|)[CR][LF]"
 19:28:05.405684 Client has been notified that upcoming DATA connection is awaited on port 43707
 19:28:05.418708 Client connects to port 43707
 19:28:05.418787 ====> Client established passive DATA connection on port 43707
 19:28:05.418905 < "TYPE I"
 19:28:05.418945 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:05.422278 < "SIZE verifiedserver"
 19:28:05.422335 > "213 17[CR][LF]"
 19:28:05.422520 < "RETR verifiedserver"
 19:28:05.422560 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:05.422653 =====> Closing passive DATA connection...
 19:28:05.422668 Server disconnects passive DATA connection
 19:28:05.422952 Server disconnected passive DATA connection
 19:28:05.422985 DATA sockfilt for passive data channel quits (pid 140705)
 19:28:05.423270 DATA sockfilt for passive data channel quit (pid 140705)
 19:28:05.423301 =====> Closed passive DATA connection
 19:28:05.423335 > "226 File transfer complete[CR][LF]"
 19:28:05.472336 < "QUIT"
 19:28:05.472394 > "221 bye bye baby[CR][LF]"
 19:28:05.473801 MAIN sockfilt said DISC
 19:28:05.473848 ====> Client disconnected
 19:28:05.473958 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:04.986131 ====> Client connect
 19:28:04.986544 Received DATA (on stdin)
 19:28:04.986563 > 146 bytes data, server => client
 19:28:04.986574 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:04.986585 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:04.986594 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:04.996177 < 16 bytes data, client => server
 19:28:04.996216 'USER anonymous\r\n'
 19:28:04.996524 Received DATA (on stdin)
 19:28:04.996539 > 33 bytes data, server => client
 19:28:04.996550 '331 We are happy you popped in!\r\n'
 19:28:04.996653 < 22 bytes data, client => server
 19:28:04.996670 'PASS ftp@example.com\r\n'
 19:28:04.996833 Received DATA (on stdin)
 19:28:04.996847 > 30 bytes data, server => client
 19:28:04.996857 '230 Welcome you silly person\r\n'
 19:28:04.996925 < 5 bytes data, client => server
 19:28:04.996939 'PWD\r\n'
 19:28:04.997078 Received DATA (on stdin)
 19:28:04.997091 > 30 bytes data, server => client
 19:28:04.997101 '257 "/" is current directory\r\n'
 19:28:04.997179 < 6 bytes data, client => server
 19:28:04.997194 'EPSV\r\n'
 19:28:05.019440 Received DATA (on stdin)
 19:28:05.019476 > 39 bytes data, server => client
 19:28:05.019487 '229 Entering Passive Mode (|||43707|)\r\n'
 19:28:05.019691 < 8 bytes data, client => server
 19:28:05.019707 'TYPE I\r\n'
 19:28:05.026111 Received DATA (on stdin)
 19:28:05.026145 > 33 bytes data, server => client
 19:28:05.026156 '200 I modify TYPE as you wanted\r\n'
 19:28:05.026251 < 21 bytes data, client => server
 19:28:05.026265 'SIZE verifiedserver\r\n'
 19:28:05.026458 Received DATA (on stdin)
 19:28:05.026469 > 8 bytes data, server => client
 19:28:05.026477 '213 17\r\n'
 19:28:05.026538 < 21 bytes data, client => server
 19:28:05.026550 'RETR verifiedserver\r\n'
 19:28:05.026790 Received DATA (on stdin)
 19:28:05.026800 > 29 bytes data, server => client
 19:28:05.026810 '150 Binary junk (17 bytes).\r\n'
 19:28:05.027459 Received DATA (on stdin)
 19:28:05.027471 > 28 bytes data, server => client
 19:28:05.027482 '226 File transfer complete\r\n'
 19:28:05.076228 < 6 bytes data, client => server
 19:28:05.076274 'QUIT\r\n'
 19:28:05.076517 Received DATA (on stdin)
 19:28:05.076531 > 18 bytes data, server => client
 19:28:05.076540 '221 bye bye baby\r\n'
 19:28:05.077852 ====> Client disconnect
 19:28:05.078086 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:05.000829 Running IPv4 version
 19:28:05.000931 Listening on port 43707
 19:28:05.000970 Wrote pid 140705 to log/13/server/ftp_sockdata.pid
 19:28:05.009462 Received PING (on stdin)
 19:28:05.009624 Received PORT (on stdin)
 19:28:05.019733 ====> Client connect
 19:28:05.026885 Received DATA (on stdin)
 19:28:05.026905 > 17 bytes data, server => client
 19:28:05.026915 'WE ROOLZ: 93286\r\n'
 19:28:05.026945 Received DISC (on stdin)
 19:28:05.026957 ====> Client forcibly disconnected
 19:28:05.027115 Received QUIT (on stdin)
 19:28:05.027129 quits
 19:28:05.027204 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY CWD 421 Timeout
 Testnum 1120
=== End of file server.cmd
=== Start of file valgrind1120
 ==140790== 
 ==140790== Process terminating with default action of signal 4 (SIGILL)
 ==140790==  Illegal opcode at address 0x492B75F
 ==140790==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140790==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140790==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140790==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140790==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140790==    by 0x49908EB: curl_version_info (version.c:600)
 ==140790==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140790==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140790==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140790==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1120
test 1123 [HTTP GET deflate transfer-encoded content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1123 ../src/curl -q --output log/6/curl1123.out  --include --trace-ascii log/6/trace1123 --trace-time http://127.0.0.1:33935/1123 --tr-encoding > log/6/stdout1123 2> log/6/stderr1123

 1123: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1123
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1123 ../src/curl -q --output log/6/curl1123.out  --include --trace-ascii log/6/trace1123 --trace-time http://127.0.0.1:33935/1123 --tr-encoding > log/6/stdout1123 2> log/6/stderr1123
=== End of file commands.log
=== Start of file http_server.log
 19:28:05.041102 ====> Client connect
 19:28:05.041144 accept_connection 3 returned 4
 19:28:05.041171 Read 93 bytes
 19:28:05.041181 Process 93 bytes request
 19:28:05.041194 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.041203 Are-we-friendly question received
 19:28:05.041231 Wrote request (93 bytes) input to log/6/server.input
 19:28:05.041247 Identifying ourselves as friends
 19:28:05.041333 Response sent (56 bytes) and written to log/6/server.reCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1122 ../src/curl -q --output log/14/curl1122.out  --include --trace-ascii log/14/trace1122 --trace-time http://127.0.0.1:45467/1122 --tr-encoding > log/14/stdout1122 2> log/14/stderr1122
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1127 ../src/curl -q --output log/20/curl1127.out  --include --trace-ascii log/20/trace1127 --trace-time http://127.0.0.1:33897/1127 -z "dec 12 12:00:00 1999 GMT" > log/20/stdout1127 2> log/20/stderr1127
sponse
 19:28:05.041343 special request received, no persistency
 19:28:05.041352 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 43532 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1123
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1123
 ==140755== 
 ==140755== Process terminating with default action of signal 4 (SIGILL)
 ==140755==  Illegal opcode at address 0x492B75F
 ==140755==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140755==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140755==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140755==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140755==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140755==    by 0x49908EB: curl_version_info (version.c:600)
 ==140755==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140755==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140755==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140755==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1123
test 1122 [HTTP GET gzip transfer-encoded content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1122 ../src/curl -q --output log/14/curl1122.out  --include --trace-ascii log/14/trace1122 --trace-time http://127.0.0.1:45467/1122 --tr-encoding > log/14/stdout1122 2> log/14/stderr1122

 1122: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1122
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1122 ../src/curl -q --output log/14/curl1122.out  --include --trace-ascii log/14/trace1122 --trace-time http://127.0.0.1:45467/1122 --tr-encoding > log/14/stdout1122 2> log/14/stderr1122
=== End of file commands.log
=== Start of file http_server.log
 19:28:05.018470 ====> Client connect
 19:28:05.018505 accept_connection 3 returned 4
 19:28:05.018527 Read 93 bytes
 19:28:05.018537 Process 93 bytes request
 19:28:05.018549 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.018557 Are-we-friendly question received
 19:28:05.018584 Wrote request (93 bytes) input to log/14/server.input
 19:28:05.018600 Identifying ourselves as friends
 19:28:05.018660 Response sent (56 bytes) and written to log/14/server.response
 19:28:05.018670 special request received, no persistency
 19:28:05.018678 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 35704 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1122
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1122
 ==140729== 
 ==140729== Process terminating with default action of signal 4 (SIGILL)
 ==140729==  Illegal opcode at address 0x492B75F
 ==140729==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140729==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140729==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140729==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140729==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140729==    by 0x49908EB: curl_version_info (version.c:600)
 ==140729==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140729==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140729==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140729==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1122
test 1127 [HTTP 200 If-Modified-Since with older document]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1127 ../src/curl -q --output log/20/curl1127.out  --include --trace-ascii log/20/trace1127 --trace-time http://127.0.0.1:33897/1127 -z "dec 12 12:00:00 1999 GMT" > log/20/stdout1127 2> log/20/stderr1127

 1127: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1127
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1127 ../src/curl -q --output log/20/curl1127.out  --include --trace-ascii log/20/trace1127 --trace-time http://127.0.0.1:33897/1127 -z "dec 12 12:00:00 1999 GMT" > log/20/stdout1127 2> log/20/stderr1127
=== End of file commands.log
=== Start of file http_server.log
 19:28:05.454813 ====> Client connect
 19:28:05.454855 accept_connection 3 returned 4
 19:28:05.454880 Read 93 bytes
 19:28:05.454891 Process 93 bytes request
 19:28:05.454903 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.454912 Are-we-friendly question received
 19:28:05.454945 Wrote request (93 bytes) input to log/20/server.input
 19:28:05.454963 Identifying ourselves as friends
 19:28:05.455037 Response sent (56 bytes) and written to log/20/server.response
 19:28:05.455049 special request received, no persistency
 19:28:05.455058 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 60838 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1127
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1127
 ==141104== 
 ==141104== Process terminating with default action of signal 4 (SIGILL)
 ==141104==  Illegal opcode at address 0x492B75F
 ==141104==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141104==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141104==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141104==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141104==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141104==    by 0x49908EB: curl_version_info (version.c:600)
 ==141104==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141104==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141104==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141104==    by 0x4003269: main (tool_main.c:195)
=== CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1116 ../src/curl -q --output log/9/curl1116.out  --include --trace-ascii log/9/trace1116 --trace-time http://127.0.0.1:43733/1116 -D log/9/heads1116 > log/9/stdout1116 2> log/9/stderr1116
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1121 ../src/curl -q --output log/23/curl1121.out  --include --trace-ascii log/23/trace1121 --trace-time -H "Host: host1" -H "Host: host2" -H "Host: host3" http://127.0.0.1:44711/1121 > log/23/stdout1121 2> log/23/stderr1121
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1124 ../src/curl -q --output log/1/curl1124.out  --include --trace-ascii log/1/trace1124 --trace-time http://127.0.0.1:38815/1124 --tr-encoding > log/1/stdout1124 2> log/1/stderr1124
End of file valgrind1127
test 1116 [HTTP GET with chunked trailer without Trailer:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1116 ../src/curl -q --output log/9/curl1116.out  --include --trace-ascii log/9/trace1116 --trace-time http://127.0.0.1:43733/1116 -D log/9/heads1116 > log/9/stdout1116 2> log/9/stderr1116

 1116: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1116
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1116 ../src/curl -q --output log/9/curl1116.out  --include --trace-ascii log/9/trace1116 --trace-time http://127.0.0.1:43733/1116 -D log/9/heads1116 > log/9/stdout1116 2> log/9/stderr1116
=== End of file commands.log
=== Start of file http_server.log
 19:28:04.494961 ====> Client connect
 19:28:04.494994 accept_connection 3 returned 4
 19:28:04.495096 Read 93 bytes
 19:28:04.495109 Process 93 bytes request
 19:28:04.495122 Got request: GET /verifiedserver HTTP/1.1
 19:28:04.495130 Are-we-friendly question received
 19:28:04.495158 Wrote request (93 bytes) input to log/9/server.input
 19:28:04.495174 Identifying ourselves as friends
 19:28:04.495228 Response sent (56 bytes) and written to log/9/server.response
 19:28:04.495237 special request received, no persistency
 19:28:04.495245 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 46318 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 1116
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1116
 ==140456== 
 ==140456== Process terminating with default action of signal 4 (SIGILL)
 ==140456==  Illegal opcode at address 0x492B75F
 ==140456==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140456==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140456==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140456==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140456==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140456==    by 0x49908EB: curl_version_info (version.c:600)
 ==140456==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140456==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140456==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140456==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1116
test 1121 [HTTP multiple provided Host: headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1121 ../src/curl -q --output log/23/curl1121.out  --include --trace-ascii log/23/trace1121 --trace-time -H "Host: host1" -H "Host: host2" -H "Host: host3" http://127.0.0.1:44711/1121 > log/23/stdout1121 2> log/23/stderr1121

 1121: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1121
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1121 ../src/curl -q --output log/23/curl1121.out  --include --trace-ascii log/23/trace1121 --trace-time -H "Host: host1" -H "Host: host2" -H "Host: host3" http://127.0.0.1:44711/1121 > log/23/stdout1121 2> log/23/stderr1121
=== End of file commands.log
=== Start of file http_server.log
 19:28:05.021292 ====> Client connect
 19:28:05.021325 accept_connection 3 returned 4
 19:28:05.021346 Read 93 bytes
 19:28:05.021356 Process 93 bytes request
 19:28:05.021367 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.021376 Are-we-friendly question received
 19:28:05.021403 Wrote request (93 bytes) input to log/23/server.input
 19:28:05.021420 Identifying ourselves as friends
 19:28:05.021494 Response sent (56 bytes) and written to log/23/server.response
 19:28:05.021504 special request received, no persistency
 19:28:05.021513 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 45350 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1121
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1121
 ==140728== 
 ==140728== Process terminating with default action of signal 4 (SIGILL)
 ==140728==  Illegal opcode at address 0x492B75F
 ==140728==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140728==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140728==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140728==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140728==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140728==    by 0x49908EB: curl_version_info (version.c:600)
 ==140728==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140728==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140728==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140728==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1121
test 1124 [HTTP GET gzip+chunked transfer-encoded content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1124 ../src/curl -q --output log/1/curl1124.out  --include --trace-ascii log/1/trace1124 --trace-time http://127.0.0.1:38815/1124 --tr-encoding > log/1/stdout1124 2> log/1/stderr1124

 1124: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1124
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1124 ../src/curl -q --output log/1/curl1124.out  --include --trace-ascii log/1/trace1124 --trace-time http://127.0.0.1:38815/1124 --tr-encoding > log/1/stdout1124 2> log/1/stderr1124
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.110316 ====> Client connect
 19:28:06.110353 accept_connection 3 returned 4
 19:28:06.110374 Read 93 bytes
 19:28:06.110384 Process 93 bytes request
 19:28:06.110398 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.110407 Are-we-friendly question received
 19:28:06.110437 Wrote request (93 bytes) input to log/1/server.input
 19:28:06.110455 Identifying ourselves as friends
 19:28:06.110524 Response sent (56 bytes) and written to log/1/server.response
 19:28:06.110535 special request received, no CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1130 ../src/curl -q --include --trace-ascii log/4/trace1130 --trace-time -d @log/4/file1130 http://127.0.0.1:35735/1130 http://127.0.0.1:35735/11300001 -H "Expect: 100-continue" --expect100-timeout 99 > log/4/stdout1130 2> log/4/stderr1130
persistency
 19:28:06.110543 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 46786 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1124
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1124
 ==140828== 
 ==140828== Process terminating with default action of signal 4 (SIGILL)
 ==140828==  Illegal opcode at address 0x492B75F
 ==140828==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140828==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140828==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140828==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140828==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140828==    by 0x49908EB: curl_version_info (version.c:600)
 ==140828==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140828==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140828==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140828==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1124
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1128 ../src/curl -q --include --trace-ascii log/18/trace1128 --trace-time http://127.0.0.1:43739/1128 http://127.0.0.1:43739/11280001 -z "dec 12 12:00:00 1999 GMT" > log/18/stdout1128 2> log/18/stderr1128
test 1130 [HTTP POST forced expect 100-continue with a 404]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1130 ../src/curl -q --include --trace-ascii log/4/trace1130 --trace-time -d @log/4/file1130 http://127.0.0.1:35735/1130 http://127.0.0.1:35735/11300001 -H "Expect: 100-continue" --expect100-timeout 99 > log/4/stdout1130 2> log/4/stderr1130

 1130: stdout FAILED:
--- log/4/check-expected	2026-10-15 19:28:08.210241977 +0000
+++ log/4/check-generated	2026-10-15 19:28:08.207593428 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 404 NOOOOOOOOO[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 6[LF]
-Content-Type: text/html[LF]
-[LF]
--foo-[LF]
-HTTP/1.1 404 NEITHER[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 6[LF]
-Content-Type: text/html[LF]
-[LF]
--foo-[LF]
== Contents of files in the log/4/ directory after test 1130
=== Start of file check-expected
 HTTP/1.1 404 NOOOOOOOOO[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 6[LF]
 Content-Type: text/html[LF]
 [LF]
 -foo-[LF]
 HTTP/1.1 404 NEITHER[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 6[LF]
 Content-Type: text/html[LF]
 [LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1130 ../src/curl -q --include --trace-ascii log/4/trace1130 --trace-time -d @log/4/file1130 http://127.0.0.1:35735/1130 http://127.0.0.1:35735/11300001 -H "Expect: 100-continue" --expect100-timeout 99 > log/4/stdout1130 2> log/4/stderr1130
=== End of file commands.log
=== Start of file file1130
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=== End of file file1130
=== Start of file http_server.log
 19:28:06.616151 ====> Client connect
 19:28:06.616203 accept_connection 3 returned 4
 19:28:06.616232 Read 93 bytes
 19:28:06.616241 Process 93 bytes request
 19:28:06.616253 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.616261 Are-we-friendly question received
 19:28:06.616289 Wrote request (93 bytes) input to log/4/server.input
 19:28:06.616305 Identifying ourselves as friends
 19:28:06.616403 Response sent (56 bytes) and written to log/4/server.response
 19:28:06.616415 special request received, no persistency
 19:28:06.616424 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 51422 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 skip: 100
 Testnum 1130
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1130
 ==141262== 
 ==141262== Process terminating with default action of signal 4 (SIGILL)
 ==141262==  Illegal opcode at address 0x492B75F
 ==141262==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141262==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141262==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141262==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141262==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141262==    by 0x49908EB: curl_version_info (version.c:600)
 ==141262==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141262==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141262==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141262==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1130
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1125 ../src/curl -q --output log/16/curl1125.out  --include --trace-ascii log/16/trace1125 --trace-time http://127.0.0.1:35903/1125 --tr-encoding -H "Connection: close" > log/16/stdout1125 2> log/16/stderr1125
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1131 ../src/curl -q --include --trace-ascii log/10/trace1131 --trace-time -H "Expect: 100-continue" -T log/10/file1131 http://127.0.0.1:40913/1131 -T log/10/file1131 http://127.0.0.1:40913/11310001 --expect100-timeout 99 > log/10/stdout1131 2> log/10/stderr1131
test 1128 [HTTP 200 If-Modified-Since with old+new documents]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1128 ../src/curl -q --include --trace-ascii log/18/trace1128 --trace-time http://127.0.0.1:43739/1128 http://127.0.0.1:43739/11280001 -z "dec 12 12:00:00 1999 GMT" > log/18/stdout1128 2> log/18/stderr1128

 1128: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:28:08.227987968 +0000
+++ log/18/check-generated	2026-10-15 19:28:08.224261198 +0000
@@ -1,15 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT[LF]
-Content-Length: 11[LF]
-Content-Type: text/html[LF]
-[LF]
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:01 GMT[LF]
-Server: test-server/fake[LF]
-Last-Modified: Tue, 13 Jun 2002 12:10:00 GMT[LF]
-Content-Length: 11[LF]
-Content-Type: text/html[LF]
-[LF]
-0123456789[LF]
== Contents of files in the log/18/ directory after test 1128
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Last-Modified: Tue, 13 Jun 1980 12:10:00 GMT[LF]
 Content-Length: 11[LF]
 Content-Type: text/html[LF]
 [LF]
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:01 GMT[LF]
 Server: test-server/fake[LF]
 Last-Modified: Tue, 13 Jun 2002 12:10:00 GMT[LF]
 Content-Length: 11[LF]
 Content-Type: text/html[LF]
 [LF]
 0123456789[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1128 ../src/curl -q --include --trace-ascii log/18/trace1128 --trace-time http://127.0.0.1:43739/1128 http://127.0.0.1:43739/11280001 -z "dec 12 12:00:00 1999 GMT" > log/18/stdout1128 2> log/18/stderr1128
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.463574 ====> Client connect
 19:28:06.463610 accept_connection 3 returned 4
 19:28:06.463632 Read 93 bytes
 19:28:06.463642 Process 93 bytes request
 19:28:06.463654 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.463662 Are-we-friendly question received
 19:28:06.463689 Wrote request (93 bytes) input to log/18/server.input
 19:28:06.463705 Identifying ourselves as friends
 19:28:06.463765 Response sent (56 bytes) and written to log/18/server.response
 19:28:06.463775 special request received, no persistency
 19:28:06.463783 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 36036 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1128
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1128
 ==141113== 
 ==141113== Process terminating with default action of signal 4 (SIGILL)
 ==141113==  Illegal opcode at address 0x492B75F
 ==141113==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141113==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141113==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141113==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141113==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141113==    by 0x49908EB: curl_version_info (version.c:600)
 ==141113==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141113==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141113==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141113==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1128
test 1125 [HTTP GET transfer-encoding with custom Connection:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1125 ../src/curl -q --output log/16/curl1125.out  --include --trace-ascii log/16/trace1125 --trace-time http://127.0.0.1:35903/1125 --tr-encoding -H "Connection: close" > log/16/stdout1125 2> log/16/stderr1125

 1125: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1125
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1125 ../src/curl -q --output log/16/curl1125.out  --include --trace-ascii log/16/trace1125 --trace-time http://127.0.0.1:35903/1125 --tr-encoding -H "Connection: close" > log/16/stdout1125 2> log/16/stderr1125
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.275859 ====> Client connect
 19:28:06.275902 accept_connection 3 returned 4
 19:28:06.275925 Read 93 bytes
 19:28:06.275936 Process 93 bytes request
 19:28:06.275950 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.275960 Are-we-friendly question received
 19:28:06.275993 Wrote request (93 bytes) input to log/16/server.input
 19:28:06.276013 Identifying ourselves as friends
 19:28:06.276105 Response sent (56 bytes) and written to log/16/server.response
 19:28:06.276116 special request received, no persistency
 19:28:06.276124 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 37414 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1125
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1125
 ==140998== 
 ==140998== Process terminating with default action of signal 4 (SIGILL)
 ==140998==  Illegal opcode at address 0x492B75F
 ==140998==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==140998==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==140998==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==140998==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==140998==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==140998==    by 0x49908EB: curl_version_info (version.c:600)
 ==140998==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==140998==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==140998==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==140998==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1125
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1129 ../src/curl -q --include --trace-ascii log/24/trace1129 --trace-time -d @log/24/file1129 --expect100-timeout 99 http://127.0.0.1:38895/1129 http://127.0.0.1:38895/11290001 > log/24/stdout1129 2> log/24/stderr1129
test 1131 [HTTP PUT expect 100-continue with a 400]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1131 ../src/curl -q --include --trace-ascii log/10/trace1131 --trace-time -H "Expect: 100-continue" -T log/10/file1131 http://127.0.0.1:40913/1131 -T log/10/file1131 http://127.0.0.1:40913/11310001 --expect100-timeout 99 > log/10/stdout1131 2> log/10/stderr1131

 1131: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:28:08.482744927 +0000
+++ log/10/check-generated	2026-10-15 19:28:08.480944834 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 400 NOOOOOOOOO[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 9[LF]
-Content-Type: text/html[LF]
-[LF]
-FAILURE1[LF]
-HTTP/1.1 400 NEITHER[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 9[LF]
-Content-Type: text/html[LF]
-[LF]
-FAILURE2[LF]
== Contents of files in the log/10/ directory after test 1131
=== Start of file check-expected
 HTTP/1.1 400 NOOOOOOOOO[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 9[LF]
 Content-Type: text/html[LF]
 [LF]
 FAILURE1[LF]
 HTTP/1.1 400 NEITHER[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 9[LF]
 Content-Type: text/html[LF]
 [LF]
 FAILURE2[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1131 ../src/curl -q --include --trace-ascii log/10/trace1131 --trace-time -H "Expect: 100-continue" -T log/10/file1131 http://127.0.0.1:40913/1131 -T log/10/file1131 http://127.0.0.1:40913/11310001 --expect100-timeout 99 > log/10/stdout1131 2> log/10/stderr1131
=== End of file commands.log
=== Start of file file1131
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=== End of file file1131
=== Start of file http_server.log
 19:28:05.654027 ====> Client connect
 19:28:05.654065 accept_connection 3 returned 4
 19:28:05.654088 Read 93 bytes
 19:28:05.654098 Process 93 bytes request
 19:28:05.654110 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.654119 Are-we-friendly question received
 19:28:05.654148 Wrote request (93 bytes) input to log/10/server.input
 19:28:05.654164 Identifying ourselves as friends
 19:28:05.655396 Response sent (56 bytes) and written to log/10/server.response
 19:28:05.655411 special request received, no persistency
 19:28:05.655420 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 47452 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 skip: 100
 Testnum 1131
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1131
 ==141334== 
 ==141334== Process terminating with default action of signal 4 (SIGILL)
 ==141334==  Illegal opcode at address 0x492B75F
 ==141334==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141334==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141334==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141334==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141334==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141334==    by 0x49908EB: curl_version_info (version.c:600)
 ==141334==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141334==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1131
test 1129 [HTTP POST expect 100-continue with a 404]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1129 ../src/curl -q --include --trace-ascii log/24/trace1129 --trace-time -d @log/24/file1129 --expect100-timeout 99 http://127.0.0.1:38895/1129 http://127.0.0.1:38895/11290001 > log/24/stdout1129 2> log/24/stderr1129

 1129: stdout FAILED:
--- log/24/check-expected	2026-10-15 19:28:08.509432202 +0000
+++ log/24/check-generated	2026-10-15 19:28:08.507613264 +0000
@@ -1,14 +0,0 @@
-HTTP/1.1 404 NOOOOOOOOO[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 6[LF]
-Content-Type: text/html[LF]
-[LF]
--foo-[LF]
-HTTP/1.1 404 NEITHER[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 6[LF]
-Content-Type: text/html[LF]
-[LF]
--foo-[LF]
== Contents of files in the log/24/ directory after test 1129
=== Start of file check-expected
 HTTP/1.1 404 NOOOOOOOOO[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 6[LF]
 Content-Type: text/html[LF]
 [LF]
 -foo-[LF]
 HTTP/1.1 404 NEITHER[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 6[LF]
 Content-Type: text/html[LF]
 [LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1129 ../src/curl -q --include --trace-ascii log/24/trace1129 --trace-time -d @log/24/file1129 --expect100-timeout 99 http://127.0.0.1:38895/1129 http://127.0.0.1:38895/11290001 > log/24/stdout1129 2> log/24/stderr1129
=== End of file commands.log
=== Start of file file1129
 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
=== End of file file1129
=== Start of file http_server.log
 19:28:05.589322 ====> Client connect
 19:28:05.589356 accept_connection 3 returned 4
 19:28:05.589392 Read 93 bytes
 19:28:05.589401 Process 93 bytes request
 19:28:05.589416 Got request: GET /verifiedserver HTTP/1.1
 19:28:05.589423 Are-we-friendly question received
 19:28:05.589448 Wrote request (93 bytes) input to log/24/server.input
 19:28:05.589463 Identifying ourselves as friends
 19:28:05.589522 Response sent (56 bytes) and written to log/24/server.response
 19:28:05.589530 special request received, no persistency
 19:28:05.589537 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 37046 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1126 ../src/curl -q --output log/17/curl1126.out  --include --trace-ascii log/17/trace1126 --trace-time http://127.0.0.1:35993/1126 -z "dec 12 12:00:00 1999 GMT" > log/17/stdout1126 2> log/17/stderr1126
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1137 ../src/curl -q --output log/2/curl1137.out  --include --trace-ascii log/2/trace1137 --trace-time ftp://127.0.0.1:38033/1137 --ignore-content-length > log/2/stdout1137 2> log/2/stderr1137
982
=== End of file http_verify.out
=== Start of file server.cmd
 skip: 1053700
 Testnum 1129
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1129
 ==141251== 
 ==141251== Process terminating with default action of signal 4 (SIGILL)
 ==141251==  Illegal opcode at address 0x492B75F
 ==141251==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141251==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141251==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141251==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141251==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141251==    by 0x49908EB: curl_version_info (version.c:600)
 ==141251==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141251==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141251==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141251==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1129
test 1126 [HTTP 200 If-Modified-Since with newer document]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1126 ../src/curl -q --output log/17/curl1126.out  --include --trace-ascii log/17/trace1126 --trace-time http://127.0.0.1:35993/1126 -z "dec 12 12:00:00 1999 GMT" > log/17/stdout1126 2> log/17/stderr1126

 1126: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1126
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1126 ../src/curl -q --output log/17/curl1126.out  --include --trace-ascii log/17/trace1126 --trace-time http://127.0.0.1:35993/1126 -z "dec 12 12:00:00 1999 GMT" > log/17/stdout1126 2> log/17/stderr1126
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.459439 ====> Client connect
 19:28:06.459485 accept_connection 3 returned 4
 19:28:06.459511 Read 93 bytes
 19:28:06.459522 Process 93 bytes request
 19:28:06.459537 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.459546 Are-we-friendly question received
 19:28:06.459579 Wrote request (93 bytes) input to log/17/server.input
 19:28:06.459599 Identifying ourselves as friends
 19:28:06.459668 Response sent (56 bytes) and written to log/17/server.response
 19:28:06.459679 special request received, no persistency
 19:28:06.459688 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 36780 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1126
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1126
 ==141105== 
 ==141105== Process terminating with default action of signal 4 (SIGILL)
 ==141105==  Illegal opcode at address 0x492B75F
 ==141105==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141105==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141105==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141105==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141105==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141105==    by 0x49908EB: curl_version_info (version.c:600)
 ==141105==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141105==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141105==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141105==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1126
test 1137 [FTP RETR --ignore-content-length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1137 ../src/curl -q --output log/2/curl1137.out  --include --trace-ascii log/2/trace1137 --trace-time ftp://127.0.0.1:38033/1137 --ignore-content-length > log/2/stdout1137 2> log/2/stderr1137

 1137: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1137
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1137 ../src/curl -q --output log/2/curl1137.out  --include --trace-ascii log/2/trace1137 --trace-time ftp://127.0.0.1:38033/1137 --ignore-content-length > log/2/stdout1137 2> log/2/stderr1137
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:07.002120 ====> Client connect
 19:28:07.005641 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:07.006039 < "USER anonymous"
 19:28:07.006082 > "331 We are happy you popped in![CR][LF]"
 19:28:07.006282 < "PASS ftp@example.com"
 19:28:07.006312 > "230 Welcome you silly person[CR][LF]"
 19:28:07.006487 < "PWD"
 19:28:07.006522 > "257 "/" is current directory[CR][LF]"
 19:28:07.006691 < "EPSV"
 19:28:07.006716 ====> Passive DATA channel requested by client
 19:28:07.006730 DATA sockfilt for passive data channel starting...
 19:28:07.022131 DATA sockfilt for passive data channel started (pid 141709)
 19:28:07.022308 DATA sockfilt for passive data channel listens on port 37155
 19:28:07.022359 > "229 Entering Passive Mode (|||37155|)[CR][LF]"
 19:28:07.022377 Client has been notified that upcoming DATA connection is awaited on port 37155
 19:28:07.032606 Client connects to port 37155
 19:28:07.032681 ====> Client established passive DATA connection on port 37155
 19:28:07.032805 < "TYPE I"
 19:28:07.032853 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:07.033854 < "SIZE verifiedserver"
 19:28:07.033943 > "213 17[CR][LF]"
 19:28:07.034173 < "RETR verifiedserver"
 19:28:07.034221 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:07.034322 =====> Closing passive DATA connection...
 19:28:07.034342 Server disconnects passive DATA connection
 19:28:07.035419 Server disconnected passive DATA connection
 19:28:07.035454 DATA sockfilt for passive data channel quits (pid 141709)
 19:28:07.035746 DATA sockfilt for passive data channel quit (pid 141709)
 19:28:07.035774 =====> Closed passive DATA connection
 19:28:07.035810 > "226 File transfer complete[CR][LF]"
 19:28:07.081140 < "QUIT"
 19:28:07.081198 > "221 bye bye baby[CR][LF]"
 19:28:07.082473 MAIN sockfilt said DISC
 19:28:07.082510 ====> Client disconnected
 19:28:07.082590 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:06.606005 ====> Client connect
 19:28:06.609682 Received DATA (on stdin)
 19:28:06.609705 > 146 bytes data, server => client
 19:28:06.609718 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:06.609729 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:06.609739 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:06.609884 < 16 bytes data, client => server
 19:28:06.609898 'USER anonymous\r\n'
 19:28:06.610097 Received DATA (on stdin)
 19:28:06.610110 > 33 bytes data, server => client
 19:28:06.610120 '331 We are happy you popped in!\r\n'
 19:28:06.610187 < 22 bytes data, client => server
 19:28:06.610201 'PASS ftp@example.com\r\n'
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1133 ../src/curl -q --output log/19/curl1133.out  --include --trace-ascii log/19/trace1133 --trace-time http://127.0.0.1:46497/we/want/1133 -F "file=@\"log/19/test1133,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/19/test1133,and;.txt"' -F 'file3=@"log/19/test1133,and;.txt";type=m/f,"log/19/test1133,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b' > log/19/stdout1133 2> log/19/stderr1133
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1134 ../src/curl -q --output log/21/curl1134.out  --include --trace-ascii log/21/trace1134 --trace-time http://127.0.0.1:39881/1134 -u user1:password1 --next http://127.0.0.1:39881/11340001 -u 2user:password2 > log/21/stdout1134 2> log/21/stderr1134
:28:06.610323 Received DATA (on stdin)
 19:28:06.610335 > 30 bytes data, server => client
 19:28:06.610346 '230 Welcome you silly person\r\n'
 19:28:06.610404 < 5 bytes data, client => server
 19:28:06.610416 'PWD\r\n'
 19:28:06.610530 Received DATA (on stdin)
 19:28:06.610541 > 30 bytes data, server => client
 19:28:06.610551 '257 "/" is current directory\r\n'
 19:28:06.610614 < 6 bytes data, client => server
 19:28:06.610625 'EPSV\r\n'
 19:28:06.629333 Received DATA (on stdin)
 19:28:06.629371 > 39 bytes data, server => client
 19:28:06.629384 '229 Entering Passive Mode (|||37155|)\r\n'
 19:28:06.629664 < 8 bytes data, client => server
 19:28:06.629683 'TYPE I\r\n'
 19:28:06.637562 Received DATA (on stdin)
 19:28:06.637593 > 33 bytes data, server => client
 19:28:06.637606 '200 I modify TYPE as you wanted\r\n'
 19:28:06.637711 < 21 bytes data, client => server
 19:28:06.637728 'SIZE verifiedserver\r\n'
 19:28:06.637968 Received DATA (on stdin)
 19:28:06.637983 > 8 bytes data, server => client
 19:28:06.637993 '213 17\r\n'
 19:28:06.638064 < 21 bytes data, client => server
 19:28:06.638083 'RETR verifiedserver\r\n'
 19:28:06.638361 Received DATA (on stdin)
 19:28:06.638377 > 29 bytes data, server => client
 19:28:06.638388 '150 Binary junk (17 bytes).\r\n'
 19:28:06.639827 Received DATA (on stdin)
 19:28:06.639843 > 28 bytes data, server => client
 19:28:06.639853 '226 File transfer complete\r\n'
 19:28:06.684970 < 6 bytes data, client => server
 19:28:06.685001 'QUIT\r\n'
 19:28:06.685206 Received DATA (on stdin)
 19:28:06.685219 > 18 bytes data, server => client
 19:28:06.685229 '221 bye bye baby\r\n'
 19:28:06.686422 ====> Client disconnect
 19:28:06.686597 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:07.617203 Running IPv4 version
 19:28:07.617318 Listening on port 37155
 19:28:07.617361 Wrote pid 141709 to log/2/server/ftp_sockdata.pid
 19:28:07.626014 Received PING (on stdin)
 19:28:07.626202 Received PORT (on stdin)
 19:28:07.636518 ====> Client connect
 19:28:07.638251 Received DATA (on stdin)
 19:28:07.638272 > 17 bytes data, server => client
 19:28:07.638283 'WE ROOLZ: 85208\r\n'
 19:28:07.639318 Received DISC (on stdin)
 19:28:07.639342 ====> Client forcibly disconnected
 19:28:07.639462 Received QUIT (on stdin)
 19:28:07.639472 quits
 19:28:07.639555 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 1137
=== End of file server.cmd
=== Start of file valgrind1137
 ==141762== 
 ==141762== Process terminating with default action of signal 4 (SIGILL)
 ==141762==  Illegal opcode at address 0x492B75F
 ==141762==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141762==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141762==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141762==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141762==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141762==    by 0x49908EB: curl_version_info (version.c:600)
 ==141762==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141762==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141762==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141762==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1137
test 1133 [HTTP formpost with filename/data containing ',', ';', '"']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1133 ../src/curl -q --output log/19/curl1133.out  --include --trace-ascii log/19/trace1133 --trace-time http://127.0.0.1:46497/we/want/1133 -F "file=@\"log/19/test1133,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/19/test1133,and;.txt"' -F 'file3=@"log/19/test1133,and;.txt";type=m/f,"log/19/test1133,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b' > log/19/stdout1133 2> log/19/stderr1133

 1133: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1133
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1133 ../src/curl -q --output log/19/curl1133.out  --include --trace-ascii log/19/trace1133 --trace-time http://127.0.0.1:46497/we/want/1133 -F "file=@\"log/19/test1133,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/19/test1133,and;.txt"' -F 'file3=@"log/19/test1133,and;.txt";type=m/f,"log/19/test1133,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b' > log/19/stdout1133 2> log/19/stderr1133
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.209425 ====> Client connect
 19:28:06.209466 accept_connection 3 returned 4
 19:28:06.209490 Read 93 bytes
 19:28:06.209500 Process 93 bytes request
 19:28:06.209514 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.209523 Are-we-friendly question received
 19:28:06.209551 Wrote request (93 bytes) input to log/19/server.input
 19:28:06.209568 Identifying ourselves as friends
 19:28:06.209642 Response sent (56 bytes) and written to log/19/server.response
 19:28:06.209651 special request received, no persistency
 19:28:06.209659 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 34202 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1133
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file test1133,and;.txt
 foo bar
 This is a bar foo
 bar
 foo
=== End of file test1133,and;.txt
=== Start of file valgrind1133
 ==141512== 
 ==141512== Process terminating with default action of signal 4 (SIGILL)
 ==141512==  Illegal opcode at address 0x492B75F
 ==141512==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141512==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141512==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141512==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141512==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141512==    by 0x49908EB: curl_version_info (version.c:600)
 ==141512==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141512==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141512==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141512==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1133
test 1134 [HTTP connection reuse with different credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1134 ../src/curl -q --output log/21/curl1134.out  --include --trace-ascii log/21/trace1134 --trace-time http://127.0.0.1:39881/1134 -u user1:password1 --next http://127.0.0.1:39881/11340001 -u 2user:password2 > log/21/stdout1134 2> log/21/stderr1134

 1134: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1134
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressionCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1132 ../src/curl -q --output log/5/curl1132.out  --include --trace log/5/trace1132 --trace-time mqtt://127.0.0.1:34785/1132 > log/5/stdout1132 2> log/5/stderr1132
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1138 ../src/curl -q --output log/7/curl1138.out  --include --trace-ascii log/7/trace1138 --trace-time http://127.0.0.1:40859/we/are/all/twits/1138 -L > log/7/stdout1138 2> log/7/stderr1138
s=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1134 ../src/curl -q --output log/21/curl1134.out  --include --trace-ascii log/21/trace1134 --trace-time http://127.0.0.1:39881/1134 -u user1:password1 --next http://127.0.0.1:39881/11340001 -u 2user:password2 > log/21/stdout1134 2> log/21/stderr1134
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.315968 ====> Client connect
 19:28:06.322747 accept_connection 3 returned 4
 19:28:06.322791 Read 93 bytes
 19:28:06.322801 Process 93 bytes request
 19:28:06.322815 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.322825 Are-we-friendly question received
 19:28:06.322870 Wrote request (93 bytes) input to log/21/server.input
 19:28:06.322886 Identifying ourselves as friends
 19:28:06.322957 Response sent (56 bytes) and written to log/21/server.response
 19:28:06.322966 special request received, no persistency
 19:28:06.322974 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 37568 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 1134
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1134
 ==141550== 
 ==141550== Process terminating with default action of signal 4 (SIGILL)
 ==141550==  Illegal opcode at address 0x492B75F
 ==141550==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141550==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141550==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141550==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141550==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141550==    by 0x49908EB: curl_version_info (version.c:600)
 ==141550==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141550==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141550==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141550==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1134
startnew: ./server/servers mqttd --port 0 --pidfile log/5/server/mqtt_server.pid --portfile log/5/server/mqtt_server.port --config log/5/server.cmd --logfile log/5/mqtt_server.log --logdir log/5
RUN: MQTT server is now running PID 141441 on PORT 34785
* pid mqtt => 141441 141441
test 1132 [MQTT CONNACK with bad Remaining Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1132 ../src/curl -q --output log/5/curl1132.out  --include --trace log/5/trace1132 --trace-time mqtt://127.0.0.1:34785/1132 > log/5/stdout1132 2> log/5/stderr1132

 1132: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1132
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1132 ../src/curl -q --output log/5/curl1132.out  --include --trace log/5/trace1132 --trace-time mqtt://127.0.0.1:34785/1132 > log/5/stdout1132 2> log/5/stderr1132
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:06.858671 Running IPv4 version
 19:28:06.858757 Listening on port 34785
 19:28:06.858794 Wrote pid 141441 to log/5/server/mqtt_server.pid
 19:28:06.858825 Wrote port 34785 to log/5/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 remlen-CONNACK 3
 Testnum 1132
=== End of file server.cmd
=== Start of file valgrind1132
 ==141932== 
 ==141932== Process terminating with default action of signal 4 (SIGILL)
 ==141932==  Illegal opcode at address 0x492B75F
 ==141932==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141932==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141932==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141932==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141932==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141932==    by 0x49908EB: curl_version_info (version.c:600)
 ==141932==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141932==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141932==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141932==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1132
test 1138 [HTTP redirect with UTF-8 characters]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1138 ../src/curl -q --output log/7/curl1138.out  --include --trace-ascii log/7/trace1138 --trace-time http://127.0.0.1:40859/we/are/all/twits/1138 -L > log/7/stdout1138 2> log/7/stderr1138

 1138: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1138
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1138 ../src/curl -q --output log/7/curl1138.out  --include --trace-ascii log/7/trace1138 --trace-time http://127.0.0.1:40859/we/are/all/twits/1138 -L > log/7/stdout1138 2> log/7/stderr1138
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.591832 ====> Client connect
 19:28:06.591886 accept_connection 3 returned 4
 19:28:06.591906 Read 93 bytes
 19:28:06.591916 Process 93 bytes request
 19:28:06.591929 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.591938 Are-we-friendly question received
 19:28:06.591964 Wrote request (93 bytes) input to log/7/server.input
 19:28:06.591983 Identifying ourselves as friends
 19:28:06.592041 Response sent (56 bytes) and written to log/7/server.response
 19:28:06.592050 special request received, no persistency
 19:28:06.592058 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 49228 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1138
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1138
 ==141706== 
 ==141706== Process terminating with default action of signal 4 (SIGILL)
 ==141706==  Illegal opcode at address 0x492B75F
 ==141706==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141706==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141706==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141706==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141706==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141706==    by 0x49908EB: curl_version_info (version.c:600)
 ==141706==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141706==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141706==    by 0x4003269: UnknownInlinedFun (tool_cfgableCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1142 ../src/curl -q --output log/12/curl1142.out  --include --trace-ascii log/12/trace1142 --trace-time 127.0.0.1:40921/want/1142 -L -x http://127.0.0.1:40921 > log/12/stdout1142 2> log/12/stderr1142
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1136 ../src/curl -q --output log/15/curl1136.out  --include --trace-ascii log/15/trace1136 --trace-time http://www.example.ck/1136 http://www.ck/1136 http://z-1.compute-1.amazonaws.com/1136 -b none -c log/15/jar1136.txt -x 127.0.0.1:40321 > log/15/stdout1136 2> log/15/stderr1136
.c:310)
 ==141706==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1138
test 1142 [HTTP redirect to http://// (four slashes!)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1142 ../src/curl -q --output log/12/curl1142.out  --include --trace-ascii log/12/trace1142 --trace-time 127.0.0.1:40921/want/1142 -L -x http://127.0.0.1:40921 > log/12/stdout1142 2> log/12/stderr1142

 1142: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1142
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1142 ../src/curl -q --output log/12/curl1142.out  --include --trace-ascii log/12/trace1142 --trace-time 127.0.0.1:40921/want/1142 -L -x http://127.0.0.1:40921 > log/12/stdout1142 2> log/12/stderr1142
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.812719 ====> Client connect
 19:28:06.812769 accept_connection 3 returned 4
 19:28:06.812795 Read 93 bytes
 19:28:06.812805 Process 93 bytes request
 19:28:06.812817 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.812826 Are-we-friendly question received
 19:28:06.812855 Wrote request (93 bytes) input to log/12/server.input
 19:28:06.812872 Identifying ourselves as friends
 19:28:06.812957 Response sent (56 bytes) and written to log/12/server.response
 19:28:06.812967 special request received, no persistency
 19:28:06.812975 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59074 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1142
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1142
 ==141886== 
 ==141886== Process terminating with default action of signal 4 (SIGILL)
 ==141886==  Illegal opcode at address 0x492B75F
 ==141886==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141886==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141886==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141886==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141886==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141886==    by 0x49908EB: curl_version_info (version.c:600)
 ==141886==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141886==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1142
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1165.pl /startdir/src/curl/tests/.. > log/15/stdout1165 2> log/15/stderr1165
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1146 ../src/curl -q --output log/13/curl1146.out  --trace-ascii log/13/trace1146 --trace-time --proto-default file /startdir/src/build-curl/tests/log/13/test1146.txt > log/13/stdout1146 2> log/13/stderr1146
setenv TZ = GMT
test 1136 [Check cookies against PSL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1136 ../src/curl -q --output log/15/curl1136.out  --include --trace-ascii log/15/trace1136 --trace-time http://www.example.ck/1136 http://www.ck/1136 http://z-1.compute-1.amazonaws.com/1136 -b none -c log/15/jar1136.txt -x 127.0.0.1:40321 > log/15/stdout1136 2> log/15/stderr1136

 1136: data FAILED:
--- log/15/check-expected	2026-10-15 19:28:09.677045727 +0000
+++ log/15/check-generated	2026-10-15 19:28:09.674356066 +0000
@@ -1,13 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Content-Length: 4[LF]
-Content-Type: text/html[LF]
-Funny-head: yesyes[LF]
-Set-Cookie: test1=forbidden1; domain=example.ck; path=/;[LF]
-Set-Cookie: test2=allowed2; domain=www.example.ck; path=/;[LF]
-Set-Cookie: test3=forbidden3; domain=ck; path=/;[LF]
-Set-Cookie: test4=allowed4; domain=www.ck; path=/;[LF]
-Set-Cookie: test5=forbidden5; domain=z-1.compute-1.amazonaws.com; path=/;[LF]
-[LF]
-boo[LF]
== Contents of files in the log/15/ directory after test 1136
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Content-Length: 4[LF]
 Content-Type: text/html[LF]
 Funny-head: yesyes[LF]
 Set-Cookie: test1=forbidden1; domain=example.ck; path=/;[LF]
 Set-Cookie: test2=allowed2; domain=www.example.ck; path=/;[LF]
 Set-Cookie: test3=forbidden3; domain=ck; path=/;[LF]
 Set-Cookie: test4=allowed4; domain=www.ck; path=/;[LF]
 Set-Cookie: test5=forbidden5; domain=z-1.compute-1.amazonaws.com; path=/;[LF]
 [LF]
 boo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1136 ../src/curl -q --output log/15/curl1136.out  --include --trace-ascii log/15/trace1136 --trace-time http://www.example.ck/1136 http://www.ck/1136 http://z-1.compute-1.amazonaws.com/1136 -b none -c log/15/jar1136.txt -x 127.0.0.1:40321 > log/15/stdout1136 2> log/15/stderr1136
=== End of file commands.log
=== Start of file http_server.log
 19:28:07.472443 ====> Client connect
 19:28:07.472476 accept_connection 3 returned 4
 19:28:07.472959 Read 93 bytes
 19:28:07.472977 Process 93 bytes request
 19:28:07.472990 Got request: GET /verifiedserver HTTP/1.1
 19:28:07.472998 Are-we-friendly question received
 19:28:07.473032 Wrote request (93 bytes) input to log/15/server.input
 19:28:07.473049 Identifying ourselves as friends
 19:28:07.473106 Response sent (56 bytes) and written to log/15/server.response
 19:28:07.473114 special request received, no persistency
 19:28:07.473122 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 53238 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1136
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1136
 ==141663== 
 ==141663== Process terminating with default action of signal 4 (SIGILL)
 ==141663==  Illegal opcode at address 0x492B75F
 ==141663==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141663==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141663==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141663==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141663==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141663==    by 0x49908EB: curl_version_info (version.c:600)
 ==141663==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141663==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141663==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141663==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1136
test 1165 [Verify configure.ac and source code CURL_DISABLE_-sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1165.pl /startdir/src/curl/tests/.. > log/15/stdout1165 2> log/15/stderr1165
 valgrind SKIPPED
-------e--- OK (1066 out of 1890, remaining: 01:42, took 0.134s, duration: 02:12)
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1141 ../src/curl -q --output log/22/curl1141.out  --include --trace-ascii log/22/trace1141 --trace-time 127.0.0.1:35989/want/1141 -L -x http://127.0.0.1:35989 > log/22/stdout1141 2> log/22/stderr1141
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1144 ../src/curl -q --output log/8/curl1144.out  --include --trace-ascii log/8/trace1144 --trace-time -I http://127.0.0.1:44467/1144 --http0.9 > log/8/stdout1144 2> log/8/stderr1144
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1147 ../src/curl -q --output log/6/curl1147.out  --include --trace-ascii log/6/trace1147 --trace-time http://127.0.0.1:33935/1147 -H @log/6/heads1147.txt > log/6/stdout1147 2> log/6/stderr1147
test 1146 [--proto-default file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1146 ../src/curl -q --output log/13/curl1146.out  --trace-ascii log/13/trace1146 --trace-time --proto-default file /startdir/src/build-curl/tests/log/13/test1146.txt > log/13/stdout1146 2> log/13/stderr1146

 1146: data FAILED:
--- log/13/check-expected	2026-10-15 19:28:09.909366430 +0000
+++ log/13/check-generated	2026-10-15 19:28:09.908208894 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/13/ directory after test 1146
=== Start of file check-expected
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1146 ../src/curl -q --output log/13/curl1146.out  --trace-ascii log/13/trace1146 --trace-time --proto-default file /startdir/src/build-curl/tests/log/13/test1146.txt > log/13/stdout1146 2> log/13/stderr1146
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1146
=== End of file server.cmd
=== Start of file test1146.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test1146.txt
=== Start of file valgrind1146
 ==142069== 
 ==142069== Process terminating with default action of signal 4 (SIGILL)
 ==142069==  Illegal opcode at address 0x492B75F
 ==142069==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142069==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142069==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142069==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142069==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142069==    by 0x49908EB: curl_version_info (version.c:600)
 ==142069==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142069==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142069==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142069==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1146
test 1147 [Get -H headers from a file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1147 ../src/curl -q --output log/6/curl1147.out  --include --trace-ascii log/6/trace1147 --trace-time http://127.0.0.1:33935/1147 -H @log/6/heads1147.txt > log/6/stdout1147 2> log/6/stderr1147

 1147: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1147
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1147 ../src/curl -q --output log/6/curl1147.out  --include --trace-ascii log/6/trace1147 --trace-time http://127.0.0.1:33935/1147 -H @log/6/heads1147.txt > log/6/stdout1147 2> log/6/stderr1147
=== End of file commands.log
=== Start of file heads1147.txt
 One: 1
 Two: 2
 no-colon
  And A Funny One : wohoo
 User-Agent:
=== End of file heads1147.txt
=== Start of file http_server.log
 19:28:07.262706 ====> Client connect
 19:28:07.262746 accept_connection 3 returned 4
 19:28:07.262771 Read 93 bytes
 19:28:07.262781 Process 93 bytes request
 19:28:07.262793 Got request: GET /verifiedserver HTTP/1.1
 19:28:07.262801 Are-we-friendly question received
 19:28:07.262828 Wrote request (93 bytes) input to log/6/server.input
 19:28:07.262845 Identifying ourselves as friends
 19:28:07.262913 Response sent (56 bytes) and written to log/6/server.response
 19:28:07.262923 special request received, no persistency
 19:28:07.262932 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 43546 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1147
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1147
 ==142294== 
 ==142294== Process terminating with default action of signal 4 (SIGILL)
 ==142294==  Illegal opcode at address 0x492B75F
 ==142294==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142294==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142294==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142294==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142294==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142294==    by 0x49908EB: curl_version_info (version.c:600)
 ==142294==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142294==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1147
test 1144 [HTTP HEAD, receive no headers only body]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1144 ../src/curl -q --output log/8/curl1144.out  --include --trace-ascii log/8/trace1144 --trace-time -I http://127.0.0.1:44467/1144 --http0.9 > log/8/stdout1144 2> log/8/stderr1144

 1144: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1144
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1144 ../src/curl -q --output log/8/curl1144.out  --include --trace-ascii log/8/trace1144 --trace-time -I http://127.0.0.1:44467/1144 --http0.9 > log/8/stdout1144 2> log/8/stderr1144
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.978182 ====> Client connect
 19:28:06.978226 accept_connection 3 returned 4
 19:28:06.978341 Read 93 bytes
 19:28:06.978359 Process 93 bytes request
 19:28:06.978372 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.978381 Are-we-friendly question received
 19:28:06.978415 Wrote request (93 bytes) input to log/8/server.input
 19:28:06.978435 Identifying ourselves as friends
 19:28:06.978502 Response sent (56 bytes) and written to log/8/server.response
 19:28:06.978513 special request received, no persistency
 19:28:06.978522 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 50604 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1144
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1144
 ==142042== 
 ==142042== Process terminating with default action of signal 4 (SIGILL)
 ==142042==  Illegal opcode at address 0x492B75F
 ==142042==    CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1143 ../src/curl -q --output log/11/curl1143.out  --include --trace-ascii log/11/trace1143 --trace-time http:/127.0.0.1:40989/want/1143 > log/11/stdout1143 2> log/11/stderr1143
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1145 ../src/curl -q --output log/3/curl1145.out  --include --trace-ascii log/3/trace1145 --trace-time file://bad-host/startdir/src/build-curl/tests/log/3/test1145.txt > log/3/stdout1145 2> log/3/stderr1145
at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142042==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142042==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142042==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142042==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142042==    by 0x49908EB: curl_version_info (version.c:600)
 ==142042==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142042==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142042==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142042==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1144
test 1141 [HTTP redirect to http:/// (three slashes!)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1141 ../src/curl -q --output log/22/curl1141.out  --include --trace-ascii log/22/trace1141 --trace-time 127.0.0.1:35989/want/1141 -L -x http://127.0.0.1:35989 > log/22/stdout1141 2> log/22/stderr1141

 1141: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1141
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1141 ../src/curl -q --output log/22/curl1141.out  --include --trace-ascii log/22/trace1141 --trace-time 127.0.0.1:35989/want/1141 -L -x http://127.0.0.1:35989 > log/22/stdout1141 2> log/22/stderr1141
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.797879 ====> Client connect
 19:28:06.797908 accept_connection 3 returned 4
 19:28:06.797927 Read 93 bytes
 19:28:06.797935 Process 93 bytes request
 19:28:06.797947 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.797954 Are-we-friendly question received
 19:28:06.797975 Wrote request (93 bytes) input to log/22/server.input
 19:28:06.797989 Identifying ourselves as friends
 19:28:06.798039 Response sent (56 bytes) and written to log/22/server.response
 19:28:06.798047 special request received, no persistency
 19:28:06.798054 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 43338 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1141
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1141
 ==141871== 
 ==141871== Process terminating with default action of signal 4 (SIGILL)
 ==141871==  Illegal opcode at address 0x492B75F
 ==141871==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==141871==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==141871==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==141871==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==141871==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==141871==    by 0x49908EB: curl_version_info (version.c:600)
 ==141871==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==141871==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==141871==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==141871==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1141
setenv MSYS2_ARG_CONV_EXCL = http:/
test 1143 [HTTP URL with http:/ (one slash!)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1143 ../src/curl -q --output log/11/curl1143.out  --include --trace-ascii log/11/trace1143 --trace-time http:/127.0.0.1:40989/want/1143 > log/11/stdout1143 2> log/11/stderr1143

 1143: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1143
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1143 ../src/curl -q --output log/11/curl1143.out  --include --trace-ascii log/11/trace1143 --trace-time http:/127.0.0.1:40989/want/1143 > log/11/stdout1143 2> log/11/stderr1143
=== End of file commands.log
=== Start of file http_server.log
 19:28:06.962735 ====> Client connect
 19:28:06.962786 accept_connection 3 returned 4
 19:28:06.962814 Read 93 bytes
 19:28:06.962831 Process 93 bytes request
 19:28:06.962847 Got request: GET /verifiedserver HTTP/1.1
 19:28:06.962856 Are-we-friendly question received
 19:28:06.962887 Wrote request (93 bytes) input to log/11/server.input
 19:28:06.962906 Identifying ourselves as friends
 19:28:06.963009 Response sent (56 bytes) and written to log/11/server.response
 19:28:06.963022 special request received, no persistency
 19:28:06.963031 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 54226 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1143
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1143
 ==142019== 
 ==142019== Process terminating with default action of signal 4 (SIGILL)
 ==142019==  Illegal opcode at address 0x492B75F
 ==142019==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142019==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142019==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142019==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142019==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142019==    by 0x49908EB: curl_version_info (version.c:600)
 ==142019==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142019==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142019==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142019==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1143
test 1145 [file:// bad host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1145 ../src/curl -q --output log/3/curl1145.out  --include --trace-ascii log/3/trace1145 --trace-time file://bad-host/startdir/src/build-curl/tests/log/3/test1145.txt > log/3/stdout1145 2> log/3/stderr1145

curl returned 132, when expecting 3
 1145: exit FAILED
== Contents of files in the log/3/ directory after test 1145
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1145 ../src/curl -q --output log/3/curl1145.out  --include --trace-ascii log/3/trace1145 --trace-time file://bad-host/startdir/src/build-curl/tests/log/3/test1145.txt > log/3/stdout1145 2> log/3/stderr1145
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1145CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1148 ../src/curl -q --output log/14/curl1148.out  --include --trace-ascii log/14/trace1148 --trace-time http://127.0.0.1:45467/1148 -# --stderr log/14/stderrlog1148 > log/14/stdout1148 2> log/14/stderr1148
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1151 ../src/curl -q --output log/23/curl1151.out  --include --trace-ascii log/23/trace1151 --trace-time http://127.0.0.1:44711/1151 -c log/23/cookies1151.txt > log/23/stdout1151 2> log/23/stderr1151
CMD (31488): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/runtests.pl -L /startdir/src/build-curl/tests/log/8/test1169-library.pl > log/8/stdout1169 2> log/8/stderr1169
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1175.pl /startdir/src/curl/tests/.. > log/8/stdout1175 2> log/8/stderr1175
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1167.pl /startdir/src/curl/tests/.. > log/13/stdout1167 2> log/13/stderr1167

=== End of file server.cmd
=== Start of file test1145.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test1145.txt
=== Start of file valgrind1145
 ==142045== 
 ==142045== Process terminating with default action of signal 4 (SIGILL)
 ==142045==  Illegal opcode at address 0x492B75F
 ==142045==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142045==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142045==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142045==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142045==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142045==    by 0x49908EB: curl_version_info (version.c:600)
 ==142045==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142045==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142045==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142045==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1145
test 1148 [progress-bar]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1148 ../src/curl -q --output log/14/curl1148.out  --include --trace-ascii log/14/trace1148 --trace-time http://127.0.0.1:45467/1148 -# --stderr log/14/stderrlog1148 > log/14/stdout1148 2> log/14/stderr1148

 1148: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1148
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1148 ../src/curl -q --output log/14/curl1148.out  --include --trace-ascii log/14/trace1148 --trace-time http://127.0.0.1:45467/1148 -# --stderr log/14/stderrlog1148 > log/14/stdout1148 2> log/14/stderr1148
=== End of file commands.log
=== Start of file http_server.log
 19:28:07.349358 ====> Client connect
 19:28:07.349404 accept_connection 3 returned 4
 19:28:07.349431 Read 93 bytes
 19:28:07.349440 Process 93 bytes request
 19:28:07.349454 Got request: GET /verifiedserver HTTP/1.1
 19:28:07.349462 Are-we-friendly question received
 19:28:07.349488 Wrote request (93 bytes) input to log/14/server.input
 19:28:07.349504 Identifying ourselves as friends
 19:28:07.349582 Response sent (56 bytes) and written to log/14/server.response
 19:28:07.349590 special request received, no persistency
 19:28:07.349598 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 35708 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1148
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1148
 ==142334== 
 ==142334== Process terminating with default action of signal 4 (SIGILL)
 ==142334==  Illegal opcode at address 0x492B75F
 ==142334==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142334==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142334==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142334==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142334==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142334==    by 0x49908EB: curl_version_info (version.c:600)
 ==142334==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142334==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1148
test 1151 [HTTP with too long cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1151 ../src/curl -q --output log/23/curl1151.out  --include --trace-ascii log/23/trace1151 --trace-time http://127.0.0.1:44711/1151 -c log/23/cookies1151.txt > log/23/stdout1151 2> log/23/stderr1151

 1151: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1151
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1151 ../src/curl -q --output log/23/curl1151.out  --include --trace-ascii log/23/trace1151 --trace-time http://127.0.0.1:44711/1151 -c log/23/cookies1151.txt > log/23/stdout1151 2> log/23/stderr1151
=== End of file commands.log
=== Start of file http_server.log
 19:28:07.659623 ====> Client connect
 19:28:07.659657 accept_connection 3 returned 4
 19:28:07.659680 Read 93 bytes
 19:28:07.659690 Process 93 bytes request
 19:28:07.659704 Got request: GET /verifiedserver HTTP/1.1
 19:28:07.659712 Are-we-friendly question received
 19:28:07.659738 Wrote request (93 bytes) input to log/23/server.input
 19:28:07.659754 Identifying ourselves as friends
 19:28:07.659824 Response sent (56 bytes) and written to log/23/server.response
 19:28:07.659834 special request received, no persistency
 19:28:07.659842 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 45366 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1151
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1151
 ==142485== 
 ==142485== Process terminating with default action of signal 4 (SIGILL)
 ==142485==  Illegal opcode at address 0x492B75F
 ==142485==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142485==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142485==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142485==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142485==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142485==    by 0x49908EB: curl_version_info (version.c:600)
 ==142485==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142485==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1151
test 1169 [Verify that runtests.pl accepts an -L option]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/runtests.pl -L /startdir/src/build-curl/tests/log/8/test1169-library.pl > log/8/stdout1169 2> log/8/stderr1169
 valgrind SKIPPED
-------e--- OK (1070 out of 1890, remaining: 01:42, took 0.268s, duration: 02:13)
test 1175 [Verify that symbols-in-versions and libcurl-errors.3 are in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1175.pl /startdir/src/curl/tests/.. > log/8/stdout1175 2> log/8/stderr1175
 valgrind SKIPPED
-------e--- OK (1076 out of 1890, remaining: 01:40, took 0.033s, duration: 02:13)
test 1167 [Verify curl prefix of public symbols in header files]
/usr/bin/peCMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1177.pl /startdir/src/build-curl/tests/../docs/libcurl/curl_version_info.3 /startdir/src/curl/tests/../include/curl/curl.h /startdir/src/curl/tests/../lib/version.c > log/13/stdout1177 2> log/13/stderr1177
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1173.pl /startdir/src/curl/tests/../docs/libcurl/symbols-in-versions /startdir/src/build-curl/tests/../docs/*.1  /startdir/src/build-curl/tests/../docs/cmdline-opts/*.1 /startdir/src/build-curl/tests/../docs/libcurl/*.3 /startdir/src/build-curl/tests/../docs/libcurl/opts/*.3 > log/14/stdout1173 2> log/14/stderr1173
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1152 ../src/curl -q --output log/1/curl1152.out  --include --trace-ascii log/1/trace1152 --trace-time ftp://127.0.0.1:40221/test-1152/ > log/1/stdout1152 2> log/1/stderr1152
rl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1167.pl /startdir/src/curl/tests/.. > log/13/stdout1167 2> log/13/stderr1167
 valgrind SKIPPED
-------e--- OK (1068 out of 1890, remaining: 01:42, took 0.464s, duration: 02:13)
test 1177 [Verify feature names and CURL_VERSION_* in lib and docs in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1177.pl /startdir/src/build-curl/tests/../docs/libcurl/curl_version_info.3 /startdir/src/curl/tests/../include/curl/curl.h /startdir/src/curl/tests/../lib/version.c > log/13/stdout1177 2> log/13/stderr1177
 valgrind SKIPPED
-------e--- OK (1078 out of 1890, remaining: 01:40, took 0.020s, duration: 02:13)
test 1173 [Man page syntax checks]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1173.pl /startdir/src/curl/tests/../docs/libcurl/symbols-in-versions /startdir/src/build-curl/tests/../docs/*.1  /startdir/src/build-curl/tests/../docs/cmdline-opts/*.1 /startdir/src/build-curl/tests/../docs/libcurl/*.3 /startdir/src/build-curl/tests/../docs/libcurl/opts/*.3 > log/14/stdout1173 2> log/14/stderr1173
 valgrind SKIPPED
-r-----e--- OK (1074 out of 1890, remaining: 01:41, took 0.334s, duration: 02:13)
test 1152 [FTP with unclosed quote in PWD response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1152 ../src/curl -q --output log/1/curl1152.out  --include --trace-ascii log/1/trace1152 --trace-time ftp://127.0.0.1:40221/test-1152/ > log/1/stdout1152 2> log/1/stderr1152

 1152: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1152
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1152 ../src/curl -q --output log/1/curl1152.out  --include --trace-ascii log/1/trace1152 --trace-time ftp://127.0.0.1:40221/test-1152/ > log/1/stdout1152 2> log/1/stderr1152
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:08.094083 ====> Client connect
 19:28:08.094337 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:08.099605 < "USER anonymous"
 19:28:08.099667 > "331 We are happy you popped in![CR][LF]"
 19:28:08.099893 < "PASS ftp@example.com"
 19:28:08.099937 > "230 Welcome you silly person[CR][LF]"
 19:28:08.100134 < "PWD"
 19:28:08.100174 > "257 "/" is current directory[CR][LF]"
 19:28:08.100374 < "EPSV"
 19:28:08.100403 ====> Passive DATA channel requested by client
 19:28:08.100420 DATA sockfilt for passive data channel starting...
 19:28:08.109231 DATA sockfilt for passive data channel started (pid 142491)
 19:28:08.109396 DATA sockfilt for passive data channel listens on port 40367
 19:28:08.109448 > "229 Entering Passive Mode (|||40367|)[CR][LF]"
 19:28:08.109464 Client has been notified that upcoming DATA connection is awaited on port 40367
 19:28:08.109759 Client connects to port 40367
 19:28:08.109790 ====> Client established passive DATA connection on port 40367
 19:28:08.109911 < "TYPE I"
 19:28:08.109944 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:08.110092 < "SIZE verifiedserver"
 19:28:08.110127 > "213 17[CR][LF]"
 19:28:08.110271 < "RETR verifiedserver"
 19:28:08.110301 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:08.110392 =====> Closing passive DATA connection...
 19:28:08.110408 Server disconnects passive DATA connection
 19:28:08.110521 Server disconnected passive DATA connection
 19:28:08.110541 DATA sockfilt for passive data channel quits (pid 142491)
 19:28:08.110808 DATA sockfilt for passive data channel quit (pid 142491)
 19:28:08.110831 =====> Closed passive DATA connection
 19:28:08.110856 > "226 File transfer complete[CR][LF]"
 19:28:08.155671 < "QUIT"
 19:28:08.155735 > "221 bye bye baby[CR][LF]"
 19:28:08.156975 MAIN sockfilt said DISC
 19:28:08.157013 ====> Client disconnected
 19:28:08.157107 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:08.697910 ====> Client connect
 19:28:08.703099 Received DATA (on stdin)
 19:28:08.703136 > 146 bytes data, server => client
 19:28:08.703147 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:08.703156 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:08.703164 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:08.703321 < 16 bytes data, client => server
 19:28:08.703339 'USER anonymous\r\n'
 19:28:08.703613 Received DATA (on stdin)
 19:28:08.703627 > 33 bytes data, server => client
 19:28:08.703637 '331 We are happy you popped in!\r\n'
 19:28:08.703707 < 22 bytes data, client => server
 19:28:08.703723 'PASS ftp@example.com\r\n'
 19:28:08.703879 Received DATA (on stdin)
 19:28:08.703891 > 30 bytes data, server => client
 19:28:08.703901 '230 Welcome you silly person\r\n'
 19:28:08.703965 < 5 bytes data, client => server
 19:28:08.703981 'PWD\r\n'
 19:28:08.704114 Received DATA (on stdin)
 19:28:08.704126 > 30 bytes data, server => client
 19:28:08.704136 '257 "/" is current directory\r\n'
 19:28:08.704211 < 6 bytes data, client => server
 19:28:08.704226 'EPSV\r\n'
 19:28:08.713411 Received DATA (on stdin)
 19:28:08.713427 > 39 bytes data, server => client
 19:28:08.713437 '229 Entering Passive Mode (|||40367|)\r\n'
 19:28:08.713741 < 8 bytes data, client => server
 19:28:08.713751 'TYPE I\r\n'
 19:28:08.713879 Received DATA (on stdin)
 19:28:08.713889 > 33 bytes data, server => client
 19:28:08.713898 '200 I modify TYPE as you wanted\r\n'
 19:28:08.713947 < 21 bytes data, client => server
 19:28:08.713956 'SIZE verifiedserver\r\n'
 19:28:08.714059 Received DATA (on stdin)
 19:28:08.714069 > 8 bytes data, server => client
 19:28:08.714078 '213 17\r\n'
 19:28:08.714129 < 21 bytes data, client => server
 19:28:08.714139 'RETR verifiedserver\r\n'
 19:28:08.714790 Received DATA (on stdin)
 19:28:08.714802 > 29 bytes data, server => client
 19:28:08.714811 '150 Binary junk (17 bytes).\r\n'
 19:28:08.714833 Received DATA (on stdin)
 19:28:08.714842 > 28 bytes data, server => client
 19:28:08.714851 '226 File transfer complete\r\n'
 19:28:08.759379 < 6 bytes data, client => server
 19:28:08.759423 'QUIT\r\n'
 19:28:08.759672 Received DATA (on stdin)
 19:28:08.759684 > 18 bytes data, server => client
 19:28:08.759694 '221 bye bye baby\r\n'
 19:28:08.760852 ====> Client disconnect
 19:28:08.761041 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:08.707164 Running IPv4 version
 19:28:08.707250 Listening on port 40367
 19:28:08.707283 Wrote pid 142491 to log/1/server/ftp_sockdata.pid
 19:28:08.712588 Received PING (on stdin)
 19:28:08.713222 Received PORT (on stdin)
 19:28:08.713644 ====> Client connect
 19:28:08.714344 Received DATA (on stdin)
 19:28:08.714356 > 17 bytes data, server => client
 19:28:08.714366 'WE ROOLZ: 84935\r\n'
 19:28:08.714392 Received DISC (on stdin)
 19:28:08.714404 ====> Client forcibly disconnected
 19:28:08.714480 Received QUIT (on stdin)
 19:28:08.714489 quits
 19:28:08.714564 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 257 "Only one
 Testnum 1152
=== End of file server.cmd
=== Start of file valgrind1152
 ==142561== 
 ==142561== Process terminating with default action of signal 4 (SIGILL)
 ==142561==  Illegal opcode at address 0x492B75F
 ==142561==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142561==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142561==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142561==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142561==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142561==    by 0x49908EB: curl_version_info (version.c:600)
 ==142561==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142561==    by 0x4003269: UnknoCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1156 ./libtest/libtests lib1156 http://127.0.0.1:40913/want/1156 > log/10/stdout1156 2> log/10/stderr1156
wnInlinedFun (tool_cfgable.c:339)
 ==142561==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142561==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1152
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1157 ../src/curl -q --output log/24/curl1157.out  --include --trace-ascii log/24/trace1157 --trace-time http://127.0.0.1:38895/1157 -H @log/24/heads1157.txt > log/24/stdout1157 2> log/24/stderr1157
CMD (1280): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/checksrc.pl -bmagicbad -balsobad log/24/code1185.c > log/24/stdout1185 2> log/24/stderr1185
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1149 ../src/curl -q --output log/20/curl1149.out  --include --trace-ascii log/20/trace1149 --trace-time ftp://127.0.0.1:41549/list/this/path/1149/ --ftp-method multicwd --next ftp://127.0.0.1:41549/list/this/path/1149/ --ftp-method nocwd > log/20/stdout1149 2> log/20/stderr1149
test 1156 [HTTP resume/range fail range-error content-range combinations]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1156 ./libtest/libtests lib1156 http://127.0.0.1:40913/want/1156 > log/10/stdout1156 2> log/10/stderr1156

 1156: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:28:10.697359742 +0000
+++ log/10/check-generated	2026-10-15 19:28:10.694420958 +0000
@@ -1 +0,0 @@
-0[LF]
== Contents of files in the log/10/ directory after test 1156
=== Start of file check-expected
 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1156 ./libtest/libtests lib1156 http://127.0.0.1:40913/want/1156 > log/10/stdout1156 2> log/10/stderr1156
=== End of file commands.log
=== Start of file http_server.log
 19:28:08.192647 ====> Client connect
 19:28:08.192692 accept_connection 3 returned 4
 19:28:08.192718 Read 93 bytes
 19:28:08.192729 Process 93 bytes request
 19:28:08.192743 Got request: GET /verifiedserver HTTP/1.1
 19:28:08.192752 Are-we-friendly question received
 19:28:08.192785 Wrote request (93 bytes) input to log/10/server.input
 19:28:08.192803 Identifying ourselves as friends
 19:28:08.192878 Response sent (56 bytes) and written to log/10/server.response
 19:28:08.192889 special request received, no persistency
 19:28:08.192898 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 47462 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1156
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1156
 ==142883== 
 ==142883== Process terminating with default action of signal 4 (SIGILL)
 ==142883==  Illegal opcode at address 0x51CC63F
 ==142883==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==142883==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==142883==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==142883==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1156
test 1157 [Get -H headers from empty file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1157 ../src/curl -q --output log/24/curl1157.out  --include --trace-ascii log/24/trace1157 --trace-time http://127.0.0.1:38895/1157 -H @log/24/heads1157.txt > log/24/stdout1157 2> log/24/stderr1157

 1157: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1157
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1157 ../src/curl -q --output log/24/curl1157.out  --include --trace-ascii log/24/trace1157 --trace-time http://127.0.0.1:38895/1157 -H @log/24/heads1157.txt > log/24/stdout1157 2> log/24/stderr1157
=== End of file commands.log
=== Start of file http_server.log
 19:28:08.285967 ====> Client connect
 19:28:08.286002 accept_connection 3 returned 4
 19:28:08.286024 Read 93 bytes
 19:28:08.286034 Process 93 bytes request
 19:28:08.286047 Got request: GET /verifiedserver HTTP/1.1
 19:28:08.286056 Are-we-friendly question received
 19:28:08.286081 Wrote request (93 bytes) input to log/24/server.input
 19:28:08.286097 Identifying ourselves as friends
 19:28:08.286160 Response sent (56 bytes) and written to log/24/server.response
 19:28:08.286169 special request received, no persistency
 19:28:08.286177 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 37056 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1157
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1157
 ==142936== 
 ==142936== Process terminating with default action of signal 4 (SIGILL)
 ==142936==  Illegal opcode at address 0x492B75F
 ==142936==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142936==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142936==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142936==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142936==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142936==    by 0x49908EB: curl_version_info (version.c:600)
 ==142936==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142936==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142936==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142936==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1157
test 1185 [checksrc]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/checksrc.pl -bmagicbad -balsobad log/24/code1185.c > log/24/stdout1185 2> log/24/stderr1185
 valgrind SKIPPED
s------e--- OK (1083 out of 1890, remaining: 01:39, took 0.074s, duration: 02:13)
test 1149 [FTP dir list multicwd then again nocwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1149 ../src/curl -q --output log/20/curl1149.out  --include --trace-ascii log/20/trace1149 --trace-time ftp://127.0.0.1:41549/list/this/path/1149/ --ftp-method multicwd --next ftp://127.0.0.1:41549/list/this/path/1149/ --ftp-method nocwd > log/20/stdout1149 2> log/20/stderr1149

 1149: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1149
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1149 ../src/curl -q --output log/20/curl1149.out  --include --trace-ascii log/20/trace1149 --trace-time ftp://127.0.0.1:41549/list/this/path/1149/ --ftp-method multicwd --next ftp://127.0.0.1:41549/list/this/path/1149/ --ftp-method nocwd > log/20/stdout1149 2> log/20/stderr1149
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:07.935369 ====> Client connect
 19:28:07.935628 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:07.942331 < "USER anonymous"
 19:28:07.942388 > "331 We are happy you popped in![CR][LF]"
 19:28:07.942565 < "PASS ftp@example.com"
 19:28:07.942591 > "230 Welcome you silly person[CR][LF]"
 19:28:07.942737 < "PWD"
 19:28:07.942768 > "257 "/" is current directory[CR][LF]"
 19:28:07.942928 < "EPSV"
 19:28:07.942952 ====> PassCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1153 ../src/curl -q --output log/4/curl1153.out  --include --trace-ascii log/4/trace1153 --trace-time ftp://127.0.0.1:39739/test-1153/ > log/4/stdout1153 2> log/4/stderr1153
ive DATA channel requested by client
 19:28:07.942965 DATA sockfilt for passive data channel starting...
 19:28:07.950205 DATA sockfilt for passive data channel started (pid 142404)
 19:28:07.950376 DATA sockfilt for passive data channel listens on port 33559
 19:28:07.950439 > "229 Entering Passive Mode (|||33559|)[CR][LF]"
 19:28:07.950461 Client has been notified that upcoming DATA connection is awaited on port 33559
 19:28:07.950826 Client connects to port 33559
 19:28:07.950859 ====> Client established passive DATA connection on port 33559
 19:28:07.950964 < "TYPE I"
 19:28:07.951000 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:07.951197 < "SIZE verifiedserver"
 19:28:07.951243 > "213 17[CR][LF]"
 19:28:07.951429 < "RETR verifiedserver"
 19:28:07.951469 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:07.951574 =====> Closing passive DATA connection...
 19:28:07.951594 Server disconnects passive DATA connection
 19:28:07.951857 Server disconnected passive DATA connection
 19:28:07.951886 DATA sockfilt for passive data channel quits (pid 142404)
 19:28:07.952215 DATA sockfilt for passive data channel quit (pid 142404)
 19:28:07.952246 =====> Closed passive DATA connection
 19:28:07.952278 > "226 File transfer complete[CR][LF]"
 19:28:08.002157 < "QUIT"
 19:28:08.002208 > "221 bye bye baby[CR][LF]"
 19:28:08.003435 MAIN sockfilt said DISC
 19:28:08.003479 ====> Client disconnected
 19:28:08.003556 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:07.535947 ====> Client connect
 19:28:07.539598 Received DATA (on stdin)
 19:28:07.539621 > 146 bytes data, server => client
 19:28:07.539633 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:07.539643 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:07.539652 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:07.546038 < 16 bytes data, client => server
 19:28:07.546066 'USER anonymous\r\n'
 19:28:07.546340 Received DATA (on stdin)
 19:28:07.546353 > 33 bytes data, server => client
 19:28:07.546363 '331 We are happy you popped in!\r\n'
 19:28:07.546422 < 22 bytes data, client => server
 19:28:07.546433 'PASS ftp@example.com\r\n'
 19:28:07.546535 Received DATA (on stdin)
 19:28:07.546545 > 30 bytes data, server => client
 19:28:07.546555 '230 Welcome you silly person\r\n'
 19:28:07.546604 < 5 bytes data, client => server
 19:28:07.546614 'PWD\r\n'
 19:28:07.546712 Received DATA (on stdin)
 19:28:07.546722 > 30 bytes data, server => client
 19:28:07.546732 '257 "/" is current directory\r\n'
 19:28:07.546792 < 6 bytes data, client => server
 19:28:07.546802 'EPSV\r\n'
 19:28:07.554422 Received DATA (on stdin)
 19:28:07.554441 > 39 bytes data, server => client
 19:28:07.554453 '229 Entering Passive Mode (|||33559|)\r\n'
 19:28:07.554677 < 8 bytes data, client => server
 19:28:07.554696 'TYPE I\r\n'
 19:28:07.554947 Received DATA (on stdin)
 19:28:07.554961 > 33 bytes data, server => client
 19:28:07.554972 '200 I modify TYPE as you wanted\r\n'
 19:28:07.555038 < 21 bytes data, client => server
 19:28:07.555052 'SIZE verifiedserver\r\n'
 19:28:07.555193 Received DATA (on stdin)
 19:28:07.555206 > 8 bytes data, server => client
 19:28:07.555216 '213 17\r\n'
 19:28:07.555277 < 21 bytes data, client => server
 19:28:07.555291 'RETR verifiedserver\r\n'
 19:28:07.555543 Received DATA (on stdin)
 19:28:07.555555 > 29 bytes data, server => client
 19:28:07.555566 '150 Binary junk (17 bytes).\r\n'
 19:28:07.556231 Received DATA (on stdin)
 19:28:07.556245 > 28 bytes data, server => client
 19:28:07.556256 '226 File transfer complete\r\n'
 19:28:07.600936 < 6 bytes data, client => server
 19:28:07.600964 'QUIT\r\n'
 19:28:07.606160 Received DATA (on stdin)
 19:28:07.606179 > 18 bytes data, server => client
 19:28:07.606189 '221 bye bye baby\r\n'
 19:28:07.607314 ====> Client disconnect
 19:28:07.607501 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:07.553578 Running IPv4 version
 19:28:07.553808 Listening on port 33559
 19:28:07.553859 Wrote pid 142404 to log/20/server/ftp_sockdata.pid
 19:28:07.554077 Received PING (on stdin)
 19:28:07.554208 Received PORT (on stdin)
 19:28:07.554721 ====> Client connect
 19:28:07.555629 Received DATA (on stdin)
 19:28:07.555644 > 17 bytes data, server => client
 19:28:07.555655 'WE ROOLZ: 84833\r\n'
 19:28:07.555685 Received DISC (on stdin)
 19:28:07.555698 ====> Client forcibly disconnected
 19:28:07.555848 Received QUIT (on stdin)
 19:28:07.555861 quits
 19:28:07.555950 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1149
=== End of file server.cmd
=== Start of file valgrind1149
 ==142454== 
 ==142454== Process terminating with default action of signal 4 (SIGILL)
 ==142454==  Illegal opcode at address 0x492B75F
 ==142454==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142454==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142454==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142454==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142454==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142454==    by 0x49908EB: curl_version_info (version.c:600)
 ==142454==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142454==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142454==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142454==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1149
test 1153 [FTP with quoted double quotes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1153 ../src/curl -q --output log/4/curl1153.out  --include --trace-ascii log/4/trace1153 --trace-time ftp://127.0.0.1:39739/test-1153/ > log/4/stdout1153 2> log/4/stderr1153

 1153: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1153
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1153 ../src/curl -q --output log/4/curl1153.out  --include --trace-ascii log/4/trace1153 --trace-time ftp://127.0.0.1:39739/test-1153/ > log/4/stdout1153 2> log/4/stderr1153
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:08.288703 ====> Client connect
 19:28:08.288958 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:08.295502 < "USER anonymous"
 19:28:08.295557 > "331 We are happy you popped in![CR][LF]"
 19:28:08.308921 < "PASS ftp@example.com"
 19:28:08.308980 > "230 Welcome you silly person[CR][LF]"
 19:28:08.312219 < "PWD"
 19:28:08.312272 > "257 "/" is current directory[CR][LF]"
 19:28:08.312464 < "EPSV"
 19:28:08.312495 ====> Passive DATA channel requested by client
 19:28:08.312509 DATA sockfilt for passive data channel starting...
 19:28:08.314578 DATA sockfilt for passive data channel started (pid 142694)
 19:28:08.314696 DATA sockfilt for passive data channel listens on port 35565
 19:28:08.314732 > "229 Entering Passive Mode (|||35565|)[CR][LF]"
 19:28:08.314749 Client has been notified that upcoming DATA connection is awaited on port 35565
 19:28:08.315019 Client connects to port 35565
 19:28:08.315050 ====> Client established passive DATA connection on port 35565
 19:28:08.315132 < "TYPE I"
 19:28:08.315164 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:08.315331 < "SIZE verifiedserver"
 19:28:08.315376 > "213 17[CR][LF]"
 19:28:08.315561 < "RETR verifiedserver"
 19:28:08.315601 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:08.315698 =====> Closing passive DATA connection...
 19:28:08.315718 Server disconnects passive DATA connection
 19:28:08.315999 Server disconnected passive DATA connection
 19:28:08.316026 DATA sockfilt for passive data channel quits (pid 142694)
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1154 ../src/curl -q --output log/18/curl1154.out  --include --trace-ascii log/18/trace1154 --trace-time http://127.0.0.1:43739/1154 > log/18/stdout1154 2> log/18/stderr1154
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1150 ../src/curl -q --output log/9/curl1150.out  --include --trace-ascii log/9/trace1150 --trace-time --proxy http://127.0.0.1:43733 http://test.remote.example.com.1150:150/path http://test.remote.example.com.1150:1234/path/ > log/9/stdout1150 2> log/9/stderr1150
:28:08.322043 DATA sockfilt for passive data channel quit (pid 142694)
 19:28:08.322107 =====> Closed passive DATA connection
 19:28:08.322150 > "226 File transfer complete[CR][LF]"
 19:28:08.362251 < "QUIT"
 19:28:08.362317 > "221 bye bye baby[CR][LF]"
 19:28:08.372106 MAIN sockfilt said DISC
 19:28:08.372178 ====> Client disconnected
 19:28:08.372270 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:07.889245 ====> Client connect
 19:28:07.892859 Received DATA (on stdin)
 19:28:07.892889 > 146 bytes data, server => client
 19:28:07.892902 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:07.892913 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:07.892922 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:07.893022 < 16 bytes data, client => server
 19:28:07.893037 'USER anonymous\r\n'
 19:28:07.899495 Received DATA (on stdin)
 19:28:07.899511 > 33 bytes data, server => client
 19:28:07.899521 '331 We are happy you popped in!\r\n'
 19:28:07.912608 < 22 bytes data, client => server
 19:28:07.912646 'PASS ftp@example.com\r\n'
 19:28:07.912910 Received DATA (on stdin)
 19:28:07.912923 > 30 bytes data, server => client
 19:28:07.912933 '230 Welcome you silly person\r\n'
 19:28:07.915990 < 5 bytes data, client => server
 19:28:07.916013 'PWD\r\n'
 19:28:07.916197 Received DATA (on stdin)
 19:28:07.916209 > 30 bytes data, server => client
 19:28:07.916219 '257 "/" is current directory\r\n'
 19:28:07.916293 < 6 bytes data, client => server
 19:28:07.916304 'EPSV\r\n'
 19:28:07.918676 Received DATA (on stdin)
 19:28:07.918690 > 39 bytes data, server => client
 19:28:07.918701 '229 Entering Passive Mode (|||35565|)\r\n'
 19:28:07.918862 < 8 bytes data, client => server
 19:28:07.918876 'TYPE I\r\n'
 19:28:07.919085 Received DATA (on stdin)
 19:28:07.919096 > 33 bytes data, server => client
 19:28:07.919106 '200 I modify TYPE as you wanted\r\n'
 19:28:07.919163 < 21 bytes data, client => server
 19:28:07.919173 'SIZE verifiedserver\r\n'
 19:28:07.919304 Received DATA (on stdin)
 19:28:07.919316 > 8 bytes data, server => client
 19:28:07.919325 '213 17\r\n'
 19:28:07.919389 < 21 bytes data, client => server
 19:28:07.919402 'RETR verifiedserver\r\n'
 19:28:07.919644 Received DATA (on stdin)
 19:28:07.919656 > 29 bytes data, server => client
 19:28:07.919667 '150 Binary junk (17 bytes).\r\n'
 19:28:07.926087 Received DATA (on stdin)
 19:28:07.926107 > 28 bytes data, server => client
 19:28:07.926118 '226 File transfer complete\r\n'
 19:28:07.965921 < 6 bytes data, client => server
 19:28:07.965955 'QUIT\r\n'
 19:28:07.966249 Received DATA (on stdin)
 19:28:07.966266 > 18 bytes data, server => client
 19:28:07.966276 '221 bye bye baby\r\n'
 19:28:07.975922 ====> Client disconnect
 19:28:07.976193 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:08.918155 Running IPv4 version
 19:28:08.918234 Listening on port 35565
 19:28:08.918276 Wrote pid 142694 to log/4/server/ftp_sockdata.pid
 19:28:08.918440 Received PING (on stdin)
 19:28:08.918528 Received PORT (on stdin)
 19:28:08.918894 ====> Client connect
 19:28:08.919739 Received DATA (on stdin)
 19:28:08.919756 > 17 bytes data, server => client
 19:28:08.919767 'WE ROOLZ: 85249\r\n'
 19:28:08.919844 Received DISC (on stdin)
 19:28:08.919859 ====> Client forcibly disconnected
 19:28:08.919957 Received QUIT (on stdin)
 19:28:08.919969 quits
 19:28:08.920045 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 257 "/""hello"""
 Testnum 1153
=== End of file server.cmd
=== Start of file valgrind1153
 ==142724== 
 ==142724== Process terminating with default action of signal 4 (SIGILL)
 ==142724==  Illegal opcode at address 0x492B75F
 ==142724==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142724==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142724==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142724==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142724==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142724==    by 0x49908EB: curl_version_info (version.c:600)
 ==142724==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142724==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142724==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142724==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1153
test 1154 [HTTP GET with 100K (too long) response header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1154 ../src/curl -q --output log/18/curl1154.out  --include --trace-ascii log/18/trace1154 --trace-time http://127.0.0.1:43739/1154 > log/18/stdout1154 2> log/18/stderr1154

 1154: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1154
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1154 ../src/curl -q --output log/18/curl1154.out  --include --trace-ascii log/18/trace1154 --trace-time http://127.0.0.1:43739/1154 > log/18/stdout1154 2> log/18/stderr1154
=== End of file commands.log
=== Start of file http_server.log
 19:28:08.929323 ====> Client connect
 19:28:08.929371 accept_connection 3 returned 4
 19:28:08.932789 Read 93 bytes
 19:28:08.932818 Process 93 bytes request
 19:28:08.932833 Got request: GET /verifiedserver HTTP/1.1
 19:28:08.932841 Are-we-friendly question received
 19:28:08.932892 Wrote request (93 bytes) input to log/18/server.input
 19:28:08.932913 Identifying ourselves as friends
 19:28:08.934190 Response sent (56 bytes) and written to log/18/server.response
 19:28:08.934205 special request received, no persistency
 19:28:08.934215 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 36042 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1154
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1154
 ==142708== 
 ==142708== Process terminating with default action of signal 4 (SIGILL)
 ==142708==  Illegal opcode at address 0x492B75F
 ==142708==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142708==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142708==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142708==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142708==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142708==    by 0x49908EB: curl_version_info (version.c:600)
 ==142708==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142708==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142708==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142708==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1154
test 1150 [HTTP proxy with URLs using different ports]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1150 ../src/curl -q --output log/9/curl1150.out  --include --trace-ascii log/9/trace1150 --trace-time --proxy http://127.0.0.1:43733 http://test.remote.example.com.1150:150/path http://test.remote.example.com.1150:1234/path/ > log/9/stdout1150 2> log/9/stderr1150

 1150: protCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1162 ./libtest/libtests lib576 "ftp://127.0.0.1:39641/fully_simulated/DOS/[*\\s-'tl" > log/5/stdout1162 2> log/5/stderr1162
ocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1150
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1150 ../src/curl -q --output log/9/curl1150.out  --include --trace-ascii log/9/trace1150 --trace-time --proxy http://127.0.0.1:43733 http://test.remote.example.com.1150:150/path http://test.remote.example.com.1150:1234/path/ > log/9/stdout1150 2> log/9/stderr1150
=== End of file commands.log
=== Start of file http_server.log
 19:28:07.695982 ====> Client connect
 19:28:07.696022 accept_connection 3 returned 4
 19:28:07.696048 Read 93 bytes
 19:28:07.696060 Process 93 bytes request
 19:28:07.696072 Got request: GET /verifiedserver HTTP/1.1
 19:28:07.696080 Are-we-friendly question received
 19:28:07.696104 Wrote request (93 bytes) input to log/9/server.input
 19:28:07.696119 Identifying ourselves as friends
 19:28:07.696204 Response sent (56 bytes) and written to log/9/server.response
 19:28:07.696213 special request received, no persistency
 19:28:07.696221 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 46326 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1150
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1150
 ==142506== 
 ==142506== Process terminating with default action of signal 4 (SIGILL)
 ==142506==  Illegal opcode at address 0x492B75F
 ==142506==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142506==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142506==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142506==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142506==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142506==    by 0x49908EB: curl_version_info (version.c:600)
 ==142506==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142506==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1150
setenv MSYS2_ARG_CONV_EXCL = ftp://
test 1162 [FTP wildcard with crazy pattern]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1162 ./libtest/libtests lib576 "ftp://127.0.0.1:39641/fully_simulated/DOS/[*\\s-'tl" > log/5/stdout1162 2> log/5/stderr1162

 1162: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1162
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1162 ./libtest/libtests lib576 "ftp://127.0.0.1:39641/fully_simulated/DOS/[*\\s-'tl" > log/5/stdout1162 2> log/5/stderr1162
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:09.572143 ====> Client connect
 19:28:09.572501 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:09.575575 < "USER anonymous"
 19:28:09.575619 > "331 We are happy you popped in![CR][LF]"
 19:28:09.575780 < "PASS ftp@example.com"
 19:28:09.575804 > "230 Welcome you silly person[CR][LF]"
 19:28:09.575942 < "PWD"
 19:28:09.575973 > "257 "/" is current directory[CR][LF]"
 19:28:09.576121 < "EPSV"
 19:28:09.576146 ====> Passive DATA channel requested by client
 19:28:09.576159 DATA sockfilt for passive data channel starting...
 19:28:09.585466 DATA sockfilt for passive data channel started (pid 143338)
 19:28:09.585660 DATA sockfilt for passive data channel listens on port 36725
 19:28:09.585716 > "229 Entering Passive Mode (|||36725|)[CR][LF]"
 19:28:09.585736 Client has been notified that upcoming DATA connection is awaited on port 36725
 19:28:09.586117 Client connects to port 36725
 19:28:09.586156 ====> Client established passive DATA connection on port 36725
 19:28:09.586264 < "TYPE I"
 19:28:09.586301 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:09.586474 < "SIZE verifiedserver"
 19:28:09.586517 > "213 17[CR][LF]"
 19:28:09.586678 < "RETR verifiedserver"
 19:28:09.586717 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:09.586822 =====> Closing passive DATA connection...
 19:28:09.586840 Server disconnects passive DATA connection
 19:28:09.587072 Server disconnected passive DATA connection
 19:28:09.587102 DATA sockfilt for passive data channel quits (pid 143338)
 19:28:09.587382 DATA sockfilt for passive data channel quit (pid 143338)
 19:28:09.587408 =====> Closed passive DATA connection
 19:28:09.587437 > "226 File transfer complete[CR][LF]"
 19:28:09.635682 < "QUIT"
 19:28:09.635744 > "221 bye bye baby[CR][LF]"
 19:28:09.636952 MAIN sockfilt said DISC
 19:28:09.636983 ====> Client disconnected
 19:28:09.637072 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:09.175844 ====> Client connect
 19:28:09.176176 Received DATA (on stdin)
 19:28:09.176198 > 146 bytes data, server => client
 19:28:09.176221 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:09.176232 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:09.176241 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:09.179235 < 16 bytes data, client => server
 19:28:09.179258 'USER anonymous\r\n'
 19:28:09.179460 Received DATA (on stdin)
 19:28:09.179471 > 33 bytes data, server => client
 19:28:09.179481 '331 We are happy you popped in!\r\n'
 19:28:09.179534 < 22 bytes data, client => server
 19:28:09.179544 'PASS ftp@example.com\r\n'
 19:28:09.179641 Received DATA (on stdin)
 19:28:09.179651 > 30 bytes data, server => client
 19:28:09.179661 '230 Welcome you silly person\r\n'
 19:28:09.179704 < 5 bytes data, client => server
 19:28:09.179713 'PWD\r\n'
 19:28:09.179811 Received DATA (on stdin)
 19:28:09.179821 > 30 bytes data, server => client
 19:28:09.179830 '257 "/" is current directory\r\n'
 19:28:09.179883 < 6 bytes data, client => server
 19:28:09.179892 'EPSV\r\n'
 19:28:09.189586 Received DATA (on stdin)
 19:28:09.189604 > 39 bytes data, server => client
 19:28:09.189614 '229 Entering Passive Mode (|||36725|)\r\n'
 19:28:09.189865 < 8 bytes data, client => server
 19:28:09.189882 'TYPE I\r\n'
 19:28:09.190141 Received DATA (on stdin)
 19:28:09.190153 > 33 bytes data, server => client
 19:28:09.190163 '200 I modify TYPE as you wanted\r\n'
 19:28:09.190221 < 21 bytes data, client => server
 19:28:09.190233 'SIZE verifiedserver\r\n'
 19:28:09.190355 Received DATA (on stdin)
 19:28:09.190366 > 8 bytes data, server => client
 19:28:09.190376 '213 17\r\n'
 19:28:09.190429 < 21 bytes data, client => server
 19:28:09.190441 'RETR verifiedserver\r\n'
 19:28:09.190679 Received DATA (on stdin)
 19:28:09.190690 > 29 bytes data, server => client
 19:28:09.190700 '150 Binary junk (17 bytes).\r\n'
 19:28:09.191275 Received DATA (on stdin)
 19:28:09.191287 > 28 bytes data, server => client
 19:28:09.191298 '226 File transfer complete\r\n'
 19:28:09.239297 < 6 bytes data, client => server
 19:28:09.239328 'QUIT\r\n'
 19:28:09.239582 Received DATA (on stdin)
 19:28:09.239594 > 18 bytes CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1155 ../src/curl -q --output log/16/curl1155.out  --include --trace-ascii log/16/trace1155 --trace-time http://127.0.0.1:35903/1155 -c log/16/cookies1155.txt > log/16/stdout1155 2> log/16/stderr1155
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1160 ../src/curl -q --output log/19/curl1160.out  --include --trace-ascii log/19/trace1160 --trace-time http://127.0.0.1:46497/1160 -c log/19/cookies1160.txt > log/19/stdout1160 2> log/19/stderr1160
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1163 ./libtest/libtests lib576 "ftp://127.0.0.1:44283/fully_simulated/DOS/*[][" > log/7/stdout1163 2> log/7/stderr1163
data, server => client
 19:28:09.239603 '221 bye bye baby\r\n'
 19:28:09.240733 ====> Client disconnect
 19:28:09.240907 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:09.183699 Running IPv4 version
 19:28:09.183780 Listening on port 36725
 19:28:09.183816 Wrote pid 143338 to log/5/server/ftp_sockdata.pid
 19:28:09.189170 Received PING (on stdin)
 19:28:09.189380 Received PORT (on stdin)
 19:28:09.189906 ====> Client connect
 19:28:09.190727 Received DATA (on stdin)
 19:28:09.190739 > 17 bytes data, server => client
 19:28:09.190748 'WE ROOLZ: 85245\r\n'
 19:28:09.190773 Received DISC (on stdin)
 19:28:09.190785 ====> Client forcibly disconnected
 19:28:09.190953 Received QUIT (on stdin)
 19:28:09.190964 quits
 19:28:09.191032 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1162
=== End of file server.cmd
=== Start of file valgrind1162
 ==143360== 
 ==143360== Process terminating with default action of signal 4 (SIGILL)
 ==143360==  Illegal opcode at address 0x51CC63F
 ==143360==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==143360==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==143360==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==143360==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1162
test 1155 [HTTP cookie with parameter word as name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1155 ../src/curl -q --output log/16/curl1155.out  --include --trace-ascii log/16/trace1155 --trace-time http://127.0.0.1:35903/1155 -c log/16/cookies1155.txt > log/16/stdout1155 2> log/16/stderr1155

 1155: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1155
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1155 ../src/curl -q --output log/16/curl1155.out  --include --trace-ascii log/16/trace1155 --trace-time http://127.0.0.1:35903/1155 -c log/16/cookies1155.txt > log/16/stdout1155 2> log/16/stderr1155
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.096146 ====> Client connect
 19:28:09.096183 accept_connection 3 returned 4
 19:28:09.096204 Read 93 bytes
 19:28:09.096214 Process 93 bytes request
 19:28:09.096227 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.096235 Are-we-friendly question received
 19:28:09.096261 Wrote request (93 bytes) input to log/16/server.input
 19:28:09.096276 Identifying ourselves as friends
 19:28:09.096332 Response sent (56 bytes) and written to log/16/server.response
 19:28:09.096340 special request received, no persistency
 19:28:09.096348 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 37426 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1155
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1155
 ==142827== 
 ==142827== Process terminating with default action of signal 4 (SIGILL)
 ==142827==  Illegal opcode at address 0x492B75F
 ==142827==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==142827==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==142827==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==142827==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==142827==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==142827==    by 0x49908EB: curl_version_info (version.c:600)
 ==142827==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==142827==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==142827==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==142827==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1155
test 1160 [HTTP with long funny format cookie]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1160 ../src/curl -q --output log/19/curl1160.out  --include --trace-ascii log/19/trace1160 --trace-time http://127.0.0.1:46497/1160 -c log/19/cookies1160.txt > log/19/stdout1160 2> log/19/stderr1160

 1160: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1160
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1160 ../src/curl -q --output log/19/curl1160.out  --include --trace-ascii log/19/trace1160 --trace-time http://127.0.0.1:46497/1160 -c log/19/cookies1160.txt > log/19/stdout1160 2> log/19/stderr1160
=== End of file commands.log
=== Start of file http_server.log
 19:28:08.882588 ====> Client connect
 19:28:08.882637 accept_connection 3 returned 4
 19:28:08.882666 Read 93 bytes
 19:28:08.882677 Process 93 bytes request
 19:28:08.882691 Got request: GET /verifiedserver HTTP/1.1
 19:28:08.882700 Are-we-friendly question received
 19:28:08.882730 Wrote request (93 bytes) input to log/19/server.input
 19:28:08.882749 Identifying ourselves as friends
 19:28:08.882840 Response sent (56 bytes) and written to log/19/server.response
 19:28:08.882851 special request received, no persistency
 19:28:08.882859 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 34206 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1160
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind1160
 ==143202== 
 ==143202== Process terminating with default action of signal 4 (SIGILL)
 ==143202==  Illegal opcode at address 0x492B75F
 ==143202==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143202==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143202==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143202==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143202==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143202==    by 0x49908EB: curl_version_info (version.c:600)
 ==143202==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143202==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143202==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143202==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1160
test 1163 [FTP wildcard with pattern ending with an open-bracket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1163 ./libtest/libtests lib576 "ftp://127.0.0.1:44283/fully_simulated/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1159 ../src/curl -q --include --trace-ascii log/2/trace1159 --trace-time http://127.0.0.1:34531/we/want/our/1159 -w '%{redirect_url}\n' > log/2/stdout1159 2> log/2/stderr1159
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1158 ../src/curl -q --output log/17/curl1158.out  --include --trace-ascii log/17/trace1158 --trace-time http://127.0.0.1:35993/we/want/1158 -F "file=@\"log/17/test1158\\\".txt\";type=mo/foo;filename=\"test1158\\\".txt\"" -F 'file2=@"log/17/test1158\".txt"' -F 'file3=@"log/17/test1158\".txt";type=m/f,"log/17/test1158\".txt"' > log/17/stdout1158 2> log/17/stderr1158
DOS/*[][" > log/7/stdout1163 2> log/7/stderr1163

 1163: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1163
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1163 ./libtest/libtests lib576 "ftp://127.0.0.1:44283/fully_simulated/DOS/*[][" > log/7/stdout1163 2> log/7/stderr1163
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:09.561178 ====> Client connect
 19:28:09.561400 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:09.561712 < "USER anonymous"
 19:28:09.561746 > "331 We are happy you popped in![CR][LF]"
 19:28:09.561900 < "PASS ftp@example.com"
 19:28:09.561922 > "230 Welcome you silly person[CR][LF]"
 19:28:09.562081 < "PWD"
 19:28:09.562115 > "257 "/" is current directory[CR][LF]"
 19:28:09.562267 < "EPSV"
 19:28:09.562293 ====> Passive DATA channel requested by client
 19:28:09.562305 DATA sockfilt for passive data channel starting...
 19:28:09.569937 DATA sockfilt for passive data channel started (pid 143336)
 19:28:09.570092 DATA sockfilt for passive data channel listens on port 34333
 19:28:09.570141 > "229 Entering Passive Mode (|||34333|)[CR][LF]"
 19:28:09.570156 Client has been notified that upcoming DATA connection is awaited on port 34333
 19:28:09.575581 Client connects to port 34333
 19:28:09.575631 ====> Client established passive DATA connection on port 34333
 19:28:09.575733 < "TYPE I"
 19:28:09.575769 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:09.575911 < "SIZE verifiedserver"
 19:28:09.575944 > "213 17[CR][LF]"
 19:28:09.576074 < "RETR verifiedserver"
 19:28:09.576103 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:09.576182 =====> Closing passive DATA connection...
 19:28:09.576197 Server disconnects passive DATA connection
 19:28:09.576392 Server disconnected passive DATA connection
 19:28:09.576415 DATA sockfilt for passive data channel quits (pid 143336)
 19:28:09.576648 DATA sockfilt for passive data channel quit (pid 143336)
 19:28:09.576668 =====> Closed passive DATA connection
 19:28:09.576692 > "226 File transfer complete[CR][LF]"
 19:28:09.621096 < "QUIT"
 19:28:09.621149 > "221 bye bye baby[CR][LF]"
 19:28:09.625414 MAIN sockfilt said DISC
 19:28:09.625464 ====> Client disconnected
 19:28:09.625545 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:10.164868 ====> Client connect
 19:28:10.165254 Received DATA (on stdin)
 19:28:10.165269 > 146 bytes data, server => client
 19:28:10.165280 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:10.165291 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:10.165302 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:10.165407 < 16 bytes data, client => server
 19:28:10.165419 'USER anonymous\r\n'
 19:28:10.165587 Received DATA (on stdin)
 19:28:10.165599 > 33 bytes data, server => client
 19:28:10.165609 '331 We are happy you popped in!\r\n'
 19:28:10.165659 < 22 bytes data, client => server
 19:28:10.165669 'PASS ftp@example.com\r\n'
 19:28:10.165756 Received DATA (on stdin)
 19:28:10.165765 > 30 bytes data, server => client
 19:28:10.165773 '230 Welcome you silly person\r\n'
 19:28:10.165839 < 5 bytes data, client => server
 19:28:10.165850 'PWD\r\n'
 19:28:10.165952 Received DATA (on stdin)
 19:28:10.165961 > 30 bytes data, server => client
 19:28:10.165970 '257 "/" is current directory\r\n'
 19:28:10.166027 < 6 bytes data, client => server
 19:28:10.166037 'EPSV\r\n'
 19:28:10.174005 Received DATA (on stdin)
 19:28:10.174022 > 39 bytes data, server => client
 19:28:10.174031 '229 Entering Passive Mode (|||34333|)\r\n'
 19:28:10.179320 < 8 bytes data, client => server
 19:28:10.179342 'TYPE I\r\n'
 19:28:10.179606 Received DATA (on stdin)
 19:28:10.179617 > 33 bytes data, server => client
 19:28:10.179626 '200 I modify TYPE as you wanted\r\n'
 19:28:10.179674 < 21 bytes data, client => server
 19:28:10.179683 'SIZE verifiedserver\r\n'
 19:28:10.179780 Received DATA (on stdin)
 19:28:10.179789 > 8 bytes data, server => client
 19:28:10.179797 '213 17\r\n'
 19:28:10.179840 < 21 bytes data, client => server
 19:28:10.179850 'RETR verifiedserver\r\n'
 19:28:10.180109 Received DATA (on stdin)
 19:28:10.180119 > 29 bytes data, server => client
 19:28:10.180128 '150 Binary junk (17 bytes).\r\n'
 19:28:10.180528 Received DATA (on stdin)
 19:28:10.180538 > 28 bytes data, server => client
 19:28:10.180547 '226 File transfer complete\r\n'
 19:28:10.224730 < 6 bytes data, client => server
 19:28:10.224754 'QUIT\r\n'
 19:28:10.224986 Received DATA (on stdin)
 19:28:10.224995 > 18 bytes data, server => client
 19:28:10.225004 '221 bye bye baby\r\n'
 19:28:10.229178 ====> Client disconnect
 19:28:10.229387 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:09.173361 Running IPv4 version
 19:28:09.173474 Listening on port 34333
 19:28:09.173518 Wrote pid 143336 to log/7/server/ftp_sockdata.pid
 19:28:09.173708 Received PING (on stdin)
 19:28:09.173824 Received PORT (on stdin)
 19:28:09.179364 ====> Client connect
 19:28:09.180035 Received DATA (on stdin)
 19:28:09.180045 > 17 bytes data, server => client
 19:28:09.180054 'WE ROOLZ: 84721\r\n'
 19:28:09.180078 Received DISC (on stdin)
 19:28:09.180088 ====> Client forcibly disconnected
 19:28:09.180258 Received QUIT (on stdin)
 19:28:09.180267 quits
 19:28:09.180334 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1163
=== End of file server.cmd
=== Start of file valgrind1163
 ==143387== 
 ==143387== Process terminating with default action of signal 4 (SIGILL)
 ==143387==  Illegal opcode at address 0x51CC63F
 ==143387==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==143387==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==143387==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==143387==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1163
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1164 ../src/curl -q --output log/12/curl1164.out  --include --trace-ascii log/12/trace1164 --trace-time http://127.0.0.1:40921/1164 -w '%{size_download}\n' --http0.9 > log/12/stdout1164 2> log/12/stderr1164
test 1159 [HTTP Location: and 'redirect_url' with non-supported scheme]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1159 ../src/curl -q --include --trace-ascii log/2/trace1159 --trace-time http://127.0.0.1:34531/we/want/our/1159 -w '%{redirect_url}\n' > log/2/stdout1159 2> log/2/stderr1159

 1159: stdout FAILED:
--- log/2/check-expected	2026-10-15 19:28:11.803428384 +0000
+++ log/2/check-generated	2026-10-15 19:28:11.801156326 +0000
@@ -1,7 +0,0 @@
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: ht3p://localhost/[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-This server reply is for testing a simple Location: following[LF]
-ht3p://localhost/[LF]
== Contents of files in the log/2/ directory after test 1159
=== Start of file check-expected
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: ht3p://localhost/[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 This server reply is for testing a simple Location: following[LF]
 ht3p://localhost/[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1159 ../src/curl -q --include --trace-ascii log/2/trace1159 --trace-time http://127.0.0.1:34531/we/want/our/1159 -w '%{redirect_url}\n' > log/2/stdout1159 2> log/2/stderr1159
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.692601 ====> Client connect
 19:28:09.692645 accept_connection 3 returned 4
 19:28:09.692670 Read 93 bytes
 19:28:09.692679 Process 93 bytes request
 19:28:09.692691 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.692699 Are-we-friendly question received
 19:28:09.692724 Wrote request (93 bytes) input to log/2/server.input
 19:28:09.692739 Identifying ourselves as friends
 19:28:09.692820 Response sent (56 bytes) and written to log/2/server.response
 19:28:09.692828 special request received, no persistency
 19:28:09.692836 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 41884 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1159
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1159
 ==143116== 
 ==143116== Process terminating with default action of signal 4 (SIGILL)
 ==143116==  Illegal opcode at address 0x492B75F
 ==143116==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143116==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143116==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143116==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143116==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143116==    by 0x49908EB: curl_version_info (version.c:600)
 ==143116==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143116==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143116==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1159
test 1158 [HTTP RFC1867-type formposting with filename containing '"']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1158 ../src/curl -q --output log/17/curl1158.out  --include --trace-ascii log/17/trace1158 --trace-time http://127.0.0.1:35993/we/want/1158 -F "file=@\"log/17/test1158\\\".txt\";type=mo/foo;filename=\"test1158\\\".txt\"" -F 'file2=@"log/17/test1158\".txt"' -F 'file3=@"log/17/test1158\".txt";type=m/f,"log/17/test1158\".txt"' > log/17/stdout1158 2> log/17/stderr1158

 1158: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1158
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1158 ../src/curl -q --output log/17/curl1158.out  --include --trace-ascii log/17/trace1158 --trace-time http://127.0.0.1:35993/we/want/1158 -F "file=@\"log/17/test1158\\\".txt\";type=mo/foo;filename=\"test1158\\\".txt\"" -F 'file2=@"log/17/test1158\".txt"' -F 'file3=@"log/17/test1158\".txt";type=m/f,"log/17/test1158\".txt"' > log/17/stdout1158 2> log/17/stderr1158
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.493472 ====> Client connect
 19:28:09.493511 accept_connection 3 returned 4
 19:28:09.493534 Read 93 bytes
 19:28:09.493544 Process 93 bytes request
 19:28:09.493557 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.493565 Are-we-friendly question received
 19:28:09.493594 Wrote request (93 bytes) input to log/17/server.input
 19:28:09.493611 Identifying ourselves as friends
 19:28:09.493675 Response sent (56 bytes) and written to log/17/server.response
 19:28:09.493685 special request received, no persistency
 19:28:09.493694 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 36790 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1158
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file test1158".txt
 foo bar
 This is a bar foo
 bar
 foo
=== End of file test1158".txt
=== Start of file valgrind1158
 ==143040== 
 ==143040== Process terminating with default action of signal 4 (SIGILL)
 ==143040==  Illegal opcode at address 0x492B75F
 ==143040==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143040==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143040==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143040==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143040==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143040==    by 0x49908EB: curl_version_info (version.c:600)
 ==143040==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143040==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143040==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143040==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1158
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1166 ../src/curl -q --output log/15/curl1166.out  --include --trace-ascii log/15/trace1166 --trace-time http://127.0.0.1:40321/want/1166 http://127.0.0.1:40321/want/1166 > log/15/stdout1166 2> log/15/stderr1166
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1161 ../src/curl -q --output log/21/curl1161.out  --include --trace-ascii log/21/trace1161 --trace-time http://127.0.0.1:39881/1161 -c log/21/cookies1161.txt > log/21/stdout1161 2> log/21/stderr1161
test 1164 [HTTP/0.9 GET and all zeroes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1164 ../src/curl -q --output log/12/curl1164.out  --include --trace-ascii log/12/trace1164 --trace-time http://127.0.0.1:40921/1164 -w '%{size_download}\n' --http0.9 > log/12/stdout1164 2> log/12/stderr1164

 1164: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:11.958127732 +0000
+++ log/12/check-generated	2026-10-15 19:28:11.954499115 +0000
@@ -1 +0,0 @@
-208[CR][LF]
== Contents of files in the log/12/ directory after test 1164
=== Start of file check-expected
 208[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1164 ../src/curl -q --output log/12/curl1164.out  --include --trace-ascii log/12/trace1164 --trace-time http://127.0.0.1:40921/1164 -w '%{size_download}\n' --http0.9 > log/12/stdout1164 2> log/12/stderr1164
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.252309 ====> Client connect
 19:28:09.252349 accept_connection 3 returned 4
 19:28:09.259432 Read 93 bytes
 19:28:09.259461 Process 93 bytes request
 19:28:09.259475 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.259484 Are-we-friendly question received
 19:28:09.259537 Wrote request (93 bytes) input to log/12/server.input
 19:28:09.259557 Identifying ourselves as friends
 19:28:09.259623 Response sent (56 bytes) and written to log/12/server.response
 19:28:09.259633 special request received, no persistency
 19:28:09.259642 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59080 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1164
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1164
 ==143364== 
 ==143364== Process terminating with default action of signal 4 (SIGILL)
 ==143364==  Illegal opcode at address 0x492B75F
 ==143364==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143364==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143364==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143364==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143364==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143364==    by 0x49908EB: curl_version_info (version.c:600)
 ==143364==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143364==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143364==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143364==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1164
test 1166 [HTTP response with cookies but not receiving!]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1166 ../src/curl -q --output log/15/curl1166.out  --include --trace-ascii log/15/trace1166 --trace-time http://127.0.0.1:40321/want/1166 http://127.0.0.1:40321/want/1166 > log/15/stdout1166 2> log/15/stderr1166

 1166: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1166
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1166 ../src/curl -q --output log/15/curl1166.out  --include --trace-ascii log/15/trace1166 --trace-time http://127.0.0.1:40321/want/1166 http://127.0.0.1:40321/want/1166 > log/15/stdout1166 2> log/15/stderr1166
=== End of file commands.log
=== Start of file http_server.log
 19:28:10.487671 ====> Client connect
 19:28:10.487710 accept_connection 3 returned 4
 19:28:10.487735 Read 93 bytes
 19:28:10.487746 Process 93 bytes request
 19:28:10.487758 Got request: GET /verifiedserver HTTP/1.1
 19:28:10.487767 Are-we-friendly question received
 19:28:10.487797 Wrote request (93 bytes) input to log/15/server.input
 19:28:10.487817 Identifying ourselves as friends
 19:28:10.487887 Response sent (56 bytes) and written to log/15/server.response
 19:28:10.487898 special request received, no persistency
 19:28:10.487906 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 53242 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1166
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1166
 ==143536== 
 ==143536== Process terminating with default action of signal 4 (SIGILL)
 ==143536==  Illegal opcode at address 0x492B75F
 ==143536==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143536==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143536==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143536==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143536==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143536==    by 0x49908EB: curl_version_info (version.c:600)
 ==143536==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143536==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1166
test 1161 [HTTP cookie with path set twice]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1161 ../src/curl -q --output log/21/curl1161.out  --include --trace-ascii log/21/trace1161 --trace-time http://127.0.0.1:39881/1161 -c log/21/cookies1161.txt > log/21/stdout1161 2> log/21/stderr1161

 1161: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1161
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1161 ../src/curl -q --output log/21/curl1161.out  --include --trace-ascii log/21/trace1161 --trace-time http://127.0.0.1:39881/1161 -c log/21/cookies1161.txt > log/21/stdout1161 2> log/21/stderr1161
=== End of file commands.log
=== Start of file http_server.log
 19:28:08.900844 ====> Client connect
 19:28:08.900881 accept_connection 3 returned 4
 19:28:08.906040 Read 93 bytes
 19:28:08.906066 Process 93 bytes request
 19:28:08.906080 Got request: GET /verifiedserver HTTP/1.1
 19:28:08.906088 Are-we-friendly question received
 19:28:08.906137 Wrote request (93 bytes) input to log/21/server.input
 19:28:08.906158 Identifying ourselves as friends
 19:28:08.906219 RespCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1171 ../src/curl -q --output log/11/curl1171.out  --include --trace-ascii log/11/trace1171 --trace-time http://127.0.0.1:40989/1171 --tr-encoding -H "Connection;" > log/11/stdout1171 2> log/11/stderr1171
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1172 ../src/curl -q --output log/3/curl1172.out  --include --trace-ascii log/3/trace1172 --trace-time http://127.0.0.1:36161/1172 --no-http0.9 > log/3/stdout1172 2> log/3/stderr1172
onse sent (56 bytes) and written to log/21/server.response
 19:28:08.906229 special request received, no persistency
 19:28:08.906237 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 37578 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1161
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1161
 ==143209== 
 ==143209== Process terminating with default action of signal 4 (SIGILL)
 ==143209==  Illegal opcode at address 0x492B75F
 ==143209==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143209==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143209==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143209==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143209==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143209==    by 0x49908EB: curl_version_info (version.c:600)
 ==143209==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143209==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143209==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143209==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1161
test 1171 [HTTP GET transfer-encoding with blanked Connection:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1171 ../src/curl -q --output log/11/curl1171.out  --include --trace-ascii log/11/trace1171 --trace-time http://127.0.0.1:40989/1171 --tr-encoding -H "Connection;" > log/11/stdout1171 2> log/11/stderr1171

 1171: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1171
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1171 ../src/curl -q --output log/11/curl1171.out  --include --trace-ascii log/11/trace1171 --trace-time http://127.0.0.1:40989/1171 --tr-encoding -H "Connection;" > log/11/stdout1171 2> log/11/stderr1171
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.759695 ====> Client connect
 19:28:09.759730 accept_connection 3 returned 4
 19:28:09.759751 Read 93 bytes
 19:28:09.759760 Process 93 bytes request
 19:28:09.759771 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.759779 Are-we-friendly question received
 19:28:09.759803 Wrote request (93 bytes) input to log/11/server.input
 19:28:09.759817 Identifying ourselves as friends
 19:28:09.759883 Response sent (56 bytes) and written to log/11/server.response
 19:28:09.759891 special request received, no persistency
 19:28:09.759899 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 54242 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1171
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1171
 ==143691== 
 ==143691== Process terminating with default action of signal 4 (SIGILL)
 ==143691==  Illegal opcode at address 0x492B75F
 ==143691==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143691==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143691==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143691==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143691==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143691==    by 0x49908EB: curl_version_info (version.c:600)
 ==143691==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143691==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143691==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143691==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1171
test 1172 [HTTP/0.9 GET response denied]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1172 ../src/curl -q --output log/3/curl1172.out  --include --trace-ascii log/3/trace1172 --trace-time http://127.0.0.1:36161/1172 --no-http0.9 > log/3/stdout1172 2> log/3/stderr1172

 1172: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1172
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1172 ../src/curl -q --output log/3/curl1172.out  --include --trace-ascii log/3/trace1172 --trace-time http://127.0.0.1:36161/1172 --no-http0.9 > log/3/stdout1172 2> log/3/stderr1172
=== End of file commands.log
=== Start of file http_server.log
 19:28:10.872177 ====> Client connect
 19:28:10.872216 accept_connection 3 returned 4
 19:28:10.872332 Read 93 bytes
 19:28:10.872347 Process 93 bytes request
 19:28:10.872361 Got request: GET /verifiedserver HTTP/1.1
 19:28:10.872371 Are-we-friendly question received
 19:28:10.872405 Wrote request (93 bytes) input to log/3/server.input
 19:28:10.872453 Identifying ourselves as friends
 19:28:10.872522 Response sent (56 bytes) and written to log/3/server.response
 19:28:10.872532 special request received, no persistency
 19:28:10.872541 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 58676 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1172
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1172
 ==143808== 
 ==143808== Process terminating with default action of signal 4 (SIGILL)
 ==143808==  Illegal opcode at address 0x492B75F
 ==143808==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143808==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143808==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143808==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143808==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143808==    by 0x49908EB: curl_version_info (version.c:600)
 ==143808==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143808==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143808==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143808==    by 0x400CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1168 ../src/curl -q --output log/22/curl1168.out  --include --trace-ascii log/22/trace1168 --trace-time http://127.0.0.1:35989/want/1168 -L -u "catmai#d:#DZaRJYrixKE*gFY" > log/22/stdout1168 2> log/22/stderr1168
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1176 ../src/curl -q --include --trace-ascii log/8/trace1176 --trace-time http://127.0.0.1:44467/1176 -o 'log/8/base-#0' > log/8/stdout1176 2> log/8/stderr1176
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1170 ../src/curl -q --output log/6/curl1170.out  --include --trace-ascii log/6/trace1170 --trace-time http://127.0.0.1:33935/1170 --tr-encoding -H "Connection:" > log/6/stdout1170 2> log/6/stderr1170
3269: main (tool_main.c:195)
=== End of file valgrind1172
test 1168 [HTTP redirect with credentials using # in user and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1168 ../src/curl -q --output log/22/curl1168.out  --include --trace-ascii log/22/trace1168 --trace-time http://127.0.0.1:35989/want/1168 -L -u "catmai#d:#DZaRJYrixKE*gFY" > log/22/stdout1168 2> log/22/stderr1168

 1168: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1168
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1168 ../src/curl -q --output log/22/curl1168.out  --include --trace-ascii log/22/trace1168 --trace-time http://127.0.0.1:35989/want/1168 -L -u "catmai#d:#DZaRJYrixKE*gFY" > log/22/stdout1168 2> log/22/stderr1168
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.678771 ====> Client connect
 19:28:09.678806 accept_connection 3 returned 4
 19:28:09.678827 Read 93 bytes
 19:28:09.678836 Process 93 bytes request
 19:28:09.678849 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.678857 Are-we-friendly question received
 19:28:09.678882 Wrote request (93 bytes) input to log/22/server.input
 19:28:09.678897 Identifying ourselves as friends
 19:28:09.678955 Response sent (56 bytes) and written to log/22/server.response
 19:28:09.678964 special request received, no persistency
 19:28:09.678972 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 43352 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1168
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1168
 ==143632== 
 ==143632== Process terminating with default action of signal 4 (SIGILL)
 ==143632==  Illegal opcode at address 0x492B75F
 ==143632==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143632==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143632==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143632==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143632==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143632==    by 0x49908EB: curl_version_info (version.c:600)
 ==143632==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143632==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143632==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143632==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1168
test 1176 [--output using #0]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1176 ../src/curl -q --include --trace-ascii log/8/trace1176 --trace-time http://127.0.0.1:44467/1176 -o 'log/8/base-#0' > log/8/stdout1176 2> log/8/stderr1176

 1176: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1176
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1176 ../src/curl -q --include --trace-ascii log/8/trace1176 --trace-time http://127.0.0.1:44467/1176 -o 'log/8/base-#0' > log/8/stdout1176 2> log/8/stderr1176
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.949231 ====> Client connect
 19:28:09.949274 accept_connection 3 returned 4
 19:28:09.949296 Read 93 bytes
 19:28:09.949306 Process 93 bytes request
 19:28:09.949318 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.949327 Are-we-friendly question received
 19:28:09.949354 Wrote request (93 bytes) input to log/8/server.input
 19:28:09.949370 Identifying ourselves as friends
 19:28:09.949447 Response sent (56 bytes) and written to log/8/server.response
 19:28:09.949457 special request received, no persistency
 19:28:09.949466 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 50616 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1176
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1176
 ==143890== 
 ==143890== Process terminating with default action of signal 4 (SIGILL)
 ==143890==  Illegal opcode at address 0x492B75F
 ==143890==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143890==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143890==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143890==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143890==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143890==    by 0x49908EB: curl_version_info (version.c:600)
 ==143890==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143890==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143890==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143890==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1176
test 1170 [HTTP GET transfer-encoding with removed Connection:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1170 ../src/curl -q --output log/6/curl1170.out  --include --trace-ascii log/6/trace1170 --trace-time http://127.0.0.1:33935/1170 --tr-encoding -H "Connection:" > log/6/stdout1170 2> log/6/stderr1170

 1170: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1170
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1170 ../src/curl -q --output log/6/curl1170.out  --include --trace-ascii log/6/trace1170 --trace-time http://127.0.0.1:33935/1170 --tr-encoding -H "Connection:" > log/6/stdout1170 2> log/6/stderr1170
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.689209 ====> Client connect
 19:28:09.689255 accept_connection 3 returned 4
 19:28:09.689282 Read 93 bytes
 19:28:09.689291 Process 93 bytes request
 19:28:09.689302 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.689310 Are-we-friendly question received
 19:28:09.689335 Wrote request (93 bytes) input to log/6/server.input
 19:28:09.689351 Identifying ourselves as friends
 19:28:09.689449 Response sent (56 bytes) and written to log/6/server.response
 19:28:09.689458 special request received, no persistency
 19:28:09.689467 ===CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1178 ../src/curl -q --output log/13/curl1178.out  --include --trace-ascii log/13/trace1178 --trace-time http://127.0.0.1:38821/we/want/that/page/1178 -x http://127.0.0.1:38821 -U AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB > log/13/stdout1178 2> log/13/stderr1178
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1181 ../src/curl -q --output log/1/curl1181.out  --include --trace-ascii log/1/trace1181 --trace-time --proxy http://127.0.0.1:38815 --proxy-header "Proxy-Connection: Keep-Alive" http://127.0.0.1:38815/1181 > log/1/stdout1181 2> log/1/stderr1181
=> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 43548 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1170
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1170
 ==143666== 
 ==143666== Process terminating with default action of signal 4 (SIGILL)
 ==143666==  Illegal opcode at address 0x492B75F
 ==143666==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143666==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143666==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143666==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143666==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143666==    by 0x49908EB: curl_version_info (version.c:600)
 ==143666==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143666==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143666==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143666==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1170
test 1178 [HTTP proxy auth with credentials longer than 256 bytes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1178 ../src/curl -q --output log/13/curl1178.out  --include --trace-ascii log/13/trace1178 --trace-time http://127.0.0.1:38821/we/want/that/page/1178 -x http://127.0.0.1:38821 -U AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB > log/13/stdout1178 2> log/13/stderr1178

 1178: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1178
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1178 ../src/curl -q --output log/13/curl1178.out  --include --trace-ascii log/13/trace1178 --trace-time http://127.0.0.1:38821/we/want/that/page/1178 -x http://127.0.0.1:38821 -U AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB > log/13/stdout1178 2> log/13/stderr1178
=== End of file commands.log
=== Start of file http_server.log
 19:28:10.112494 ====> Client connect
 19:28:10.112537 accept_connection 3 returned 4
 19:28:10.112563 Read 93 bytes
 19:28:10.112574 Process 93 bytes request
 19:28:10.112588 Got request: GET /verifiedserver HTTP/1.1
 19:28:10.112598 Are-we-friendly question received
 19:28:10.112630 Wrote request (93 bytes) input to log/13/server.input
 19:28:10.112650 Identifying ourselves as friends
 19:28:10.112771 Response sent (56 bytes) and written to log/13/server.response
 19:28:10.112785 special request received, no persistency
 19:28:10.112794 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 43598 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1178
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1178
 ==144020== 
 ==144020== Process terminating with default action of signal 4 (SIGILL)
 ==144020==  Illegal opcode at address 0x492B75F
 ==144020==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144020==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144020==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144020==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144020==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144020==    by 0x49908EB: curl_version_info (version.c:600)
 ==144020==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144020==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144020==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144020==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1178
test 1181 [HTTP GET request with proxy and "Proxy-Connection: Keep-Alive"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1181 ../src/curl -q --output log/1/curl1181.out  --include --trace-ascii log/1/trace1181 --trace-time --proxy http://127.0.0.1:38815 --proxy-header "Proxy-Connection: Keep-Alive" http://127.0.0.1:38815/1181 > log/1/stdout1181 2> log/1/stderr1181

 1181: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1181
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1181 ../src/curl -q --output log/1/curl1181.out  --include --trace-ascii log/1/trace1181 --trace-time --proxy http://127.0.0.1:38815 --proxy-header "Proxy-Connection: Keep-Alive" http://127.0.0.1:38815/1181 > log/1/stdout1181 2> log/1/stderr1181
=== End of file commands.log
=== Start of file http_server.log
 19:28:11.343198 ====> Client connCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1174 ../src/curl -q --output log/23/curl1174.out  --include --trace-ascii log/23/trace1174 --trace-time http://127.0.0.1:44711/1174 > log/23/stdout1174 2> log/23/stderr1174
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1188 ../src/curl -q --output log/4/curl1188.out  --include --trace-ascii log/4/trace1188 --trace-time -f -s -w '%{onerror}%{stderr}%{urlnum} says %{exitcode} %{errormsg}\n' http://127.0.0.1:35735/we/want/our/1188 http://127.0.0.1:35735/we/want/our/1188 > log/4/stdout1188 2> log/4/stderr1188
ect
 19:28:11.343258 accept_connection 3 returned 4
 19:28:11.343291 Read 93 bytes
 19:28:11.343303 Process 93 bytes request
 19:28:11.343318 Got request: GET /verifiedserver HTTP/1.1
 19:28:11.343328 Are-we-friendly question received
 19:28:11.343360 Wrote request (93 bytes) input to log/1/server.input
 19:28:11.343379 Identifying ourselves as friends
 19:28:11.343479 Response sent (56 bytes) and written to log/1/server.response
 19:28:11.343490 special request received, no persistency
 19:28:11.343498 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 46788 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1181
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1181
 ==144148== 
 ==144148== Process terminating with default action of signal 4 (SIGILL)
 ==144148==  Illegal opcode at address 0x492B75F
 ==144148==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144148==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144148==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144148==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144148==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144148==    by 0x49908EB: curl_version_info (version.c:600)
 ==144148==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144148==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144148==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144148==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1181
test 1174 [HTTP/0.9 GET response denied by default]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1174 ../src/curl -q --output log/23/curl1174.out  --include --trace-ascii log/23/trace1174 --trace-time http://127.0.0.1:44711/1174 > log/23/stdout1174 2> log/23/stderr1174

 1174: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1174
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1174 ../src/curl -q --output log/23/curl1174.out  --include --trace-ascii log/23/trace1174 --trace-time http://127.0.0.1:44711/1174 > log/23/stdout1174 2> log/23/stderr1174
=== End of file commands.log
=== Start of file http_server.log
 19:28:09.889029 ====> Client connect
 19:28:09.889068 accept_connection 3 returned 4
 19:28:09.889185 Read 93 bytes
 19:28:09.889200 Process 93 bytes request
 19:28:09.889213 Got request: GET /verifiedserver HTTP/1.1
 19:28:09.889222 Are-we-friendly question received
 19:28:09.889252 Wrote request (93 bytes) input to log/23/server.input
 19:28:09.889268 Identifying ourselves as friends
 19:28:09.889322 Response sent (56 bytes) and written to log/23/server.response
 19:28:09.889331 special request received, no persistency
 19:28:09.889338 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 45370 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1174
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1174
 ==143831== 
 ==143831== Process terminating with default action of signal 4 (SIGILL)
 ==143831==  Illegal opcode at address 0x492B75F
 ==143831==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==143831==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==143831==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==143831==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==143831==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==143831==    by 0x49908EB: curl_version_info (version.c:600)
 ==143831==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==143831==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==143831==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==143831==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1174
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1180 ../src/curl -q --output log/14/curl1180.out  --include --trace-ascii log/14/trace1180 --trace-time --proxy http://127.0.0.1:45467 -H "Proxy-Connection: Keep-Alive" http://127.0.0.1:45467/1180 > log/14/stdout1180 2> log/14/stderr1180
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1186 ../src/curl -q --output log/24/curl1186.out  --include --trace-ascii log/24/trace1186 --trace-time http://127.0.0.1:38895/we/want/1186 --form-escape -F "file=@\"log/24/test1186\\\".txt\";type=mo/foo;filename=\"test1186\\\".txt\"" -F 'file2=@"log/24/test1186\".txt"' -F 'file3=@"log/24/test1186\".txt";type=m/f,"log/24/test1186\".txt"' > log/24/stdout1186 2> log/24/stderr1186
test 1188 [--write-out with %{onerror} and %{urlnum} to stderr]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1188 ../src/curl -q --output log/4/curl1188.out  --include --trace-ascii log/4/trace1188 --trace-time -f -s -w '%{onerror}%{stderr}%{urlnum} says %{exitcode} %{errormsg}\n' http://127.0.0.1:35735/we/want/our/1188 http://127.0.0.1:35735/we/want/our/1188 > log/4/stdout1188 2> log/4/stderr1188

 1188: stderr FAILED:
--- log/4/check-expected	2026-10-15 19:28:12.896795467 +0000
+++ log/4/check-generated	2026-10-15 19:28:12.894555785 +0000
@@ -1,2 +0,0 @@
-0 says 22 The requested URL returned error: 404[CR][LF]
-1 says 22 The requested URL returned error: 404[CR][LF]
== Contents of files in the log/4/ directory after test 1188
=== Start of file check-expected
 0 says 22 The requested URL returned error: 404[CR][LF]
 1 says 22 The requested URL returned error: 404[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1188 ../src/curl -q --output log/4/curl1188.out  --include --trace-ascii log/4/trace1188 --trace-time -f -s -w '%{onerror}%{stderr}%{urlnum} says %{exitcode} %{errormsg}\n' http://127.0.0.1:35735/we/want/our/1188 http://127.0.0.1:35735/we/want/our/1188 > log/4/stdout1188 2> log/4/stderr1188
=== End of file commands.log
=== Start of file http_server.log
 19:28:11.559938 ====> Client connect
 19:28:11.559980 accept_connection 3 returned 4
 19:28:11.560005 Read 93 bytes
 19:28:11.560016 Process 93 bytes request
 19:28:11.560029 Got request: GET /verifiedserver HTTP/1.1
 19:28:11.560038 Are-we-friendly question received
 19:28:11.560070 Wrote request (93 bytes) input to log/4/server.input
 19:28:11.560088 Identifying ourselves as friends
 19:28:11.560154 Response sent (56 bytes) and written to log/4/server.response
 19:28:11.560166 special request received, no persistency
 19:28:11.560174 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 51434 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1188
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1188
 ==144372== 
 ==144372== Process terminating with default action of signal 4 (SIGILL)
 ==144372==  Illegal opcode at address 0x492B75F
 ==144372==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144372==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144372==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144372==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144372==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144372==    by 0x49908EB: curl_version_info (version.c:600)
 ==144372==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144372==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144372==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144372==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1188
test 1180 [HTTP GET request with proxy and -H "Proxy-Connection: keep-alive"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1180 ../src/curl -q --output log/14/curl1180.out  --include --trace-ascii log/14/trace1180 --trace-time --proxy http://127.0.0.1:45467 -H "Proxy-Connection: Keep-Alive" http://127.0.0.1:45467/1180 > log/14/stdout1180 2> log/14/stderr1180

 1180: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1180
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1180 ../src/curl -q --output log/14/curl1180.out  --include --trace-ascii log/14/trace1180 --trace-time --proxy http://127.0.0.1:45467 -H "Proxy-Connection: Keep-Alive" http://127.0.0.1:45467/1180 > log/14/stdout1180 2> log/14/stderr1180
=== End of file commands.log
=== Start of file http_server.log
 19:28:10.247133 ====> Client connect
 19:28:10.247172 accept_connection 3 returned 4
 19:28:10.249161 Read 93 bytes
 19:28:10.249179 Process 93 bytes request
 19:28:10.249194 Got request: GET /verifiedserver HTTP/1.1
 19:28:10.249204 Are-we-friendly question received
 19:28:10.249239 Wrote request (93 bytes) input to log/14/server.input
 19:28:10.249258 Identifying ourselves as friends
 19:28:10.249326 Response sent (56 bytes) and written to log/14/server.response
 19:28:10.249337 special request received, no persistency
 19:28:10.249347 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 35716 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1180
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1180
 ==144101== 
 ==144101== Process terminating with default action of signal 4 (SIGILL)
 ==144101==  Illegal opcode at address 0x492B75F
 ==144101==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144101==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144101==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144101==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144101==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144101==    by 0x49908EB: curl_version_info (version.c:600)
 ==144101==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144101==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144101==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144101==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1180
test 1186 [Multipart formposting with backslash-escaping filename containing '"']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1186 ../src/curl -q --output log/24/curl1186.out  --include --trace-ascii log/24/trace1186 --trace-time http://127.0.0.1:38895/we/want/1186 --form-escape -F "file=@\"log/24/test1186\\\".txt\";type=mo/foo;filename=\"test1186\\\".txt\"" -F 'file2=@"log/24/test1186\".txt"' -F 'file3=@"log/24/test1186\".txt";type=m/f,"log/24/test1186\".txt"' > log/24/stdout1186 2> log/24/stderr1186

 1186: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1186
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=logCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1189 ../src/curl -q --output log/18/curl1189.out  --include --trace-ascii log/18/trace1189 --trace-time http://127.0.0.1:43739/we/want/1189 --form-escape -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/18/test1189.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/18/test1189.txt -F "file3=@\"log/18/test1189.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/18/test1189.txt"; filename="A\\AA\"\"\\\"ZZZ"' > log/18/stdout1189 2> log/18/stderr1189
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1187 ../src/curl -q --output log/20/curl1187.out  --include --trace-ascii log/20/trace1187 --trace-time smtp://127.0.0.1:44599/1187 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=This is the mail text" -F '=File content;filename="strange\file\"name"' <log/20/stdin-for-1187 > log/20/stdout1187 2> log/20/stderr1187
/24/valgrind1186 ../src/curl -q --output log/24/curl1186.out  --include --trace-ascii log/24/trace1186 --trace-time http://127.0.0.1:38895/we/want/1186 --form-escape -F "file=@\"log/24/test1186\\\".txt\";type=mo/foo;filename=\"test1186\\\".txt\"" -F 'file2=@"log/24/test1186\".txt"' -F 'file3=@"log/24/test1186\".txt";type=m/f,"log/24/test1186\".txt"' > log/24/stdout1186 2> log/24/stderr1186
=== End of file commands.log
=== Start of file http_server.log
 19:28:10.509146 ====> Client connect
 19:28:10.509191 accept_connection 3 returned 4
 19:28:10.509217 Read 93 bytes
 19:28:10.509227 Process 93 bytes request
 19:28:10.509240 Got request: GET /verifiedserver HTTP/1.1
 19:28:10.509249 Are-we-friendly question received
 19:28:10.509277 Wrote request (93 bytes) input to log/24/server.input
 19:28:10.509295 Identifying ourselves as friends
 19:28:10.509395 Response sent (56 bytes) and written to log/24/server.response
 19:28:10.509406 special request received, no persistency
 19:28:10.509414 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 37064 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1186
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file test1186".txt
 foo bar
 This is a bar foo
 bar
 foo
=== End of file test1186".txt
=== Start of file valgrind1186
 ==144330== 
 ==144330== Process terminating with default action of signal 4 (SIGILL)
 ==144330==  Illegal opcode at address 0x492B75F
 ==144330==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144330==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144330==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144330==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144330==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144330==    by 0x49908EB: curl_version_info (version.c:600)
 ==144330==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144330==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144330==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144330==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1186
test 1189 [Multipart formposting with backslash-escaping of name= and filename=]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1189 ../src/curl -q --output log/18/curl1189.out  --include --trace-ascii log/18/trace1189 --trace-time http://127.0.0.1:43739/we/want/1189 --form-escape -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/18/test1189.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/18/test1189.txt -F "file3=@\"log/18/test1189.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/18/test1189.txt"; filename="A\\AA\"\"\\\"ZZZ"' > log/18/stdout1189 2> log/18/stderr1189

 1189: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1189
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1189 ../src/curl -q --output log/18/curl1189.out  --include --trace-ascii log/18/trace1189 --trace-time http://127.0.0.1:43739/we/want/1189 --form-escape -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@log/18/test1189.txt;type=moo/foobar;filename=fakerfile" -F file2=@log/18/test1189.txt -F "file3=@\"log/18/test1189.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"log/18/test1189.txt"; filename="A\\AA\"\"\\\"ZZZ"' > log/18/stdout1189 2> log/18/stderr1189
=== End of file commands.log
=== Start of file http_server.log
 19:28:11.568390 ====> Client connect
 19:28:11.568420 accept_connection 3 returned 4
 19:28:11.568440 Read 93 bytes
 19:28:11.568449 Process 93 bytes request
 19:28:11.568461 Got request: GET /verifiedserver HTTP/1.1
 19:28:11.568469 Are-we-friendly question received
 19:28:11.568494 Wrote request (93 bytes) input to log/18/server.input
 19:28:11.568509 Identifying ourselves as friends
 19:28:11.568566 Response sent (56 bytes) and written to log/18/server.response
 19:28:11.568575 special request received, no persistency
 19:28:11.568586 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 36046 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1189
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file test1189.txt
 foo bar
 This is a bar foo
 bar
 foo
=== End of file test1189.txt
=== Start of file valgrind1189
 ==144390== 
 ==144390== Process terminating with default action of signal 4 (SIGILL)
 ==144390==  Illegal opcode at address 0x492B75F
 ==144390==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144390==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144390==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144390==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144390==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144390==    by 0x49908EB: curl_version_info (version.c:600)
 ==144390==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144390==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144390==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144390==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1189
test 1187 [SMTP multipart with filename escaping]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1187 ../src/curl -q --output log/20/curl1187.out  --include --trace-ascii log/20/trace1187 --trace-time smtp://127.0.0.1:44599/1187 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=This is the mail text" -F '=File content;filename="strange\file\"name"' <log/20/stdin-for-1187 > log/20/stdout1187 2> log/20/stderr1187

 1187: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1187
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1187 ../src/curl -q --output log/20/curl1187.out  --include --trace-ascii log/20/trace1187 --trace-time smtp://127.0.0.1:44599/1187 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=This is the mail text" -F '=File content;filename="strange\file\"name"' <log/20/stdin-for-1187 > log/20/stdout1187 2> log/20/stderr1187
=== End of file commands.log
=== Start of file serCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1183 ../src/curl -q --output log/10/curl1183.out  --include --trace-ascii log/10/trace1183 --trace-time http://127.0.0.1:40913/1183 > log/10/stdout1183 2> log/10/stderr1183
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1191 ../src/curl -q --output log/5/curl1191.out  --include --trace log/5/trace1191 --trace-time mqtt://127.0.0.1:34785/1191 -d something > log/5/stdout1191 2> log/5/stderr1191
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1190 ../src/curl -q --output log/9/curl1190.out  --include --trace log/9/trace1190 --trace-time mqtt://127.0.0.1:38739/1190 > log/9/stdout1190 2> log/9/stderr1190
ver.cmd
 Testnum 1187
=== End of file server.cmd
=== Start of file smtp_server.log
 19:28:10.945360 ====> Client connect
 19:28:10.945583 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:10.958939 < "EHLO verifiedserver"
 19:28:10.959023 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:28:10.959315 < "HELP"
 19:28:10.959349 > "214 WE ROOLZ: 113262[CR][LF]"
 19:28:10.959364 return proof we are we
 19:28:10.959583 < "QUIT"
 19:28:10.959610 > "221 curl ESMTP server signing off[CR][LF]"
 19:28:10.960844 MAIN sockfilt said DISC
 19:28:10.960872 ====> Client disconnected
 19:28:10.960944 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:28:11.545652 ====> Client connect
 19:28:11.552434 Received DATA (on stdin)
 19:28:11.552483 > 146 bytes data, server => client
 19:28:11.552496 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:11.552506 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:11.552516 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:11.552644 < 21 bytes data, client => server
 19:28:11.552656 'EHLO verifiedserver\r\n'
 19:28:11.562790 Received DATA (on stdin)
 19:28:11.562813 > 53 bytes data, server => client
 19:28:11.562825 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:28:11.562939 < 6 bytes data, client => server
 19:28:11.562951 'HELP\r\n'
 19:28:11.563114 Received DATA (on stdin)
 19:28:11.563124 > 22 bytes data, server => client
 19:28:11.563134 '214 WE ROOLZ: 113262\r\n'
 19:28:11.563246 < 6 bytes data, client => server
 19:28:11.563259 'QUIT\r\n'
 19:28:11.563359 Received DATA (on stdin)
 19:28:11.563369 > 35 bytes data, server => client
 19:28:11.563379 '221 curl ESMTP server signing off\r\n'
 19:28:11.564546 ====> Client disconnect
 19:28:11.564693 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-1187
 From: different
 To: another
 body
=== End of file stdin-for-1187
=== Start of file valgrind1187
 ==144366== 
 ==144366== Process terminating with default action of signal 4 (SIGILL)
 ==144366==  Illegal opcode at address 0x492B75F
 ==144366==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144366==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144366==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144366==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144366==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144366==    by 0x49908EB: curl_version_info (version.c:600)
 ==144366==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144366==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144366==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144366==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1187
test 1183 [1183 used instead of actual test number]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1183 ../src/curl -q --output log/10/curl1183.out  --include --trace-ascii log/10/trace1183 --trace-time http://127.0.0.1:40913/1183 > log/10/stdout1183 2> log/10/stderr1183

 1183: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1183
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1183 ../src/curl -q --output log/10/curl1183.out  --include --trace-ascii log/10/trace1183 --trace-time http://127.0.0.1:40913/1183 > log/10/stdout1183 2> log/10/stderr1183
=== End of file commands.log
=== Start of file http_server.log
 19:28:10.413848 ====> Client connect
 19:28:10.413884 accept_connection 3 returned 4
 19:28:10.413905 Read 93 bytes
 19:28:10.413913 Process 93 bytes request
 19:28:10.413925 Got request: GET /verifiedserver HTTP/1.1
 19:28:10.413933 Are-we-friendly question received
 19:28:10.413959 Wrote request (93 bytes) input to log/10/server.input
 19:28:10.413973 Identifying ourselves as friends
 19:28:10.414037 Response sent (56 bytes) and written to log/10/server.response
 19:28:10.414046 special request received, no persistency
 19:28:10.414053 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 47472 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1183
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1183
 ==144186== 
 ==144186== Process terminating with default action of signal 4 (SIGILL)
 ==144186==  Illegal opcode at address 0x492B75F
 ==144186==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144186==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144186==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144186==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144186==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144186==    by 0x49908EB: curl_version_info (version.c:600)
 ==144186==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144186==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144186==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144186==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1183
test 1191 [MQTT PUBLISH]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1191 ../src/curl -q --output log/5/curl1191.out  --include --trace log/5/trace1191 --trace-time mqtt://127.0.0.1:34785/1191 -d something > log/5/stdout1191 2> log/5/stderr1191

 1191: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1191
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1191 ../src/curl -q --output log/5/curl1191.out  --include --trace log/5/trace1191 --trace-time mqtt://127.0.0.1:34785/1191 -d something > log/5/stdout1191 2> log/5/stderr1191
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1191
=== End of file server.cmd
=== Start of file valgrind1191
 ==144523== 
 ==144523== Process terminating with default action of signal 4 (SIGILL)
 ==144523==  Illegal opcode at address 0x492B75F
 ==144523==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144523==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144523==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144523==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144523==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144523==    by 0x49908EB: curl_version_info (version.c:600)
 ==144523==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144523==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144523==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144523==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1191
startnew: ./server/servers mqttd --port 0 --pidfile log/9/server/mqtt_server.pid --portfile log/9/server/mqtt_server.port --config log/9/server.cmd --logfileCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1192 ../src/curl -q --output log/16/curl1192.out  --include --trace log/16/trace1192 --trace-time mqtt://127.0.0.1:44713/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1192 > log/16/stdout1192 2> log/16/stderr1192
 log/9/mqtt_server.log --logdir log/9
RUN: MQTT server is now running PID 144434 on PORT 38739
* pid mqtt => 144434 144434
test 1190 [MQTT SUBSCRIBE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1190 ../src/curl -q --output log/9/curl1190.out  --include --trace log/9/trace1190 --trace-time mqtt://127.0.0.1:38739/1190 > log/9/stdout1190 2> log/9/stderr1190

 1190: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1190
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1190 ../src/curl -q --output log/9/curl1190.out  --include --trace log/9/trace1190 --trace-time mqtt://127.0.0.1:38739/1190 > log/9/stdout1190 2> log/9/stderr1190
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.676363 Running IPv4 version
 19:28:11.676443 Listening on port 38739
 19:28:11.676482 Wrote pid 144434 to log/9/server/mqtt_server.pid
 19:28:11.676513 Wrote port 38739 to log/9/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 1190
=== End of file server.cmd
=== Start of file valgrind1190
 ==144686== 
 ==144686== Process terminating with default action of signal 4 (SIGILL)
 ==144686==  Illegal opcode at address 0x492B75F
 ==144686==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144686==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144686==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144686==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144686==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144686==    by 0x49908EB: curl_version_info (version.c:600)
 ==144686==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144686==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144686==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144686==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1190
startnew: ./server/servers mqttd --port 0 --pidfile log/16/server/mqtt_server.pid --portfile log/16/server/mqtt_server.port --config log/16/server.cmd --logfile log/16/mqtt_server.log --logdir log/16
RUN: MQTT server is now running PID 144575 on PORT 44713
* pid mqtt => 144575 144575
test 1192 [MQTT SUBSCRIBE 2k topic]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1192 ../src/curl -q --output log/16/curl1192.out  --include --trace log/16/trace1192 --trace-time mqtt://127.0.0.1:44713/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1192 > log/16/stdout1192 2> log/16/stderr1192

 1192: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1192
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1192 ../src/curl -q --output log/16/curl1192.out  --include --trace log/16/trace1192 --trace-time mqtt://127.0.0.1:44713/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1192 > log/16/stdout1192 2> log/16/stderr1192
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.829730 Running IPv4 version
 19:28:11.829813 Listening on port 44713
 19:28:11.829853 Wrote pid 144575 to log/16/server/mqtt_server.pid
 19:28:11.829884 Wrote port 44713 to log/16/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 1192
=== End of file server.cmd
=== Start of file valgrind1192
 ==144766== 
 ==144766== Process terminating with default action of signal 4 (SIGILL)
 ==144766==  Illegal opcode at address 0x492B75F
 ==144766==    at 0x492B75F:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1193 ../src/curl -q --output log/19/curl1193.out  --include --trace log/19/trace1193 --trace-time mqtt://127.0.0.1:33933/1193 -d @log/19/payload1193 > log/19/stdout1193 2> log/19/stderr1193
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1204 ../src/curl -q --output log/6/curl1204.out  --include --trace-ascii log/6/trace1204 --trace-time http://127.0.0.1:33935/1204 -u testuser:testpass --anyauth > log/6/stdout1204 2> log/6/stderr1204
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1197 ../src/curl -q --include --trace-ascii log/12/trace1197 --trace-time http://127.0.0.1:40921/1197 -w "%{method}\n" -L -d "twinkle twinkle little star" > log/12/stdout1197 2> log/12/stderr1197
 formatf.constprop.2 (mprintf.c:1115)
 ==144766==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144766==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144766==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144766==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144766==    by 0x49908EB: curl_version_info (version.c:600)
 ==144766==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144766==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144766==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144766==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1192
startnew: ./server/servers mqttd --port 0 --pidfile log/19/server/mqtt_server.pid --portfile log/19/server/mqtt_server.port --config log/19/server.cmd --logfile log/19/mqtt_server.log --logdir log/19
RUN: MQTT server is now running PID 144624 on PORT 33933
* pid mqtt => 144624 144624
test 1193 [MQTT PUBLISH 2k payload]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1193 ../src/curl -q --output log/19/curl1193.out  --include --trace log/19/trace1193 --trace-time mqtt://127.0.0.1:33933/1193 -d @log/19/payload1193 > log/19/stdout1193 2> log/19/stderr1193

 1193: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1193
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1193 ../src/curl -q --output log/19/curl1193.out  --include --trace log/19/trace1193 --trace-time mqtt://127.0.0.1:33933/1193 -d @log/19/payload1193 > log/19/stdout1193 2> log/19/stderr1193
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.003035 Running IPv4 version
 19:28:11.003122 Listening on port 33933
 19:28:11.003166 Wrote pid 144624 to log/19/server/mqtt_server.pid
 19:28:11.003201 Wrote port 33933 to log/19/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file payload1193
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
=== End of file payload1193
=== Start of file server.cmd
 Testnum 1193
=== End of file server.cmd
=== Start of file valgrind1193
 ==144835== 
 ==144835== Process terminating with default action of signal 4 (SIGILL)
 ==144835==  Illegal opcode at address 0x492B75F
 ==144835==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144835==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144835==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144835==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144835==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144835==    by 0x49908EB: curl_version_info (version.c:600)
 ==144835==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144835==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1193
test 1204 [HTTP with WWW-Authenticate and multiple auths in a single line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1204 ../src/curl -q --output log/6/curl1204.out  --include --trace-ascii log/6/trace1204 --trace-time http://127.0.0.1:33935/1204 -u testuser:testpass --anyauth > log/6/stdout1204 2> log/6/stderr1204

 1204: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1204
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1204 ../src/curl -q --output log/6/curl1204.out  --include --trace-ascii log/6/trace1204 --trace-time http://127.0.0.1:33935/1204 -u testuser:testpass --anyauth > log/6/stdout1204 2> log/6/stderr1204
=== End of file commands.log
=== Start of file http_server.log
 19:28:12.258222 ====> Client connect
 19:28:12.258257 accept_connection 3 returned 4
 19:28:12.258277 Read 93 bytes
 19:28:12.258286 Process 93 bytes request
 19:28:12.258299 Got request: GET /verifiedserver HTTP/1.1
 19:28:12.258307 Are-we-friendly question received
 19:28:12.258334 Wrote request (93 bytes) input to log/6/server.input
 19:28:12.258351 Identifying ourselves as friends
 19:28:12.258411 Response sent (56 bytes) and written to log/6/server.response
 19:28:12.258420 special request received, no persistency
 19:28:12.258429 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 47630 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1204
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1204
 ==144967== 
 ==144967== Process terminating with default action of signal 4 (SIGILL)
 ==144967==  Illegal opcode at address 0x492B75F
 ==144967==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144967==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144967==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144967==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144967==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144967==    by 0x49908EB: curl_version_info (version.c:600)
 ==144967==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144967==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1204
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1194 ../src/curl -q --output log/7/curl1194.out  --include --trace log/7/trace1194 --trace-time mqtt://127.0.0.1:32899/1194 > log/7/stdout1194 2> log/7/stderr1194
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1208 ../src/curl -q --output log/4/curl1208.out  --include --trace-ascii log/4/trace1208 --trace-time --max-time 8 ftp://127.0.0.1:39739/1208 -P - > log/4/stdout1208 2> log/4/stderr1208
test 1197 [HTTP POST redirected to GET and --write-out method]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1197 ../src/curl -q --include --trace-ascii log/12/trace1197 --trace-time http://127.0.0.1:40921/1197 -w "%{method}\n" -L -d "twinkle twinkle little star" > log/12/stdout1197 2> log/12/stderr1197

 1197: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:14.587828248 +0000
+++ log/12/check-generated	2026-10-15 19:28:14.584654415 +0000
@@ -1,15 +0,0 @@
-HTTP/1.1 302 OK swsbounce swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 8[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/plain[CR][LF]
-Location: ./11970001[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Content-Length: 15[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/plain; charset=us-ascii[CR][LF]
-[CR][LF]
-bigger monster[LF]
-GET[LF]
== Contents of files in the log/12/ directory after test 1197
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 8[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/plain[CR][LF]
 Location: ./11970001[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Content-Length: 15[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/plain; charset=us-ascii[CR][LF]
 [CR][LF]
 bigger monster[LF]
 GET[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1197 ../src/curl -q --include --trace-ascii log/12/trace1197 --trace-time http://127.0.0.1:40921/1197 -w "%{method}\n" -L -d "twinkle twinkle little star" > log/12/stdout1197 2> log/12/stderr1197
=== End of file commands.log
=== Start of file http_server.log
 19:28:11.679063 ====> Client connect
 19:28:11.679106 accept_connection 3 returned 4
 19:28:11.679130 Read 93 bytes
 19:28:11.679141 Process 93 bytes request
 19:28:11.679154 Got request: GET /verifiedserver HTTP/1.1
 19:28:11.679163 Are-we-friendly question received
 19:28:11.679193 Wrote request (93 bytes) input to log/12/server.input
 19:28:11.679211 Identifying ourselves as friends
 19:28:11.679287 Response sent (56 bytes) and written to log/12/server.response
 19:28:11.679300 special request received, no persistency
 19:28:11.679308 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38434 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1197
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1197
 ==144687== 
 ==144687== Process terminating with default action of signal 4 (SIGILL)
 ==144687==  Illegal opcode at address 0x492B75F
 ==144687==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144687==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144687==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144687==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144687==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144687==    by 0x49908EB: curl_version_info (version.c:600)
 ==144687==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144687==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144687==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144687==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1197
startnew: ./server/servers mqttd --port 0 --pidfile log/7/server/mqtt_server.pid --portfile log/7/server/mqtt_server.port --config log/7/server.cmd --logfile log/7/mqtt_server.log --logdir log/7
RUN: MQTT server is now running PID 144626 on PORT 32899
* pid mqtt => 144626 144626
test 1194 [MQTT SUBSCRIBE with PUBLISH before SUBACK]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1194 ../src/curl -q --output log/7/curl1194.out  --include --trace log/7/trace1194 --trace-time mqtt://127.0.0.1:32899/1194 > log/7/stdout1194 2> log/7/stderr1194

 1194: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1194
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1194 ../src/curl -q --output log/7/curl1194.out  --include --trace log/7/trace1194 --trace-time mqtt://127.0.0.1:32899/1194 > log/7/stdout1194 2> log/7/stderr1194
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.026237 Running IPv4 version
 19:28:11.026321 Listening on port 32899
 19:28:11.026362 Wrote pid 144626 to log/7/server/mqtt_server.pid
 19:28:11.026393 Wrote port 32899 to log/7/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 PUBLISH-before-SUBACK TRUE
 Testnum 1194
=== End of file server.cmd
=== Start of file valgrind1194
 ==144856== 
 ==144856== Process terminating with default action of signal 4 (SIGILL)
 ==144856==  Illegal opcode at address 0x492B75F
 ==144856==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==144856==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==144856==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==144856==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==144856==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==144856==    by 0x49908EB: curl_version_info (version.c:600)
 ==144856==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==144856==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==144856==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==144856==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1194
test 1208 [FTP PORT download, no data conn and no transient negative reply]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1208 ../src/curl -q --output log/4/curl1208.out  --include --trace-ascii log/4/trace1208 --trace-time --max-time 8 ftp://127.0.0.1:39739/1208 -P - > log/4/stdout1208 2> log/4/stderr1208

 1208: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1208
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1208 ../src/curl -q --output log/4/curl1208.out  --include --trace-ascii log/4/trace1208 --trace-time --max-time 8 ftp://127.0.0.1:39739/1208 -P - > log/4/stdout1208 2> log/4/stderr1208
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:12.972118 ====> Client connect
 19:28:12.972374 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:12.972703 < "USER anonymous"
 19:28:12.972743 > "331 We are happy you popped in![CR][LF]"
 19:28:12.972929 < "PASS ftp@example.com"
 19:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1206 ../src/curl -q --output log/1/curl1206.out  --include --trace-ascii log/1/trace1206 --trace-time --max-time 8 ftp://127.0.0.1:40221/1206 -P - > log/1/stdout1206 2> log/1/stderr1206
28:12.972964 > "230 Welcome you silly person[CR][LF]"
 19:28:12.973152 < "PWD"
 19:28:12.973192 > "257 "/" is current directory[CR][LF]"
 19:28:12.973390 < "EPSV"
 19:28:12.973420 ====> Passive DATA channel requested by client
 19:28:12.973436 DATA sockfilt for passive data channel starting...
 19:28:12.983419 DATA sockfilt for passive data channel started (pid 145169)
 19:28:12.983551 DATA sockfilt for passive data channel listens on port 46403
 19:28:12.983595 > "229 Entering Passive Mode (|||46403|)[CR][LF]"
 19:28:12.983611 Client has been notified that upcoming DATA connection is awaited on port 46403
 19:28:12.983913 Client connects to port 46403
 19:28:12.983942 ====> Client established passive DATA connection on port 46403
 19:28:12.984035 < "TYPE I"
 19:28:12.984064 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:12.984216 < "SIZE verifiedserver"
 19:28:12.984250 > "213 17[CR][LF]"
 19:28:12.984389 < "RETR verifiedserver"
 19:28:12.984422 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:12.984505 =====> Closing passive DATA connection...
 19:28:12.984520 Server disconnects passive DATA connection
 19:28:12.984725 Server disconnected passive DATA connection
 19:28:12.984750 DATA sockfilt for passive data channel quits (pid 145169)
 19:28:12.984986 DATA sockfilt for passive data channel quit (pid 145169)
 19:28:12.985008 =====> Closed passive DATA connection
 19:28:12.985034 > "226 File transfer complete[CR][LF]"
 19:28:13.029157 < "QUIT"
 19:28:13.029213 > "221 bye bye baby[CR][LF]"
 19:28:13.030152 MAIN sockfilt said DISC
 19:28:13.030183 ====> Client disconnected
 19:28:13.030263 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:12.575314 ====> Client connect
 19:28:12.576030 Received DATA (on stdin)
 19:28:12.576050 > 146 bytes data, server => client
 19:28:12.576062 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:12.576072 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:12.576081 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:12.576171 < 16 bytes data, client => server
 19:28:12.576186 'USER anonymous\r\n'
 19:28:12.576374 Received DATA (on stdin)
 19:28:12.576385 > 33 bytes data, server => client
 19:28:12.576395 '331 We are happy you popped in!\r\n'
 19:28:12.576449 < 22 bytes data, client => server
 19:28:12.576460 'PASS ftp@example.com\r\n'
 19:28:12.576597 Received DATA (on stdin)
 19:28:12.576610 > 30 bytes data, server => client
 19:28:12.576620 '230 Welcome you silly person\r\n'
 19:28:12.576678 < 5 bytes data, client => server
 19:28:12.576692 'PWD\r\n'
 19:28:12.576825 Received DATA (on stdin)
 19:28:12.576837 > 30 bytes data, server => client
 19:28:12.576848 '257 "/" is current directory\r\n'
 19:28:12.576918 < 6 bytes data, client => server
 19:28:12.576934 'EPSV\r\n'
 19:28:12.587246 Received DATA (on stdin)
 19:28:12.587263 > 39 bytes data, server => client
 19:28:12.587273 '229 Entering Passive Mode (|||46403|)\r\n'
 19:28:12.587460 < 8 bytes data, client => server
 19:28:12.587473 'TYPE I\r\n'
 19:28:12.587690 Received DATA (on stdin)
 19:28:12.587701 > 33 bytes data, server => client
 19:28:12.587711 '200 I modify TYPE as you wanted\r\n'
 19:28:12.587761 < 21 bytes data, client => server
 19:28:12.587771 'SIZE verifiedserver\r\n'
 19:28:12.587874 Received DATA (on stdin)
 19:28:12.587883 > 8 bytes data, server => client
 19:28:12.587892 '213 17\r\n'
 19:28:12.587938 < 21 bytes data, client => server
 19:28:12.587948 'RETR verifiedserver\r\n'
 19:28:12.588146 Received DATA (on stdin)
 19:28:12.588156 > 29 bytes data, server => client
 19:28:12.588166 '150 Binary junk (17 bytes).\r\n'
 19:28:12.588661 Received DATA (on stdin)
 19:28:12.588672 > 28 bytes data, server => client
 19:28:12.588683 '226 File transfer complete\r\n'
 19:28:12.632586 < 6 bytes data, client => server
 19:28:12.632613 'QUIT\r\n'
 19:28:12.632839 Received DATA (on stdin)
 19:28:12.632850 > 18 bytes data, server => client
 19:28:12.632860 '221 bye bye baby\r\n'
 19:28:12.633725 ====> Client disconnect
 19:28:12.633884 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:12.585934 Running IPv4 version
 19:28:12.586019 Listening on port 46403
 19:28:12.586062 Wrote pid 145169 to log/4/server/ftp_sockdata.pid
 19:28:12.586979 Received PING (on stdin)
 19:28:12.587081 Received PORT (on stdin)
 19:28:12.587494 ====> Client connect
 19:28:12.588190 Received DATA (on stdin)
 19:28:12.588201 > 17 bytes data, server => client
 19:28:12.588210 'WE ROOLZ: 85249\r\n'
 19:28:12.588232 Received DISC (on stdin)
 19:28:12.588242 ====> Client forcibly disconnected
 19:28:12.588382 Received QUIT (on stdin)
 19:28:12.588391 quits
 19:28:12.588457 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 NODATACONN150
 Testnum 1208
=== End of file server.cmd
=== Start of file valgrind1208
 ==145293== 
 ==145293== Process terminating with default action of signal 4 (SIGILL)
 ==145293==  Illegal opcode at address 0x492B75F
 ==145293==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145293==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145293==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145293==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145293==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145293==    by 0x49908EB: curl_version_info (version.c:600)
 ==145293==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145293==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145293==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145293==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1208
test 1206 [FTP PORT and 425 on download]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1206 ../src/curl -q --output log/1/curl1206.out  --include --trace-ascii log/1/trace1206 --trace-time --max-time 8 ftp://127.0.0.1:40221/1206 -P - > log/1/stdout1206 2> log/1/stderr1206

 1206: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1206
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1206 ../src/curl -q --output log/1/curl1206.out  --include --trace-ascii log/1/trace1206 --trace-time --max-time 8 ftp://127.0.0.1:40221/1206 -P - > log/1/stdout1206 2> log/1/stderr1206
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:12.868804 ====> Client connect
 19:28:12.869018 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:12.869369 < "USER anonymous"
 19:28:12.869412 > "331 We are happy you popped in![CR][LF]"
 19:28:12.869609 < "PASS ftp@example.com"
 19:28:12.869647 > "230 Welcome you silly person[CR][LF]"
 19:28:12.869820 < "PWD"
 19:28:12.869854 > "257 "/" is current directory[CR][LF]"
 19:28:12.870033 < "EPSV"
 19:28:12.870057 ====> Passive DATA channel requested by client
 19:28:12.870072 DATA sockfilt for passive data channel starting...
 19:28:12.878875 DATA sockfilt for passive data channel started (pid 145070)
 19:28:12.879010 DATA sockfilt for passive data channel listens on port 34427
 19:28:12.879056 > "229 Entering Passive Mode (|||34427|)[CR][LF]"
 19:28:12.879074 Client has been notified that upcoming DATA connection is awaited on port 34427
 19:28:12.882252 Client connects to port 34427
 19:28:12.882291 ====> Client established passive DATA connection on port 34427
 19:28:12.882386 < "TYPE I"
 19:28:12.882421 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:12.888810 < "SIZE verifiedserver"
 19:28:12.888867 > "213 17[CR][LF]"
 19:28:12.889101 < "RETR verifiedserver"
 19:28:12.889147 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:12.889261 =====> ClosingCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1196 ../src/curl -q --output log/17/curl1196.out  --include --trace log/17/trace1196 --trace-time mqtt://127.0.0.1:36463/1196 > log/17/stdout1196 2> log/17/stderr1196
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1198 ../src/curl -q --output log/15/curl1198.out  --include --trace log/15/trace1198 --trace-time mqtt://127.0.0.1:33583/%20 -d "" > log/15/stdout1198 2> log/15/stderr1198
 passive DATA connection...
 19:28:12.889287 Server disconnects passive DATA connection
 19:28:12.889599 Server disconnected passive DATA connection
 19:28:12.889632 DATA sockfilt for passive data channel quits (pid 145070)
 19:28:12.890841 DATA sockfilt for passive data channel quit (pid 145070)
 19:28:12.891011 =====> Closed passive DATA connection
 19:28:12.891133 > "226 File transfer complete[CR][LF]"
 19:28:12.937805 < "QUIT"
 19:28:12.937875 > "221 bye bye baby[CR][LF]"
 19:28:12.941400 MAIN sockfilt said DISC
 19:28:12.941442 ====> Client disconnected
 19:28:12.941525 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:13.472306 ====> Client connect
 19:28:13.472670 Received DATA (on stdin)
 19:28:13.472687 > 146 bytes data, server => client
 19:28:13.472699 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:13.472709 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:13.472719 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:13.472839 < 16 bytes data, client => server
 19:28:13.472854 'USER anonymous\r\n'
 19:28:13.473051 Received DATA (on stdin)
 19:28:13.473064 > 33 bytes data, server => client
 19:28:13.473074 '331 We are happy you popped in!\r\n'
 19:28:13.473138 < 22 bytes data, client => server
 19:28:13.473151 'PASS ftp@example.com\r\n'
 19:28:13.473284 Received DATA (on stdin)
 19:28:13.473295 > 30 bytes data, server => client
 19:28:13.473305 '230 Welcome you silly person\r\n'
 19:28:13.473362 < 5 bytes data, client => server
 19:28:13.473374 'PWD\r\n'
 19:28:13.473489 Received DATA (on stdin)
 19:28:13.473501 > 30 bytes data, server => client
 19:28:13.473511 '257 "/" is current directory\r\n'
 19:28:13.473577 < 6 bytes data, client => server
 19:28:13.473589 'EPSV\r\n'
 19:28:13.482716 Received DATA (on stdin)
 19:28:13.482731 > 39 bytes data, server => client
 19:28:13.482742 '229 Entering Passive Mode (|||34427|)\r\n'
 19:28:13.485785 < 8 bytes data, client => server
 19:28:13.485805 'TYPE I\r\n'
 19:28:13.486055 Received DATA (on stdin)
 19:28:13.486065 > 33 bytes data, server => client
 19:28:13.486075 '200 I modify TYPE as you wanted\r\n'
 19:28:13.492288 < 21 bytes data, client => server
 19:28:13.492309 'SIZE verifiedserver\r\n'
 19:28:13.492503 Received DATA (on stdin)
 19:28:13.492514 > 8 bytes data, server => client
 19:28:13.492547 '213 17\r\n'
 19:28:13.492622 < 21 bytes data, client => server
 19:28:13.492638 'RETR verifiedserver\r\n'
 19:28:13.492927 Received DATA (on stdin)
 19:28:13.492941 > 29 bytes data, server => client
 19:28:13.492952 '150 Binary junk (17 bytes).\r\n'
 19:28:13.494700 Received DATA (on stdin)
 19:28:13.494714 > 28 bytes data, server => client
 19:28:13.494723 '226 File transfer complete\r\n'
 19:28:13.539100 < 6 bytes data, client => server
 19:28:13.539133 'QUIT\r\n'
 19:28:13.541526 Received DATA (on stdin)
 19:28:13.541546 > 18 bytes data, server => client
 19:28:13.541557 '221 bye bye baby\r\n'
 19:28:13.544965 ====> Client disconnect
 19:28:13.545162 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:12.476948 Running IPv4 version
 19:28:12.477026 Listening on port 34427
 19:28:12.477064 Wrote pid 145070 to log/1/server/ftp_sockdata.pid
 19:28:12.482438 Received PING (on stdin)
 19:28:12.482545 Received PORT (on stdin)
 19:28:12.485830 ====> Client connect
 19:28:12.493028 Received DATA (on stdin)
 19:28:12.493049 > 17 bytes data, server => client
 19:28:12.493060 'WE ROOLZ: 84935\r\n'
 19:28:12.493095 Received DISC (on stdin)
 19:28:12.493108 ====> Client forcibly disconnected
 19:28:12.493280 Received QUIT (on stdin)
 19:28:12.493299 quits
 19:28:12.493382 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 NODATACONN425
 Testnum 1206
=== End of file server.cmd
=== Start of file valgrind1206
 ==145157== 
 ==145157== Process terminating with default action of signal 4 (SIGILL)
 ==145157==  Illegal opcode at address 0x492B75F
 ==145157==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145157==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145157==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145157==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145157==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145157==    by 0x49908EB: curl_version_info (version.c:600)
 ==145157==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145157==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145157==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145157==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1206
startnew: ./server/servers mqttd --port 0 --pidfile log/17/server/mqtt_server.pid --portfile log/17/server/mqtt_server.port --config log/17/server.cmd --logfile log/17/mqtt_server.log --logdir log/17
RUN: MQTT server is now running PID 144655 on PORT 36463
* pid mqtt => 144655 144655
test 1196 [MQTT with "unaccaptable protocol version" CONNACK]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1196 ../src/curl -q --output log/17/curl1196.out  --include --trace log/17/trace1196 --trace-time mqtt://127.0.0.1:36463/1196 > log/17/stdout1196 2> log/17/stderr1196

 1196: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1196
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1196 ../src/curl -q --output log/17/curl1196.out  --include --trace log/17/trace1196 --trace-time mqtt://127.0.0.1:36463/1196 > log/17/stdout1196 2> log/17/stderr1196
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.451652 Running IPv4 version
 19:28:11.451750 Listening on port 36463
 19:28:11.451792 Wrote pid 144655 to log/17/server/mqtt_server.pid
 19:28:11.451826 Wrote port 36463 to log/17/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 error-CONNACK 1
 Testnum 1196
=== End of file server.cmd
=== Start of file valgrind1196
 ==145069== 
 ==145069== Process terminating with default action of signal 4 (SIGILL)
 ==145069==  Illegal opcode at address 0x492B75F
 ==145069==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145069==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145069==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145069==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145069==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145069==    by 0x49908EB: curl_version_info (version.c:600)
 ==145069==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145069==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145069==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145069==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1196
startnew: ./server/servers mqttd --port 0 --pidfile log/15/server/mqtt_server.pid --portfile log/15/server/mqtt_server.port --config log/15/server.cmd --logfile log/15/mqtt_server.log --logdir log/15
RUN: MQTT server is now running PID 144664 on PORT 33583
* pid mqtt => 144664 144664
test 1198 [MQTT PUBLISH empty payload, single space topic]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1198 ../src/curl -q --output log/15/curl1198.out  --include --trace log/15/trace1198 --trace-time mqtt://127.0.0.1:33583/%20 -d "" > log/15/stdout1198 2> log/15/stderr1198

 1198: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1198
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1199 ../src/curl -q --output log/21/curl1199.out  --include --trace log/21/trace1199 --trace-time mqtt://127.0.0.1:39371 -d "" > log/21/stdout1199 2> log/21/stderr1199
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1195 ../src/curl -q --output log/2/curl1195.out  --include --trace log/2/trace1195 --trace-time mqtt://127.0.0.1:42775/1195 > log/2/stdout1195 2> log/2/stderr1195
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1205 ../src/curl -q --output log/13/curl1205.out  --include --trace-ascii log/13/trace1205 --trace-time http://127.0.0.1:38821/1205 > log/13/stdout1205 2> log/13/stderr1205
ppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1198 ../src/curl -q --output log/15/curl1198.out  --include --trace log/15/trace1198 --trace-time mqtt://127.0.0.1:33583/%20 -d "" > log/15/stdout1198 2> log/15/stderr1198
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.585050 Running IPv4 version
 19:28:11.585133 Listening on port 33583
 19:28:11.585176 Wrote pid 144664 to log/15/server/mqtt_server.pid
 19:28:11.585207 Wrote port 33583 to log/15/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 1198
=== End of file server.cmd
=== Start of file valgrind1198
 ==145197== 
 ==145197== Process terminating with default action of signal 4 (SIGILL)
 ==145197==  Illegal opcode at address 0x492B75F
 ==145197==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145197==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145197==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145197==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145197==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145197==    by 0x49908EB: curl_version_info (version.c:600)
 ==145197==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145197==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145197==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145197==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1198
startnew: ./server/servers mqttd --port 0 --pidfile log/21/server/mqtt_server.pid --portfile log/21/server/mqtt_server.port --config log/21/server.cmd --logfile log/21/mqtt_server.log --logdir log/21
RUN: MQTT server is now running PID 144680 on PORT 39371
* pid mqtt => 144680 144680
test 1199 [MQTT PUBLISH empty payload, no topic]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1199 ../src/curl -q --output log/21/curl1199.out  --include --trace log/21/trace1199 --trace-time mqtt://127.0.0.1:39371 -d "" > log/21/stdout1199 2> log/21/stderr1199

 1199: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1199
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1199 ../src/curl -q --output log/21/curl1199.out  --include --trace log/21/trace1199 --trace-time mqtt://127.0.0.1:39371 -d "" > log/21/stdout1199 2> log/21/stderr1199
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:12.683680 Running IPv4 version
 19:28:12.683744 Listening on port 39371
 19:28:12.683778 Wrote pid 144680 to log/21/server/mqtt_server.pid
 19:28:12.683804 Wrote port 39371 to log/21/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 1199
=== End of file server.cmd
=== Start of file valgrind1199
 ==145365== 
 ==145365== Process terminating with default action of signal 4 (SIGILL)
 ==145365==  Illegal opcode at address 0x492B75F
 ==145365==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145365==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145365==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145365==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145365==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145365==    by 0x49908EB: curl_version_info (version.c:600)
 ==145365==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145365==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145365==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145365==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1199
startnew: ./server/servers mqttd --port 0 --pidfile log/2/server/mqtt_server.pid --portfile log/2/server/mqtt_server.port --config log/2/server.cmd --logfile log/2/mqtt_server.log --logdir log/2
RUN: MQTT server is now running PID 144654 on PORT 42775
* pid mqtt => 144654 144654
test 1195 [MQTT SUBSCRIBE with short PUBLISH]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1195 ../src/curl -q --output log/2/curl1195.out  --include --trace log/2/trace1195 --trace-time mqtt://127.0.0.1:42775/1195 > log/2/stdout1195 2> log/2/stderr1195

 1195: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1195
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1195 ../src/curl -q --output log/2/curl1195.out  --include --trace log/2/trace1195 --trace-time mqtt://127.0.0.1:42775/1195 > log/2/stdout1195 2> log/2/stderr1195
=== End of file commands.log
=== Start of file mqtt_server.log
 19:28:11.437390 Running IPv4 version
 19:28:11.437462 Listening on port 42775
 19:28:11.437497 Wrote pid 144654 to log/2/server/mqtt_server.pid
 19:28:11.437527 Wrote port 42775 to log/2/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 PUBLISH-before-SUBACK TRUE
 short-PUBLISH TRUE
 Testnum 1195
=== End of file server.cmd
=== Start of file valgrind1195
 ==145029== 
 ==145029== Process terminating with default action of signal 4 (SIGILL)
 ==145029==  Illegal opcode at address 0x492B75F
 ==145029==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145029==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145029==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145029==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145029==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145029==    by 0x49908EB: curl_version_info (version.c:600)
 ==145029==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145029==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145029==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1195
test 1205 [HTTP GET with 18K HTTP header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1205 ../src/curl -q --output log/13/curl1205.out  --include --trace-ascii log/13/trace1205 --trace-time http://127.0.0.1:38821/1205 > log/13/stdout1205 2> log/13/stderr1205

 1205: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1205
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1205 ../src/curl -q --output log/13/curl1205.out  --include --trace-ascii log/13/trace1205 --trace-time http://127.0.0.1:38821/1205 > log/13/stdout1205 2> log/13/stderr1205
=== End of file commands.log
=== Start of file http_server.log
 19:28:12.505704 ====> Client connect
 19:28:12.505745 accept_connection 3 returned 4
 19:28:12.505771 Read 93 bytes
 19:28:12.505782 Process 93 bytes request
 19:28:12.505796 Got request: GET /verifiedserver HTTP/1.1
 19:28:12.505805 Are-we-friendly question received
 19:28:12.505834 Wrote request (93 bytes) input to log/13/server.input
 19:28:12.505852 Identifying ourselves as friends
 19:28:12.505937 Response sent (56 bytes) and written to log/13/server.response
 19:28:12.505950 special request received, no persistency
 19:28:12.505959 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (1CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1222.pl /startdir/src/curl/tests/.. /startdir/src/build-curl/tests/.. > log/12/stdout1222 2> log/12/stderr1222
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1212 ../src/curl -q --output log/24/curl1212.out  --include --trace-ascii log/24/trace1212 --trace-time http://user:secret@127.0.0.1:38895/ulion/1212 --socks5 non-existing-host.haxx.se:1080 --noproxy 127.0.0.1 --max-time 5 > log/24/stdout1212 2> log/24/stderr1212
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1213 ../src/curl -q --output log/18/curl1213.out  --include --trace-ascii log/18/trace1213 --trace-time -x 127.0.0.1:43739 we.want.that.site.com.1213 > log/18/stdout1213 2> log/18/stderr1213
27.0.0.1 port 38821) from 127.0.0.1 port 43690 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1205
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1205
 ==145109== 
 ==145109== Process terminating with default action of signal 4 (SIGILL)
 ==145109==  Illegal opcode at address 0x492B75F
 ==145109==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145109==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145109==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145109==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145109==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145109==    by 0x49908EB: curl_version_info (version.c:600)
 ==145109==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145109==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145109==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145109==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1205
test 1222 [Verify deprecation statuses and versions]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1222.pl /startdir/src/curl/tests/.. /startdir/src/build-curl/tests/.. > log/12/stdout1222 2> log/12/stderr1222
 valgrind SKIPPED
-------e--- OK (1117 out of 1890, remaining: 01:35, took 0.899s, duration: 02:18)
test 1212 [noproxy setting together with socks proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1212 ../src/curl -q --output log/24/curl1212.out  --include --trace-ascii log/24/trace1212 --trace-time http://user:secret@127.0.0.1:38895/ulion/1212 --socks5 non-existing-host.haxx.se:1080 --noproxy 127.0.0.1 --max-time 5 > log/24/stdout1212 2> log/24/stderr1212

 1212: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1212
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1212 ../src/curl -q --output log/24/curl1212.out  --include --trace-ascii log/24/trace1212 --trace-time http://user:secret@127.0.0.1:38895/ulion/1212 --socks5 non-existing-host.haxx.se:1080 --noproxy 127.0.0.1 --max-time 5 > log/24/stdout1212 2> log/24/stderr1212
=== End of file commands.log
=== Start of file http_server.log
 19:28:12.742324 ====> Client connect
 19:28:12.742360 accept_connection 3 returned 4
 19:28:12.742383 Read 93 bytes
 19:28:12.742392 Process 93 bytes request
 19:28:12.742406 Got request: GET /verifiedserver HTTP/1.1
 19:28:12.742414 Are-we-friendly question received
 19:28:12.742441 Wrote request (93 bytes) input to log/24/server.input
 19:28:12.742465 Identifying ourselves as friends
 19:28:12.742558 Response sent (56 bytes) and written to log/24/server.response
 19:28:12.742569 special request received, no persistency
 19:28:12.742577 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 50254 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1212
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1212
 ==145496== 
 ==145496== Process terminating with default action of signal 4 (SIGILL)
 ==145496==  Illegal opcode at address 0x492B75F
 ==145496==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145496==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145496==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145496==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145496==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145496==    by 0x49908EB: curl_version_info (version.c:600)
 ==145496==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145496==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145496==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145496==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1212
test 1213 [HTTP with proxy and host-only URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1213 ../src/curl -q --output log/18/curl1213.out  --include --trace-ascii log/18/trace1213 --trace-time -x 127.0.0.1:43739 we.want.that.site.com.1213 > log/18/stdout1213 2> log/18/stderr1213

 1213: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1213
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1213 ../src/curl -q --output log/18/curl1213.out  --include --trace-ascii log/18/trace1213 --trace-time -x 127.0.0.1:43739 we.want.that.site.com.1213 > log/18/stdout1213 2> log/18/stderr1213
=== End of file commands.log
=== Start of file http_server.log
 19:28:13.867071 ====> Client connect
 19:28:13.867108 accept_connection 3 returned 4
 19:28:13.867128 Read 93 bytes
 19:28:13.867137 Process 93 bytes request
 19:28:13.867150 Got request: GET /verifiedserver HTTP/1.1
 19:28:13.867159 Are-we-friendly question received
 19:28:13.867186 Wrote request (93 bytes) input to log/18/server.input
 19:28:13.867201 Identifying ourselves as friends
 19:28:13.867265 Response sent (56 bytes) and written to log/18/server.response
 19:28:13.867275 special request received, no persistency
 19:28:13.867283 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 37092 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1213
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1213
 ==145614== 
 ==145614== Process terminating with default action of signal 4 (SIGILL)
 ==145614==  Illegal opcode at address 0x492B75F
 ==145614==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145614==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145614==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145614==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145614==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145614==    by 0x49908EB: curl_version_info (version.c:600)
 ==145614==    by 0x4003269: UnknownInlinedFun (CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1217 ../src/curl -q --output log/5/curl1217.out  --include --trace-ascii log/5/trace1217 --trace-time ftp://127.0.0.1:39641/get/file/1217 ftp://127.0.0.1:39641/get/file/again/1217 --ftp-method singlecwd > log/5/stdout1217 2> log/5/stderr1217
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1207 ../src/curl -q --output log/23/curl1207.out  --include --trace-ascii log/23/trace1207 --trace-time --max-time 8 ftp://127.0.0.1:35523/1207 -P - > log/23/stdout1207 2> log/23/stderr1207
tool_libinfo.c:140)
 ==145614==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145614==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145614==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1213
test 1217 [FTP with rubbish before name in 257-response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1217 ../src/curl -q --output log/5/curl1217.out  --include --trace-ascii log/5/trace1217 --trace-time ftp://127.0.0.1:39641/get/file/1217 ftp://127.0.0.1:39641/get/file/again/1217 --ftp-method singlecwd > log/5/stdout1217 2> log/5/stderr1217

 1217: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1217
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1217 ../src/curl -q --output log/5/curl1217.out  --include --trace-ascii log/5/trace1217 --trace-time ftp://127.0.0.1:39641/get/file/1217 ftp://127.0.0.1:39641/get/file/again/1217 --ftp-method singlecwd > log/5/stdout1217 2> log/5/stderr1217
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:13.409873 ====> Client connect
 19:28:13.410085 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:13.410390 < "USER anonymous"
 19:28:13.410426 > "331 We are happy you popped in![CR][LF]"
 19:28:13.410598 < "PASS ftp@example.com"
 19:28:13.410625 > "230 Welcome you silly person[CR][LF]"
 19:28:13.410793 < "PWD"
 19:28:13.410827 > "257 "/" is current directory[CR][LF]"
 19:28:13.411000 < "EPSV"
 19:28:13.411029 ====> Passive DATA channel requested by client
 19:28:13.411043 DATA sockfilt for passive data channel starting...
 19:28:13.422085 DATA sockfilt for passive data channel started (pid 145741)
 19:28:13.422243 DATA sockfilt for passive data channel listens on port 46045
 19:28:13.422298 > "229 Entering Passive Mode (|||46045|)[CR][LF]"
 19:28:13.422318 Client has been notified that upcoming DATA connection is awaited on port 46045
 19:28:13.422679 Client connects to port 46045
 19:28:13.422709 ====> Client established passive DATA connection on port 46045
 19:28:13.422803 < "TYPE I"
 19:28:13.422837 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:13.423000 < "SIZE verifiedserver"
 19:28:13.423036 > "213 17[CR][LF]"
 19:28:13.423193 < "RETR verifiedserver"
 19:28:13.423226 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:13.423313 =====> Closing passive DATA connection...
 19:28:13.423327 Server disconnects passive DATA connection
 19:28:13.423467 Server disconnected passive DATA connection
 19:28:13.423486 DATA sockfilt for passive data channel quits (pid 145741)
 19:28:13.423791 DATA sockfilt for passive data channel quit (pid 145741)
 19:28:13.423815 =====> Closed passive DATA connection
 19:28:13.423839 > "226 File transfer complete[CR][LF]"
 19:28:13.472601 < "QUIT"
 19:28:13.472668 > "221 bye bye baby[CR][LF]"
 19:28:13.474315 MAIN sockfilt said DISC
 19:28:13.474353 ====> Client disconnected
 19:28:13.474435 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:13.013346 ====> Client connect
 19:28:13.013702 Received DATA (on stdin)
 19:28:13.013717 > 146 bytes data, server => client
 19:28:13.013729 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:13.013739 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:13.013748 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:13.013845 < 16 bytes data, client => server
 19:28:13.013859 'USER anonymous\r\n'
 19:28:13.014030 Received DATA (on stdin)
 19:28:13.014042 > 33 bytes data, server => client
 19:28:13.014052 '331 We are happy you popped in!\r\n'
 19:28:13.014107 < 22 bytes data, client => server
 19:28:13.014119 'PASS ftp@example.com\r\n'
 19:28:13.014228 Received DATA (on stdin)
 19:28:13.014239 > 30 bytes data, server => client
 19:28:13.014249 '230 Welcome you silly person\r\n'
 19:28:13.014306 < 5 bytes data, client => server
 19:28:13.014318 'PWD\r\n'
 19:28:13.014428 Received DATA (on stdin)
 19:28:13.014439 > 30 bytes data, server => client
 19:28:13.014449 '257 "/" is current directory\r\n'
 19:28:13.014513 < 6 bytes data, client => server
 19:28:13.014526 'EPSV\r\n'
 19:28:13.025930 Received DATA (on stdin)
 19:28:13.025951 > 39 bytes data, server => client
 19:28:13.025962 '229 Entering Passive Mode (|||46045|)\r\n'
 19:28:13.026194 < 8 bytes data, client => server
 19:28:13.026210 'TYPE I\r\n'
 19:28:13.026440 Received DATA (on stdin)
 19:28:13.026452 > 33 bytes data, server => client
 19:28:13.026462 '200 I modify TYPE as you wanted\r\n'
 19:28:13.026515 < 21 bytes data, client => server
 19:28:13.026527 'SIZE verifiedserver\r\n'
 19:28:13.026636 Received DATA (on stdin)
 19:28:13.026646 > 8 bytes data, server => client
 19:28:13.026656 '213 17\r\n'
 19:28:13.026708 < 21 bytes data, client => server
 19:28:13.026719 'RETR verifiedserver\r\n'
 19:28:13.026926 Received DATA (on stdin)
 19:28:13.026936 > 29 bytes data, server => client
 19:28:13.026945 '150 Binary junk (17 bytes).\r\n'
 19:28:13.027438 Received DATA (on stdin)
 19:28:13.027449 > 28 bytes data, server => client
 19:28:13.027458 '226 File transfer complete\r\n'
 19:28:13.075778 < 6 bytes data, client => server
 19:28:13.075811 'QUIT\r\n'
 19:28:13.076279 Received DATA (on stdin)
 19:28:13.076292 > 18 bytes data, server => client
 19:28:13.076303 '221 bye bye baby\r\n'
 19:28:13.077392 ====> Client disconnect
 19:28:13.078036 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:13.019393 Running IPv4 version
 19:28:13.019466 Listening on port 46045
 19:28:13.019504 Wrote pid 145741 to log/5/server/ftp_sockdata.pid
 19:28:13.025587 Received PING (on stdin)
 19:28:13.025734 Received PORT (on stdin)
 19:28:13.026232 ====> Client connect
 19:28:13.026969 Received DATA (on stdin)
 19:28:13.026979 > 17 bytes data, server => client
 19:28:13.026988 'WE ROOLZ: 85245\r\n'
 19:28:13.027009 Received DISC (on stdin)
 19:28:13.027019 ====> Client forcibly disconnected
 19:28:13.027089 Received QUIT (on stdin)
 19:28:13.027098 quits
 19:28:13.027152 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 257 there is rubbish all over "/this/is/the/path"
 Testnum 1217
=== End of file server.cmd
=== Start of file valgrind1217
 ==145896== 
 ==145896== Process terminating with default action of signal 4 (SIGILL)
 ==145896==  Illegal opcode at address 0x492B75F
 ==145896==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145896==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145896==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145896==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145896==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145896==    by 0x49908EB: curl_version_info (version.c:600)
 ==145896==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145896==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145896==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145896==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1217
test 1207 [FTP PORT and 421 on download]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1207 ../src/curl -q --output log/23/curl1207.out  --include --trace-ascii log/23/trace1207 --trace-time --max-time 8 ftp://127.0.0.1:35523/1207 -P - > log/23/stdout1207 2> log/23/stderr1207

 1207: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1207
=== Start of CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1200 ../src/curl -q --output log/11/curl1200.out  --include --trace-ascii log/11/trace1200 --trace-time gopher://127.0.0.1:36969/1/1200 > log/11/stdout1200 2> log/11/stderr1200
file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1207 ../src/curl -q --output log/23/curl1207.out  --include --trace-ascii log/23/trace1207 --trace-time --max-time 8 ftp://127.0.0.1:35523/1207 -P - > log/23/stdout1207 2> log/23/stderr1207
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:12.864226 ====> Client connect
 19:28:12.864468 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:12.870144 < "USER anonymous"
 19:28:12.870206 > "331 We are happy you popped in![CR][LF]"
 19:28:12.870437 < "PASS ftp@example.com"
 19:28:12.870480 > "230 Welcome you silly person[CR][LF]"
 19:28:12.870682 < "PWD"
 19:28:12.870725 > "257 "/" is current directory[CR][LF]"
 19:28:12.870919 < "EPSV"
 19:28:12.870946 ====> Passive DATA channel requested by client
 19:28:12.870963 DATA sockfilt for passive data channel starting...
 19:28:12.881918 DATA sockfilt for passive data channel started (pid 145071)
 19:28:12.885901 DATA sockfilt for passive data channel listens on port 37463
 19:28:12.888865 > "229 Entering Passive Mode (|||37463|)[CR][LF]"
 19:28:12.888902 Client has been notified that upcoming DATA connection is awaited on port 37463
 19:28:12.889260 Client connects to port 37463
 19:28:12.889302 ====> Client established passive DATA connection on port 37463
 19:28:12.889423 < "TYPE I"
 19:28:12.889463 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:12.889658 < "SIZE verifiedserver"
 19:28:12.889702 > "213 17[CR][LF]"
 19:28:12.889855 < "RETR verifiedserver"
 19:28:12.889888 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:12.889977 =====> Closing passive DATA connection...
 19:28:12.889996 Server disconnects passive DATA connection
 19:28:12.890236 Server disconnected passive DATA connection
 19:28:12.890266 DATA sockfilt for passive data channel quits (pid 145071)
 19:28:12.890528 DATA sockfilt for passive data channel quit (pid 145071)
 19:28:12.890551 =====> Closed passive DATA connection
 19:28:12.890581 > "226 File transfer complete[CR][LF]"
 19:28:12.935804 < "QUIT"
 19:28:12.936304 > "221 bye bye baby[CR][LF]"
 19:28:12.937898 MAIN sockfilt said DISC
 19:28:12.938004 ====> Client disconnected
 19:28:12.938105 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:13.467737 ====> Client connect
 19:28:13.468123 Received DATA (on stdin)
 19:28:13.468141 > 146 bytes data, server => client
 19:28:13.468152 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:13.468162 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:13.468171 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:13.473542 < 16 bytes data, client => server
 19:28:13.473571 'USER anonymous\r\n'
 19:28:13.473853 Received DATA (on stdin)
 19:28:13.473868 > 33 bytes data, server => client
 19:28:13.473878 '331 We are happy you popped in!\r\n'
 19:28:13.473947 < 22 bytes data, client => server
 19:28:13.473962 'PASS ftp@example.com\r\n'
 19:28:13.474120 Received DATA (on stdin)
 19:28:13.474133 > 30 bytes data, server => client
 19:28:13.474143 '230 Welcome you silly person\r\n'
 19:28:13.474207 < 5 bytes data, client => server
 19:28:13.474221 'PWD\r\n'
 19:28:13.474364 Received DATA (on stdin)
 19:28:13.474376 > 30 bytes data, server => client
 19:28:13.474387 '257 "/" is current directory\r\n'
 19:28:13.474455 < 6 bytes data, client => server
 19:28:13.474469 'EPSV\r\n'
 19:28:13.492580 Received DATA (on stdin)
 19:28:13.492600 > 39 bytes data, server => client
 19:28:13.492610 '229 Entering Passive Mode (|||37463|)\r\n'
 19:28:13.492794 < 8 bytes data, client => server
 19:28:13.492812 'TYPE I\r\n'
 19:28:13.493101 Received DATA (on stdin)
 19:28:13.493114 > 33 bytes data, server => client
 19:28:13.493124 '200 I modify TYPE as you wanted\r\n'
 19:28:13.493187 < 21 bytes data, client => server
 19:28:13.493200 'SIZE verifiedserver\r\n'
 19:28:13.493334 Received DATA (on stdin)
 19:28:13.493344 > 8 bytes data, server => client
 19:28:13.493353 '213 17\r\n'
 19:28:13.493403 < 21 bytes data, client => server
 19:28:13.493414 'RETR verifiedserver\r\n'
 19:28:13.493724 Received DATA (on stdin)
 19:28:13.493739 > 29 bytes data, server => client
 19:28:13.493751 '150 Binary junk (17 bytes).\r\n'
 19:28:13.494218 Received DATA (on stdin)
 19:28:13.494230 > 28 bytes data, server => client
 19:28:13.494241 '226 File transfer complete\r\n'
 19:28:13.539238 < 6 bytes data, client => server
 19:28:13.539267 'QUIT\r\n'
 19:28:13.539468 Received DATA (on stdin)
 19:28:13.539481 > 18 bytes data, server => client
 19:28:13.539966 '221 bye bye baby\r\n'
 19:28:13.541174 ====> Client disconnect
 19:28:13.541554 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:12.483947 Running IPv4 version
 19:28:12.484039 Listening on port 37463
 19:28:12.484080 Wrote pid 145071 to log/23/server/ftp_sockdata.pid
 19:28:12.485484 Received PING (on stdin)
 19:28:12.488963 Received PORT (on stdin)
 19:28:12.492837 ====> Client connect
 19:28:12.493633 Received DATA (on stdin)
 19:28:12.493648 > 17 bytes data, server => client
 19:28:12.493658 'WE ROOLZ: 84709\r\n'
 19:28:12.493686 Received DISC (on stdin)
 19:28:12.493698 ====> Client forcibly disconnected
 19:28:12.493908 Received QUIT (on stdin)
 19:28:12.493921 quits
 19:28:12.493996 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 NODATACONN421
 Testnum 1207
=== End of file server.cmd
=== Start of file valgrind1207
 ==145156== 
 ==145156== Process terminating with default action of signal 4 (SIGILL)
 ==145156==  Illegal opcode at address 0x492B75F
 ==145156==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145156==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145156==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145156==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145156==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145156==    by 0x49908EB: curl_version_info (version.c:600)
 ==145156==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145156==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145156==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145156==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1207
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --gopher --keepalive 30 --pidfile "log/11/server/gopher_server.pid" --logfile "log/11/gopher_server.log" --logdir "log/11" --portfile log/11/server/gopher_server.port --config log/11/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: GOPHER server is on PID 144791 port 36969
* pid gopher => 144791 144791
test 1200 [Gopher index]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1200 ../src/curl -q --output log/11/curl1200.out  --include --trace-ascii log/11/trace1200 --trace-time gopher://127.0.0.1:36969/1/1200 > log/11/stdout1200 2> log/11/stderr1200

 1200: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1200
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1200 ../src/curl -q --output log/11/curl1200.out  --include --trace-ascii log/11/trace1200 --trace-time gopher://127.0.0.1:36969/1/1200 > log/11/stdout1200 2> log/11/stderr1200
=== End of file commands.log
=== Start of file gopher_server.log
 19:28:12.959667 Running GOPHER IPv4 version on port 36969
 19:28:12.959785 Wrote pid 144791 to log/11/server/gopher_server.pid
 19:28:12.959918 Wrote port 36969 to log/11/server/gopher_serveCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1216 ../src/curl -q --output log/10/curl1216.out  --include --trace-ascii log/10/trace1216 --trace-time http://example.fake/c/1216 http://bexample.fake/c/1216 -b log/10/injar1216 -x 127.0.0.1:40913 > log/10/stdout1216 2> log/10/stderr1216
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1210 ../src/curl -q --trace-ascii log/14/trace1210 --trace-time http://127.0.0.1:45467/1210?junk -J -O --output-dir log/14 > log/14/stdout1210 2> log/14/stderr1210
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1214 ../src/curl -q --output log/20/curl1214.out  --include --trace-ascii log/20/trace1214 --trace-time -x 127.0.0.1:33897 http://we.want.that.site.com.1214?moo=foo > log/20/stdout1214 2> log/20/stderr1214
r.port
=== End of file gopher_server.log
=== Start of file server.cmd
 Testnum 1200
=== End of file server.cmd
=== Start of file valgrind1200
 ==145612== 
 ==145612== Process terminating with default action of signal 4 (SIGILL)
 ==145612==  Illegal opcode at address 0x492B75F
 ==145612==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145612==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145612==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145612==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145612==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145612==    by 0x49908EB: curl_version_info (version.c:600)
 ==145612==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145612==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145612==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145612==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1200
test 1216 [HTTP cookie domains tailmatching the hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1216 ../src/curl -q --output log/10/curl1216.out  --include --trace-ascii log/10/trace1216 --trace-time http://example.fake/c/1216 http://bexample.fake/c/1216 -b log/10/injar1216 -x 127.0.0.1:40913 > log/10/stdout1216 2> log/10/stderr1216

 1216: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1216
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1216 ../src/curl -q --output log/10/curl1216.out  --include --trace-ascii log/10/trace1216 --trace-time http://example.fake/c/1216 http://bexample.fake/c/1216 -b log/10/injar1216 -x 127.0.0.1:40913 > log/10/stdout1216 2> log/10/stderr1216
=== End of file commands.log
=== Start of file http_server.log
 19:28:12.997815 ====> Client connect
 19:28:12.997851 accept_connection 3 returned 4
 19:28:12.997949 Read 93 bytes
 19:28:12.997962 Process 93 bytes request
 19:28:12.997975 Got request: GET /verifiedserver HTTP/1.1
 19:28:12.997984 Are-we-friendly question received
 19:28:12.998016 Wrote request (93 bytes) input to log/10/server.input
 19:28:12.998032 Identifying ourselves as friends
 19:28:12.998093 Response sent (56 bytes) and written to log/10/server.response
 19:28:12.998103 special request received, no persistency
 19:28:12.998111 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 52798 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file injar1216
 example.fake	FALSE	/a	FALSE	22139150993	mooo	indeed
 example.fake	FALSE	/b	FALSE	0		moo1	indeed
 example.fake	FALSE	/c	FALSE	22139150993	moo2	indeed
 example.fake	TRUE	/c	FALSE	22139150993	moo3	indeed
=== End of file injar1216
=== Start of file server.cmd
 Testnum 1216
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1216
 ==145765== 
 ==145765== Process terminating with default action of signal 4 (SIGILL)
 ==145765==  Illegal opcode at address 0x492B75F
 ==145765==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145765==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145765==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145765==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145765==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145765==    by 0x49908EB: curl_version_info (version.c:600)
 ==145765==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145765==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145765==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145765==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1216
test 1210 [HTTP GET with -J without Content-Disposition]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1210 ../src/curl -q --trace-ascii log/14/trace1210 --trace-time http://127.0.0.1:45467/1210?junk -J -O --output-dir log/14 > log/14/stdout1210 2> log/14/stderr1210

 1210: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1210
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1210 ../src/curl -q --trace-ascii log/14/trace1210 --trace-time http://127.0.0.1:45467/1210?junk -J -O --output-dir log/14 > log/14/stdout1210 2> log/14/stderr1210
=== End of file commands.log
=== Start of file http_server.log
 19:28:12.696627 ====> Client connect
 19:28:12.696664 accept_connection 3 returned 4
 19:28:12.702478 Read 93 bytes
 19:28:12.702503 Process 93 bytes request
 19:28:12.702515 Got request: GET /verifiedserver HTTP/1.1
 19:28:12.702525 Are-we-friendly question received
 19:28:12.702571 Wrote request (93 bytes) input to log/14/server.input
 19:28:12.702590 Identifying ourselves as friends
 19:28:12.702658 Response sent (56 bytes) and written to log/14/server.response
 19:28:12.702668 special request received, no persistency
 19:28:12.702677 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 45660 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1210
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1210
 ==145420== 
 ==145420== Process terminating with default action of signal 4 (SIGILL)
 ==145420==  Illegal opcode at address 0x492B75F
 ==145420==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145420==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145420==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145420==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145420==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145420==    by 0x49908EB: curl_version_info (version.c:600)
 ==145420==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145420==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145420==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145420==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1210
test 1214 [HTTP with proxy and URL with ? and no slash separator]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1214 ../src/curl -q --output log/20/curl1214.out  --include --trace-ascii log/20/trace1214 --trace-time -x 127.0.0.1:33897 http://we.want.that.site.com.1214?moo=foo > log/20/stdout1214 2> log/20/stCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1202 ../src/curl -q --output log/22/curl1202.out  --include --trace-ascii log/22/trace1202 --trace-time "gopher://127.0.0.1:45765/7/the/search/engine%09query%20succeeded/1202" > log/22/stdout1202 2> log/22/stderr1202
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1201 ../src/curl -q --output log/3/curl1201.out  --include --trace-ascii log/3/trace1201 --trace-time gopher://127.0.0.1:40275/1/selector/SELECTOR/1201 > log/3/stdout1201 2> log/3/stderr1201
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1203 ../src/curl -q --output log/8/curl1203.out  --include --trace-ascii log/8/trace1203 --trace-time -g gopher://[::1]:41673/1/moo/1203 > log/8/stdout1203 2> log/8/stderr1203
derr1214

 1214: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1214
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1214 ../src/curl -q --output log/20/curl1214.out  --include --trace-ascii log/20/trace1214 --trace-time -x 127.0.0.1:33897 http://we.want.that.site.com.1214?moo=foo > log/20/stdout1214 2> log/20/stderr1214
=== End of file commands.log
=== Start of file http_server.log
 19:28:12.868991 ====> Client connect
 19:28:12.869027 accept_connection 3 returned 4
 19:28:12.869048 Read 93 bytes
 19:28:12.869058 Process 93 bytes request
 19:28:12.869070 Got request: GET /verifiedserver HTTP/1.1
 19:28:12.869079 Are-we-friendly question received
 19:28:12.869109 Wrote request (93 bytes) input to log/20/server.input
 19:28:12.869124 Identifying ourselves as friends
 19:28:12.869190 Response sent (56 bytes) and written to log/20/server.response
 19:28:12.869200 special request received, no persistency
 19:28:12.869208 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 37228 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1214
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1214
 ==145601== 
 ==145601== Process terminating with default action of signal 4 (SIGILL)
 ==145601==  Illegal opcode at address 0x492B75F
 ==145601==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145601==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145601==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145601==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145601==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145601==    by 0x49908EB: curl_version_info (version.c:600)
 ==145601==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145601==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145601==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145601==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1214
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --gopher --keepalive 30 --pidfile "log/22/server/gopher_server.pid" --logfile "log/22/gopher_server.log" --logdir "log/22" --portfile log/22/server/gopher_server.port --config log/22/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: GOPHER server is on PID 144893 port 45765
* pid gopher => 144893 144893
test 1202 [Gopher query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1202 ../src/curl -q --output log/22/curl1202.out  --include --trace-ascii log/22/trace1202 --trace-time "gopher://127.0.0.1:45765/7/the/search/engine%09query%20succeeded/1202" > log/22/stdout1202 2> log/22/stderr1202

 1202: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1202
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1202 ../src/curl -q --output log/22/curl1202.out  --include --trace-ascii log/22/trace1202 --trace-time "gopher://127.0.0.1:45765/7/the/search/engine%09query%20succeeded/1202" > log/22/stdout1202 2> log/22/stderr1202
=== End of file commands.log
=== Start of file gopher_server.log
 19:28:12.174643 Running GOPHER IPv4 version on port 45765
 19:28:12.174754 Wrote pid 144893 to log/22/server/gopher_server.pid
 19:28:12.174790 Wrote port 45765 to log/22/server/gopher_server.port
=== End of file gopher_server.log
=== Start of file server.cmd
 Testnum 1202
=== End of file server.cmd
=== Start of file valgrind1202
 ==145904== 
 ==145904== Process terminating with default action of signal 4 (SIGILL)
 ==145904==  Illegal opcode at address 0x492B75F
 ==145904==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145904==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145904==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145904==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145904==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145904==    by 0x49908EB: curl_version_info (version.c:600)
 ==145904==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145904==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145904==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145904==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1202
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --gopher --keepalive 30 --pidfile "log/3/server/gopher_server.pid" --logfile "log/3/gopher_server.log" --logdir "log/3" --portfile log/3/server/gopher_server.port --config log/3/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: GOPHER server is on PID 144821 port 40275
* pid gopher => 144821 144821
test 1201 [Gopher selector]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1201 ../src/curl -q --output log/3/curl1201.out  --include --trace-ascii log/3/trace1201 --trace-time gopher://127.0.0.1:40275/1/selector/SELECTOR/1201 > log/3/stdout1201 2> log/3/stderr1201

 1201: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1201
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1201 ../src/curl -q --output log/3/curl1201.out  --include --trace-ascii log/3/trace1201 --trace-time gopher://127.0.0.1:40275/1/selector/SELECTOR/1201 > log/3/stdout1201 2> log/3/stderr1201
=== End of file commands.log
=== Start of file gopher_server.log
 19:28:12.015835 Running GOPHER IPv4 version on port 40275
 19:28:12.015950 Wrote pid 144821 to log/3/server/gopher_server.pid
 19:28:12.015985 Wrote port 40275 to log/3/server/gopher_server.port
=== End of file gopher_server.log
=== Start of file server.cmd
 Testnum 1201
=== End of file server.cmd
=== Start of file valgrind1201
 ==145703== 
 ==145703== Process terminating with default action of signal 4 (SIGILL)
 ==145703==  Illegal opcode at address 0x492B75F
 ==145703==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145703==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145703==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145703==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145703==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145703==    by 0x49908EB: curl_version_info (version.c:600)
 ==145703==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145703==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145703==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145703==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1201
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/cuCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1218 ../src/curl -q --output log/9/curl1218.out  --include --trace-ascii log/9/trace1218 --trace-time http://example.fake/c/1218 http://example.fake/c/1218 http://bexample.fake/c/1218 -b nonexisting -x 127.0.0.1:43733 > log/9/stdout1218 2> log/9/stderr1218
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1220 ../src/curl -q --trace-ascii log/19/trace1220 --trace-time file://localhost/startdir/src/build-curl/tests/log/19/test1220.txt?a_query=foobar#afragment > log/19/stdout1220 2> log/19/stderr1220
rl/tests/http-server.pl --gopher --keepalive 30 --pidfile "log/8/server/gopher_ipv6_server.pid" --logfile "log/8/gopher_ipv6_server.log" --logdir "log/8" --portfile log/8/server/gopher_ipv6_server.port --config log/8/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: GOPHER-IPv6 server is on PID 144906 port 41673
* pid gopher-ipv6 => 144906 144906
test 1203 [Gopher IPv6 index]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1203 ../src/curl -q --output log/8/curl1203.out  --include --trace-ascii log/8/trace1203 --trace-time -g gopher://[::1]:41673/1/moo/1203 > log/8/stdout1203 2> log/8/stderr1203

 1203: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1203
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1203 ../src/curl -q --output log/8/curl1203.out  --include --trace-ascii log/8/trace1203 --trace-time -g gopher://[::1]:41673/1/moo/1203 > log/8/stdout1203 2> log/8/stderr1203
=== End of file commands.log
=== Start of file gopher_ipv6_server.log
 19:28:12.192098 Running GOPHER IPv6 version on port 41673
 19:28:12.195669 Wrote pid 144906 to log/8/server/gopher_ipv6_server.pid
 19:28:12.195732 Wrote port 41673 to log/8/server/gopher_ipv6_server.port
=== End of file gopher_ipv6_server.log
=== Start of file server.cmd
 Testnum 1203
=== End of file server.cmd
=== Start of file valgrind1203
 ==145916== 
 ==145916== Process terminating with default action of signal 4 (SIGILL)
 ==145916==  Illegal opcode at address 0x492B75F
 ==145916==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==145916==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==145916==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==145916==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==145916==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==145916==    by 0x49908EB: curl_version_info (version.c:600)
 ==145916==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==145916==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==145916==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==145916==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1203
test 1218 [HTTP cookies and domains with same prefix]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1218 ../src/curl -q --output log/9/curl1218.out  --include --trace-ascii log/9/trace1218 --trace-time http://example.fake/c/1218 http://example.fake/c/1218 http://bexample.fake/c/1218 -b nonexisting -x 127.0.0.1:43733 > log/9/stdout1218 2> log/9/stderr1218

 1218: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1218
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1218 ../src/curl -q --output log/9/curl1218.out  --include --trace-ascii log/9/trace1218 --trace-time http://example.fake/c/1218 http://example.fake/c/1218 http://bexample.fake/c/1218 -b nonexisting -x 127.0.0.1:43733 > log/9/stdout1218 2> log/9/stderr1218
=== End of file commands.log
=== Start of file http_server.log
 19:28:13.627835 ====> Client connect
 19:28:13.627872 accept_connection 3 returned 4
 19:28:13.627896 Read 93 bytes
 19:28:13.627906 Process 93 bytes request
 19:28:13.627919 Got request: GET /verifiedserver HTTP/1.1
 19:28:13.627928 Are-we-friendly question received
 19:28:13.627954 Wrote request (93 bytes) input to log/9/server.input
 19:28:13.627970 Identifying ourselves as friends
 19:28:13.628037 Response sent (56 bytes) and written to log/9/server.response
 19:28:13.628047 special request received, no persistency
 19:28:13.628056 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 44100 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1218
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1218
 ==146103== 
 ==146103== Process terminating with default action of signal 4 (SIGILL)
 ==146103==  Illegal opcode at address 0x492B75F
 ==146103==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146103==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146103==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146103==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146103==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146103==    by 0x49908EB: curl_version_info (version.c:600)
 ==146103==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146103==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146103==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146103==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1218
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1219 ../src/curl -q --output log/16/curl1219.out  --include --trace-ascii log/16/trace1219 --trace-time ftp://127.0.0.1:40031/1219 > log/16/stdout1219 2> log/16/stderr1219
test 1220 [file:// URLs with query string]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1220 ../src/curl -q --trace-ascii log/19/trace1220 --trace-time file://localhost/startdir/src/build-curl/tests/log/19/test1220.txt?a_query=foobar#afragment > log/19/stdout1220 2> log/19/stderr1220

 1220: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:28:16.803620990 +0000
+++ log/19/check-generated	2026-10-15 19:28:16.801444462 +0000
@@ -1 +0,0 @@
-contents in a single file[LF]
== Contents of files in the log/19/ directory after test 1220
=== Start of file check-expected
 contents in a single file[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1220 ../src/curl -q --trace-ascii log/19/trace1220 --trace-time file://localhost/startdir/src/build-curl/tests/log/19/test1220.txt?a_query=foobar#afragment > log/19/stdout1220 2> log/19/stderr1220
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1220
=== End of file server.cmd
=== Start of file test1220.txt
 contents in a single file
=== End of file test1220.txt
=== Start of file valgrind1220
 ==146183== 
 ==146183== Process terminating with default action of signal 4 (SIGILL)
 ==146183==  Illegal opcode at address 0x492B75F
 ==146183==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146183==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146183==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146183==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146183==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146183==    by 0x49908EB: curl_version_info (version.c:600)
 ==146183==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146183==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146183==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146183==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1220
test 1219 [FTP with no user+password required (230 response)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1219 ../src/curl -q --output log/16/curl1219.out  --include --trace-ascii log/16/trace1219 --trace-time ftp://127.0.0.1:40031/1219 > log/16/stdout1219 2> log/16/stderr1219

 1219: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1219
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1219 ../src/curl -q --output log/16/curl1219.out  --include --trace-ascii log/16/trace1219 --trace-time ftp://127.0.0.1:40031/1219 > log/16/stdout1219 2> log/16/stderr1219
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:14.568320 ====> Client connect
 19:28:14.568551 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:14.568876 < "USER anonymous"
 19:28:14.568913 > "331 We are happy you popped in![CR][LF]"
 19:28:14.569087 < "PASS ftp@example.com"
 19:28:14.569114 > "230 Welcome you silly person[CR][LF]"
 19:28:14.571083 < "PWD"
 19:28:14.571120 > "257 "/" is current directory[CR][LF]"
 19:28:14.571302 < "EPSV"
 19:28:14.571329 ====> Passive DATA channel requested by client
 19:28:14.571345 DATA sockfilt for passive data channel starting...
 19:28:14.574203 DATA sockfilt for passive data channel started (pid 146221)
 19:28:14.574319 DATA sockfilt for passive data channel listens on port 33881
 19:28:14.574364 > "229 Entering Passive Mode (|||33881|)[CR][LF]"
 19:28:14.574383 Client has been notified that upcoming DATA connection is awaited on port 33881
 19:28:14.574652 Client connects to port 33881
 19:28:14.574685 ====> Client established passive DATA connection on port 33881
 19:28:14.574765 < "TYPE I"
 19:28:14.574793 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:14.574957 < "SIZE verifiedserver"
 19:28:14.575000 > "213 17[CR][LF]"
 19:28:14.575161 < "RETR verifiedserver"
 19:28:14.575197 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:14.575716 =====> Closing passive DATA connection...
 19:28:14.575741 Server disconnects passive DATA connection
 19:28:14.576912 Server disconnected passive DATA connection
 19:28:14.576946 DATA sockfilt for passive data channel quits (pid 146221)
 19:28:14.577425 DATA sockfilt for passive data channel quit (pid 146221)
 19:28:14.577453 =====> Closed passive DATA connection
 19:28:14.577486 > "226 File transfer complete[CR][LF]"
 19:28:14.619086 < "QUIT"
 19:28:14.619237 > "221 bye bye baby[CR][LF]"
 19:28:14.619327 MAIN sockfilt said DISC
 19:28:14.619351 ====> Client disconnected
 19:28:14.619439 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:14.170565 ====> Client connect
 19:28:14.172102 Received DATA (on stdin)
 19:28:14.172119 > 146 bytes data, server => client
 19:28:14.172130 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:14.172140 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:14.172149 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:14.172251 < 16 bytes data, client => server
 19:28:14.172265 'USER anonymous\r\n'
 19:28:14.172450 Received DATA (on stdin)
 19:28:14.172462 > 33 bytes data, server => client
 19:28:14.172472 '331 We are happy you popped in!\r\n'
 19:28:14.172531 < 22 bytes data, client => server
 19:28:14.172542 'PASS ftp@example.com\r\n'
 19:28:14.172648 Received DATA (on stdin)
 19:28:14.172659 > 30 bytes data, server => client
 19:28:14.172669 '230 Welcome you silly person\r\n'
 19:28:14.174517 < 5 bytes data, client => server
 19:28:14.174534 'PWD\r\n'
 19:28:14.174656 Received DATA (on stdin)
 19:28:14.174668 > 30 bytes data, server => client
 19:28:14.174678 '257 "/" is current directory\r\n'
 19:28:14.174746 < 6 bytes data, client => server
 19:28:14.174758 'EPSV\r\n'
 19:28:14.177925 Received DATA (on stdin)
 19:28:14.177938 > 39 bytes data, server => client
 19:28:14.177948 '229 Entering Passive Mode (|||33881|)\r\n'
 19:28:14.178100 < 8 bytes data, client => server
 19:28:14.178116 'TYPE I\r\n'
 19:28:14.178327 Received DATA (on stdin)
 19:28:14.178338 > 33 bytes data, server => client
 19:28:14.178348 '200 I modify TYPE as you wanted\r\n'
 19:28:14.178402 < 21 bytes data, client => server
 19:28:14.178413 'SIZE verifiedserver\r\n'
 19:28:14.178534 Received DATA (on stdin)
 19:28:14.178545 > 8 bytes data, server => client
 19:28:14.178555 '213 17\r\n'
 19:28:14.178608 < 21 bytes data, client => server
 19:28:14.178619 'RETR verifiedserver\r\n'
 19:28:14.179019 Received DATA (on stdin)
 19:28:14.179035 > 29 bytes data, server => client
 19:28:14.179088 '150 Binary junk (17 bytes).\r\n'
 19:28:14.181027 Received DATA (on stdin)
 19:28:14.181040 > 28 bytes data, server => client
 19:28:14.181051 '226 File transfer complete\r\n'
 19:28:14.222368 < 6 bytes data, client => server
 19:28:14.222408 'QUIT\r\n'
 19:28:14.222671 Received DATA (on stdin)
 19:28:14.222690 > 18 bytes data, server => client
 19:28:14.222709 '221 bye bye baby\r\n'
 19:28:14.222811 ====> Client disconnect
 19:28:14.222981 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:14.176474 Running IPv4 version
 19:28:14.176561 Listening on port 33881
 19:28:14.176601 Wrote pid 146221 to log/16/server/ftp_sockdata.pid
 19:28:14.177673 Received PING (on stdin)
 19:28:14.177765 Received PORT (on stdin)
 19:28:14.178138 ====> Client connect
 19:28:14.179142 Received DATA (on stdin)
 19:28:14.179164 > 17 bytes data, server => client
 19:28:14.179174 'WE ROOLZ:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1221 ../src/curl -q --output log/6/curl1221.out  --include --trace-ascii log/6/trace1221 --trace-time http://127.0.0.1:33935/1221 --url-query "my name is moo[]" --url-query "yes=s i r" --url-query "v_alue@log/6/1221.txt" --url-query @log/6/1221.txt --url-query "+%3d%3d" --data-urlencode "start=once upon the time" > log/6/stdout1221 2> log/6/stderr1221
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1223 ../src/curl -q --include --trace-ascii log/7/trace1223 --trace-time http://127.0.0.1:40859/1223 -w 'IP %{remote_ip} and PORT %{remote_port}\n' > log/7/stdout1223 2> log/7/stderr1223
 84702\r\n'
 19:28:14.179279 Received DISC (on stdin)
 19:28:14.179291 ====> Client forcibly disconnected
 19:28:14.180628 Received QUIT (on stdin)
 19:28:14.180655 quits
 19:28:14.180738 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY welcome 230 welcome without password
 Testnum 1219
=== End of file server.cmd
=== Start of file valgrind1219
 ==146260== 
 ==146260== Process terminating with default action of signal 4 (SIGILL)
 ==146260==  Illegal opcode at address 0x492B75F
 ==146260==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146260==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146260==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146260==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146260==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146260==    by 0x49908EB: curl_version_info (version.c:600)
 ==146260==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146260==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146260==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146260==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1219
test 1221 [--url-query with --data-urlencode]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1221 ../src/curl -q --output log/6/curl1221.out  --include --trace-ascii log/6/trace1221 --trace-time http://127.0.0.1:33935/1221 --url-query "my name is moo[]" --url-query "yes=s i r" --url-query "v_alue@log/6/1221.txt" --url-query @log/6/1221.txt --url-query "+%3d%3d" --data-urlencode "start=once upon the time" > log/6/stdout1221 2> log/6/stderr1221

 1221: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1221
=== Start of file 1221.txt
 content to _?!#$'|<>
=== End of file 1221.txt
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1221 ../src/curl -q --output log/6/curl1221.out  --include --trace-ascii log/6/trace1221 --trace-time http://127.0.0.1:33935/1221 --url-query "my name is moo[]" --url-query "yes=s i r" --url-query "v_alue@log/6/1221.txt" --url-query @log/6/1221.txt --url-query "+%3d%3d" --data-urlencode "start=once upon the time" > log/6/stdout1221 2> log/6/stderr1221
=== End of file commands.log
=== Start of file http_server.log
 19:28:14.288727 ====> Client connect
 19:28:14.288767 accept_connection 3 returned 4
 19:28:14.288976 Read 93 bytes
 19:28:14.288996 Process 93 bytes request
 19:28:14.289011 Got request: GET /verifiedserver HTTP/1.1
 19:28:14.289020 Are-we-friendly question received
 19:28:14.289056 Wrote request (93 bytes) input to log/6/server.input
 19:28:14.289077 Identifying ourselves as friends
 19:28:14.289150 Response sent (56 bytes) and written to log/6/server.response
 19:28:14.289163 special request received, no persistency
 19:28:14.289171 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 47634 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1221
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1221
 ==146319== 
 ==146319== Process terminating with default action of signal 4 (SIGILL)
 ==146319==  Illegal opcode at address 0x492B75F
 ==146319==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146319==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146319==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146319==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146319==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146319==    by 0x49908EB: curl_version_info (version.c:600)
 ==146319==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146319==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146319==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146319==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1221
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1225 ../src/curl -q --output log/1/curl1225.out  --include --trace-ascii log/1/trace1225 --trace-time ftp://127.0.0.1:40221//foo/1225 ftp://127.0.0.1:40221//foo/bar/1225 > log/1/stdout1225 2> log/1/stderr1225
test 1223 [HTTP GET -w remote_ip and -w remote_port]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1223 ../src/curl -q --include --trace-ascii log/7/trace1223 --trace-time http://127.0.0.1:40859/1223 -w 'IP %{remote_ip} and PORT %{remote_port}\n' > log/7/stdout1223 2> log/7/stderr1223

 1223: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:28:17.356720100 +0000
+++ log/7/check-generated	2026-10-15 19:28:17.354807450 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 4[LF]
-Connection: close[LF]
-Content-Type: text/html[LF]
-[LF]
-hej[LF]
-IP 127.0.0.1 and PORT 40859[LF]
== Contents of files in the log/7/ directory after test 1223
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 4[LF]
 Connection: close[LF]
 Content-Type: text/html[LF]
 [LF]
 hej[LF]
 IP 127.0.0.1 and PORT 40859[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1223 ../src/curl -q --include --trace-ascii log/7/trace1223 --trace-time http://127.0.0.1:40859/1223 -w 'IP %{remote_ip} and PORT %{remote_port}\n' > log/7/stdout1223 2> log/7/stderr1223
=== End of file commands.log
=== Start of file http_server.log
 19:28:14.508899 ====> Client connect
 19:28:14.508936 accept_connection 3 returned 4
 19:28:14.508957 Read 93 bytes
 19:28:14.508967 Process 93 bytes request
 19:28:14.508979 Got request: GET /verifiedserver HTTP/1.1
 19:28:14.508988 Are-we-friendly question received
 19:28:14.509013 Wrote request (93 bytes) input to log/7/server.input
 19:28:14.509028 Identifying ourselves as friends
 19:28:14.509095 Response sent (56 bytes) and written to log/7/server.response
 19:28:14.509104 special request received, no persistency
 19:28:14.509111 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 37964 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1223
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1223
 ==146391== 
 ==146391== Process terminating with default action of signal 4 (SIGILL)
 ==146391==  Illegal opcode at address 0x492B75F
 ==146391==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146391==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146391==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146391==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146391==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146391==    by 0x49908EB: curl_version_info (version.c:600)
 ==146391==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146391==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1223
test 1225 [FTP fetch two files using absolute paths]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1225 ../src/curl -q --output log/1/curl1225.out  --include --trace-ascii log/1/trace1225 --trace-time ftp://127.0.0.1:40221//foo/1225 ftp://127.0.0.1:40221//foo/bar/1225 > log/1/stdout1225 2> log/1/stderr1225

 1225: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1225
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1225 ../src/curl -q --output log/1/curl1225.out  --include --trace-ascii log/1/trace1225 --trace-time ftp://127.0.0.1:40221//foo/1225 ftp://127.0.0.1:40221//foo/bar/1225 > log/1/stdout1225 2> log/1/stderr1225
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:15.378821 ====> Client connect
 19:28:15.379044 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:15.379402 < "USER anonymous"
 19:28:15.379444 > "331 We are happy you popped in![CR][LF]"
 19:28:15.379652 < "PASS ftp@example.com"
 19:28:15.379685 > "230 Welcome you silly person[CR][LF]"
 19:28:15.379841 < "PWD"
 19:28:15.379871 > "257 "/" is current directory[CR][LF]"
 19:28:15.380028 < "EPSV"
 19:28:15.380051 ====> Passive DATA channel requested by client
 19:28:15.380064 DATA sockfilt for passive data channel starting...
 19:28:15.390032 DATA sockfilt for passive data channel started (pid 146559)
 19:28:15.390176 DATA sockfilt for passive data channel listens on port 36809
 19:28:15.390225 > "229 Entering Passive Mode (|||36809|)[CR][LF]"
 19:28:15.390243 Client has been notified that upcoming DATA connection is awaited on port 36809
 19:28:15.390534 Client connects to port 36809
 19:28:15.390571 ====> Client established passive DATA connection on port 36809
 19:28:15.390715 < "TYPE I"
 19:28:15.390754 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:15.390926 < "SIZE verifiedserver"
 19:28:15.390968 > "213 17[CR][LF]"
 19:28:15.391119 < "RETR verifiedserver"
 19:28:15.391149 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:15.391245 =====> Closing passive DATA connection...
 19:28:15.391262 Server disconnects passive DATA connection
 19:28:15.391489 Server disconnected passive DATA connection
 19:28:15.391515 DATA sockfilt for passive data channel quits (pid 146559)
 19:28:15.391782 DATA sockfilt for passive data channel quit (pid 146559)
 19:28:15.391806 =====> Closed passive DATA connection
 19:28:15.391836 > "226 File transfer complete[CR][LF]"
 19:28:15.435661 < "QUIT"
 19:28:15.435730 > "221 bye bye baby[CR][LF]"
 19:28:15.436999 MAIN sockfilt said DISC
 19:28:15.437034 ====> Client disconnected
 19:28:15.437125 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:15.982160 ====> Client connect
 19:28:15.982551 Received DATA (on stdin)
 19:28:15.982567 > 146 bytes data, server => client
 19:28:15.982578 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:15.982589 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:15.982598 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:15.982721 < 16 bytes data, client => server
 19:28:15.982733 'USER anonymous\r\n'
 19:28:15.982939 Received DATA (on stdin)
 19:28:15.982952 > 33 bytes data, server => client
 19:28:15.982962 '331 We are happy you popped in!\r\n'
 19:28:15.983030 < 22 bytes data, client => server
 19:28:15.983041 'PASS ftp@example.com\r\n'
 19:28:15.983173 Received DATA (on stdin)
 19:28:15.983184 > 30 bytes data, server => client
 19:28:15.983193 '230 Welcome you silly person\r\n'
 19:28:15.983246 < 5 bytes data, client => server
 19:28:15.983255 'PWD\r\n'
 19:28:15.983358 Received DATA (on stdin)
 19:28:15.983368 > 30 bytes data, server => client
 19:28:15.983378 '257 "/" is current directory\r\n'
 19:28:15.983439 < 6 bytes data, client => server
 19:28:15.983448 'EPSV\r\n'
 19:28:15.993740 Received DATA (on stdin)
 19:28:15.993757 > 39 bytes data, server => client
 19:28:15.993768 '229 Entering Passive Mode (|||36809|)\r\n'
 19:28:15.9940CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1228 ../src/curl -q --output log/21/curl1228.out  --include --trace-ascii log/21/trace1228 --trace-time http://example.fake/hoge/1228 http://example.fake/hogege/ -b nonexisting -x 127.0.0.1:39881 > log/21/stdout1228 2> log/21/stderr1228
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1224 ../src/curl -q --output log/4/curl1224.out  --include --trace-ascii log/4/trace1224 --trace-time ftp://127.0.0.1:39739//1224 > log/4/stdout1224 2> log/4/stderr1224
82 < 8 bytes data, client => server
 19:28:15.994095 'TYPE I\r\n'
 19:28:15.994244 Received DATA (on stdin)
 19:28:15.994254 > 33 bytes data, server => client
 19:28:15.994265 '200 I modify TYPE as you wanted\r\n'
 19:28:15.994326 < 21 bytes data, client => server
 19:28:15.994337 'SIZE verifiedserver\r\n'
 19:28:15.994455 Received DATA (on stdin)
 19:28:15.994465 > 8 bytes data, server => client
 19:28:15.994474 '213 17\r\n'
 19:28:15.994524 < 21 bytes data, client => server
 19:28:15.994534 'RETR verifiedserver\r\n'
 19:28:15.994751 Received DATA (on stdin)
 19:28:15.994762 > 29 bytes data, server => client
 19:28:15.994772 '150 Binary junk (17 bytes).\r\n'
 19:28:15.995325 Received DATA (on stdin)
 19:28:15.995337 > 28 bytes data, server => client
 19:28:15.995348 '226 File transfer complete\r\n'
 19:28:16.038922 < 6 bytes data, client => server
 19:28:16.038951 'QUIT\r\n'
 19:28:16.039227 Received DATA (on stdin)
 19:28:16.039241 > 18 bytes data, server => client
 19:28:16.039252 '221 bye bye baby\r\n'
 19:28:16.040430 ====> Client disconnect
 19:28:16.040621 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:15.993114 Running IPv4 version
 19:28:15.993213 Listening on port 36809
 19:28:15.993258 Wrote pid 146559 to log/1/server/ftp_sockdata.pid
 19:28:15.993458 Received PING (on stdin)
 19:28:15.993559 Received PORT (on stdin)
 19:28:15.993967 ====> Client connect
 19:28:15.994798 Received DATA (on stdin)
 19:28:15.994810 > 17 bytes data, server => client
 19:28:15.994820 'WE ROOLZ: 84935\r\n'
 19:28:15.994844 Received DISC (on stdin)
 19:28:15.994855 ====> Client forcibly disconnected
 19:28:15.995010 Received QUIT (on stdin)
 19:28:15.995021 quits
 19:28:15.995089 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1225
=== End of file server.cmd
=== Start of file valgrind1225
 ==146601== 
 ==146601== Process terminating with default action of signal 4 (SIGILL)
 ==146601==  Illegal opcode at address 0x492B75F
 ==146601==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146601==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146601==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146601==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146601==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146601==    by 0x49908EB: curl_version_info (version.c:600)
 ==146601==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146601==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146601==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146601==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1225
test 1228 [HTTP cookie path match]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1228 ../src/curl -q --output log/21/curl1228.out  --include --trace-ascii log/21/trace1228 --trace-time http://example.fake/hoge/1228 http://example.fake/hogege/ -b nonexisting -x 127.0.0.1:39881 > log/21/stdout1228 2> log/21/stderr1228

 1228: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1228
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1228 ../src/curl -q --output log/21/curl1228.out  --include --trace-ascii log/21/trace1228 --trace-time http://example.fake/hoge/1228 http://example.fake/hogege/ -b nonexisting -x 127.0.0.1:39881 > log/21/stdout1228 2> log/21/stderr1228
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.004188 ====> Client connect
 19:28:15.004227 accept_connection 3 returned 4
 19:28:15.004251 Read 93 bytes
 19:28:15.004262 Process 93 bytes request
 19:28:15.004275 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.004284 Are-we-friendly question received
 19:28:15.004319 Wrote request (93 bytes) input to log/21/server.input
 19:28:15.004340 Identifying ourselves as friends
 19:28:15.004412 Response sent (56 bytes) and written to log/21/server.response
 19:28:15.004425 special request received, no persistency
 19:28:15.004435 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49136 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1228
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1228
 ==146576== 
 ==146576== Process terminating with default action of signal 4 (SIGILL)
 ==146576==  Illegal opcode at address 0x492B75F
 ==146576==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146576==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146576==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146576==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146576==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146576==    by 0x49908EB: curl_version_info (version.c:600)
 ==146576==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146576==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146576==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146576==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1228
test 1224 [FTP fetch a file from the root directory]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1224 ../src/curl -q --output log/4/curl1224.out  --include --trace-ascii log/4/trace1224 --trace-time ftp://127.0.0.1:39739//1224 > log/4/stdout1224 2> log/4/stderr1224

 1224: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1224
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1224 ../src/curl -q --output log/4/curl1224.out  --include --trace-ascii log/4/trace1224 --trace-time ftp://127.0.0.1:39739//1224 > log/4/stdout1224 2> log/4/stderr1224
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:15.165487 ====> Client connect
 19:28:15.165752 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:15.166150 < "USER anonymous"
 19:28:15.166202 > "331 We are happy you popped in![CR][LF]"
 19:28:15.166426 < "PASS ftp@example.com"
 19:28:15.166464 > "230 Welcome you silly person[CR][LF]"
 19:28:15.166661 < "PWD"
 19:28:15.166703 > "257 "/" is current directory[CR][LF]"
 19:28:15.166914 < "EPSV"
 19:28:15.166947 ====> Passive DATA channel requested by client
 19:28:15.166965 DATA sockfilt for passive data channel starting...
 19:28:15.173525 DATA sockfilt for passive data channel started (pid 146475)
 19:28:15.173669 DATA sockfilt for passive data channel listens on port 39181
 19:28:15.173720 > "229 Entering Passive Mode (|||39181|)[CR][LF]"
 19:28:15.173740 Client has been notified that upcoming DATA connection is awaited on port 39181
 19:28:15.174055 Client connects to port 39181
 19:28:15.174094 ====> Client established passive DATA connection on port 39181CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1226 ../src/curl -q --output log/17/curl1226.out  --include --trace-ascii log/17/trace1226 --trace-time ftp://127.0.0.1:46137//1226 --ftp-method singlecwd > log/17/stdout1226 2> log/17/stderr1226

 19:28:15.174246 < "TYPE I"
 19:28:15.174286 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:15.174486 < "SIZE verifiedserver"
 19:28:15.174531 > "213 17[CR][LF]"
 19:28:15.175457 < "RETR verifiedserver"
 19:28:15.175499 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:15.175589 =====> Closing passive DATA connection...
 19:28:15.175604 Server disconnects passive DATA connection
 19:28:15.175711 Server disconnected passive DATA connection
 19:28:15.175731 DATA sockfilt for passive data channel quits (pid 146475)
 19:28:15.175985 DATA sockfilt for passive data channel quit (pid 146475)
 19:28:15.176006 =====> Closed passive DATA connection
 19:28:15.176030 > "226 File transfer complete[CR][LF]"
 19:28:15.232214 < "QUIT"
 19:28:15.232270 > "221 bye bye baby[CR][LF]"
 19:28:15.248694 MAIN sockfilt said DISC
 19:28:15.248776 ====> Client disconnected
 19:28:15.248866 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:14.768829 ====> Client connect
 19:28:14.769287 Received DATA (on stdin)
 19:28:14.769307 > 146 bytes data, server => client
 19:28:14.769319 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:14.769329 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:14.769339 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:14.769474 < 16 bytes data, client => server
 19:28:14.769493 'USER anonymous\r\n'
 19:28:14.769712 Received DATA (on stdin)
 19:28:14.769727 > 33 bytes data, server => client
 19:28:14.769738 '331 We are happy you popped in!\r\n'
 19:28:14.769809 < 22 bytes data, client => server
 19:28:14.769825 'PASS ftp@example.com\r\n'
 19:28:14.769970 Received DATA (on stdin)
 19:28:14.769983 > 30 bytes data, server => client
 19:28:14.769993 '230 Welcome you silly person\r\n'
 19:28:14.770056 < 5 bytes data, client => server
 19:28:14.770070 'PWD\r\n'
 19:28:14.770210 Received DATA (on stdin)
 19:28:14.770223 > 30 bytes data, server => client
 19:28:14.770234 '257 "/" is current directory\r\n'
 19:28:14.770310 < 6 bytes data, client => server
 19:28:14.770326 'EPSV\r\n'
 19:28:14.777254 Received DATA (on stdin)
 19:28:14.777271 > 39 bytes data, server => client
 19:28:14.777282 '229 Entering Passive Mode (|||39181|)\r\n'
 19:28:14.777619 < 8 bytes data, client => server
 19:28:14.777634 'TYPE I\r\n'
 19:28:14.777789 Received DATA (on stdin)
 19:28:14.777801 > 33 bytes data, server => client
 19:28:14.777811 '200 I modify TYPE as you wanted\r\n'
 19:28:14.777879 < 21 bytes data, client => server
 19:28:14.777892 'SIZE verifiedserver\r\n'
 19:28:14.778032 Received DATA (on stdin)
 19:28:14.778043 > 8 bytes data, server => client
 19:28:14.778051 '213 17\r\n'
 19:28:14.778851 < 21 bytes data, client => server
 19:28:14.778867 'RETR verifiedserver\r\n'
 19:28:14.779530 Received DATA (on stdin)
 19:28:14.779544 > 29 bytes data, server => client
 19:28:14.779553 '150 Binary junk (17 bytes).\r\n'
 19:28:14.779575 Received DATA (on stdin)
 19:28:14.779584 > 28 bytes data, server => client
 19:28:14.779593 '226 File transfer complete\r\n'
 19:28:14.835511 < 6 bytes data, client => server
 19:28:14.835551 'QUIT\r\n'
 19:28:14.835770 Received DATA (on stdin)
 19:28:14.835786 > 18 bytes data, server => client
 19:28:14.835795 '221 bye bye baby\r\n'
 19:28:14.848827 ====> Client disconnect
 19:28:14.852371 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:15.776446 Running IPv4 version
 19:28:15.776551 Listening on port 39181
 19:28:15.776777 Wrote pid 146475 to log/4/server/ftp_sockdata.pid
 19:28:15.776959 Received PING (on stdin)
 19:28:15.777067 Received PORT (on stdin)
 19:28:15.777497 ====> Client connect
 19:28:15.779105 Received DATA (on stdin)
 19:28:15.779117 > 17 bytes data, server => client
 19:28:15.779126 'WE ROOLZ: 85249\r\n'
 19:28:15.779153 Received DISC (on stdin)
 19:28:15.779163 ====> Client forcibly disconnected
 19:28:15.779233 Received QUIT (on stdin)
 19:28:15.779242 quits
 19:28:15.779311 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1224
=== End of file server.cmd
=== Start of file valgrind1224
 ==146477== 
 ==146477== Process terminating with default action of signal 4 (SIGILL)
 ==146477==  Illegal opcode at address 0x492B75F
 ==146477==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146477==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146477==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146477==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146477==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146477==    by 0x49908EB: curl_version_info (version.c:600)
 ==146477==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146477==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146477==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146477==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1224
test 1226 [FTP fetch a file from the root directory with singlecwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1226 ../src/curl -q --output log/17/curl1226.out  --include --trace-ascii log/17/trace1226 --trace-time ftp://127.0.0.1:46137//1226 --ftp-method singlecwd > log/17/stdout1226 2> log/17/stderr1226

 1226: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1226
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1226 ../src/curl -q --output log/17/curl1226.out  --include --trace-ascii log/17/trace1226 --trace-time ftp://127.0.0.1:46137//1226 --ftp-method singlecwd > log/17/stdout1226 2> log/17/stderr1226
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:15.397570 ====> Client connect
 19:28:15.397777 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:15.398991 < "USER anonymous"
 19:28:15.399041 > "331 We are happy you popped in![CR][LF]"
 19:28:15.399257 < "PASS ftp@example.com"
 19:28:15.399289 > "230 Welcome you silly person[CR][LF]"
 19:28:15.399455 < "PWD"
 19:28:15.399489 > "257 "/" is current directory[CR][LF]"
 19:28:15.399653 < "EPSV"
 19:28:15.399680 ====> Passive DATA channel requested by client
 19:28:15.399693 DATA sockfilt for passive data channel starting...
 19:28:15.406294 DATA sockfilt for passive data channel started (pid 146566)
 19:28:15.406448 DATA sockfilt for passive data channel listens on port 45101
 19:28:15.406497 > "229 Entering Passive Mode (|||45101|)[CR][LF]"
 19:28:15.406517 Client has been notified that upcoming DATA connection is awaited on port 45101
 19:28:15.406809 Client connects to port 45101
 19:28:15.406838 ====> Client established passive DATA connection on port 45101
 19:28:15.406926 < "TYPE I"
 19:28:15.406957 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:15.407137 < "SIZE verifiedserver"
 19:28:15.407174 > "213 17[CR][LF]"
 19:28:15.407317 < "RETR verifiedserver"
 19:28:15.407347 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:15.407429 =====> Closing passive DATA connection...
 19:28:15.407445 Server disconnects passive DATA connection
 19:28:15.407717 Server disconnected passive DATA connection
 19:28:15.407746 DATA sockfilt for passive data channel quits (pid 146566)
 19:28:15.408028 DATA sockfilt for passive data channel quit (pid 146566)
 19:28:15.408052 =====> Closed passive DATA connection
 19:28:15.408076 > "226 File transfer complete[CR][LF]"
 19:28:15.448972 < "QUIT"
 19:28:15.449022 > "221 bye bye baby[CR][LF]"
 19:28:15.450171 MAIN sockfilt said DISC
 19:28:15.450205 ====> Client disconnected
 19:28:15.450300 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:14.998820 ====> Client connect
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1227 ../src/curl -q --output log/15/curl1227.out  --include --trace-ascii log/15/trace1227 --trace-time ftp://127.0.0.1:44883//1227 --ftp-method nocwd > log/15/stdout1227 2> log/15/stderr1227
:28:15.002147 Received DATA (on stdin)
 19:28:15.002179 > 146 bytes data, server => client
 19:28:15.002194 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:15.002204 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:15.002214 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:15.002338 < 16 bytes data, client => server
 19:28:15.002354 'USER anonymous\r\n'
 19:28:15.002537 Received DATA (on stdin)
 19:28:15.002555 > 33 bytes data, server => client
 19:28:15.002565 '331 We are happy you popped in!\r\n'
 19:28:15.002640 < 22 bytes data, client => server
 19:28:15.002651 'PASS ftp@example.com\r\n'
 19:28:15.002775 Received DATA (on stdin)
 19:28:15.002786 > 30 bytes data, server => client
 19:28:15.002797 '230 Welcome you silly person\r\n'
 19:28:15.002852 < 5 bytes data, client => server
 19:28:15.002864 'PWD\r\n'
 19:28:15.002974 Received DATA (on stdin)
 19:28:15.002985 > 30 bytes data, server => client
 19:28:15.002995 '257 "/" is current directory\r\n'
 19:28:15.003057 < 6 bytes data, client => server
 19:28:15.003067 'EPSV\r\n'
 19:28:15.010014 Received DATA (on stdin)
 19:28:15.010032 > 39 bytes data, server => client
 19:28:15.010042 '229 Entering Passive Mode (|||45101|)\r\n'
 19:28:15.010212 < 8 bytes data, client => server
 19:28:15.010227 'TYPE I\r\n'
 19:28:15.010450 Received DATA (on stdin)
 19:28:15.010462 > 33 bytes data, server => client
 19:28:15.010473 '200 I modify TYPE as you wanted\r\n'
 19:28:15.010525 < 21 bytes data, client => server
 19:28:15.010535 'SIZE verifiedserver\r\n'
 19:28:15.010658 Received DATA (on stdin)
 19:28:15.010668 > 8 bytes data, server => client
 19:28:15.010678 '213 17\r\n'
 19:28:15.010725 < 21 bytes data, client => server
 19:28:15.010735 'RETR verifiedserver\r\n'
 19:28:15.010932 Received DATA (on stdin)
 19:28:15.010944 > 29 bytes data, server => client
 19:28:15.010954 '150 Binary junk (17 bytes).\r\n'
 19:28:15.011563 Received DATA (on stdin)
 19:28:15.011576 > 28 bytes data, server => client
 19:28:15.011586 '226 File transfer complete\r\n'
 19:28:15.052286 < 6 bytes data, client => server
 19:28:15.052316 'QUIT\r\n'
 19:28:15.052508 Received DATA (on stdin)
 19:28:15.052518 > 18 bytes data, server => client
 19:28:15.052528 '221 bye bye baby\r\n'
 19:28:15.053601 ====> Client disconnect
 19:28:15.053782 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:15.004865 Running IPv4 version
 19:28:15.004932 Listening on port 45101
 19:28:15.004977 Wrote pid 146566 to log/17/server/ftp_sockdata.pid
 19:28:15.009703 Received PING (on stdin)
 19:28:15.009816 Received PORT (on stdin)
 19:28:15.010248 ====> Client connect
 19:28:15.011011 Received DATA (on stdin)
 19:28:15.011025 > 17 bytes data, server => client
 19:28:15.011035 'WE ROOLZ: 84749\r\n'
 19:28:15.011090 Received DISC (on stdin)
 19:28:15.011102 ====> Client forcibly disconnected
 19:28:15.011241 Received QUIT (on stdin)
 19:28:15.011252 quits
 19:28:15.011335 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1226
=== End of file server.cmd
=== Start of file valgrind1226
 ==146632== 
 ==146632== Process terminating with default action of signal 4 (SIGILL)
 ==146632==  Illegal opcode at address 0x492B75F
 ==146632==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146632==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146632==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146632==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146632==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146632==    by 0x49908EB: curl_version_info (version.c:600)
 ==146632==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146632==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146632==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146632==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1226
test 1227 [FTP fetch a file from the root directory with nocwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1227 ../src/curl -q --output log/15/curl1227.out  --include --trace-ascii log/15/trace1227 --trace-time ftp://127.0.0.1:44883//1227 --ftp-method nocwd > log/15/stdout1227 2> log/15/stderr1227

 1227: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1227
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1227 ../src/curl -q --output log/15/curl1227.out  --include --trace-ascii log/15/trace1227 --trace-time ftp://127.0.0.1:44883//1227 --ftp-method nocwd > log/15/stdout1227 2> log/15/stderr1227
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:15.395698 ====> Client connect
 19:28:15.395900 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:15.396186 < "USER anonymous"
 19:28:15.396226 > "331 We are happy you popped in![CR][LF]"
 19:28:15.396407 < "PASS ftp@example.com"
 19:28:15.396443 > "230 Welcome you silly person[CR][LF]"
 19:28:15.396621 < "PWD"
 19:28:15.396658 > "257 "/" is current directory[CR][LF]"
 19:28:15.396844 < "EPSV"
 19:28:15.396869 ====> Passive DATA channel requested by client
 19:28:15.396885 DATA sockfilt for passive data channel starting...
 19:28:15.405413 DATA sockfilt for passive data channel started (pid 146565)
 19:28:15.405624 DATA sockfilt for passive data channel listens on port 46801
 19:28:15.405676 > "229 Entering Passive Mode (|||46801|)[CR][LF]"
 19:28:15.405695 Client has been notified that upcoming DATA connection is awaited on port 46801
 19:28:15.406020 Client connects to port 46801
 19:28:15.406055 ====> Client established passive DATA connection on port 46801
 19:28:15.406150 < "TYPE I"
 19:28:15.406187 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:15.406364 < "SIZE verifiedserver"
 19:28:15.406405 > "213 17[CR][LF]"
 19:28:15.406563 < "RETR verifiedserver"
 19:28:15.406596 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:15.406697 =====> Closing passive DATA connection...
 19:28:15.406717 Server disconnects passive DATA connection
 19:28:15.406875 Server disconnected passive DATA connection
 19:28:15.406897 DATA sockfilt for passive data channel quits (pid 146565)
 19:28:15.407174 DATA sockfilt for passive data channel quit (pid 146565)
 19:28:15.407199 =====> Closed passive DATA connection
 19:28:15.407226 > "226 File transfer complete[CR][LF]"
 19:28:15.448972 < "QUIT"
 19:28:15.449026 > "221 bye bye baby[CR][LF]"
 19:28:15.450183 MAIN sockfilt said DISC
 19:28:15.450226 ====> Client disconnected
 19:28:15.450300 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:14.999073 ====> Client connect
 19:28:14.999403 Received DATA (on stdin)
 19:28:14.999418 > 146 bytes data, server => client
 19:28:14.999429 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:14.999439 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:14.999447 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:14.999527 < 16 bytes data, client => server
 19:28:14.999539 'USER anonymous\r\n'
 19:28:14.999716 Received DATA (on stdin)
 19:28:14.999727 > 33 bytes data, server => client
 19:28:14.999737 '331 We are happy you popped in!\r\n'
 19:28:14.999793 < 22 bytes data, client => server
 19:28:14.999804 'PASS ftp@example.com\r\n'
 19:28:14.999934 Received DATA (on stdin)
 19:28:14.999945 > 30 bytes data, server => client
 19:28:14.999956 '230 Welcome you silly person\r\n'
 19:28:15.000014 < 5 bytes data, client => server
 19:28:15.000026 'PWD\r\n'
 19:28:15.000147 Received DATA (on stdin)
 19:28:15.000159 > 30 bytes data, server => client
 19:28:15.000170 '257 "/" is current directory\r\n'
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1229 ../src/curl -q --output log/2/curl1229.out  --include --trace-ascii log/2/trace1229 --trace-time http://%5cuser%22:password@127.0.0.1:34531/1229 --digest > log/2/stdout1229 2> log/2/stderr1229
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1232 ../src/curl -q --output log/24/curl1232.out  --include --trace-ascii log/24/trace1232 --trace-time --proxy http://127.0.0.1:38895 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../1232?stupid=me/../1232#soo/../1232 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../12320001#/../12320001 > log/24/stdout1232 2> log/24/stderr1232
8:15.000237 < 6 bytes data, client => server
 19:28:15.000250 'EPSV\r\n'
 19:28:15.009191 Received DATA (on stdin)
 19:28:15.009208 > 39 bytes data, server => client
 19:28:15.009218 '229 Entering Passive Mode (|||46801|)\r\n'
 19:28:15.009415 < 8 bytes data, client => server
 19:28:15.009432 'TYPE I\r\n'
 19:28:15.009673 Received DATA (on stdin)
 19:28:15.009685 > 33 bytes data, server => client
 19:28:15.009695 '200 I modify TYPE as you wanted\r\n'
 19:28:15.009755 < 21 bytes data, client => server
 19:28:15.009766 'SIZE verifiedserver\r\n'
 19:28:15.009892 Received DATA (on stdin)
 19:28:15.009903 > 8 bytes data, server => client
 19:28:15.009913 '213 17\r\n'
 19:28:15.009966 < 21 bytes data, client => server
 19:28:15.009977 'RETR verifiedserver\r\n'
 19:28:15.010204 Received DATA (on stdin)
 19:28:15.010215 > 29 bytes data, server => client
 19:28:15.010226 '150 Binary junk (17 bytes).\r\n'
 19:28:15.010714 Received DATA (on stdin)
 19:28:15.010726 > 28 bytes data, server => client
 19:28:15.010736 '226 File transfer complete\r\n'
 19:28:15.052285 < 6 bytes data, client => server
 19:28:15.052316 'QUIT\r\n'
 19:28:15.052514 Received DATA (on stdin)
 19:28:15.052527 > 18 bytes data, server => client
 19:28:15.052537 '221 bye bye baby\r\n'
 19:28:15.053609 ====> Client disconnect
 19:28:15.053783 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:15.003410 Running IPv4 version
 19:28:15.003483 Listening on port 46801
 19:28:15.003521 Wrote pid 146565 to log/15/server/ftp_sockdata.pid
 19:28:15.008813 Received PING (on stdin)
 19:28:15.008948 Received PORT (on stdin)
 19:28:15.009455 ====> Client connect
 19:28:15.010253 Received DATA (on stdin)
 19:28:15.010266 > 17 bytes data, server => client
 19:28:15.010276 'WE ROOLZ: 84744\r\n'
 19:28:15.010301 Received DISC (on stdin)
 19:28:15.010312 ====> Client forcibly disconnected
 19:28:15.010389 Received QUIT (on stdin)
 19:28:15.010399 quits
 19:28:15.010473 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1227
=== End of file server.cmd
=== Start of file valgrind1227
 ==146610== 
 ==146610== Process terminating with default action of signal 4 (SIGILL)
 ==146610==  Illegal opcode at address 0x492B75F
 ==146610==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146610==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146610==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146610==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146610==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146610==    by 0x49908EB: curl_version_info (version.c:600)
 ==146610==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146610==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146610==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146610==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1227
test 1229 [HTTP with Digest authorization with username needing escape]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1229 ../src/curl -q --output log/2/curl1229.out  --include --trace-ascii log/2/trace1229 --trace-time http://%5cuser%22:password@127.0.0.1:34531/1229 --digest > log/2/stdout1229 2> log/2/stderr1229

 1229: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1229
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1229 ../src/curl -q --output log/2/curl1229.out  --include --trace-ascii log/2/trace1229 --trace-time http://%5cuser%22:password@127.0.0.1:34531/1229 --digest > log/2/stdout1229 2> log/2/stderr1229
=== End of file commands.log
=== Start of file http_server.log
 19:28:16.136717 ====> Client connect
 19:28:16.136755 accept_connection 3 returned 4
 19:28:16.137304 Read 93 bytes
 19:28:16.137321 Process 93 bytes request
 19:28:16.137334 Got request: GET /verifiedserver HTTP/1.1
 19:28:16.137342 Are-we-friendly question received
 19:28:16.137379 Wrote request (93 bytes) input to log/2/server.input
 19:28:16.137395 Identifying ourselves as friends
 19:28:16.137453 Response sent (56 bytes) and written to log/2/server.response
 19:28:16.137461 special request received, no persistency
 19:28:16.137469 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 34144 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1229
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1229
 ==146743== 
 ==146743== Process terminating with default action of signal 4 (SIGILL)
 ==146743==  Illegal opcode at address 0x492B75F
 ==146743==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146743==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146743==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146743==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146743==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146743==    by 0x49908EB: curl_version_info (version.c:600)
 ==146743==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146743==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146743==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146743==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1229
test 1232 [HTTP URL with dotdot removal from path using an HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1232 ../src/curl -q --output log/24/curl1232.out  --include --trace-ascii log/24/trace1232 --trace-time --proxy http://127.0.0.1:38895 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../1232?stupid=me/../1232#soo/../1232 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../12320001#/../12320001 > log/24/stdout1232 2> log/24/stderr1232

 1232: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1232
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1232 ../src/curl -q --output log/24/curl1232.out  --include --trace-ascii log/24/trace1232 --trace-time --proxy http://127.0.0.1:38895 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../1232?stupid=me/../1232#soo/../1232 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../12320001#/../12320001 > log/24/stdout1232 2> log/24/stderr1232
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.203845 ====> Client connect
 19:28:15.203875 accept_connection 3 returned 4
 19:28:15.203895 Read 93 bytes
 19:28:15.203904 Process 93 bytes request
 19:28:15.203916 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.203924 Are-we-friendly question received
 19:28:15.203948 Wrote request (93 bytes) input to log/24/server.input
 19:28:15.203963 Identifying ourselves as friends
 19:28:15.204019 Response sent (56 bytes) and written to log/24/server.response
 19:28:15.204028 special request received, no persistency
 19:28:15.204CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1234 ../src/curl -q --output log/5/curl1234.out  --include --trace-ascii log/5/trace1234 --trace-time "127.0.0.1:47/1234[0-1]{" "127.0.0.1:47/{}{}{}{" > log/5/stdout1234 2> log/5/stderr1234
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1236 ../src/curl -q --output log/11/curl1236.out  --include --trace-ascii log/11/trace1236 --trace-time "127.0.0.1:47/1234[0-1]{" "127.0.0.1:47/[1-4611686018427387904][1-4611686018427387904]" > log/11/stdout1236 2> log/11/stderr1236
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1233 ../src/curl -q --output log/18/curl1233.out  --include --trace-ascii log/18/trace1233 --trace-time ftp://127.0.0.1:36115/1233 > log/18/stdout1233 2> log/18/stderr1233
036 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 50268 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1232
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1232
 ==146823== 
 ==146823== Process terminating with default action of signal 4 (SIGILL)
 ==146823==  Illegal opcode at address 0x492B75F
 ==146823==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146823==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146823==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146823==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146823==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146823==    by 0x49908EB: curl_version_info (version.c:600)
 ==146823==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146823==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146823==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146823==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1232
test 1234 [abusing {}-globbing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1234 ../src/curl -q --output log/5/curl1234.out  --include --trace-ascii log/5/trace1234 --trace-time "127.0.0.1:47/1234[0-1]{" "127.0.0.1:47/{}{}{}{" > log/5/stdout1234 2> log/5/stderr1234

curl returned 132, when expecting 3
 1234: exit FAILED
== Contents of files in the log/5/ directory after test 1234
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1234 ../src/curl -q --output log/5/curl1234.out  --include --trace-ascii log/5/trace1234 --trace-time "127.0.0.1:47/1234[0-1]{" "127.0.0.1:47/{}{}{}{" > log/5/stdout1234 2> log/5/stderr1234
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1234
=== End of file server.cmd
=== Start of file valgrind1234
 ==146883== 
 ==146883== Process terminating with default action of signal 4 (SIGILL)
 ==146883==  Illegal opcode at address 0x492B75F
 ==146883==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146883==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146883==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146883==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146883==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146883==    by 0x49908EB: curl_version_info (version.c:600)
 ==146883==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146883==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146883==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146883==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1234
test 1236 [[] globbing overflowing the range counter]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1236 ../src/curl -q --output log/11/curl1236.out  --include --trace-ascii log/11/trace1236 --trace-time "127.0.0.1:47/1234[0-1]{" "127.0.0.1:47/[1-4611686018427387904][1-4611686018427387904]" > log/11/stdout1236 2> log/11/stderr1236

curl returned 132, when expecting 3
 1236: exit FAILED
== Contents of files in the log/11/ directory after test 1236
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1236 ../src/curl -q --output log/11/curl1236.out  --include --trace-ascii log/11/trace1236 --trace-time "127.0.0.1:47/1234[0-1]{" "127.0.0.1:47/[1-4611686018427387904][1-4611686018427387904]" > log/11/stdout1236 2> log/11/stderr1236
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1236
=== End of file server.cmd
=== Start of file valgrind1236
 ==147011== 
 ==147011== Process terminating with default action of signal 4 (SIGILL)
 ==147011==  Illegal opcode at address 0x492B75F
 ==147011==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147011==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147011==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147011==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147011==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147011==    by 0x49908EB: curl_version_info (version.c:600)
 ==147011==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147011==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1236
test 1233 [FTP failing to connect to EPSV port, switching to PASV]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1233 ../src/curl -q --output log/18/curl1233.out  --include --trace-ascii log/18/trace1233 --trace-time ftp://127.0.0.1:36115/1233 > log/18/stdout1233 2> log/18/stderr1233

 1233: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1233
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1233 ../src/curl -q --output log/18/curl1233.out  --include --trace-ascii log/18/trace1233 --trace-time ftp://127.0.0.1:36115/1233 > log/18/stdout1233 2> log/18/stderr1233
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:15.686838 ====> Client connect
 19:28:15.687180 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:15.692369 < "USER anonymous"
 19:28:15.692428 > "331 We are happy you popped in![CR][LF]"
 19:28:15.693792 < "PASS ftp@example.com"
 19:28:15.693838 > "230 Welcome you silly person[CR][LF]"
 19:28:15.694048 < "PWD"
 19:28:15.694092 > "257 "/" is current directory[CR][LF]"
 19:28:15.694610 < "EPSV"
 19:28:15.694643 ====> Passive DATA channel requested by client
 19:28:15.694658 DATA sockfilt for passive data channel starting...
 19:28:15.697080 DATA sockfilt for passive data channel started (pid 146924)
 19:28:15.697192 DATA sockfilt for passive data channel listens on port 34129
 19:28:15.697236 > "229 Entering Passive Mode (|||34129|)[CR][LF]"
 19:28:15.697254 Client has been notified that upcoming DATA connection is awaited on port 34129
 19:28:15.697531 Client connects to port 34129
 19:28:15.697563 ====> Client established passive DATA connection on port 34129
 19:28:15.697641 < "TYPE I"
 19:28:15.697672 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:15.697828 < "SIZE verifiedserver"
 19:28:15.697864 > "213 17[CR][LF]"
 19:28:15.698019 < "RETR verifiedserver"
 19:28:15.698056 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:15.698258 =====> Closing passive DATA connection...
 19:28:15.698279 Server disconnects passive DATA connection
 19:28:15.698426 Server disconnected passive DATA connection
 19:28:15.698454 DATA sockfilt for passive data channel quits (pid 146924)
 19:28:15.698686 DATA sockfilt for passive data channel quiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1237 ../src/curl -q --output log/10/curl1237.out  --include --trace-ascii log/10/trace1237 --trace-time "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@127.0.0.1:40913/1237" > log/10/stdout1237 2> log/10/stderr1237
t (pid 146924)
 19:28:15.698714 =====> Closed passive DATA connection
 19:28:15.698744 > "226 File transfer complete[CR][LF]"
 19:28:15.739207 < "QUIT"
 19:28:15.739260 > "221 bye bye baby[CR][LF]"
 19:28:15.740367 MAIN sockfilt said DISC
 19:28:15.740398 ====> Client disconnected
 19:28:15.740480 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:15.290174 ====> Client connect
 19:28:15.290518 Received DATA (on stdin)
 19:28:15.290540 > 146 bytes data, server => client
 19:28:15.290560 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:15.290571 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:15.290580 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:15.295583 < 16 bytes data, client => server
 19:28:15.295622 'USER anonymous\r\n'
 19:28:15.295911 Received DATA (on stdin)
 19:28:15.295927 > 33 bytes data, server => client
 19:28:15.295937 '331 We are happy you popped in!\r\n'
 19:28:15.296624 < 22 bytes data, client => server
 19:28:15.296646 'PASS ftp@example.com\r\n'
 19:28:15.297314 Received DATA (on stdin)
 19:28:15.297329 > 30 bytes data, server => client
 19:28:15.297340 '230 Welcome you silly person\r\n'
 19:28:15.297411 < 5 bytes data, client => server
 19:28:15.297425 'PWD\r\n'
 19:28:15.297564 Received DATA (on stdin)
 19:28:15.297577 > 30 bytes data, server => client
 19:28:15.297586 '257 "/" is current directory\r\n'
 19:28:15.297659 < 6 bytes data, client => server
 19:28:15.297670 'EPSV\r\n'
 19:28:15.300730 Received DATA (on stdin)
 19:28:15.300743 > 39 bytes data, server => client
 19:28:15.300753 '229 Entering Passive Mode (|||34129|)\r\n'
 19:28:15.300917 < 8 bytes data, client => server
 19:28:15.300933 'TYPE I\r\n'
 19:28:15.301141 Received DATA (on stdin)
 19:28:15.301152 > 33 bytes data, server => client
 19:28:15.301162 '200 I modify TYPE as you wanted\r\n'
 19:28:15.301215 < 21 bytes data, client => server
 19:28:15.301226 'SIZE verifiedserver\r\n'
 19:28:15.301334 Received DATA (on stdin)
 19:28:15.301344 > 8 bytes data, server => client
 19:28:15.301354 '213 17\r\n'
 19:28:15.301405 < 21 bytes data, client => server
 19:28:15.301416 'RETR verifiedserver\r\n'
 19:28:15.301531 Received DATA (on stdin)
 19:28:15.301541 > 29 bytes data, server => client
 19:28:15.301551 '150 Binary junk (17 bytes).\r\n'
 19:28:15.302218 Received DATA (on stdin)
 19:28:15.302231 > 28 bytes data, server => client
 19:28:15.302241 '226 File transfer complete\r\n'
 19:28:15.342490 < 6 bytes data, client => server
 19:28:15.342520 'QUIT\r\n'
 19:28:15.342728 Received DATA (on stdin)
 19:28:15.342738 > 18 bytes data, server => client
 19:28:15.342747 '221 bye bye baby\r\n'
 19:28:15.343787 ====> Client disconnect
 19:28:15.343945 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:15.300008 Running IPv4 version
 19:28:15.300094 Listening on port 34129
 19:28:15.300137 Wrote pid 146924 to log/18/server/ftp_sockdata.pid
 19:28:15.300485 Received PING (on stdin)
 19:28:15.300572 Received PORT (on stdin)
 19:28:15.300954 ====> Client connect
 19:28:15.301576 Received DATA (on stdin)
 19:28:15.301588 > 17 bytes data, server => client
 19:28:15.301750 'WE ROOLZ: 85350\r\n'
 19:28:15.301782 Received DISC (on stdin)
 19:28:15.301793 ====> Client forcibly disconnected
 19:28:15.301933 Received QUIT (on stdin)
 19:28:15.301945 quits
 19:28:15.302007 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 # Assuming there is nothing listening on port 1
 REPLY EPSV 229 Entering Passive Mode (|||1|)
 Testnum 1233
=== End of file server.cmd
=== Start of file valgrind1233
 ==147009== 
 ==147009== Process terminating with default action of signal 4 (SIGILL)
 ==147009==  Illegal opcode at address 0x492B75F
 ==147009==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147009==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147009==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147009==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147009==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147009==    by 0x49908EB: curl_version_info (version.c:600)
 ==147009==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147009==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147009==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147009==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1233
test 1237 [URL with 1000+ letter username + password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1237 ../src/curl -q --output log/10/curl1237.out  --include --trace-ascii log/10/trace1237 --trace-time "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@127.0.0.1:40913/1237" > log/10/stdout1237 2> log/10/stderr1237

 1237: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1237
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1237 ../src/curl -q --output log/10/curl1237.out  --include --trace-ascii log/10/trace1237 --trace-time "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1241 ../src/curl -q --output log/3/curl1241.out  --include --trace-ascii log/3/trace1241 --trace-time --path-as-is --proxy http://127.0.0.1:36161 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001 > log/3/stdout1241 2> log/3/stderr1241
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1231 ../src/curl -q --output log/12/curl1231.out  --include --trace-ascii log/12/trace1231 --trace-time http://127.0.0.1:40921/../../hej/but/who/../1231?stupid=me/../1231#soo/../1231 http://127.0.0.1:40921/../../hej/but/who/../12310001#/../12310001 > log/12/stdout1231 2> log/12/stderr1231
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@127.0.0.1:40913/1237" > log/10/stdout1237 2> log/10/stderr1237
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.491886 ====> Client connect
 19:28:15.491923 accept_connection 3 returned 4
 19:28:15.491945 Read 93 bytes
 19:28:15.491954 Process 93 bytes request
 19:28:15.491966 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.491975 Are-we-friendly question received
 19:28:15.492002 Wrote request (93 bytes) input to log/10/server.input
 19:28:15.492018 Identifying ourselves as friends
 19:28:15.492082 Response sent (56 bytes) and written to log/10/server.response
 19:28:15.492103 special request received, no persistency
 19:28:15.492111 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 52800 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1237
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1237
 ==147188== 
 ==147188== Process terminating with default action of signal 4 (SIGILL)
 ==147188==  Illegal opcode at address 0x492B75F
 ==147188==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147188==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147188==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147188==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147188==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147188==    by 0x49908EB: curl_version_info (version.c:600)
 ==147188==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147188==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147188==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147188==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1237
test 1241 [HTTP _without_ dotdot removal]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1241 ../src/curl -q --output log/3/curl1241.out  --include --trace-ascii log/3/trace1241 --trace-time --path-as-is --proxy http://127.0.0.1:36161 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001 > log/3/stdout1241 2> log/3/stderr1241

 1241: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1241
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1241 ../src/curl -q --output log/3/curl1241.out  --include --trace-ascii log/3/trace1241 --trace-time --path-as-is --proxy http://127.0.0.1:36161 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001 > log/3/stdout1241 2> log/3/stderr1241
=== End of file commands.log
=== Start of file http_server.log
 19:28:16.892726 ====> Client connect
 19:28:16.892839 accept_connection 3 returned 4
 19:28:16.892867 Read 93 bytes
 19:28:16.892877 Process 93 bytes request
 19:28:16.892891 Got request: GET /verifiedserver HTTP/1.1
 19:28:16.892899 Are-we-friendly question received
 19:28:16.892926 Wrote request (93 bytes) input to log/3/server.input
 19:28:16.892942 Identifying ourselves as friends
 19:28:16.893025 Response sent (56 bytes) and written to log/3/server.response
 19:28:16.893034 special request received, no persistency
 19:28:16.893042 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 60042 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1241
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1241
 ==147407== 
 ==147407== Process terminating with default action of signal 4 (SIGILL)
 ==147407==  Illegal opcode at address 0x492B75F
 ==147407==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147407==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147407==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147407==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147407==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147407==    by 0x49908EB: curl_version_info (version.c:600)
 ==147407==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147407==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147407==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147407==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1241
test 1231 [HTTP URL with dotdot removal from path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1231 ../src/curl -q --output log/12/curl1231.out  --include --trace-ascii log/12/trace1231 --trace-time http://127.0.0.1:40921/../../hej/but/who/../1231?stupid=me/../1231#soo/../1231 http://127.0.0.1:40921/../../hej/but/who/../12310001#/../12310001 > log/12/stdout1231 2> log/12/stderr1231

 1231: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1231
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1231 ../src/curl -q --output log/12/curl1231.out  --include --trace-ascii log/12/trace1231 --trace-time http://127.0.0.1:40921/../../hej/but/who/../1231?stupid=me/../1231#soo/../1231 http://127CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1239 ../src/curl -q --include --trace-ascii log/20/trace1239 --trace-time http://127.0.0.1:33897/1239 -z "-dec 12 12:00:00 1999 GMT" -w '%{response_code}' > log/20/stdout1239 2> log/20/stderr1239
.0.0.1:40921/../../hej/but/who/../12310001#/../12310001 > log/12/stdout1231 2> log/12/stderr1231
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.206958 ====> Client connect
 19:28:15.206990 accept_connection 3 returned 4
 19:28:15.207009 Read 93 bytes
 19:28:15.207018 Process 93 bytes request
 19:28:15.207029 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.207038 Are-we-friendly question received
 19:28:15.207065 Wrote request (93 bytes) input to log/12/server.input
 19:28:15.207080 Identifying ourselves as friends
 19:28:15.207139 Response sent (56 bytes) and written to log/12/server.response
 19:28:15.207148 special request received, no persistency
 19:28:15.207156 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38436 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1231
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1231
 ==146824== 
 ==146824== Process terminating with default action of signal 4 (SIGILL)
 ==146824==  Illegal opcode at address 0x492B75F
 ==146824==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==146824==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==146824==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==146824==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==146824==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==146824==    by 0x49908EB: curl_version_info (version.c:600)
 ==146824==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==146824==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==146824==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==146824==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1231
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1235 ../src/curl -q --include --trace-ascii log/23/trace1235 --trace-time "127.0.0.1:44711/{1235,1235}{0001,0002}" > log/23/stdout1235 2> log/23/stderr1235
test 1239 [HTTP with -z + -w response_code and simulated 304]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1239 ../src/curl -q --include --trace-ascii log/20/trace1239 --trace-time http://127.0.0.1:33897/1239 -z "-dec 12 12:00:00 1999 GMT" -w '%{response_code}' > log/20/stdout1239 2> log/20/stderr1239

 1239: stdout FAILED:
--- log/20/check-expected	2026-10-15 19:28:18.597312564 +0000
+++ log/20/check-generated	2026-10-15 19:28:18.594872449 +0000
@@ -1,11 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Server: test-server/fake[LF]
-Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT[LF]
-ETag: "21025-dc7-39462498"[LF]
-Accept-Ranges: bytes[LF]
-Content-Length: 6[LF]
-Connection: close[LF]
-Content-Type: text/html[LF]
-[LF]
-304
== Contents of files in the log/20/ directory after test 1239
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Server: test-server/fake[LF]
 Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT[LF]
 ETag: "21025-dc7-39462498"[LF]
 Accept-Ranges: bytes[LF]
 Content-Length: 6[LF]
 Connection: close[LF]
 Content-Type: text/html[LF]
 [LF]
 304
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1239 ../src/curl -q --include --trace-ascii log/20/trace1239 --trace-time http://127.0.0.1:33897/1239 -z "-dec 12 12:00:00 1999 GMT" -w '%{response_code}' > log/20/stdout1239 2> log/20/stderr1239
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.719042 ====> Client connect
 19:28:15.719078 accept_connection 3 returned 4
 19:28:15.719102 Read 93 bytes
 19:28:15.719112 Process 93 bytes request
 19:28:15.719125 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.719134 Are-we-friendly question received
 19:28:15.719160 Wrote request (93 bytes) input to log/20/server.input
 19:28:15.719177 Identifying ourselves as friends
 19:28:15.719250 Response sent (56 bytes) and written to log/20/server.response
 19:28:15.719260 special request received, no persistency
 19:28:15.719269 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 37236 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1239
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1239
 ==147321== 
 ==147321== Process terminating with default action of signal 4 (SIGILL)
 ==147321==  Illegal opcode at address 0x492B75F
 ==147321==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147321==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147321==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147321==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147321==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147321==    by 0x49908EB: curl_version_info (version.c:600)
 ==147321==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147321==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147321==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147321==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1239
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1240 ../src/curl -q --output log/22/curl1240.out  --include --trace-ascii log/22/trace1240 --trace-time "127.0.0.1:35989/0[0-1]/1240" > log/22/stdout1240 2> log/22/stderr1240
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1243 ../src/curl -q --output log/9/curl1243.out  --include --trace-ascii log/9/trace1243 --trace-time -T log/9/test1243.txt tftp://127.0.0.1:38065// --tftp-no-options > log/9/stdout1243 2> log/9/stderr1243
test 1235 [multiple requests using {}{} in the URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1235 ../src/curl -q --include --trace-ascii log/23/trace1235 --trace-time "127.0.0.1:44711/{1235,1235}{0001,0002}" > log/23/stdout1235 2> log/23/stderr1235

 1235: stdout FAILED:
--- log/23/check-expected	2026-10-15 19:28:18.623658286 +0000
+++ log/23/check-generated	2026-10-15 19:28:18.621540494 +0000
@@ -1,20 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 15[CR][LF]
-[CR][LF]
-the number one[LF]
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 16[CR][LF]
-[CR][LF]
-two is nice too[LF]
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 15[CR][LF]
-[CR][LF]
-the number one[LF]
-HTTP/1.1 200 OK[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 16[CR][LF]
-[CR][LF]
-two is nice too[LF]
== Contents of files in the log/23/ directory after test 1235
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 15[CR][LF]
 [CR][LF]
 the number one[LF]
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 16[CR][LF]
 [CR][LF]
 two is nice too[LF]
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 15[CR][LF]
 [CR][LF]
 the number one[LF]
 HTTP/1.1 200 OK[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 16[CR][LF]
 [CR][LF]
 two is nice too[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1235 ../src/curl -q --include --trace-ascii log/23/trace1235 --trace-time "127.0.0.1:44711/{1235,1235}{0001,0002}" > log/23/stdout1235 2> log/23/stderr1235
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.412355 ====> Client connect
 19:28:15.412390 accept_connection 3 returned 4
 19:28:15.412411 Read 93 bytes
 19:28:15.412420 Process 93 bytes request
 19:28:15.412433 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.412442 Are-we-friendly question received
 19:28:15.412489 Wrote request (93 bytes) input to log/23/server.input
 19:28:15.412505 Identifying ourselves as friends
 19:28:15.412567 Response sent (56 bytes) and written to log/23/server.response
 19:28:15.412576 special request received, no persistency
 19:28:15.412584 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 42176 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1235
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1235
 ==147088== 
 ==147088== Process terminating with default action of signal 4 (SIGILL)
 ==147088==  Illegal opcode at address 0x492B75F
 ==147088==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147088==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147088==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147088==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147088==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147088==    by 0x49908EB: curl_version_info (version.c:600)
 ==147088==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147088==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147088==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147088==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1235
test 1240 [glob [0-1] with stuff after range (7.33.0 regression)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1240 ../src/curl -q --output log/22/curl1240.out  --include --trace-ascii log/22/trace1240 --trace-time "127.0.0.1:35989/0[0-1]/1240" > log/22/stdout1240 2> log/22/stderr1240

 1240: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1240
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1240 ../src/curl -q --output log/22/curl1240.out  --include --trace-ascii log/22/trace1240 --trace-time "127.0.0.1:35989/0[0-1]/1240" > log/22/stdout1240 2> log/22/stderr1240
=== End of file commands.log
=== Start of file http_server.log
 19:28:15.747088 ====> Client connect
 19:28:15.747282 accept_connection 3 returned 4
 19:28:15.747310 Read 93 bytes
 19:28:15.747321 Process 93 bytes request
 19:28:15.747335 Got request: GET /verifiedserver HTTP/1.1
 19:28:15.747344 Are-we-friendly question received
 19:28:15.747379 Wrote request (93 bytes) input to log/22/server.input
 19:28:15.747398 Identifying ourselves as friends
 19:28:15.747474 Response sent (56 bytes) and written to log/22/server.response
 19:28:15.747486 special request received, no persistency
 19:28:15.747495 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 43088 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1240
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1240
 ==147320== 
 ==147320== Process terminating with default action of signal 4 (SIGILL)
 ==147320==  Illegal opcode at address 0x492B75F
 ==147320==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147320==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147320==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147320==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147320==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147320==    by 0x49908EB: curl_version_info (version.c:600)
 ==147320==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147320==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147320==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147320==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1240
test 1243 [TFTP send without TFTP options requests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1243 ../src/curl -q --output log/9/curl1243.out  --include --trace-ascii log/9/trace1243 --trace-time -T log/9/test1243.txt tftp://127.0.0.1:38065// --tftp-no-options > log/9/stdout1243 2> log/9/stderr1243

 1243: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1243
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1238 ../src/curl -q --output log/14/curl1238.out  --include --trace-ascii log/14/trace1238 --trace-time tftp://127.0.0.1:56578//1238 -Y1000 -y2 > log/14/stdout1238 2> log/14/stderr1238
RUN: Process with pid 147122 signalled to die
RUN: Process with pid 147122 gracefully died
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1242 ../src/curl -q --output log/8/curl1242.out  --include --trace-ascii log/8/trace1242 --trace-time tftp://127.0.0.1:41403//1242 --tftp-no-options > log/8/stdout1242 2> log/8/stderr1242
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1247 ../src/curl -q --output log/6/curl1247.out  --include --trace-ascii log/6/trace1247 --trace-time --fail-early h1234://127.0.0.1:33935/1247 http://127.0.0.1:33935/1247 > log/6/stdout1247 2> log/6/stderr1247
grind.supp --num-callers=16 --log-file=log/9/valgrind1243 ../src/curl -q --output log/9/curl1243.out  --include --trace-ascii log/9/trace1243 --trace-time -T log/9/test1243.txt tftp://127.0.0.1:38065// --tftp-no-options > log/9/stdout1243 2> log/9/stderr1243
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1243
=== End of file server.cmd
=== Start of file test1243.txt
 a chunk of
 data
 sent
  to server
=== End of file test1243.txt
=== Start of file tftp_server.log
 19:28:17.071537 trying to get file: verifiedserver mode 1
 19:28:17.071570 Are-we-friendly question received
 19:28:17.071587 write
 19:28:17.071609 read
 19:28:17.072088 read: 4
 19:28:17.072155 end of one transfer
=== End of file tftp_server.log
=== Start of file valgrind1243
 ==147506== 
 ==147506== Process terminating with default action of signal 4 (SIGILL)
 ==147506==  Illegal opcode at address 0x492B75F
 ==147506==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147506==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147506==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147506==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147506==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147506==    by 0x49908EB: curl_version_info (version.c:600)
 ==147506==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147506==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147506==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1243
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/14/server/tftp_server.pid" --portfile "log/14/server/tftp_server.port" --logfile "log/14/tftp_server.log" --logdir "log/14" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 147122 port 56578
* pid tftp => 147122 147122
test 1238 [slow TFTP retrieve cancel due to -Y and -y]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1238 ../src/curl -q --output log/14/curl1238.out  --include --trace-ascii log/14/trace1238 --trace-time tftp://127.0.0.1:56578//1238 -Y1000 -y2 > log/14/stdout1238 2> log/14/stderr1238

 1238: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1238
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1238 ../src/curl -q --output log/14/curl1238.out  --include --trace-ascii log/14/trace1238 --trace-time tftp://127.0.0.1:56578//1238 -Y1000 -y2 > log/14/stdout1238 2> log/14/stderr1238
=== End of file commands.log
=== Start of file server.cmd
 writedelay: 2000
 Testnum 1238
=== End of file server.cmd
=== Start of file tftp_server.log
 19:28:15.501189 Wrote pid 147122 to log/14/server/tftp_server.pid
 19:28:15.501262 Wrote port 56578 to log/14/server/tftp_server.port
 19:28:15.501275 Running IPv4 version on port UDP/56578
 19:28:18.928615 signalled to die
 19:28:18.928777 ========> exit message: exit_signal_handler(): triggered
 19:28:18.928790 ========> IPv4 tftpd (port 56578 pid: 147122) exits with signal (15)
 19:28:18.928804 ========> tftpd quits
=== End of file tftp_server.log
=== Start of file valgrind1238
 ==147599== 
 ==147599== Process terminating with default action of signal 4 (SIGILL)
 ==147599==  Illegal opcode at address 0x492B75F
 ==147599==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147599==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147599==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147599==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147599==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147599==    by 0x49908EB: curl_version_info (version.c:600)
 ==147599==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147599==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147599==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147599==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1238
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/8/server/tftp_server.pid" --portfile "log/8/server/tftp_server.port" --logfile "log/8/tftp_server.log" --logdir "log/8" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 147340 port 41403
* pid tftp => 147340 147340
test 1242 [TFTP retrieve without TFTP options requests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1242 ../src/curl -q --output log/8/curl1242.out  --include --trace-ascii log/8/trace1242 --trace-time tftp://127.0.0.1:41403//1242 --tftp-no-options > log/8/stdout1242 2> log/8/stderr1242

 1242: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1242
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1242 ../src/curl -q --output log/8/curl1242.out  --include --trace-ascii log/8/trace1242 --trace-time tftp://127.0.0.1:41403//1242 --tftp-no-options > log/8/stdout1242 2> log/8/stderr1242
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1242
=== End of file server.cmd
=== Start of file tftp_server.log
 19:28:16.866070 Wrote pid 147340 to log/8/server/tftp_server.pid
 19:28:16.866148 Wrote port 41403 to log/8/server/tftp_server.port
 19:28:16.866163 Running IPv4 version on port UDP/41403
=== End of file tftp_server.log
=== Start of file valgrind1242
 ==147782== 
 ==147782== Process terminating with default action of signal 4 (SIGILL)
 ==147782==  Illegal opcode at address 0x492B75F
 ==147782==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147782==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147782==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147782==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147782==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147782==    by 0x49908EB: curl_version_info (version.c:600)
 ==147782==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147782==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147782==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147782==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1242
test 1247 [--fail-early]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1247 ../src/curl -q --output log/6/curl1247.out  --include --trace-ascii log/6/trace1247 --trace-time --fail-early h1234://127.0.0.1:33935/1247 http://127.0.0.1:33935/1247 > log/6/stdout1247 2> log/6/stderr1247

curl returned 132, when expecting 1
 1247: exit FAILED
== Contents of files in the log/6/ directory after test 1247
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1247 ../src/curl -q --output log/6/curl1247.out  --include --trace-ascii log/6/trace1247 --trace-time --fail-early h1234://127.0.0.1:33935/1247 http://127.0.0.1:33935/1247 > log/6/stdout1247 2> log/6/stderr1247
=== End of file commands.log
=== Start of file http_server.log
 19:28:16.730099 ====> Client connect
 19:28:16.730133 accept_connection 3 returned 4
 19:28:16.730152 Read 93 bytes
 19:28:16.730160 Process 93 bytes request
 19:28:16.730172 Got request: GET /verifiedserver HTTP/1.1
 19:28:16.730180 Are-we-fCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1246 ../src/curl -q --output log/16/curl1246.out  --include --trace-ascii log/16/trace1246 --trace-time --proxy http://127.0.0.1:35903 http://test.remote.haxx.se.1246:35903#@127.0.0.1/tricked.html no-scheme-url.com.1246:35903#@127.127.127.127/again.html > log/16/stdout1246 2> log/16/stderr1246
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1249 ../src/curl -q --output log/1/curl1249.out  --include --trace-ascii log/1/trace1249 --trace-time http://user:secret@127.0.0.1:38815/1249 --proxy http://dummy:47/ --max-time 5 > log/1/stdout1249 2> log/1/stderr1249
riendly question received
 19:28:16.730208 Wrote request (93 bytes) input to log/6/server.input
 19:28:16.730222 Identifying ourselves as friends
 19:28:16.730277 Response sent (56 bytes) and written to log/6/server.response
 19:28:16.730285 special request received, no persistency
 19:28:16.730292 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 47640 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1247
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1247
 ==147727== 
 ==147727== Process terminating with default action of signal 4 (SIGILL)
 ==147727==  Illegal opcode at address 0x492B75F
 ==147727==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147727==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147727==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147727==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147727==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147727==    by 0x49908EB: curl_version_info (version.c:600)
 ==147727==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147727==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147727==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147727==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1247
test 1246 [URL with '#' at end of hostname instead of '/']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1246 ../src/curl -q --output log/16/curl1246.out  --include --trace-ascii log/16/trace1246 --trace-time --proxy http://127.0.0.1:35903 http://test.remote.haxx.se.1246:35903#@127.0.0.1/tricked.html no-scheme-url.com.1246:35903#@127.127.127.127/again.html > log/16/stdout1246 2> log/16/stderr1246

 1246: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1246
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1246 ../src/curl -q --output log/16/curl1246.out  --include --trace-ascii log/16/trace1246 --trace-time --proxy http://127.0.0.1:35903 http://test.remote.haxx.se.1246:35903#@127.0.0.1/tricked.html no-scheme-url.com.1246:35903#@127.127.127.127/again.html > log/16/stdout1246 2> log/16/stderr1246
=== End of file commands.log
=== Start of file http_server.log
 19:28:17.695463 ====> Client connect
 19:28:17.695517 accept_connection 3 returned 4
 19:28:17.695546 Read 93 bytes
 19:28:17.695557 Process 93 bytes request
 19:28:17.695571 Got request: GET /verifiedserver HTTP/1.1
 19:28:17.695580 Are-we-friendly question received
 19:28:17.695615 Wrote request (93 bytes) input to log/16/server.input
 19:28:17.695639 Identifying ourselves as friends
 19:28:17.695734 Response sent (56 bytes) and written to log/16/server.response
 19:28:17.695747 special request received, no persistency
 19:28:17.695756 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 47270 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1246
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1246
 ==147717== 
 ==147717== Process terminating with default action of signal 4 (SIGILL)
 ==147717==  Illegal opcode at address 0x492B75F
 ==147717==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147717==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147717==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147717==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147717==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147717==    by 0x49908EB: curl_version_info (version.c:600)
 ==147717==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147717==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147717==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147717==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1246
setenv NO_PROXY = 127.0.0.1
test 1249 [Non-proxied plus --proxy option and NO_PROXY env var]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1249 ../src/curl -q --output log/1/curl1249.out  --include --trace-ascii log/1/trace1249 --trace-time http://user:secret@127.0.0.1:38815/1249 --proxy http://dummy:47/ --max-time 5 > log/1/stdout1249 2> log/1/stderr1249

 1249: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1249
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1249 ../src/curl -q --output log/1/curl1249.out  --include --trace-ascii log/1/trace1249 --trace-time http://user:secret@127.0.0.1:38815/1249 --proxy http://dummy:47/ --max-time 5 > log/1/stdout1249 2> log/1/stderr1249
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.142097 ====> Client connect
 19:28:18.142143 accept_connection 3 returned 4
 19:28:18.142169 Read 93 bytes
 19:28:18.142182 Process 93 bytes request
 19:28:18.142197 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.142207 Are-we-friendly question received
 19:28:18.142238 Wrote request (93 bytes) input to log/1/server.input
 19:28:18.142254 Identifying ourselves as friends
 19:28:18.142344 Response sent (56 bytes) and written to log/1/server.response
 19:28:18.142353 special request received, no persistency
 19:28:18.142362 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 47276 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1249
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1249
 ==148018== 
 ==148018== Process terminating with default action of signal 4 (SIGILL)
 ==148018==  Illegal opcode at address 0x492B75F
 ==148018==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148018==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1248 ../src/curl -q --output log/7/curl1248.out  --include --trace-ascii log/7/trace1248 --trace-time http://user:secret@127.0.0.1:40859/1248 --proxy http://dummy:47/ --noproxy 127.0.0.1 --max-time 5 > log/7/stdout1248 2> log/7/stderr1248
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1250 ../src/curl -q --output log/21/curl1250.out  --include --trace-ascii log/21/trace1250 --trace-time http://user:secret@127.0.0.1:39881/1250 --noproxy 127.0.0.1 --max-time 5 > log/21/stdout1250 2> log/21/stderr1250
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1245 ../src/curl -q --output log/19/curl1245.out  --include --trace-ascii log/19/trace1245 --trace-time --location --proto +all,-ftp --proto-redir -all,+ftp http://127.0.0.1:46497/1245 > log/19/stdout1245 2> log/19/stderr1245
018==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148018==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148018==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148018==    by 0x49908EB: curl_version_info (version.c:600)
 ==148018==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148018==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148018==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148018==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1249
test 1248 [Non-proxied host plus --proxy option and --noproxy option]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1248 ../src/curl -q --output log/7/curl1248.out  --include --trace-ascii log/7/trace1248 --trace-time http://user:secret@127.0.0.1:40859/1248 --proxy http://dummy:47/ --noproxy 127.0.0.1 --max-time 5 > log/7/stdout1248 2> log/7/stderr1248

 1248: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1248
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1248 ../src/curl -q --output log/7/curl1248.out  --include --trace-ascii log/7/trace1248 --trace-time http://user:secret@127.0.0.1:40859/1248 --proxy http://dummy:47/ --noproxy 127.0.0.1 --max-time 5 > log/7/stdout1248 2> log/7/stderr1248
=== End of file commands.log
=== Start of file http_server.log
 19:28:17.055420 ====> Client connect
 19:28:17.055460 accept_connection 3 returned 4
 19:28:17.055482 Read 93 bytes
 19:28:17.055492 Process 93 bytes request
 19:28:17.055504 Got request: GET /verifiedserver HTTP/1.1
 19:28:17.055512 Are-we-friendly question received
 19:28:17.055537 Wrote request (93 bytes) input to log/7/server.input
 19:28:17.055553 Identifying ourselves as friends
 19:28:17.055618 Response sent (56 bytes) and written to log/7/server.response
 19:28:17.055627 special request received, no persistency
 19:28:17.055635 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 37974 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1248
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1248
 ==147946== 
 ==147946== Process terminating with default action of signal 4 (SIGILL)
 ==147946==  Illegal opcode at address 0x492B75F
 ==147946==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147946==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147946==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147946==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147946==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147946==    by 0x49908EB: curl_version_info (version.c:600)
 ==147946==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147946==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147946==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147946==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1248
setenv http_proxy = http://dummy:44633/
test 1250 [Non-proxied host plus http_proxy env var and --noproxy option]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1250 ../src/curl -q --output log/21/curl1250.out  --include --trace-ascii log/21/trace1250 --trace-time http://user:secret@127.0.0.1:39881/1250 --noproxy 127.0.0.1 --max-time 5 > log/21/stdout1250 2> log/21/stderr1250

 1250: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1250
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1250 ../src/curl -q --output log/21/curl1250.out  --include --trace-ascii log/21/trace1250 --trace-time http://user:secret@127.0.0.1:39881/1250 --noproxy 127.0.0.1 --max-time 5 > log/21/stdout1250 2> log/21/stderr1250
=== End of file commands.log
=== Start of file http_server.log
 19:28:17.218882 ====> Client connect
 19:28:17.218932 accept_connection 3 returned 4
 19:28:17.218961 Read 93 bytes
 19:28:17.218973 Process 93 bytes request
 19:28:17.218987 Got request: GET /verifiedserver HTTP/1.1
 19:28:17.218996 Are-we-friendly question received
 19:28:17.219027 Wrote request (93 bytes) input to log/21/server.input
 19:28:17.219046 Identifying ourselves as friends
 19:28:17.219132 Response sent (56 bytes) and written to log/21/server.response
 19:28:17.219147 special request received, no persistency
 19:28:17.219157 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49150 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1250
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1250
 ==148091== 
 ==148091== Process terminating with default action of signal 4 (SIGILL)
 ==148091==  Illegal opcode at address 0x492B75F
 ==148091==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148091==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148091==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148091==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148091==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148091==    by 0x49908EB: curl_version_info (version.c:600)
 ==148091==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148091==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148091==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148091==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1250
test 1245 [--proto deny must override --proto-redir allow]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1245 ../src/curl -q --output log/19/curl1245.out  --include --trace-ascii log/19/trace1245 --trace-time --location --proto +all,-ftp --proto-redir -all,+ftp http://127.0.0.1:46497/1245 > log/19/stdout1245 2> log/19/stderr1245

 1245: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1245
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1245 ../src/curl -q --output log/19/curl1245.out  --include --CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1256 ../src/curl -q --output log/5/curl1256.out  --include --trace-ascii log/5/trace1256 --trace-time http://somewhere.example.com/1256 --noproxy 127.0.0.1 > log/5/stdout1256 2> log/5/stderr1256
trace-ascii log/19/trace1245 --trace-time --location --proto +all,-ftp --proto-redir -all,+ftp http://127.0.0.1:46497/1245 > log/19/stdout1245 2> log/19/stderr1245
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:17.100977 ====> Client connect
 19:28:17.101186 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:17.112178 < "USER anonymous"
 19:28:17.112257 > "331 We are happy you popped in![CR][LF]"
 19:28:17.115679 < "PASS ftp@example.com"
 19:28:17.115729 > "230 Welcome you silly person[CR][LF]"
 19:28:17.115875 < "PWD"
 19:28:17.115906 > "257 "/" is current directory[CR][LF]"
 19:28:17.116059 < "EPSV"
 19:28:17.116082 ====> Passive DATA channel requested by client
 19:28:17.116095 DATA sockfilt for passive data channel starting...
 19:28:17.123167 DATA sockfilt for passive data channel started (pid 147715)
 19:28:17.123308 DATA sockfilt for passive data channel listens on port 41177
 19:28:17.123351 > "229 Entering Passive Mode (|||41177|)[CR][LF]"
 19:28:17.123368 Client has been notified that upcoming DATA connection is awaited on port 41177
 19:28:17.123681 Client connects to port 41177
 19:28:17.123710 ====> Client established passive DATA connection on port 41177
 19:28:17.123796 < "TYPE I"
 19:28:17.123827 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:17.123988 < "SIZE verifiedserver"
 19:28:17.124023 > "213 17[CR][LF]"
 19:28:17.124176 < "RETR verifiedserver"
 19:28:17.124209 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:17.124293 =====> Closing passive DATA connection...
 19:28:17.124311 Server disconnects passive DATA connection
 19:28:17.124481 Server disconnected passive DATA connection
 19:28:17.124503 DATA sockfilt for passive data channel quits (pid 147715)
 19:28:17.124796 DATA sockfilt for passive data channel quit (pid 147715)
 19:28:17.124820 =====> Closed passive DATA connection
 19:28:17.124847 > "226 File transfer complete[CR][LF]"
 19:28:17.168986 < "QUIT"
 19:28:17.169046 > "221 bye bye baby[CR][LF]"
 19:28:17.170279 MAIN sockfilt said DISC
 19:28:17.170321 ====> Client disconnected
 19:28:17.170399 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:16.704253 ====> Client connect
 19:28:16.705406 Received DATA (on stdin)
 19:28:16.705426 > 146 bytes data, server => client
 19:28:16.705438 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:16.705447 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:16.705456 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:16.705558 < 16 bytes data, client => server
 19:28:16.705571 'USER anonymous\r\n'
 19:28:16.718731 Received DATA (on stdin)
 19:28:16.718768 > 33 bytes data, server => client
 19:28:16.718779 '331 We are happy you popped in!\r\n'
 19:28:16.718911 < 22 bytes data, client => server
 19:28:16.718922 'PASS ftp@example.com\r\n'
 19:28:16.719124 Received DATA (on stdin)
 19:28:16.719134 > 30 bytes data, server => client
 19:28:16.719143 '230 Welcome you silly person\r\n'
 19:28:16.719191 < 5 bytes data, client => server
 19:28:16.719200 'PWD\r\n'
 19:28:16.719297 Received DATA (on stdin)
 19:28:16.719306 > 30 bytes data, server => client
 19:28:16.719315 '257 "/" is current directory\r\n'
 19:28:16.719376 < 6 bytes data, client => server
 19:28:16.719386 'EPSV\r\n'
 19:28:16.726768 Received DATA (on stdin)
 19:28:16.726784 > 39 bytes data, server => client
 19:28:16.726795 '229 Entering Passive Mode (|||41177|)\r\n'
 19:28:16.726993 < 8 bytes data, client => server
 19:28:16.727007 'TYPE I\r\n'
 19:28:16.727221 Received DATA (on stdin)
 19:28:16.727232 > 33 bytes data, server => client
 19:28:16.727242 '200 I modify TYPE as you wanted\r\n'
 19:28:16.727296 < 21 bytes data, client => server
 19:28:16.727307 'SIZE verifiedserver\r\n'
 19:28:16.727414 Received DATA (on stdin)
 19:28:16.727425 > 8 bytes data, server => client
 19:28:16.727434 '213 17\r\n'
 19:28:16.727485 < 21 bytes data, client => server
 19:28:16.727495 'RETR verifiedserver\r\n'
 19:28:16.727705 Received DATA (on stdin)
 19:28:16.727716 > 29 bytes data, server => client
 19:28:16.727726 '150 Binary junk (17 bytes).\r\n'
 19:28:16.728239 Received DATA (on stdin)
 19:28:16.728250 > 28 bytes data, server => client
 19:28:16.728260 '226 File transfer complete\r\n'
 19:28:16.772182 < 6 bytes data, client => server
 19:28:16.772208 'QUIT\r\n'
 19:28:16.772441 Received DATA (on stdin)
 19:28:16.772452 > 18 bytes data, server => client
 19:28:16.772461 '221 bye bye baby\r\n'
 19:28:16.773611 ====> Client disconnect
 19:28:16.773789 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:17.726135 Running IPv4 version
 19:28:17.726246 Listening on port 41177
 19:28:17.726287 Wrote pid 147715 to log/19/server/ftp_sockdata.pid
 19:28:17.726495 Received PING (on stdin)
 19:28:17.726599 Received PORT (on stdin)
 19:28:17.727027 ====> Client connect
 19:28:17.727784 Received DATA (on stdin)
 19:28:17.727796 > 17 bytes data, server => client
 19:28:17.727805 'WE ROOLZ: 84587\r\n'
 19:28:17.727832 Received DISC (on stdin)
 19:28:17.727934 ====> Client forcibly disconnected
 19:28:17.727965 Received QUIT (on stdin)
 19:28:17.727974 quits
 19:28:17.728044 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:28:16.608816 ====> Client connect
 19:28:16.608861 accept_connection 3 returned 4
 19:28:16.608887 Read 93 bytes
 19:28:16.608896 Process 93 bytes request
 19:28:16.608909 Got request: GET /verifiedserver HTTP/1.1
 19:28:16.608917 Are-we-friendly question received
 19:28:16.609111 Wrote request (93 bytes) input to log/19/server.input
 19:28:16.609129 Identifying ourselves as friends
 19:28:16.609208 Response sent (56 bytes) and written to log/19/server.response
 19:28:16.609216 special request received, no persistency
 19:28:16.609224 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 57988 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1245
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind1245
 ==147756== 
 ==147756== Process terminating with default action of signal 4 (SIGILL)
 ==147756==  Illegal opcode at address 0x492B75F
 ==147756==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==147756==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==147756==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==147756==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==147756==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==147756==    by 0x49908EB: curl_version_info (version.c:600)
 ==147756==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==147756==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==147756==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==147756==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1245
setenv http_proxy = http://127.0.0.1:37089
setenv NO_PROXY = example.com
test 1256 [http_proxy, override NO_PROXY by --noproxy host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1256 ../src/curl -q --output log/5/curl1256.out  --include --trace-ascii log/5/trace1256 --trace-time http://somewhere.example.com/1256 --noproxy 127.0.0.1 > log/5/stdout1256 2> log/5/stderr1256

 1256: protocol FAILED!
 There was no content at all in the file log/5/server.input.
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1275.pl /startdir/src/curl/tests/.. > log/5/stdout1275 2> log/5/stderr1275
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1276.pl /startdir/src/curl/tests/.. > log/5/stdout1276 2> log/5/stderr1276
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1230 ../src/curl -q --output log/13/curl1230.out  --include --trace-ascii log/13/trace1230 --trace-time http://[1234:1234:1234::4ce]:38821/wanted/page/1230 -p -x 127.0.0.1:38821 > log/13/stdout1230 2> log/13/stderr1230
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1252 ../src/curl -q --output log/17/curl1252.out  --include --trace-ascii log/17/trace1252 --trace-time http://127.0.0.1:35993/1252 --proxy http://127.0.0.1:35993 --noproxy 127.0.0.1 > log/17/stdout1252 2> log/17/stderr1252
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1256
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1256 ../src/curl -q --output log/5/curl1256.out  --include --trace-ascii log/5/trace1256 --trace-time http://somewhere.example.com/1256 --noproxy 127.0.0.1 > log/5/stdout1256 2> log/5/stderr1256
=== End of file commands.log
=== Start of file http_server.log
 19:28:17.871759 ====> Client connect
 19:28:17.871795 accept_connection 3 returned 4
 19:28:17.871817 Read 93 bytes
 19:28:17.871828 Process 93 bytes request
 19:28:17.871839 Got request: GET /verifiedserver HTTP/1.1
 19:28:17.871848 Are-we-friendly question received
 19:28:17.871877 Wrote request (93 bytes) input to log/5/server.input
 19:28:17.871893 Identifying ourselves as friends
 19:28:17.871956 Response sent (56 bytes) and written to log/5/server.response
 19:28:17.871979 special request received, no persistency
 19:28:17.871988 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 57396 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1256
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1256
 ==148549== 
 ==148549== Process terminating with default action of signal 4 (SIGILL)
 ==148549==  Illegal opcode at address 0x492B75F
 ==148549==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148549==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148549==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148549==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148549==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148549==    by 0x49908EB: curl_version_info (version.c:600)
 ==148549==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148549==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148549==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148549==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1256
test 1275 [Verify capital letters after period in markdown files]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1275.pl /startdir/src/curl/tests/.. > log/5/stdout1275 2> log/5/stderr1275
 valgrind SKIPPED
-------e--- OK (1170 out of 1890, remaining: 01:28, took 0.052s, duration: 02:23)
test 1276 [Verify lib/optiontable.pl]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1276.pl /startdir/src/curl/tests/.. > log/5/stdout1276 2> log/5/stderr1276
 valgrind SKIPPED
-------e--- OK (1171 out of 1890, remaining: 01:28, took 0.060s, duration: 02:23)
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/13/server/http2_server.pid" --logfile "log/13/http2_server.log" --logdir "log/13" --portfile log/13/server/http2_server.port --config log/13/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 146612 port 38663
* pid http-proxy => 146612 146612
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/13/server/http_ipv6_server.pid" --logfile "log/13/http_ipv6_server.log" --logdir "log/13" --portfile log/13/server/http_ipv6_server.port --config log/13/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 147503 port 44969
* pid http-ipv6 => 147503 147503
test 1230 [HTTP CONNECT to IPv6 numerical address]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1230 ../src/curl -q --output log/13/curl1230.out  --include --trace-ascii log/13/trace1230 --trace-time http://[1234:1234:1234::4ce]:38821/wanted/page/1230 -p -x 127.0.0.1:38821 > log/13/stdout1230 2> log/13/stderr1230

 1230: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1230
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1230 ../src/curl -q --output log/13/curl1230.out  --include --trace-ascii log/13/trace1230 --trace-time http://[1234:1234:1234::4ce]:38821/wanted/page/1230 -p -x 127.0.0.1:38821 > log/13/stdout1230 2> log/13/stderr1230
=== End of file commands.log
=== Start of file http2_server.log
 19:28:15.121789 Run as proxy, CONNECT to host 127.0.0.1
 19:28:15.121916 Running HTTP IPv4 version on port 38663
 19:28:15.121958 Wrote pid 146612 to log/13/server/http2_server.pid
 19:28:15.121987 Wrote port 38663 to log/13/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_ipv6_server.log
 19:28:16.159223 Running HTTP IPv6 version on port 44969
 19:28:16.159340 Wrote pid 147503 to log/13/server/http_ipv6_server.pid
 19:28:16.159374 Wrote port 44969 to log/13/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file http_server.log
 19:28:17.168337 ====> Client connect
 19:28:17.168376 accept_connection 3 returned 4
 19:28:17.168535 Read 93 bytes
 19:28:17.168551 Process 93 bytes request
 19:28:17.168565 Got request: GET /verifiedserver HTTP/1.1
 19:28:17.168575 Are-we-friendly question received
 19:28:17.168608 Wrote request (93 bytes) input to log/13/server.input
 19:28:17.168627 Identifying ourselves as friends
 19:28:17.168752 Response sent (56 bytes) and written to log/13/server.response
 19:28:17.168765 special request received, no persistency
 19:28:17.168774 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 43696 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1230
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1230
 ==148027== 
 ==148027== Process terminating with default action of signal 4 (SIGILL)
 ==148027==  Illegal opcode at address 0x492B75F
 ==148027==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148027==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148027==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148027==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148027==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148027==    by 0x49908EB: curl_version_info (version.c:600)
 ==148027==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148027==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1230
setenv NO_PROXY = example.com
test 1252 [--proxy, override NO_PROXY by --noproxy and accesCMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1135.pl --heading=EXPORTS --sort /startdir/src/curl/tests/.. > log/17/stdout1279 2> log/17/stderr1279
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1251 ../src/curl -q --output log/4/curl1251.out  --include --trace-ascii log/4/trace1251 --trace-time http://user:secret@127.0.0.1:35735/1251 --max-time 5 > log/4/stdout1251 2> log/4/stderr1251
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1255 ../src/curl -q --output log/24/curl1255.out  --include --trace-ascii log/24/trace1255 --trace-time http://127.0.0.1:38895/1255 --noproxy 127.0.0.1 > log/24/stdout1255 2> log/24/stderr1255
s target URL directly]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1252 ../src/curl -q --output log/17/curl1252.out  --include --trace-ascii log/17/trace1252 --trace-time http://127.0.0.1:35993/1252 --proxy http://127.0.0.1:35993 --noproxy 127.0.0.1 > log/17/stdout1252 2> log/17/stderr1252

 1252: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1252
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1252 ../src/curl -q --output log/17/curl1252.out  --include --trace-ascii log/17/trace1252 --trace-time http://127.0.0.1:35993/1252 --proxy http://127.0.0.1:35993 --noproxy 127.0.0.1 > log/17/stdout1252 2> log/17/stderr1252
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.445409 ====> Client connect
 19:28:18.445452 accept_connection 3 returned 4
 19:28:18.445477 Read 93 bytes
 19:28:18.445487 Process 93 bytes request
 19:28:18.445500 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.445508 Are-we-friendly question received
 19:28:18.445535 Wrote request (93 bytes) input to log/17/server.input
 19:28:18.445551 Identifying ourselves as friends
 19:28:18.445626 Response sent (56 bytes) and written to log/17/server.response
 19:28:18.445636 special request received, no persistency
 19:28:18.445644 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 35158 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1252
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1252
 ==148294== 
 ==148294== Process terminating with default action of signal 4 (SIGILL)
 ==148294==  Illegal opcode at address 0x492B75F
 ==148294==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148294==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148294==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148294==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148294==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148294==    by 0x49908EB: curl_version_info (version.c:600)
 ==148294==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148294==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1252
test 1279 [Verify libcurl.def against CURL_EXTERN declarations]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1135.pl --heading=EXPORTS --sort /startdir/src/curl/tests/.. > log/17/stdout1279 2> log/17/stderr1279
 valgrind SKIPPED
s------e--- OK (1174 out of 1890, remaining: 01:27, took 0.058s, duration: 02:23)
setenv http_proxy = http://dummy:45375/
setenv NO_PROXY = 127.0.0.1
test 1251 [Non-proxied host plus http_proxy env var and NO_PROXY env var]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1251 ../src/curl -q --output log/4/curl1251.out  --include --trace-ascii log/4/trace1251 --trace-time http://user:secret@127.0.0.1:35735/1251 --max-time 5 > log/4/stdout1251 2> log/4/stderr1251

 1251: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1251
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1251 ../src/curl -q --output log/4/curl1251.out  --include --trace-ascii log/4/trace1251 --trace-time http://user:secret@127.0.0.1:35735/1251 --max-time 5 > log/4/stdout1251 2> log/4/stderr1251
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.242194 ====> Client connect
 19:28:18.242229 accept_connection 3 returned 4
 19:28:18.242249 Read 93 bytes
 19:28:18.242258 Process 93 bytes request
 19:28:18.242271 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.242280 Are-we-friendly question received
 19:28:18.242307 Wrote request (93 bytes) input to log/4/server.input
 19:28:18.242322 Identifying ourselves as friends
 19:28:18.242380 Response sent (56 bytes) and written to log/4/server.response
 19:28:18.242390 special request received, no persistency
 19:28:18.242401 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 52838 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1251
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1251
 ==148146== 
 ==148146== Process terminating with default action of signal 4 (SIGILL)
 ==148146==  Illegal opcode at address 0x492B75F
 ==148146==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148146==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148146==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148146==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148146==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148146==    by 0x49908EB: curl_version_info (version.c:600)
 ==148146==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148146==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148146==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148146==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1251
setenv http_proxy = http://127.0.0.1:38895
setenv NO_PROXY = example.com
test 1255 [http_proxy, override NO_PROXY by --noproxy and access URL directly]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1255 ../src/curl -q --output log/24/curl1255.out  --include --trace-ascii log/24/trace1255 --trace-time http://127.0.0.1:38895/1255 --noproxy 127.0.0.1 > log/24/stdout1255 2> log/24/stderr1255

 1255: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1255
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1255 ../src/curl -q --output log/24/curl1255.out  --include --trace-ascii log/24/trace1255 --trace-time http://127.0.0.1:38895/1255 --noproxy 127.0.0.1 > log/24/stdout1255 2> log/24/stderr1255
=== End of file commands.log
=== Start of file http_server.log
 19:28:17.704763 ====> ClientCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1253 ../src/curl -q --output log/15/curl1253.out  --include --trace-ascii log/15/trace1253 --trace-time http://somewhere.example.com/1253 --proxy http://127.0.0.1:40321 --noproxy 127.0.0.1 > log/15/stdout1253 2> log/15/stderr1253
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1264 ../src/curl -q --output log/22/curl1264.out  --include --trace-ascii log/22/trace1264 --trace-time -g "http://127.0.0.1 www.example.com/we/want/1264" > log/22/stdout1264 2> log/22/stderr1264
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1260 ../src/curl -q --output log/3/curl1260.out  --include --trace-ascii log/3/trace1260 --trace-time -g "http://[127.0.0.1]:47:80/we/want/1260" "http://127.0.0.1:47:80/we/want/1260" "http://user@example.com:80@localhost" > log/3/stdout1260 2> log/3/stderr1260
 connect
 19:28:17.704798 accept_connection 3 returned 4
 19:28:17.704820 Read 93 bytes
 19:28:17.704829 Process 93 bytes request
 19:28:17.704843 Got request: GET /verifiedserver HTTP/1.1
 19:28:17.704852 Are-we-friendly question received
 19:28:17.704874 Wrote request (93 bytes) input to log/24/server.input
 19:28:17.704889 Identifying ourselves as friends
 19:28:17.704948 Response sent (56 bytes) and written to log/24/server.response
 19:28:17.704956 special request received, no persistency
 19:28:17.704964 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 50274 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1255
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1255
 ==148472== 
 ==148472== Process terminating with default action of signal 4 (SIGILL)
 ==148472==  Illegal opcode at address 0x492B75F
 ==148472==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148472==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148472==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148472==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148472==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148472==    by 0x49908EB: curl_version_info (version.c:600)
 ==148472==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148472==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148472==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148472==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1255
setenv NO_PROXY = example.com
test 1253 [--proxy, override NO_PROXY by --noproxy and access URL through proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1253 ../src/curl -q --output log/15/curl1253.out  --include --trace-ascii log/15/trace1253 --trace-time http://somewhere.example.com/1253 --proxy http://127.0.0.1:40321 --noproxy 127.0.0.1 > log/15/stdout1253 2> log/15/stderr1253

 1253: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1253
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1253 ../src/curl -q --output log/15/curl1253.out  --include --trace-ascii log/15/trace1253 --trace-time http://somewhere.example.com/1253 --proxy http://127.0.0.1:40321 --noproxy 127.0.0.1 > log/15/stdout1253 2> log/15/stderr1253
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.468780 ====> Client connect
 19:28:18.468820 accept_connection 3 returned 4
 19:28:18.473140 Read 93 bytes
 19:28:18.473166 Process 93 bytes request
 19:28:18.473183 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.473192 Are-we-friendly question received
 19:28:18.473229 Wrote request (93 bytes) input to log/15/server.input
 19:28:18.473247 Identifying ourselves as friends
 19:28:18.473310 Response sent (56 bytes) and written to log/15/server.response
 19:28:18.473320 special request received, no persistency
 19:28:18.473329 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 44364 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1253
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1253
 ==148315== 
 ==148315== Process terminating with default action of signal 4 (SIGILL)
 ==148315==  Illegal opcode at address 0x492B75F
 ==148315==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148315==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148315==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148315==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148315==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148315==    by 0x49908EB: curl_version_info (version.c:600)
 ==148315==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148315==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148315==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148315==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1253
test 1264 [HTTP URL with space in hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1264 ../src/curl -q --output log/22/curl1264.out  --include --trace-ascii log/22/trace1264 --trace-time -g "http://127.0.0.1 www.example.com/we/want/1264" > log/22/stdout1264 2> log/22/stderr1264

curl returned 132, when expecting 3
 1264: exit FAILED
== Contents of files in the log/22/ directory after test 1264
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1264 ../src/curl -q --output log/22/curl1264.out  --include --trace-ascii log/22/trace1264 --trace-time -g "http://127.0.0.1 www.example.com/we/want/1264" > log/22/stdout1264 2> log/22/stderr1264
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1264
=== End of file server.cmd
=== Start of file valgrind1264
 ==148984== 
 ==148984== Process terminating with default action of signal 4 (SIGILL)
 ==148984==  Illegal opcode at address 0x492B75F
 ==148984==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148984==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148984==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148984==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148984==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148984==    by 0x49908EB: curl_version_info (version.c:600)
 ==148984==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148984==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148984==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148984==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1264
test 1260 [HTTP URL with rubbish after port number]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1260 ../src/curl -q --output log/3/curl1260.out  --include --trace-ascii log/3/trace1260 --trace-time -g "http://[127.0.0.1]:47:80/we/want/1260" "http://127.0.0.1:47:80/we/want/1260" "http://user@example.com:80@localhost" > log/3/stdout1260 2> log/3/stderr1260

curl returned 132, when expecting 3
 1260: exit FAILED
== Contents of files in the log/3/ directory after test 1260
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1257 ../src/curl -q --output log/18/curl1257.out  --include --trace-ascii log/18/trace1257 --trace-time http://somewhere.example.com/1257 --noproxy "" > log/18/stdout1257 2> log/18/stderr1257
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1254 ../src/curl -q --output log/2/curl1254.out  --include --trace-ascii log/2/trace1254 --trace-time http://somewhere.example.com/1254 --proxy http://127.0.0.1:34531 --noproxy "" > log/2/stdout1254 2> log/2/stderr1254
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1258 ../src/curl -q --output log/11/curl1258.out  --include --trace-ascii log/11/trace1258 --trace-time http://127.0.0.1:40989/we/want/1258 http://127.0.0.1:40989/we/want?hoge=fuga -b non-existing -H "Host: localhost" > log/11/stdout1258 2> log/11/stderr1258
-log-file=log/3/valgrind1260 ../src/curl -q --output log/3/curl1260.out  --include --trace-ascii log/3/trace1260 --trace-time -g "http://[127.0.0.1]:47:80/we/want/1260" "http://127.0.0.1:47:80/we/want/1260" "http://user@example.com:80@localhost" > log/3/stdout1260 2> log/3/stderr1260
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1260
=== End of file server.cmd
=== Start of file valgrind1260
 ==148728== 
 ==148728== Process terminating with default action of signal 4 (SIGILL)
 ==148728==  Illegal opcode at address 0x492B75F
 ==148728==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148728==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148728==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148728==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148728==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148728==    by 0x49908EB: curl_version_info (version.c:600)
 ==148728==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148728==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148728==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148728==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1260
setenv http_proxy = http://127.0.0.1:43739
setenv NO_PROXY = example.com
test 1257 [http_proxy, override NO_PROXY by --noproxy ""]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1257 ../src/curl -q --output log/18/curl1257.out  --include --trace-ascii log/18/trace1257 --trace-time http://somewhere.example.com/1257 --noproxy "" > log/18/stdout1257 2> log/18/stderr1257

 1257: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1257
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1257 ../src/curl -q --output log/18/curl1257.out  --include --trace-ascii log/18/trace1257 --trace-time http://somewhere.example.com/1257 --noproxy "" > log/18/stdout1257 2> log/18/stderr1257
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.972040 ====> Client connect
 19:28:18.972084 accept_connection 3 returned 4
 19:28:18.972275 Read 93 bytes
 19:28:18.972292 Process 93 bytes request
 19:28:18.972307 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.972316 Are-we-friendly question received
 19:28:18.972352 Wrote request (93 bytes) input to log/18/server.input
 19:28:18.972371 Identifying ourselves as friends
 19:28:18.972446 Response sent (56 bytes) and written to log/18/server.response
 19:28:18.972458 special request received, no persistency
 19:28:18.972468 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 37100 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1257
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1257
 ==148609== 
 ==148609== Process terminating with default action of signal 4 (SIGILL)
 ==148609==  Illegal opcode at address 0x492B75F
 ==148609==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148609==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148609==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148609==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148609==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148609==    by 0x49908EB: curl_version_info (version.c:600)
 ==148609==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148609==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148609==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148609==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1257
setenv NO_PROXY = example.com
test 1254 [override NO_PROXY by --noproxy and access target URL through proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1254 ../src/curl -q --output log/2/curl1254.out  --include --trace-ascii log/2/trace1254 --trace-time http://somewhere.example.com/1254 --proxy http://127.0.0.1:34531 --noproxy "" > log/2/stdout1254 2> log/2/stderr1254

 1254: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1254
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1254 ../src/curl -q --output log/2/curl1254.out  --include --trace-ascii log/2/trace1254 --trace-time http://somewhere.example.com/1254 --proxy http://127.0.0.1:34531 --noproxy "" > log/2/stdout1254 2> log/2/stderr1254
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.535391 ====> Client connect
 19:28:18.535431 accept_connection 3 returned 4
 19:28:18.539183 Read 93 bytes
 19:28:18.539204 Process 93 bytes request
 19:28:18.539218 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.539227 Are-we-friendly question received
 19:28:18.539268 Wrote request (93 bytes) input to log/2/server.input
 19:28:18.539285 Identifying ourselves as friends
 19:28:18.539347 Response sent (56 bytes) and written to log/2/server.response
 19:28:18.539357 special request received, no persistency
 19:28:18.539366 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 34156 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1254
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1254
 ==148334== 
 ==148334== Process terminating with default action of signal 4 (SIGILL)
 ==148334==  Illegal opcode at address 0x492B75F
 ==148334==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148334==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148334==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148334==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148334==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148334==    by 0x49908EB: curl_version_info (version.c:600)
 ==148334==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148334==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148334==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1254
test 1258 [HTTP, use cookies with localhost]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1258 ../src/curl -q --output log/11/curl1258.out  --include --tracCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1263 ../src/curl -q --output log/23/curl1263.out  --include --trace-ascii log/23/trace1263 --trace-time -g "http://[127.0.0.1]test:47/we/want/1263" "http://[127.0.0.1][127.0.0.1]:47/we/want/1263" "http://user@[::1]@localhost" > log/23/stdout1263 2> log/23/stderr1263
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1261 ../src/curl -q --include --trace-ascii log/12/trace1261 --trace-time http://127.0.0.1:40921/we/want/our/1261 -w '%{redirect_url}\n' --location --max-redirs 0 > log/12/stdout1261 2> log/12/stderr1261
e-ascii log/11/trace1258 --trace-time http://127.0.0.1:40989/we/want/1258 http://127.0.0.1:40989/we/want?hoge=fuga -b non-existing -H "Host: localhost" > log/11/stdout1258 2> log/11/stderr1258

 1258: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1258
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1258 ../src/curl -q --output log/11/curl1258.out  --include --trace-ascii log/11/trace1258 --trace-time http://127.0.0.1:40989/we/want/1258 http://127.0.0.1:40989/we/want?hoge=fuga -b non-existing -H "Host: localhost" > log/11/stdout1258 2> log/11/stderr1258
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.001426 ====> Client connect
 19:28:18.001468 accept_connection 3 returned 4
 19:28:18.001493 Read 93 bytes
 19:28:18.001503 Process 93 bytes request
 19:28:18.001515 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.001524 Are-we-friendly question received
 19:28:18.001552 Wrote request (93 bytes) input to log/11/server.input
 19:28:18.001567 Identifying ourselves as friends
 19:28:18.001649 Response sent (56 bytes) and written to log/11/server.response
 19:28:18.001658 special request received, no persistency
 19:28:18.001667 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 42188 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1258
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1258
 ==148624== 
 ==148624== Process terminating with default action of signal 4 (SIGILL)
 ==148624==  Illegal opcode at address 0x492B75F
 ==148624==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148624==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148624==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148624==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148624==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148624==    by 0x49908EB: curl_version_info (version.c:600)
 ==148624==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148624==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148624==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148624==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1258
test 1263 [HTTP URL with rubbish after IPv6 bracket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1263 ../src/curl -q --output log/23/curl1263.out  --include --trace-ascii log/23/trace1263 --trace-time -g "http://[127.0.0.1]test:47/we/want/1263" "http://[127.0.0.1][127.0.0.1]:47/we/want/1263" "http://user@[::1]@localhost" > log/23/stdout1263 2> log/23/stderr1263

curl returned 132, when expecting 3
 1263: exit FAILED
== Contents of files in the log/23/ directory after test 1263
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1263 ../src/curl -q --output log/23/curl1263.out  --include --trace-ascii log/23/trace1263 --trace-time -g "http://[127.0.0.1]test:47/we/want/1263" "http://[127.0.0.1][127.0.0.1]:47/we/want/1263" "http://user@[::1]@localhost" > log/23/stdout1263 2> log/23/stderr1263
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1263
=== End of file server.cmd
=== Start of file valgrind1263
 ==148840== 
 ==148840== Process terminating with default action of signal 4 (SIGILL)
 ==148840==  Illegal opcode at address 0x492B75F
 ==148840==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148840==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148840==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148840==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148840==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148840==    by 0x49908EB: curl_version_info (version.c:600)
 ==148840==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148840==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148840==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148840==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1263
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1259 ../src/curl -q --output log/10/curl1259.out  --include --trace-ascii log/10/trace1259 --trace-time "http://user:pass;word@127.0.0.1:40913/we/want/1259" > log/10/stdout1259 2> log/10/stderr1259
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1262 ../src/curl -q --output log/20/curl1262.out  --include --trace-ascii log/20/trace1262 --trace-time ftp://127.0.0.1:41549/blalbla/1262 -z "-1 jan 2001" > log/20/stdout1262 2> log/20/stderr1262
test 1261 ['redirect_url' with --location and --max-redirs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1261 ../src/curl -q --include --trace-ascii log/12/trace1261 --trace-time http://127.0.0.1:40921/we/want/our/1261 -w '%{redirect_url}\n' --location --max-redirs 0 > log/12/stdout1261 2> log/12/stderr1261

 1261: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:21.253840196 +0000
+++ log/12/check-generated	2026-10-15 19:28:21.251671282 +0000
@@ -1,6 +0,0 @@
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: data/10290002.txt?coolsite=yes[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-http://127.0.0.1:40921/we/want/our/data/10290002.txt?coolsite=yes[LF]
== Contents of files in the log/12/ directory after test 1261
=== Start of file check-expected
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: data/10290002.txt?coolsite=yes[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 http://127.0.0.1:40921/we/want/our/data/10290002.txt?coolsite=yes[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1261 ../src/curl -q --include --trace-ascii log/12/trace1261 --trace-time http://127.0.0.1:40921/we/want/our/1261 -w '%{redirect_url}\n' --location --max-redirs 0 > log/12/stdout1261 2> log/12/stderr1261
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.208713 ====> Client connect
 19:28:18.208767 accept_connection 3 returned 4
 19:28:18.208793 Read 93 bytes
 19:28:18.208803 Process 93 bytes request
 19:28:18.208818 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.208827 Are-we-friendly question received
 19:28:18.208861 Wrote request (93 bytes) input to log/12/server.input
 19:28:18.208880 Identifying ourselves as friends
 19:28:18.208959 Response sent (56 bytes) and written to log/12/server.response
 19:28:18.208970 special request received, no persistency
 19:28:18.208978 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38442 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1261
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1261
 ==148807== 
 ==148807== Process terminating with default action of signal 4 (SIGILL)
 ==148807==  Illegal opcode at address 0x492B75F
 ==148807==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148807==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148807==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148807==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148807==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148807==    by 0x49908EB: curl_version_info (version.c:600)
 ==148807==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148807==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148807==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148807==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1261
test 1259 [HTTP URL with semicolon in password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1259 ../src/curl -q --output log/10/curl1259.out  --include --trace-ascii log/10/trace1259 --trace-time "http://user:pass;word@127.0.0.1:40913/we/want/1259" > log/10/stdout1259 2> log/10/stderr1259

 1259: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1259
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1259 ../src/curl -q --output log/10/curl1259.out  --include --trace-ascii log/10/trace1259 --trace-time "http://user:pass;word@127.0.0.1:40913/we/want/1259" > log/10/stdout1259 2> log/10/stderr1259
=== End of file commands.log
=== Start of file http_server.log
 19:28:18.074120 ====> Client connect
 19:28:18.074162 accept_connection 3 returned 4
 19:28:18.078676 Read 93 bytes
 19:28:18.078705 Process 93 bytes request
 19:28:18.078719 Got request: GET /verifiedserver HTTP/1.1
 19:28:18.078728 Are-we-friendly question received
 19:28:18.092691 Wrote request (93 bytes) input to log/10/server.input
 19:28:18.092734 Identifying ourselves as friends
 19:28:18.117418 Response sent (56 bytes) and written to log/10/server.response
 19:28:18.117440 special request received, no persistency
 19:28:18.117449 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 52812 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1259
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1259
 ==148717== 
 ==148717== Process terminating with default action of signal 4 (SIGILL)
 ==148717==  Illegal opcode at address 0x492B75F
 ==148717==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148717==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148717==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148717==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148717==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148717==    by 0x49908EB: curl_version_info (version.c:600)
 ==148717==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148717==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148717==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148717==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1259
test 1262 [FTP request and denied to download an older file with -z]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1262 ../src/curl -q --output log/20/curl1262.out  --include --trace-ascii log/20/trace1262 --trace-time ftp://127.0.0.1:41549/blalbla/1262 -z "-1 jan 2001" > log/20/stdout1262 2> log/20/stderr1262

 1262: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1262
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1262 ../src/curl -q --output log/20/curl1262.out  --include --trace-ascii log/20/trace1262 --trace-time ftp://127.0.0.1:41549/blalbla/1262 -z "-1 jan 2001" > log/20/stdout1262 2> log/20/stderr1262
=== ECMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1266 ../src/curl -q --output log/14/curl1266.out  --include --trace-ascii log/14/trace1266 --trace-time http://127.0.0.1:45467/1266 --http0.9 > log/14/stdout1266 2> log/14/stderr1266
nd of file commands.log
=== Start of file ftp_server.log
 19:28:18.717488 ====> Client connect
 19:28:18.717709 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:18.718115 < "USER anonymous"
 19:28:18.718162 > "331 We are happy you popped in![CR][LF]"
 19:28:18.718355 < "PASS ftp@example.com"
 19:28:18.718387 > "230 Welcome you silly person[CR][LF]"
 19:28:18.718558 < "PWD"
 19:28:18.718595 > "257 "/" is current directory[CR][LF]"
 19:28:18.718786 < "EPSV"
 19:28:18.718814 ====> Passive DATA channel requested by client
 19:28:18.718828 DATA sockfilt for passive data channel starting...
 19:28:18.725421 DATA sockfilt for passive data channel started (pid 148913)
 19:28:18.725570 DATA sockfilt for passive data channel listens on port 39527
 19:28:18.725615 > "229 Entering Passive Mode (|||39527|)[CR][LF]"
 19:28:18.725634 Client has been notified that upcoming DATA connection is awaited on port 39527
 19:28:18.725930 Client connects to port 39527
 19:28:18.725963 ====> Client established passive DATA connection on port 39527
 19:28:18.726055 < "TYPE I"
 19:28:18.726088 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:18.726250 < "SIZE verifiedserver"
 19:28:18.726287 > "213 17[CR][LF]"
 19:28:18.726434 < "RETR verifiedserver"
 19:28:18.726465 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:18.726554 =====> Closing passive DATA connection...
 19:28:18.726570 Server disconnects passive DATA connection
 19:28:18.726772 Server disconnected passive DATA connection
 19:28:18.726795 DATA sockfilt for passive data channel quits (pid 148913)
 19:28:18.727069 DATA sockfilt for passive data channel quit (pid 148913)
 19:28:18.727094 =====> Closed passive DATA connection
 19:28:18.727152 > "226 File transfer complete[CR][LF]"
 19:28:18.772324 < "QUIT"
 19:28:18.772383 > "221 bye bye baby[CR][LF]"
 19:28:18.773782 MAIN sockfilt said DISC
 19:28:18.773825 ====> Client disconnected
 19:28:18.773908 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:18.320675 ====> Client connect
 19:28:18.321041 Received DATA (on stdin)
 19:28:18.321058 > 146 bytes data, server => client
 19:28:18.321070 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:18.321080 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:18.321089 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:18.321177 < 16 bytes data, client => server
 19:28:18.321192 'USER anonymous\r\n'
 19:28:18.321477 Received DATA (on stdin)
 19:28:18.321489 > 33 bytes data, server => client
 19:28:18.321499 '331 We are happy you popped in!\r\n'
 19:28:18.321555 < 22 bytes data, client => server
 19:28:18.321567 'PASS ftp@example.com\r\n'
 19:28:18.321697 Received DATA (on stdin)
 19:28:18.321708 > 30 bytes data, server => client
 19:28:18.321717 '230 Welcome you silly person\r\n'
 19:28:18.321770 < 5 bytes data, client => server
 19:28:18.321782 'PWD\r\n'
 19:28:18.321904 Received DATA (on stdin)
 19:28:18.321916 > 30 bytes data, server => client
 19:28:18.321925 '257 "/" is current directory\r\n'
 19:28:18.322001 < 6 bytes data, client => server
 19:28:18.322013 'EPSV\r\n'
 19:28:18.328949 Received DATA (on stdin)
 19:28:18.328965 > 39 bytes data, server => client
 19:28:18.328976 '229 Entering Passive Mode (|||39527|)\r\n'
 19:28:18.329155 < 8 bytes data, client => server
 19:28:18.329169 'TYPE I\r\n'
 19:28:18.329395 Received DATA (on stdin)
 19:28:18.329406 > 33 bytes data, server => client
 19:28:18.329416 '200 I modify TYPE as you wanted\r\n'
 19:28:18.329472 < 21 bytes data, client => server
 19:28:18.329483 'SIZE verifiedserver\r\n'
 19:28:18.329594 Received DATA (on stdin)
 19:28:18.329604 > 8 bytes data, server => client
 19:28:18.329613 '213 17\r\n'
 19:28:18.329664 < 21 bytes data, client => server
 19:28:18.329673 'RETR verifiedserver\r\n'
 19:28:18.329879 Received DATA (on stdin)
 19:28:18.329889 > 29 bytes data, server => client
 19:28:18.329899 '150 Binary junk (17 bytes).\r\n'
 19:28:18.330407 Received DATA (on stdin)
 19:28:18.330419 > 28 bytes data, server => client
 19:28:18.330458 '226 File transfer complete\r\n'
 19:28:18.375429 < 6 bytes data, client => server
 19:28:18.375456 'QUIT\r\n'
 19:28:18.375697 Received DATA (on stdin)
 19:28:18.375710 > 18 bytes data, server => client
 19:28:18.375720 '221 bye bye baby\r\n'
 19:28:18.376774 ====> Client disconnect
 19:28:18.377219 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:18.324019 Running IPv4 version
 19:28:18.324181 Listening on port 39527
 19:28:18.324223 Wrote pid 148913 to log/20/server/ftp_sockdata.pid
 19:28:18.328653 Received PING (on stdin)
 19:28:18.328774 Received PORT (on stdin)
 19:28:18.329191 ====> Client connect
 19:28:18.329953 Received DATA (on stdin)
 19:28:18.329965 > 17 bytes data, server => client
 19:28:18.329975 'WE ROOLZ: 84833\r\n'
 19:28:18.330036 Received DISC (on stdin)
 19:28:18.330105 ====> Client forcibly disconnected
 19:28:18.330138 Received QUIT (on stdin)
 19:28:18.330147 quits
 19:28:18.330219 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1262
=== End of file server.cmd
=== Start of file valgrind1262
 ==148985== 
 ==148985== Process terminating with default action of signal 4 (SIGILL)
 ==148985==  Illegal opcode at address 0x492B75F
 ==148985==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==148985==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==148985==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==148985==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==148985==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==148985==    by 0x49908EB: curl_version_info (version.c:600)
 ==148985==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==148985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==148985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==148985==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1262
test 1266 [HTTP GET with a single-byte HTTP/0.9 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1266 ../src/curl -q --output log/14/curl1266.out  --include --trace-ascii log/14/trace1266 --trace-time http://127.0.0.1:45467/1266 --http0.9 > log/14/stdout1266 2> log/14/stderr1266

 1266: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1266
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1266 ../src/curl -q --output log/14/curl1266.out  --include --trace-ascii log/14/trace1266 --trace-time http://127.0.0.1:45467/1266 --http0.9 > log/14/stdout1266 2> log/14/stderr1266
=== End of file commands.log
=== Start of file http_server.log
 19:28:19.065347 ====> Client connect
 19:28:19.065396 accept_connection 3 returned 4
 19:28:19.065424 Read 93 bytes
 19:28:19.065434 Process 93 bytes request
 19:28:19.065449 Got request: GET /verifiedserver HTTP/1.1
 19:28:19.065457 Are-we-friendly question received
 19:28:19.065486 Wrote request (93 bytes) input to log/14/server.input
 19:28:19.065503 Identifying ourselves as friends
 19:28:19.065592 Response sent (56 bytes) and written to log/14/server.response
 19:28:19.065601 special request received, no persistency
 19:28:19.065609 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 45666 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * CCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1269 ../src/curl -q --output log/16/curl1269.out  --include --trace-ascii log/16/trace1269 --trace-time --retry 3 --retry-delay 9223372036854776 http://127.0.0.1:47/1269 > log/16/stdout1269 2> log/16/stderr1269
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1267 ../src/curl -q --output log/8/curl1267.out  --include --trace-ascii log/8/trace1267 --trace-time http://127.0.0.1:44467/1267 --http0.9 > log/8/stdout1267 2> log/8/stderr1267
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1274 ../src/curl -q --output log/21/curl1274.out  --include --trace-ascii log/21/trace1274 --trace-time http://127.0.0.1:39881/1274 -D log/21/out1274 > log/21/stdout1274 2> log/21/stderr1274
onnection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 swsclose
 Testnum 1266
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1266
 ==149136== 
 ==149136== Process terminating with default action of signal 4 (SIGILL)
 ==149136==  Illegal opcode at address 0x492B75F
 ==149136==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149136==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149136==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149136==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149136==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149136==    by 0x49908EB: curl_version_info (version.c:600)
 ==149136==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149136==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149136==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149136==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1266
test 1269 [too large --retry-delay value]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1269 ../src/curl -q --output log/16/curl1269.out  --include --trace-ascii log/16/trace1269 --trace-time --retry 3 --retry-delay 9223372036854776 http://127.0.0.1:47/1269 > log/16/stdout1269 2> log/16/stderr1269

curl returned 132, when expecting 2
 1269: exit FAILED
== Contents of files in the log/16/ directory after test 1269
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1269 ../src/curl -q --output log/16/curl1269.out  --include --trace-ascii log/16/trace1269 --trace-time --retry 3 --retry-delay 9223372036854776 http://127.0.0.1:47/1269 > log/16/stdout1269 2> log/16/stderr1269
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1269
=== End of file server.cmd
=== Start of file valgrind1269
 ==149175== 
 ==149175== Process terminating with default action of signal 4 (SIGILL)
 ==149175==  Illegal opcode at address 0x492B75F
 ==149175==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149175==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149175==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149175==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149175==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149175==    by 0x49908EB: curl_version_info (version.c:600)
 ==149175==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149175==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149175==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149175==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1269
test 1267 [HTTP GET with an invalid HTTP/1 response line start]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1267 ../src/curl -q --output log/8/curl1267.out  --include --trace-ascii log/8/trace1267 --trace-time http://127.0.0.1:44467/1267 --http0.9 > log/8/stdout1267 2> log/8/stderr1267

 1267: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1267
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1267 ../src/curl -q --output log/8/curl1267.out  --include --trace-ascii log/8/trace1267 --trace-time http://127.0.0.1:44467/1267 --http0.9 > log/8/stdout1267 2> log/8/stderr1267
=== End of file commands.log
=== Start of file http_server.log
 19:28:19.225333 ====> Client connect
 19:28:19.225414 accept_connection 3 returned 4
 19:28:19.225438 Read 93 bytes
 19:28:19.225447 Process 93 bytes request
 19:28:19.225460 Got request: GET /verifiedserver HTTP/1.1
 19:28:19.225468 Are-we-friendly question received
 19:28:19.225528 Wrote request (93 bytes) input to log/8/server.input
 19:28:19.225544 Identifying ourselves as friends
 19:28:19.225614 Response sent (56 bytes) and written to log/8/server.response
 19:28:19.225623 special request received, no persistency
 19:28:19.225631 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 36436 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 swsclose
 Testnum 1267
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1267
 ==149232== 
 ==149232== Process terminating with default action of signal 4 (SIGILL)
 ==149232==  Illegal opcode at address 0x492B75F
 ==149232==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149232==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149232==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149232==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149232==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149232==    by 0x49908EB: curl_version_info (version.c:600)
 ==149232==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149232==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149232==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149232==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1267
test 1274 [HTTP header line folding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1274 ../src/curl -q --output log/21/curl1274.out  --include --trace-ascii log/21/trace1274 --trace-time http://127.0.0.1:39881/1274 -D log/21/out1274 > log/21/stdout1274 2> log/21/stderr1274

 1274: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1274
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1274 ../src/curl -q --output log/21/curl1274.out  --include --trace-ascii log/21/trace1274 --trace-time http://127.0.0.1:39881/1274 -D log/21/out1274 > log/21/stdout1274 2> log/21/stderr1274
=== End of file commands.log
=== Start of file http_server.log
 19:28:19.720458 ====> Client connect
 19:28:19.720490 accept_connection 3 returned 4
 19:28:19.720509 Read 93 bytes
 19:28:19.720518 Process 93 bytes request
 19:28:19.720530 Got request: GET /verifiedserver HTTP/1.1
 19:28:19.720538 Are-we-friendly question received
 19:28:19.720560 Wrote request (93 bytes) input to log/21/server.input
 19:28:19.720575 Identifying ourselves as friends
 19:28:19.720630 Response sent (56 bytes) and written to log/21/server.response
 19:28:19.720638 special request received, no persistency
 19:28:19.720645 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 49164 
 * using HTTP/1.x
 > CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1268 ../src/curl -q --output log/6/curl1268.out  --include --trace-ascii log/6/trace1268 --trace-time --stderr log/6/moo1268 --unix-socket -q hej://moo > log/6/stdout1268 2> log/6/stderr1268
GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1274
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1274
 ==149556== 
 ==149556== Process terminating with default action of signal 4 (SIGILL)
 ==149556==  Illegal opcode at address 0x492B75F
 ==149556==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149556==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149556==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149556==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149556==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149556==    by 0x49908EB: curl_version_info (version.c:600)
 ==149556==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149556==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149556==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149556==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1274
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1271 ../src/curl -q --output log/7/curl1271.out  --include --trace-ascii log/7/trace1271 --trace-time http://127.0.0.1:40859/we/want/our/1271 -w @log/7/blank1271 > log/7/stdout1271 2> log/7/stderr1271
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1270 ../src/curl -q --include --trace-ascii log/1/trace1270 --trace-time http://127.0.0.1:38815/we/want/our/1270 -w '%{redirect_url}\n' -s > log/1/stdout1270 2> log/1/stderr1270
test 1268 [filename argument looks like a flag]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1268 ../src/curl -q --output log/6/curl1268.out  --include --trace-ascii log/6/trace1268 --trace-time --stderr log/6/moo1268 --unix-socket -q hej://moo > log/6/stdout1268 2> log/6/stderr1268

 1268: output (log/6/moo1268) FAILED:
--- log/6/check-expected	2026-10-15 19:28:22.336417671 +0000
+++ log/6/check-generated	2026-10-15 19:28:22.335055710 +0000
@@ -1,2 +0,0 @@
-Warning: The filename argument '-q' looks like a flag.[CR][LF]
-curl: (1) Protocol "hej" not supported[CR][LF]
== Contents of files in the log/6/ directory after test 1268
=== Start of file check-expected
 Warning: The filename argument '-q' looks like a flag.[CR][LF]
 curl: (1) Protocol "hej" not supported[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1268 ../src/curl -q --output log/6/curl1268.out  --include --trace-ascii log/6/trace1268 --trace-time --stderr log/6/moo1268 --unix-socket -q hej://moo > log/6/stdout1268 2> log/6/stderr1268
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1268
=== End of file server.cmd
=== Start of file valgrind1268
 ==149177== 
 ==149177== Process terminating with default action of signal 4 (SIGILL)
 ==149177==  Illegal opcode at address 0x492B75F
 ==149177==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149177==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149177==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149177==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149177==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149177==    by 0x49908EB: curl_version_info (version.c:600)
 ==149177==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149177==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149177==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149177==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1268
test 1271 [--write-out from file with empty file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1271 ../src/curl -q --output log/7/curl1271.out  --include --trace-ascii log/7/trace1271 --trace-time http://127.0.0.1:40859/we/want/our/1271 -w @log/7/blank1271 > log/7/stdout1271 2> log/7/stderr1271

 1271: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1271
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1271 ../src/curl -q --output log/7/curl1271.out  --include --trace-ascii log/7/trace1271 --trace-time http://127.0.0.1:40859/we/want/our/1271 -w @log/7/blank1271 > log/7/stdout1271 2> log/7/stderr1271
=== End of file commands.log
=== Start of file http_server.log
 19:28:19.577988 ====> Client connect
 19:28:19.578021 accept_connection 3 returned 4
 19:28:19.578041 Read 93 bytes
 19:28:19.578050 Process 93 bytes request
 19:28:19.578062 Got request: GET /verifiedserver HTTP/1.1
 19:28:19.578069 Are-we-friendly question received
 19:28:19.578133 Wrote request (93 bytes) input to log/7/server.input
 19:28:19.578151 Identifying ourselves as friends
 19:28:19.578218 Response sent (56 bytes) and written to log/7/server.response
 19:28:19.578228 special request received, no persistency
 19:28:19.578235 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 37988 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1271
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1271
 ==149455== 
 ==149455== Process terminating with default action of signal 4 (SIGILL)
 ==149455==  Illegal opcode at address 0x492B75F
 ==149455==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149455==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149455==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149455==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149455==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149455==    by 0x49908EB: curl_version_info (version.c:600)
 ==149455==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149455==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149455==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149455==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1271
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1281 ../src/curl -q --output log/4/curl1281.out  --include --trace-ascii log/4/trace1281 --trace-time http://127.0.0.1:alpha/beta/1281 > log/4/stdout1281 2> log/4/stderr1281
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1273 ../src/curl -q --output log/19/curl1273.out  --include --trace-ascii log/19/trace1273 --trace-time http://127.0.0.1:46497/1273 -C - -f > log/19/stdout1273 2> log/19/stderr1273
RUN: Process with pid 78987 signalled to die
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1265 ../src/curl -q --output log/9/curl1265.out  --include --trace-ascii log/9/trace1265 --trace-time http://[::1]:39797/1265 > log/9/stdout1265 2> log/9/stderr1265
test 1270 [Basic 'redirect_url']
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1270 ../src/curl -q --include --trace-ascii log/1/trace1270 --trace-time http://127.0.0.1:38815/we/want/our/1270 -w '%{redirect_url}\n' -s > log/1/stdout1270 2> log/1/stderr1270

 1270: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:28:22.627088934 +0000
+++ log/1/check-generated	2026-10-15 19:28:22.625069117 +0000
@@ -1,12 +0,0 @@
-HTTP/1.1 302 Captive Portal[CR][LF]
-Server: ohlala/2000[CR][LF]
-Date: Tue, 17 Dec 2019 13:08:30 GMT[CR][LF]
-Cache-Control: no-cache,no-store,must-revalidate,post-check=0,pre-check=0[CR][LF]
-Location: https://moo.moo.moo[CR][LF]
-Content-Type: text/html; charset=utf-8[CR][LF]
-X-Frame-Options: SAMEORIGIN[CR][LF]
-Strict-Transport-Security: max-age=604800[CR][LF]
-Content-Length: 0[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-https://moo.moo.moo/[LF]
== Contents of files in the log/1/ directory after test 1270
=== Start of file check-expected
 HTTP/1.1 302 Captive Portal[CR][LF]
 Server: ohlala/2000[CR][LF]
 Date: Tue, 17 Dec 2019 13:08:30 GMT[CR][LF]
 Cache-Control: no-cache,no-store,must-revalidate,post-check=0,pre-check=0[CR][LF]
 Location: https://moo.moo.moo[CR][LF]
 Content-Type: text/html; charset=utf-8[CR][LF]
 X-Frame-Options: SAMEORIGIN[CR][LF]
 Strict-Transport-Security: max-age=604800[CR][LF]
 Content-Length: 0[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 https://moo.moo.moo/[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1270 ../src/curl -q --include --trace-ascii log/1/trace1270 --trace-time http://127.0.0.1:38815/we/want/our/1270 -w '%{redirect_url}\n' -s > log/1/stdout1270 2> log/1/stderr1270
=== End of file commands.log
=== Start of file http_server.log
 19:28:20.378648 ====> Client connect
 19:28:20.378697 accept_connection 3 returned 4
 19:28:20.378724 Read 93 bytes
 19:28:20.378734 Process 93 bytes request
 19:28:20.378747 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.378756 Are-we-friendly question received
 19:28:20.378785 Wrote request (93 bytes) input to log/1/server.input
 19:28:20.378802 Identifying ourselves as friends
 19:28:20.385328 Response sent (56 bytes) and written to log/1/server.response
 19:28:20.385345 special request received, no persistency
 19:28:20.385353 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 47292 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1270
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1270
 ==149359== 
 ==149359== Process terminating with default action of signal 4 (SIGILL)
 ==149359==  Illegal opcode at address 0x492B75F
 ==149359==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149359==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149359==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149359==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149359==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149359==    by 0x49908EB: curl_version_info (version.c:600)
 ==149359==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149359==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149359==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149359==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1270
test 1281 [reject non-numerical port number in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1281 ../src/curl -q --output log/4/curl1281.out  --include --trace-ascii log/4/trace1281 --trace-time http://127.0.0.1:alpha/beta/1281 > log/4/stdout1281 2> log/4/stderr1281

curl returned 132, when expecting 3
 1281: exit FAILED
== Contents of files in the log/4/ directory after test 1281
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1281 ../src/curl -q --output log/4/curl1281.out  --include --trace-ascii log/4/trace1281 --trace-time http://127.0.0.1:alpha/beta/1281 > log/4/stdout1281 2> log/4/stderr1281
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1281
=== End of file server.cmd
=== Start of file valgrind1281
 ==149750== 
 ==149750== Process terminating with default action of signal 4 (SIGILL)
 ==149750==  Illegal opcode at address 0x492B75F
 ==149750==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149750==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149750==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149750==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149750==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149750==    by 0x49908EB: curl_version_info (version.c:600)
 ==149750==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149750==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149750==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149750==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1281
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/9/server/http_ipv6_server.pid" --logfile "log/9/http_ipv6_server.log" --logdir "log/9" --portfile log/9/server/http_ipv6_server.port --config log/9/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 149029 port 39797
* pid http-ipv6 => 149029 149029
setenv http_proxy = http://127.0.0.1:43733
setenv NO_PROXY = ::1
test 1265 [NO_PROXY with IPv6 numerical address]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1265 ../src/curl -q --output log/9/curl1265.out  --include --trace-ascii log/9/trace1265 --trace-time http://[::1]:39797/1265 > log/9/stdout1265 2> log/9/stderr1265

 1265: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1265
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1265 ../src/curl -q --output log/9/curl1265.out  --include --trace-ascii log/9/trace1265 --trace-time http://[::1]:39797/1265 > log/9/stdout1265 2> log/9/stderr1265
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:28:18.532645 Running HTTP IPv6 version on port 39797
 19:28:18.532767 Wrote pid 149029 to log/9/server/http_ipv6_server.pid
 19:28:18.532804 Wrote port 39797 to log/9/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 1265
=== End of file server.cmd
=== Start of file valgrind1265
 ==149397== 
 ==149397== Process terminating with default action of signal 4 (SIGILL)
 ==149397==  Illegal opcode at address 0x492B75F
 ==149397==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149397==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149397==    by 0x492BRUN: Process with pid 78987 gracefully died
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1286 ../src/curl -q --output log/15/curl1286.out  --include --trace-ascii log/15/trace1286 --trace-time -u auser:apasswd --location --digest http://127.0.0.1:40321/1286 > log/15/stdout1286 2> log/15/stderr1286
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1285 ../src/curl -q --output log/18/curl1285.out  --include --trace-ascii log/18/trace1285 --trace-time -H "Content-Length: 85" -u auser:apasswd --digest -T log/18/put1285 http://127.0.0.1:43739/1285 > log/18/stdout1285 2> log/18/stderr1285
67B: curl_msnprintf (mprintf.c:1277)
 ==149397==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149397==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149397==    by 0x49908EB: curl_version_info (version.c:600)
 ==149397==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149397==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149397==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149397==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1265
test 1273 [-f and resume transfer of an entirely-downloaded file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1273 ../src/curl -q --output log/19/curl1273.out  --include --trace-ascii log/19/trace1273 --trace-time http://127.0.0.1:46497/1273 -C - -f > log/19/stdout1273 2> log/19/stderr1273

 1273: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1273
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1273 ../src/curl -q --output log/19/curl1273.out  --include --trace-ascii log/19/trace1273 --trace-time http://127.0.0.1:46497/1273 -C - -f > log/19/stdout1273 2> log/19/stderr1273
=== End of file commands.log
=== Start of file curl1273.out
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file curl1273.out
=== Start of file http_server.log
 19:28:19.734607 ====> Client connect
 19:28:19.734640 accept_connection 3 returned 4
 19:28:19.735694 Read 93 bytes
 19:28:19.735713 Process 93 bytes request
 19:28:19.735726 Got request: GET /verifiedserver HTTP/1.1
 19:28:19.735735 Are-we-friendly question received
 19:28:19.735773 Wrote request (93 bytes) input to log/19/server.input
 19:28:19.735791 Identifying ourselves as friends
 19:28:19.735856 Response sent (56 bytes) and written to log/19/server.response
 19:28:19.735867 special request received, no persistency
 19:28:19.735875 ====> Client disconnect 0
 19:28:22.250352 signalled to die
 19:28:22.250485 ========> exit message: exit_signal_handler(): triggered
 19:28:22.250497 ========> IPv4 sws (port 46497 pid: 78987) exits with signal (15)
 19:28:22.250509 ========> sws quits
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:46497...
 * Established connection to 127.0.0.1 (127.0.0.1 port 46497) from 127.0.0.1 port 58004 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:46497
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:46497 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78987
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1273
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78987
=== End of file server.response
=== Start of file valgrind1273
 ==149555== 
 ==149555== Process terminating with default action of signal 4 (SIGILL)
 ==149555==  Illegal opcode at address 0x492B75F
 ==149555==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149555==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149555==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149555==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149555==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149555==    by 0x49908EB: curl_version_info (version.c:600)
 ==149555==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149555==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1273
test 1286 [HTTP GET --digest increasing nonce-count]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1286 ../src/curl -q --output log/15/curl1286.out  --include --trace-ascii log/15/trace1286 --trace-time -u auser:apasswd --location --digest http://127.0.0.1:40321/1286 > log/15/stdout1286 2> log/15/stderr1286

 1286: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1286
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1286 ../src/curl -q --output log/15/curl1286.out  --include --trace-ascii log/15/trace1286 --trace-time -u auser:apasswd --location --digest http://127.0.0.1:40321/1286 > log/15/stdout1286 2> log/15/stderr1286
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.538673 ====> Client connect
 19:28:21.538711 accept_connection 3 returned 4
 19:28:21.538815 Read 93 bytes
 19:28:21.538832 Process 93 bytes request
 19:28:21.538847 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.538857 Are-we-friendly question received
 19:28:21.538887 Wrote request (93 bytes) input to log/15/server.input
 19:28:21.538906 Identifying ourselves as friends
 19:28:21.538975 Response sent (56 bytes) and written to log/15/server.response
 19:28:21.538988 special request received, no persistency
 19:28:21.538997 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 44378 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1286
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1286
 ==150145== 
 ==150145== Process terminating with default action of signal 4 (SIGILL)
 ==150145==  Illegal opcode at address 0x492B75F
 ==150145==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150145==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150145==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150145==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150145==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150145==    by 0x49908EB: curl_version_info (version.c:600)
 ==150145==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150145==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150145==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150145==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1286
test 1285 [HTTP PUT --digest with user-specified Content-Length header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1285 ../src/curl -q --output log/18/curl1285.out  --include --trace-ascii log/18/trace1285 --trace-time -H "Content-Length: 85" -u auser:apasswd --digest -T log/18/put1285 http://127.0.0.1:43739/1285 > log/18/stdout1285 2> log/18/stderr1285

 1285: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1285
=== Start of file commands.log
 ../libtool --mode=execute CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1283 ../src/curl -q --include --trace-ascii log/22/trace1283 --trace-time http://127.0.0.1:35989/[a-a][1-1][b-b:1][2-2:1]/1283 -o "log/22/outfile1283_#1#2#3#4.dump" > log/22/stdout1283 2> log/22/stderr1283
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1277 ../src/curl -q --output log/5/curl1277.out  --include --trace-ascii log/5/trace1277 --trace-time http://127.0.0.1:37089/1277 --tr-encoding --compressed > log/5/stdout1277 2> log/5/stderr1277
/usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1285 ../src/curl -q --output log/18/curl1285.out  --include --trace-ascii log/18/trace1285 --trace-time -H "Content-Length: 85" -u auser:apasswd --digest -T log/18/put1285 http://127.0.0.1:43739/1285 > log/18/stdout1285 2> log/18/stderr1285
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.503748 ====> Client connect
 19:28:21.503799 accept_connection 3 returned 4
 19:28:21.503832 Read 93 bytes
 19:28:21.503841 Process 93 bytes request
 19:28:21.503854 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.503862 Are-we-friendly question received
 19:28:21.503887 Wrote request (93 bytes) input to log/18/server.input
 19:28:21.503903 Identifying ourselves as friends
 19:28:21.503962 Response sent (56 bytes) and written to log/18/server.response
 19:28:21.503971 special request received, no persistency
 19:28:21.503978 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 37106 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file put1285
 This is data we upload with PUT
 a second line
 line three
 four is the number of lines
=== End of file put1285
=== Start of file server.cmd
 Testnum 1285
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1285
 ==150100== 
 ==150100== Process terminating with default action of signal 4 (SIGILL)
 ==150100==  Illegal opcode at address 0x492B75F
 ==150100==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150100==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150100==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150100==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150100==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150100==    by 0x49908EB: curl_version_info (version.c:600)
 ==150100==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150100==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150100==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150100==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1285
test 1283 [globbing range with same start and stop]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1283 ../src/curl -q --include --trace-ascii log/22/trace1283 --trace-time http://127.0.0.1:35989/[a-a][1-1][b-b:1][2-2:1]/1283 -o "log/22/outfile1283_#1#2#3#4.dump" > log/22/stdout1283 2> log/22/stderr1283

 1283: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1283
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1283 ../src/curl -q --include --trace-ascii log/22/trace1283 --trace-time http://127.0.0.1:35989/[a-a][1-1][b-b:1][2-2:1]/1283 -o "log/22/outfile1283_#1#2#3#4.dump" > log/22/stdout1283 2> log/22/stderr1283
=== End of file commands.log
=== Start of file http_server.log
 19:28:20.435286 ====> Client connect
 19:28:20.435335 accept_connection 3 returned 4
 19:28:20.435365 Read 93 bytes
 19:28:20.435378 Process 93 bytes request
 19:28:20.435392 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.435402 Are-we-friendly question received
 19:28:20.435437 Wrote request (93 bytes) input to log/22/server.input
 19:28:20.435457 Identifying ourselves as friends
 19:28:20.438618 Response sent (56 bytes) and written to log/22/server.response
 19:28:20.438634 special request received, no persistency
 19:28:20.438644 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 43104 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1283
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1283
 ==149996== 
 ==149996== Process terminating with default action of signal 4 (SIGILL)
 ==149996==  Illegal opcode at address 0x492B75F
 ==149996==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149996==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149996==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149996==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149996==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149996==    by 0x49908EB: curl_version_info (version.c:600)
 ==149996==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149996==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149996==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149996==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1283
test 1277 [HTTP GET with both content and transfer encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1277 ../src/curl -q --output log/5/curl1277.out  --include --trace-ascii log/5/trace1277 --trace-time http://127.0.0.1:37089/1277 --tr-encoding --compressed > log/5/stdout1277 2> log/5/stderr1277

 1277: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1277
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1277 ../src/curl -q --output log/5/curl1277.out  --include --trace-ascii log/5/trace1277 --trace-time http://127.0.0.1:37089/1277 --tr-encoding --compressed > log/5/stdout1277 2> log/5/stderr1277
=== End of file commands.log
=== Start of file http_server.log
 19:28:20.085279 ====> Client connect
 19:28:20.085317 accept_connection 3 returned 4
 19:28:20.088541 Read 93 bytes
 19:28:20.088562 Process 93 bytes request
 19:28:20.088575 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.088583 Are-we-friendly question received
 19:28:20.088619 Wrote request (93 bytes) input to log/5/server.input
 19:28:20.088636 Identifying ourselves as friends
 19:28:20.088702 Response sent (56 bytes) and written to log/5/server.response
 19:28:20.088712 special request received, no persistency
 19:28:20.088719 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 57398 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1282 ../src/curl -q --output log/24/curl1282.out  --include --trace-ascii log/24/trace1282 --trace-time ftp://127.0.0.1:37215/1282 > log/24/stdout1282 2> log/24/stderr1282
ify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1277
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1277
 ==149726== 
 ==149726== Process terminating with default action of signal 4 (SIGILL)
 ==149726==  Illegal opcode at address 0x492B75F
 ==149726==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149726==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149726==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149726==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149726==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149726==    by 0x49908EB: curl_version_info (version.c:600)
 ==149726==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149726==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149726==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149726==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1277
test 1282 [FTP with 633 response to auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1282 ../src/curl -q --output log/24/curl1282.out  --include --trace-ascii log/24/trace1282 --trace-time ftp://127.0.0.1:37215/1282 > log/24/stdout1282 2> log/24/stderr1282

 1282: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1282
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1282 ../src/curl -q --output log/24/curl1282.out  --include --trace-ascii log/24/trace1282 --trace-time ftp://127.0.0.1:37215/1282 > log/24/stdout1282 2> log/24/stderr1282
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:20.782970 ====> Client connect
 19:28:20.783145 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:20.783431 < "USER anonymous"
 19:28:20.783465 > "331 We are happy you popped in![CR][LF]"
 19:28:20.783620 < "PASS ftp@example.com"
 19:28:20.783644 > "230 Welcome you silly person[CR][LF]"
 19:28:20.783774 < "PWD"
 19:28:20.783802 > "257 "/" is current directory[CR][LF]"
 19:28:20.783936 < "EPSV"
 19:28:20.783957 ====> Passive DATA channel requested by client
 19:28:20.783968 DATA sockfilt for passive data channel starting...
 19:28:20.785836 DATA sockfilt for passive data channel started (pid 149953)
 19:28:20.785946 DATA sockfilt for passive data channel listens on port 38195
 19:28:20.786174 > "229 Entering Passive Mode (|||38195|)[CR][LF]"
 19:28:20.786198 Client has been notified that upcoming DATA connection is awaited on port 38195
 19:28:20.786254 Client connects to port 38195
 19:28:20.786275 ====> Client established passive DATA connection on port 38195
 19:28:20.786345 < "TYPE I"
 19:28:20.786478 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:20.786530 < "SIZE verifiedserver"
 19:28:20.786652 > "213 17[CR][LF]"
 19:28:20.786696 < "RETR verifiedserver"
 19:28:20.786794 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:20.786898 =====> Closing passive DATA connection...
 19:28:20.786913 Server disconnects passive DATA connection
 19:28:20.787033 Server disconnected passive DATA connection
 19:28:20.787054 DATA sockfilt for passive data channel quits (pid 149953)
 19:28:20.787251 DATA sockfilt for passive data channel quit (pid 149953)
 19:28:20.787270 =====> Closed passive DATA connection
 19:28:20.787337 > "226 File transfer complete[CR][LF]"
 19:28:20.829497 < "QUIT"
 19:28:20.829555 > "221 bye bye baby[CR][LF]"
 19:28:20.830788 MAIN sockfilt said DISC
 19:28:20.830830 ====> Client disconnected
 19:28:20.830906 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:21.386059 ====> Client connect
 19:28:21.386361 Received DATA (on stdin)
 19:28:21.386375 > 146 bytes data, server => client
 19:28:21.386384 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:21.386393 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:21.386400 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:21.386498 < 16 bytes data, client => server
 19:28:21.386509 'USER anonymous\r\n'
 19:28:21.386670 Received DATA (on stdin)
 19:28:21.386679 > 33 bytes data, server => client
 19:28:21.386688 '331 We are happy you popped in!\r\n'
 19:28:21.386738 < 22 bytes data, client => server
 19:28:21.386747 'PASS ftp@example.com\r\n'
 19:28:21.386845 Received DATA (on stdin)
 19:28:21.386854 > 30 bytes data, server => client
 19:28:21.386863 '230 Welcome you silly person\r\n'
 19:28:21.386905 < 5 bytes data, client => server
 19:28:21.386913 'PWD\r\n'
 19:28:21.387002 Received DATA (on stdin)
 19:28:21.387011 > 30 bytes data, server => client
 19:28:21.387019 '257 "/" is current directory\r\n'
 19:28:21.387069 < 6 bytes data, client => server
 19:28:21.387077 'EPSV\r\n'
 19:28:21.389161 Received DATA (on stdin)
 19:28:21.389173 > 39 bytes data, server => client
 19:28:21.389189 '229 Entering Passive Mode (|||38195|)\r\n'
 19:28:21.389313 < 8 bytes data, client => server
 19:28:21.389326 'TYPE I\r\n'
 19:28:21.389556 Received DATA (on stdin)
 19:28:21.389567 > 33 bytes data, server => client
 19:28:21.389583 '200 I modify TYPE as you wanted\r\n'
 19:28:21.389633 < 21 bytes data, client => server
 19:28:21.389644 'SIZE verifiedserver\r\n'
 19:28:21.389745 Received DATA (on stdin)
 19:28:21.389754 > 8 bytes data, server => client
 19:28:21.389768 '213 17\r\n'
 19:28:21.389812 < 21 bytes data, client => server
 19:28:21.389821 'RETR verifiedserver\r\n'
 19:28:21.389907 Received DATA (on stdin)
 19:28:21.389916 > 29 bytes data, server => client
 19:28:21.389930 '150 Binary junk (17 bytes).\r\n'
 19:28:21.390477 Received DATA (on stdin)
 19:28:21.390488 > 28 bytes data, server => client
 19:28:21.390502 '226 File transfer complete\r\n'
 19:28:21.432507 < 6 bytes data, client => server
 19:28:21.432533 'QUIT\r\n'
 19:28:21.432767 Received DATA (on stdin)
 19:28:21.432781 > 18 bytes data, server => client
 19:28:21.432791 '221 bye bye baby\r\n'
 19:28:21.433933 ====> Client disconnect
 19:28:21.434110 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:20.388865 Running IPv4 version
 19:28:20.388928 Listening on port 38195
 19:28:20.388968 Wrote pid 149953 to log/24/server/ftp_sockdata.pid
 19:28:20.388986 Received PING (on stdin)
 19:28:20.389064 Received PORT (on stdin)
 19:28:20.389413 ====> Client connect
 19:28:20.390006 Received DATA (on stdin)
 19:28:20.390017 > 17 bytes data, server => client
 19:28:20.390115 'WE ROOLZ: 85113\r\n'
 19:28:20.390173 Received DISC (on stdin)
 19:28:20.390183 ====> Client forcibly disconnected
 19:28:20.390254 Received QUIT (on stdin)
 19:28:20.390262 quits
 19:28:20.390321 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 633 XXXXXXXXXXXXXXXX
 Testnum 1282
=== End of file server.cmd
=== Start of file valgrind1282
 ==149995== 
 ==149995== Process terminating with default action of signal 4 (SIGILL)
 ==149995==  Illegal opcode at address 0x492B75F
 ==149995==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149995==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149995==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149995==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149995==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149995==    by 0x49908EB: curl_version_info (version.c:600)
 ==149995==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149995==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149995==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149995==  CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1290 ../src/curl -q --output log/12/curl1290.out  --include --trace-ascii log/12/trace1290 --trace-time "http://127.0.0.1:40921/we/want/[]/page/1290" > log/12/stdout1290 2> log/12/stderr1290
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1289 ../src/curl -q --output log/23/curl1289.out  --include --trace-ascii log/23/trace1289 --trace-time http://ur%20[0-60000000000000000000 > log/23/stdout1289 2> log/23/stderr1289
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1280 ../src/curl -q --output log/17/curl1280.out  --include --trace-ascii log/17/trace1280 --trace-time http://127.0.0.1:35993/[a-d]/1280 > log/17/stdout1280 2> log/17/stderr1280
  by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1282
test 1290 [Verify URL globbing ignores []]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1290 ../src/curl -q --output log/12/curl1290.out  --include --trace-ascii log/12/trace1290 --trace-time "http://127.0.0.1:40921/we/want/[]/page/1290" > log/12/stdout1290 2> log/12/stderr1290

 1290: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1290
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1290 ../src/curl -q --output log/12/curl1290.out  --include --trace-ascii log/12/trace1290 --trace-time "http://127.0.0.1:40921/we/want/[]/page/1290" > log/12/stdout1290 2> log/12/stderr1290
=== End of file commands.log
=== Start of file http_server.log
 19:28:20.916968 ====> Client connect
 19:28:20.917013 accept_connection 3 returned 4
 19:28:20.917117 Read 93 bytes
 19:28:20.917133 Process 93 bytes request
 19:28:20.917148 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.917158 Are-we-friendly question received
 19:28:20.917190 Wrote request (93 bytes) input to log/12/server.input
 19:28:20.917207 Identifying ourselves as friends
 19:28:20.917277 Response sent (56 bytes) and written to log/12/server.response
 19:28:20.917289 special request received, no persistency
 19:28:20.917299 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 38448 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1290
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1290
 ==150397== 
 ==150397== Process terminating with default action of signal 4 (SIGILL)
 ==150397==  Illegal opcode at address 0x492B75F
 ==150397==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150397==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150397==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150397==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150397==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150397==    by 0x49908EB: curl_version_info (version.c:600)
 ==150397==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150397==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150397==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150397==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1290
test 1289 [globbing with overflow and bad syntax]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1289 ../src/curl -q --output log/23/curl1289.out  --include --trace-ascii log/23/trace1289 --trace-time http://ur%20[0-60000000000000000000 > log/23/stdout1289 2> log/23/stderr1289

curl returned 132, when expecting 3
 1289: exit FAILED
== Contents of files in the log/23/ directory after test 1289
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1289 ../src/curl -q --output log/23/curl1289.out  --include --trace-ascii log/23/trace1289 --trace-time http://ur%20[0-60000000000000000000 > log/23/stdout1289 2> log/23/stderr1289
=== End of file commands.log
=== Start of file http_server.log
 19:28:20.698540 ====> Client connect
 19:28:20.698579 accept_connection 3 returned 4
 19:28:20.698601 Read 93 bytes
 19:28:20.698611 Process 93 bytes request
 19:28:20.698623 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.698632 Are-we-friendly question received
 19:28:20.698661 Wrote request (93 bytes) input to log/23/server.input
 19:28:20.698681 Identifying ourselves as friends
 19:28:20.698750 Response sent (56 bytes) and written to log/23/server.response
 19:28:20.698762 special request received, no persistency
 19:28:20.698771 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 42190 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1289
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1289
 ==150277== 
 ==150277== Process terminating with default action of signal 4 (SIGILL)
 ==150277==  Illegal opcode at address 0x492B75F
 ==150277==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150277==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150277==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150277==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150277==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150277==    by 0x49908EB: curl_version_info (version.c:600)
 ==150277==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150277==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1289
test 1280 [simple [a-d] globbing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1280 ../src/curl -q --output log/17/curl1280.out  --include --trace-ascii log/17/trace1280 --trace-time http://127.0.0.1:35993/[a-d]/1280 > log/17/stdout1280 2> log/17/stderr1280

 1280: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1280
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1280 ../src/curl -q --output log/17/curl1280.out  --include --trace-ascii log/17/trace1280 --trace-time http://127.0.0.1:35993/[a-d]/1280 > log/17/stdout1280 2> log/17/stderr1280
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.181128 ====> Client connect
 19:28:21.181168 accept_connection 3 returned 4
 19:28:21.181192 Read 93 bytes
 19:28:21.181204 Process 93 bytes request
 19:28:21.181217 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.181227 Are-we-friendly question received
 19:28:21.181288 Wrote request (93 bytes) input to log/17/server.input
 19:28:21.181309 Identifying ourselves as friends
 19:28:21.181383 Response sent (56 bytes) and written to log/17/server.response
 19:28:21.181395 special request received, no persistency
 19:28:21.181404 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established conCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1300 ./unit/units unit1300 - > log/7/stdout1300 2> log/7/stderr1300
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1278 ../src/curl -q --include --trace-ascii log/13/trace1278 --trace-time http://127.0.0.1:38821/1278 --no-progress-meter -o log/13/out1278 --no-remote-name -w '%{stderr}yes\n' > log/13/stdout1278 2> log/13/stderr1278
nection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 35170 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1280
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1280
 ==149811== 
 ==149811== Process terminating with default action of signal 4 (SIGILL)
 ==149811==  Illegal opcode at address 0x492B75F
 ==149811==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149811==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149811==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149811==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149811==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149811==    by 0x49908EB: curl_version_info (version.c:600)
 ==149811==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149811==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149811==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149811==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1280
test 1300 [llist unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1300 ./unit/units unit1300 - > log/7/stdout1300 2> log/7/stderr1300

units returned 132, when expecting 0
 1300: exit FAILED
== Contents of files in the log/7/ directory after test 1300
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1300 ./unit/units unit1300 - > log/7/stdout1300 2> log/7/stderr1300
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1300
=== End of file server.cmd
=== Start of file valgrind1300
 ==150903== 
 ==150903== Process terminating with default action of signal 4 (SIGILL)
 ==150903==  Illegal opcode at address 0x4091F7F
 ==150903==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==150903==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==150903==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==150903==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1300
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1284 ../src/curl -q --output log/3/curl1284.out  --include --trace-ascii log/3/trace1284 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:36161/1284 > log/3/stdout1284 2> log/3/stderr1284
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1292 ../src/curl -q --output log/20/curl1292.out  --include --trace-ascii log/20/trace1292 --trace-time -H "Host;" -H "Accept;" http://127.0.0.1:33897/1292 > log/20/stdout1292 2> log/20/stderr1292
test 1278 [verify extra --no-remote-name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1278 ../src/curl -q --include --trace-ascii log/13/trace1278 --trace-time http://127.0.0.1:38821/1278 --no-progress-meter -o log/13/out1278 --no-remote-name -w '%{stderr}yes\n' > log/13/stdout1278 2> log/13/stderr1278

 1278: stderr FAILED:
--- log/13/check-expected	2026-10-15 19:28:23.600239745 +0000
+++ log/13/check-generated	2026-10-15 19:28:23.599143209 +0000
@@ -1 +0,0 @@
-yes[CR][LF]
== Contents of files in the log/13/ directory after test 1278
=== Start of file check-expected
 yes[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1278 ../src/curl -q --include --trace-ascii log/13/trace1278 --trace-time http://127.0.0.1:38821/1278 --no-progress-meter -o log/13/out1278 --no-remote-name -w '%{stderr}yes\n' > log/13/stdout1278 2> log/13/stderr1278
=== End of file commands.log
=== Start of file http_server.log
 19:28:20.098589 ====> Client connect
 19:28:20.098628 accept_connection 3 returned 4
 19:28:20.098650 Read 93 bytes
 19:28:20.098660 Process 93 bytes request
 19:28:20.098673 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.098681 Are-we-friendly question received
 19:28:20.098709 Wrote request (93 bytes) input to log/13/server.input
 19:28:20.098726 Identifying ourselves as friends
 19:28:20.098799 Response sent (56 bytes) and written to log/13/server.response
 19:28:20.098810 special request received, no persistency
 19:28:20.098819 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 43702 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1278
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1278
 ==149740== 
 ==149740== Process terminating with default action of signal 4 (SIGILL)
 ==149740==  Illegal opcode at address 0x492B75F
 ==149740==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==149740==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==149740==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==149740==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==149740==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==149740==    by 0x49908EB: curl_version_info (version.c:600)
 ==149740==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==149740==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==149740==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==149740==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1278
test 1284 [HTTP POST --digest with user-specified Content-Length header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1284 ../src/curl -q --output log/3/curl1284.out  --include --trace-ascii log/3/trace1284 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:36161/1284 > log/3/stdout1284 2> log/3/stderr1284

 1284: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1284
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1284 ../src/curl -q --output log/3/curl1284.out  --include --trace-ascii log/3/trace1284 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:36161/1284 > log/3/stdout1284 2> log/3/stderr1284
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.444179 ====> Client connect
 19:28:21.444218 accept_connection 3 returned 4
 19:28:21.444245 Read 93 bytes
 19:28:21.444256 Process 93 bytes request
 19:28:21.444269 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.444279 Are-we-friendly question received
 19:28:21.444313 Wrote request (93 bytes) input to log/3/server.input
 19:28:21.444333 Identifying ourselves as friends
 19:28:21.444415 Response sent (56 bytes) and written to log/3/server.response
 19:28:21.444426 special request received, no persistency
 19:28:21.444435 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 60052 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1284
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1284
 ==150084== 
 ==150084== Process terminating with default action of signal 4 (SIGILL)
 ==150084==  Illegal opcode at address 0x492B75F
 ==150084==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150084==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150084==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150084==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150084==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150084==    by 0x49908EB: curl_version_info (version.c:600)
 ==150084==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150084==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1284
test 1292 [Replaced internal headers with a blank one]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1292 ../src/curl -q --output log/20/curl1292.out  --include --trace-ascii log/20/trace1292 --trace-time -H "Host;" -H "Accept;" http://127.0.0.1:33897/1292 > log/20/stdout1292 2> log/20/stderr1292

 1292: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1292
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1292 ../src/curl -q --output log/20/curl1292.out  --include --trace-ascii log/20/trace1292 --trace-time -H "Host;" -H "Accept;" http://127.0.0.1:33897/1292 > log/20/stdout1292 2> log/20/stderr1292
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.107310 ====> Client connect
 19:28:21.107347 accept_connection 3 returned 4
 19:28:21.107370 Read 93 bytes
 19:28:21.107380 Process 93 bytes request
 19:28:21.107394 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.107402 Are-we-friendly question received
 19:28:21.107431 Wrote request (93 bytes) input to lCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1293 ../src/curl -q --output log/14/curl1293.out  --include --trace-ascii log/14/trace1293 --trace-time http://0 http://127.0.0.1:45467/1293 -F= > log/14/stdout1293 2> log/14/stderr1293
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1302 ./unit/units unit1302 - > log/4/stdout1302 2> log/4/stderr1302
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1301 ./libtest/libtests lib1301 - > log/1/stdout1301 2> log/1/stderr1301
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1291 ../src/curl -q --output log/10/curl1291.out  --include --trace-ascii log/10/trace1291 --trace-time -K log/10/cmd1291 --fail-early > log/10/stdout1291 2> log/10/stderr1291
og/20/server.input
 19:28:21.107450 Identifying ourselves as friends
 19:28:21.107519 Response sent (56 bytes) and written to log/20/server.response
 19:28:21.107531 special request received, no persistency
 19:28:21.107539 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 37248 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1292
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1292
 ==150503== 
 ==150503== Process terminating with default action of signal 4 (SIGILL)
 ==150503==  Illegal opcode at address 0x492B75F
 ==150503==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150503==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150503==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150503==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150503==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150503==    by 0x49908EB: curl_version_info (version.c:600)
 ==150503==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150503==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150503==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150503==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1292
test 1293 [Multipart formpost to two URLs, the first failing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1293 ../src/curl -q --output log/14/curl1293.out  --include --trace-ascii log/14/trace1293 --trace-time http://0 http://127.0.0.1:45467/1293 -F= > log/14/stdout1293 2> log/14/stderr1293

 1293: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1293
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1293 ../src/curl -q --output log/14/curl1293.out  --include --trace-ascii log/14/trace1293 --trace-time http://0 http://127.0.0.1:45467/1293 -F= > log/14/stdout1293 2> log/14/stderr1293
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.555213 ====> Client connect
 19:28:21.555250 accept_connection 3 returned 4
 19:28:21.568654 Read 93 bytes
 19:28:21.568683 Process 93 bytes request
 19:28:21.568698 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.568706 Are-we-friendly question received
 19:28:21.568759 Wrote request (93 bytes) input to log/14/server.input
 19:28:21.568783 Identifying ourselves as friends
 19:28:21.568854 Response sent (56 bytes) and written to log/14/server.response
 19:28:21.568865 special request received, no persistency
 19:28:21.568873 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 37332 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1293
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1293
 ==150639== 
 ==150639== Process terminating with default action of signal 4 (SIGILL)
 ==150639==  Illegal opcode at address 0x492B75F
 ==150639==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150639==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150639==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150639==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150639==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150639==    by 0x49908EB: curl_version_info (version.c:600)
 ==150639==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150639==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150639==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150639==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1293
test 1302 [base64 encode/decode unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1302 ./unit/units unit1302 - > log/4/stdout1302 2> log/4/stderr1302

units returned 132, when expecting 0
 1302: exit FAILED
== Contents of files in the log/4/ directory after test 1302
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1302 ./unit/units unit1302 - > log/4/stdout1302 2> log/4/stderr1302
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1302
=== End of file server.cmd
=== Start of file valgrind1302
 ==151085== 
 ==151085== Process terminating with default action of signal 4 (SIGILL)
 ==151085==  Illegal opcode at address 0x4091F7F
 ==151085==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==151085==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==151085==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==151085==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1302
test 1301 [curl_strequal tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1301 ./libtest/libtests lib1301 - > log/1/stdout1301 2> log/1/stderr1301

libtests returned 132, when expecting 0
 1301: exit FAILED
== Contents of files in the log/1/ directory after test 1301
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1301 ./libtest/libtests lib1301 - > log/1/stdout1301 2> log/1/stderr1301
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1301
=== End of file server.cmd
=== Start of file valgrind1301
 ==151094== 
 ==151094== Process terminating with default action of signal 4 (SIGILL)
 ==151094==  Illegal opcode at address 0x51CC63F
 ==151094==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==151094==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==151094==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==151094==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1301
prechecked /usr/bin/perl -e 'for(1 .. 1000) { printf("upload-file=log/10/upload-this\nurl=htttttp://non-existing-host.haxx.se/upload/1291\n", $_);}' > log/10/cmd1291;
test 1291 [Attempt to upload 1000 files but fail immediately]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1291 ../src/curl -q --output log/10/curl1291.out  --include --trace-ascii log/10/trace1291 --trace-time -K log/10/cmd1291 --fail-early > log/10/stdout1291 2> log/10/stderr1291

curl returned 132, when expecting 1
 1291: exit FAILED
== Contents of files in the log/10/ directory after test 1291
=== Start of file cmd1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
=== File too long: 599 lines omitted here
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/uploaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1304 ./unit/units unit1304 log/19/netrc1304 > log/19/stdout1304 2> log/19/stderr1304
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1296 ../src/curl -q --output log/16/curl1296.out  --include --trace-ascii log/16/trace1296 --trace-time http://user%0aname:password@127.0.0.1:35903/1296 > log/16/stdout1296 2> log/16/stderr1296
d/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
 upload-file=log/10/upload-this
 url=htttttp://non-existing-host.haxx.se/upload/1291
=== End of file cmd1291
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1291 ../src/curl -q --output log/10/curl1291.out  --include --trace-ascii log/10/trace1291 --trace-time -K log/10/cmd1291 --fail-early > log/10/stdout1291 2> log/10/stderr1291
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1291
=== End of file server.cmd
=== Start of file upload-this
 XXXXXXXx
=== End of file upload-this
=== Start of file valgrind1291
 ==150391== 
 ==150391== Process terminating with default action of signal 4 (SIGILL)
 ==150391==  Illegal opcode at address 0x492B75F
 ==150391==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150391==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150391==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150391==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150391==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150391==    by 0x49908EB: curl_version_info (version.c:600)
 ==150391==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150391==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1291
test 1304 [netrc parsing unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1304 ./unit/units unit1304 log/19/netrc1304 > log/19/stdout1304 2> log/19/stderr1304

units returned 132, when expecting 0
 1304: exit FAILED
== Contents of files in the log/19/ directory after test 1304
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1304 ./unit/units unit1304 log/19/netrc1304 > log/19/stdout1304 2> log/19/stderr1304
=== End of file commands.log
=== Start of file netrc1304
 machine example.com login admin password passwd
 machine curl.example.com login none password none
=== End of file netrc1304
=== Start of file server.cmd
 Testnum 1304
=== End of file server.cmd
=== Start of file valgrind1304
 ==151162== 
 ==151162== Process terminating with default action of signal 4 (SIGILL)
 ==151162==  Illegal opcode at address 0x4091F7F
 ==151162==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==151162==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==151162==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==151162==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1304
test 1296 [HTTP URL with %0a in name part]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1296 ../src/curl -q --output log/16/curl1296.out  --include --trace-ascii log/16/trace1296 --trace-time http://user%0aname:password@127.0.0.1:35903/1296 > log/16/stdout1296 2> log/16/stderr1296

 1296: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1296
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1296 ../src/curl -q --output log/16/curl1296.out  --include --trace-ascii log/16/trace1296 --trace-time http://user%0aname:password@127.0.0.1:35903/1296 > log/16/stdout1296 2> log/16/stderr1296
=== End of file commands.log
=== Start of file http_server.log
 19:28:22.561200 ====> Client connect
 19:28:22.561240 accept_connection 3 returned 4
 19:28:22.561261 Read 93 bytes
 19:28:22.561270 Process 93 bytes request
 19:28:22.561283 Got request: GET /verifiedserver HTTP/1.1
 19:28:22.561291 Are-we-friendly question received
 19:28:22.561319 Wrote request (93 bytes) input to log/16/server.input
 19:28:22.561335 Identifying ourselves as friends
 19:28:22.561395 Response sent (56 bytes) and written to log/16/server.response
 19:28:22.561404 special request received, no persistency
 19:28:22.561412 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 33374 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1296
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1296
 ==150617== 
 ==150617== Process terminating with default action of signal 4 (SIGILL)
 ==150617==  Illegal opcode at address 0x492B75F
 ==150617==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150617==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150617==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150617==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150617==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150617==    by 0x49908EB: curl_version_info (version.c:600)
 ==150617==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150617==    by 0x4003269: UnknownInlinedFCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1303 ./unit/units unit1303 - > log/9/stdout1303 2> log/9/stderr1303
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1306 ./unit/units unit1305 - > log/18/stdout1306 2> log/18/stderr1306
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1305 ./unit/units unit1305 1305 > log/15/stdout1305 2> log/15/stderr1305
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1288 ../src/curl -q --include --trace-ascii log/11/trace1288 --trace-time --proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy 127.0.0.1:39335 http://127.0.0.1:40989/we/want/that/page/1288 > log/11/stdout1288 2> log/11/stderr1288
un (tool_cfgable.c:339)
 ==150617==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150617==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1296
test 1303 [Curl_timeleft_ms unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1303 ./unit/units unit1303 - > log/9/stdout1303 2> log/9/stderr1303

units returned 132, when expecting 0
 1303: exit FAILED
== Contents of files in the log/9/ directory after test 1303
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1303 ./unit/units unit1303 - > log/9/stdout1303 2> log/9/stderr1303
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1303
=== End of file server.cmd
=== Start of file valgrind1303
 ==151092== 
 ==151092== Process terminating with default action of signal 4 (SIGILL)
 ==151092==  Illegal opcode at address 0x4091F7F
 ==151092==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==151092==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==151092==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==151092==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1303
test 1305 [internal hash create/destroy testing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1305 ./unit/units unit1305 1305 > log/15/stdout1305 2> log/15/stderr1305

units returned 132, when expecting 0
 1305: exit FAILED
== Contents of files in the log/15/ directory after test 1305
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1305 ./unit/units unit1305 1305 > log/15/stdout1305 2> log/15/stderr1305
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1305
=== End of file server.cmd
=== Start of file valgrind1305
 ==151248== 
 ==151248== Process terminating with default action of signal 4 (SIGILL)
 ==151248==  Illegal opcode at address 0x4091F7F
 ==151248==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==151248==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==151248==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==151248==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1305
test 1306 [internal hash create/add/destroy testing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1306 ./unit/units unit1305 - > log/18/stdout1306 2> log/18/stderr1306

units returned 132, when expecting 0
 1306: exit FAILED
== Contents of files in the log/18/ directory after test 1306
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1306 ./unit/units unit1305 - > log/18/stdout1306 2> log/18/stderr1306
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1306
=== End of file server.cmd
=== Start of file valgrind1306
 ==151264== 
 ==151264== Process terminating with default action of signal 4 (SIGILL)
 ==151264==  Illegal opcode at address 0x4091F7F
 ==151264==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==151264==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==151264==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==151264==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1306
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1308 ./libtest/libtests lib1308 log/22/test-1308 > log/22/stdout1308 2> log/22/stderr1308
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1287 ../src/curl -q --output log/2/curl1287.out  --include --trace-ascii log/2/trace1287 --trace-time -v --proxytunnel -x 127.0.0.1:37607 http://test.1287:34531/we/want/that/page/1287 > log/2/stdout1287 2> log/2/stderr1287
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/11/server/http2_server.pid" --logfile "log/11/http2_server.log" --logdir "log/11" --portfile log/11/server/http2_server.port --config log/11/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 150163 port 39335
* pid http-proxy => 150163 150163
test 1288 [Suppress proxy CONNECT response headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1288 ../src/curl -q --include --trace-ascii log/11/trace1288 --trace-time --proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy 127.0.0.1:39335 http://127.0.0.1:40989/we/want/that/page/1288 > log/11/stdout1288 2> log/11/stderr1288

 1288: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:28:24.596996960 +0000
+++ log/11/check-generated	2026-10-15 19:28:24.596023681 +0000
@@ -1,20 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Type: text/html[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-Funny-head: yesyes[CR][LF]
-Content-Length: 9[CR][LF]
-Content-Length: 9[CR][LF]
-Connection: keep-alive[CR][LF]
-Connection: keep-alive[CR][LF]
-[CR][LF]
-[CR][LF]
-contents[LF]
-[LF]
-CONNECT CODE: 200[LF]
-RECEIVED HEADER BYTE TOTAL: 231[LF]
== Contents of files in the log/11/ directory after test 1288
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Type: text/html[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 Funny-head: yesyes[CR][LF]
 Content-Length: 9[CR][LF]
 Content-Length: 9[CR][LF]
 Connection: keep-alive[CR][LF]
 Connection: keep-alive[CR][LF]
 [CR][LF]
 [CR][LF]
 contents[LF]
 [LF]
 CONNECT CODE: 200[LF]
 RECEIVED HEADER BYTE TOTAL: 231[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1288 ../src/curl -q --include --trace-ascii log/11/trace1288 --trace-time --proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy 127.0.0.1:39335 http://127.0.0.1:40989/we/want/that/page/1288 > log/11/stdout1288 2> log/11/stderr1288
=== End of file commands.log
=== Start of file http2_server.log
 19:28:21.606264 Run as proxy, CONNECT to host 127.0.0.1
 19:28:21.606401 Running HTTP IPv4 version on port 39335
 19:28:21.606454 Wrote pid 150163 to log/11/server/http2_server.pid
 19:28:21.606490 Wrote port 39335 to log/11/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:28:20.577692 ====> Client connect
 19:28:20.577728 accept_connection 3 returned 4
 19:28:20.578638 Read 93 bytes
 19:28:20.578655 Process 93 bytes request
 19:28:20.578667 Got request: GET /verifiedserver HTTP/1.1
 19:28:20.578676 Are-we-friendly question received
 19:28:20.578712 Wrote request (93 bytes) input to log/11/server.input
 19:28:20.578740 Identifying ourselves as friends
 19:28:20.578811 Response sent (56 bytes) and written to log/11/server.response
 19:28:20.578822 special request received, no persistency
 19:28:20.578831 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 42198 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1288
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1288
 ==150651== 
 ==150651== Process terminating with default action of signal 4 (SIGILL)
 ==150651==  Illegal opcode at address 0x492B75F
 ==150651==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150651==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150651==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150651==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150651==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150651==    by 0x49908EB: curl_version_info (version.c:600)
 ==150651==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150651==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150651==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150651==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1288
test 1308 [formpost tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1308 ./libtest/libtests lib1308 log/22/test-1308 > log/22/stdout1308 2> log/22/stderr1308

libtests returned 132, when expecting 0
 1308: exit FAILED
== Contents of files in the log/22/ directory after test 1308
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1308 ./libtest/libtests lib1308 log/22/test-1308 > log/22/stdout1308 2> log/22/stderr1308
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1308
=== End of file server.cmd
=== Start of file test-1308
 Piece of the file that is to uploaded as a formpost
=== End of file test-1308
=== Start of file valgrind1308
 ==151305== 
 ==151305== Process terminating with default action of signal 4 (SIGILL)
 ==151305==  Illegal opcode at address 0x51CC63F
 ==151305==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==151305==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==151305==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==151305==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1308
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/2/server/http2_server.pid" --logfile "log/2/http2_server.log" --logdir "log/2" --portfile log/2/server/http2_server.port --config log/2/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 150157 port 37607
* pid http-proxy => 150157 150157
test 1287 [HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1287 ../src/curl -q --output log/2/curl1287.out  --include --trace-ascii log/2/trace1287 --trace-time -v --proxytunnel -x 127.0.0.1:37607 http://test.1287:34531/we/want/that/page/1287 > log/2/stdout1287 2> log/2/stderr1287

 1287: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1287
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1287 ../srCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1298 ../src/curl -q --output log/21/curl1298.out  --include --trace-ascii log/21/trace1298 --trace-time --request-target "XXX" "http://127.0.0.1:39881/" -H "Testno: 1298" > log/21/stdout1298 2> log/21/stderr1298
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1299 ../src/curl -q --output log/6/curl1299.out  --include --trace-ascii log/6/trace1299 --trace-time --request-target '*' -X OPTIONS http://127.0.0.1:33935/ -H "Testno: 1299" > log/6/stdout1299 2> log/6/stderr1299
c/curl -q --output log/2/curl1287.out  --include --trace-ascii log/2/trace1287 --trace-time -v --proxytunnel -x 127.0.0.1:37607 http://test.1287:34531/we/want/that/page/1287 > log/2/stdout1287 2> log/2/stderr1287
=== End of file commands.log
=== Start of file http2_server.log
 19:28:21.614017 Run as proxy, CONNECT to host 127.0.0.1
 19:28:21.614136 Running HTTP IPv4 version on port 37607
 19:28:21.614179 Wrote pid 150157 to log/2/server/http2_server.pid
 19:28:21.614211 Wrote port 37607 to log/2/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:28:21.568340 ====> Client connect
 19:28:21.568380 accept_connection 3 returned 4
 19:28:21.576024 Read 93 bytes
 19:28:21.576048 Process 93 bytes request
 19:28:21.576063 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.576073 Are-we-friendly question received
 19:28:21.576120 Wrote request (93 bytes) input to log/2/server.input
 19:28:21.576141 Identifying ourselves as friends
 19:28:21.576211 Response sent (56 bytes) and written to log/2/server.response
 19:28:21.576223 special request received, no persistency
 19:28:21.576232 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 34168 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1287
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1287
 ==150633== 
 ==150633== Process terminating with default action of signal 4 (SIGILL)
 ==150633==  Illegal opcode at address 0x492B75F
 ==150633==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150633==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150633==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150633==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150633==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150633==    by 0x49908EB: curl_version_info (version.c:600)
 ==150633==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150633==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1287
test 1298 [HTTP GET special path with --request-target]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1298 ../src/curl -q --output log/21/curl1298.out  --include --trace-ascii log/21/trace1298 --trace-time --request-target "XXX" "http://127.0.0.1:39881/" -H "Testno: 1298" > log/21/stdout1298 2> log/21/stderr1298

 1298: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1298
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1298 ../src/curl -q --output log/21/curl1298.out  --include --trace-ascii log/21/trace1298 --trace-time --request-target "XXX" "http://127.0.0.1:39881/" -H "Testno: 1298" > log/21/stdout1298 2> log/21/stderr1298
=== End of file commands.log
=== Start of file http_server.log
 19:28:21.985183 ====> Client connect
 19:28:21.985227 accept_connection 3 returned 4
 19:28:21.985251 Read 93 bytes
 19:28:21.985261 Process 93 bytes request
 19:28:21.985274 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.985282 Are-we-friendly question received
 19:28:21.985307 Wrote request (93 bytes) input to log/21/server.input
 19:28:21.985324 Identifying ourselves as friends
 19:28:21.985398 Response sent (56 bytes) and written to log/21/server.response
 19:28:21.985407 special request received, no persistency
 19:28:21.985415 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 45430 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1298
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1298
 ==150899== 
 ==150899== Process terminating with default action of signal 4 (SIGILL)
 ==150899==  Illegal opcode at address 0x492B75F
 ==150899==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150899==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150899==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150899==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150899==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150899==    by 0x49908EB: curl_version_info (version.c:600)
 ==150899==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150899==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150899==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1298
test 1299 [Send "OPTIONS *" with --request-target]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1299 ../src/curl -q --output log/6/curl1299.out  --include --trace-ascii log/6/trace1299 --trace-time --request-target '*' -X OPTIONS http://127.0.0.1:33935/ -H "Testno: 1299" > log/6/stdout1299 2> log/6/stderr1299

 1299: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1299
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1299 ../src/curl -q --output log/6/curl1299.out  --include --trace-ascii log/6/trace1299 --trace-time --request-target '*' -X OPTIONS http://127.0.0.1:33935/ -H "Testno: 1299" > log/6/stdout1299 2> log/6/stderr1299
=== End of file commands.log
=== Start of file http_server.log
 19:28:22.035179 ====> Client connect
 19:28:22.035223 accept_connection 3 returned 4
 19:28:22.035249 Read 93 bytes
 19:28:22.035259 Process 93 bytes request
 19:28:22.035272 Got request: GET /verifiedserver HTTP/1.1
 19:28:22.035281 Are-we-friendly question received
 19:28:22.035310 Wrote request (93 bytes) input to log/6/server.input
 19:28:22.035331 Identifying ourselves as friends
 19:28:22.035405 Response sent (56 bytes) and written to log/6/server.response
 19:28:22.035415 special request received, no persistency
 19:28:22.035424 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 52308 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1309 ./unit/units unit1309 - > log/5/stdout1309 2> log/5/stderr1309
left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1299
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1299
 ==150945== 
 ==150945== Process terminating with default action of signal 4 (SIGILL)
 ==150945==  Illegal opcode at address 0x492B75F
 ==150945==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150945==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150945==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150945==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150945==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150945==    by 0x49908EB: curl_version_info (version.c:600)
 ==150945==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150945==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150945==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150945==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1299
test 1309 [splay unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1309 ./unit/units unit1309 - > log/5/stdout1309 2> log/5/stderr1309

 1309: stdout FAILED:
--- log/5/check-expected	2026-10-15 19:28:25.035176393 +0000
+++ log/5/check-generated	2026-10-15 19:28:25.028509445 +0000
@@ -1,1592 +0,0 @@
-Result:[LF]
-      0.1013[3][LF]
-    0.1003[2][LF]
-      0.954[3][LF]
-  0.944[1][LF]
-0.934[0][LF]
-  0.895[1][LF]
-        0.885[4][LF]
-      0.875[3][LF]
-        0.836[4][LF]
-              0.826[7][LF]
-            0.816[6][LF]
-          0.777[5][LF]
-                  0.767[9][LF]
-                0.757[8][LF]
-              0.718[7][LF]
-                    0.708[10][LF]
-                  0.698[9][LF]
-                0.659[8][LF]
-                  0.649[9][LF]
-                    0.639[10][LF]
-                        0.600[12][LF]
-                          0.590[13][LF]
-                      0.580[11][LF]
-            0.541[6][LF]
-                  0.531[9][LF]
-                    0.521[10][LF]
-                0.472[8][LF]
-                  0.462[9][LF]
-              0.413[7][LF]
-    0.403[2][LF]
-      0.393[3][LF]
-          0.354[5][LF]
-        0.344[4][LF]
-          0.334[5][LF]
-              0.295[7][LF]
-            0.285[6][LF]
-              0.275[7][LF]
-                  0.236[9][LF]
-                0.226[8][LF]
-                  0.216[9][LF]
-                      0.177[11][LF]
-                        0.167[12][LF]
-                    0.157[10][LF]
-                      0.118[11][LF]
-                          0.108[13][LF]
-                        0.98[12][LF]
-                          0.59[13][LF]
-                              0.49[15][LF]
-                            0.39[14][LF]
-                              0.0[15][LF]
-Tree look:[LF]
-      0.1013[3][LF]
-    0.1003[2][LF]
-      0.954[3][LF]
-  0.944[1][LF]
-0.934[0][LF]
-  0.895[1][LF]
-        0.885[4][LF]
-      0.875[3][LF]
-        0.836[4][LF]
-              0.826[7][LF]
-            0.816[6][LF]
-          0.777[5][LF]
-                  0.767[9][LF]
-                0.757[8][LF]
-              0.718[7][LF]
-                    0.708[10][LF]
-                  0.698[9][LF]
-                0.659[8][LF]
-                  0.649[9][LF]
-                    0.639[10][LF]
-                        0.600[12][LF]
-                          0.590[13][LF]
-                      0.580[11][LF]
-            0.541[6][LF]
-                  0.531[9][LF]
-                    0.521[10][LF]
-                0.472[8][LF]
-                  0.462[9][LF]
-              0.413[7][LF]
-    0.403[2][LF]
-      0.393[3][LF]
-          0.354[5][LF]
-        0.344[4][LF]
-          0.334[5][LF]
-              0.295[7][LF]
-            0.285[6][LF]
-              0.275[7][LF]
-                  0.236[9][LF]
-                0.226[8][LF]
-                  0.216[9][LF]
-                      0.177[11][LF]
-                        0.167[12][LF]
-                    0.157[10][LF]
-                      0.118[11][LF]
-                          0.108[13][LF]
-                        0.98[12][LF]
-                          0.59[13][LF]
-                              0.49[15][LF]
-                            0.39[14][LF]
-                              0.0[15][LF]
-remove node 7, payload 718[LF]
-Tree look:[LF]
-          0.1013[5][LF]
-        0.1003[4][LF]
-          0.954[5][LF]
-      0.944[3][LF]
-    0.934[2][LF]
-  0.895[1][LF]
-        0.885[4][LF]
-      0.875[3][LF]
-    0.836[2][LF]
-          0.826[5][LF]
-        0.816[4][LF]
-      0.777[3][LF]
-          0.767[5][LF]
-        0.757[4][LF]
-0.708[0][LF]
-    0.698[2][LF]
-      0.659[3][LF]
-        0.649[4][LF]
-          0.639[5][LF]
-              0.600[7][LF]
-                0.590[8][LF]
-            0.580[6][LF]
-  0.541[1][LF]
-          0.531[5][LF]
-            0.521[6][LF]
-        0.472[4][LF]
-          0.462[5][LF]
-      0.413[3][LF]
-    0.403[2][LF]
-      0.393[3][LF]
-          0.354[5][LF]
-        0.344[4][LF]
-          0.334[5][LF]
-              0.295[7][LF]
-            0.285[6][LF]
-              0.275[7][LF]
-                  0.236[9][LF]
-                0.226[8][LF]
-                  0.216[9][LF]
-                      0.177[11][LF]
-                        0.167[12][LF]
-                    0.157[10][LF]
-                      0.118[11][LF]
-                          0.108[13][LF]
-                        0.98[12][LF]
-                          0.59[13][LF]
-                              0.49[15][LF]
-                            0.39[14][LF]
-                              0.0[15][LF]
-remove node 8, payload 236[LF]
-Tree look:[LF]
-              0.1013[7][LF]
-            0.1003[6][LF]
-              0.954[7][LF]
-          0.944[5][LF]
-        0.934[4][LF]
-      0.895[3][LF]
-            0.885[6][LF]
-          0.875[5][LF]
-        0.836[4][LF]
-              0.826[7][LF]
-            0.816[6][LF]
-          0.777[5][LF]
-              0.767[7][LF]
-            0.757[6][LF]
-    0.708[2][LF]
-      0.698[3][LF]
-        0.659[4][LF]
-          0.649[5][LF]
-            0.639[6][LF]
-                0.600[8][LF]
-                  0.590[9][LF]
-              0.580[7][LF]
-  0.541[1][LF]
-            0.531[6][LF]
-              0.521[7][LF]
-          0.472[5][LF]
-            0.462[6][LF]
-        0.413[4][LF]
-      0.403[3][LF]
-    0.393[2][LF]
-          0.354[5][LF]
-        0.344[4][LF]
-      0.334[3][LF]
-            0.295[6][LF]
-          0.285[5][LF]
-        0.275[4][LF]
-0.226[0][LF]
-  0.216[1][LF]
-      0.177[3][LF]
-        0.167[4][LF]
-    0.157[2][LF]
-      0.118[3][LF]
-          0.108[5][LF]
-        0.98[4][LF]
-          0.59[5][LF]
-              0.49[7][LF]
-            0.39[6][LF]
-              0.0[7][LF]
-remove node 9, payload 777[LF]
-Tree look:[LF]
-            0.1013[6][LF]
-          0.1003[5][LF]
-            0.954[6][LF]
-        0.944[4][LF]
-      0.934[3][LF]
-    0.895[2][LF]
-        0.885[4][LF]
-      0.875[3][LF]
-  0.836[1][LF]
-      0.826[3][LF]
-    0.816[2][LF]
-0.767[0][LF]
-    0.757[2][LF]
-  0.708[1][LF]
-      0.698[3][LF]
-        0.659[4][LF]
-          0.649[5][LF]
-            0.639[6][LF]
-                0.600[8][LF]
-                  0.590[9][LF]
-              0.580[7][LF]
-    0.541[2][LF]
-                0.531[8][LF]
-                  0.521[9][LF]
-              0.472[7][LF]
-                0.462[8][LF]
-            0.413[6][LF]
-          0.403[5][LF]
-        0.393[4][LF]
-              0.354[7][LF]
-            0.344[6][LF]
-          0.334[5][LF]
-                0.295[8][LF]
-              0.285[7][LF]
-            0.275[6][LF]
-      0.226[3][LF]
-        0.216[4][LF]
-            0.177[6][LF]
-              0.167[7][LF]
-          0.157[5][LF]
-            0.118[6][LF]
-                0.108[8][LF]
-              0.98[7][LF]
-                0.59[8][LF]
-                    0.49[10][LF]
-                  0.39[9][LF]
-                    0.0[10][LF]
-remove node 10, payload 295[LF]
-Tree look:[LF]
-                0.1013[8][LF]
-              0.1003[7][LF]
-                0.954[8][LF]
-            0.944[6][LF]
-          0.934[5][LF]
-        0.895[4][LF]
-            0.885[6][LF]
-          0.875[5][LF]
-      0.836[3][LF]
-          0.826[5][LF]
-        0.816[4][LF]
-    0.767[2][LF]
-      0.757[3][LF]
-  0.708[1][LF]
-      0.698[3][LF]
-        0.659[4][LF]
-          0.649[5][LF]
-            0.639[6][LF]
-                0.600[8][LF]
-                  0.590[9][LF]
-              0.580[7][LF]
-    0.541[2][LF]
-                0.531[8][LF]
-                  0.521[9][LF]
-              0.472[7][LF]
-                0.462[8][LF]
-            0.413[6][LF]
-          0.403[5][LF]
-        0.393[4][LF]
-            0.354[6][LF]
-          0.344[5][LF]
-      0.334[3][LF]
-0.285[0][LF]
-    0.275[2][LF]
-  0.226[1][LF]
-    0.216[2][LF]
-        0.177[4][LF]
-          0.167[5][LF]
-      0.157[3][LF]
-        0.118[4][LF]
-            0.108[6][LF]
-          0.98[5][LF]
-            0.59[6][LF]
-                0.49[8][LF]
-              0.39[7][LF]
-                0.0[8][LF]
-remove node 11, payload 836[LF]
-Tree look:[LF]
-          0.1013[5][LF]
-        0.1003[4][LF]
-          0.954[5][LF]
-      0.944[3][LF]
-    0.934[2][LF]
-  0.895[1][LF]
-      0.885[3][LF]
-    0.875[2][LF]
-0.826[0][LF]
-    0.816[2][LF]
-  0.767[1][LF]
-      0.757[3][LF]
-    0.708[2][LF]
-          0.698[5][LF]
-            0.659[6][LF]
-              0.649[7][LF]
-                0.639[8][LF]
-                    0.600[10][LF]
-                      0.590[11][LF]
-                  0.580[9][LF]
-        0.541[4][LF]
-                    0.531[10][LF]
-                      0.521[11][LF]
-                  0.472[9][LF]
-                    0.462[10][LF]
-                0.413[8][LF]
-              0.403[7][LF]
-            0.393[6][LF]
-                0.354[8][LF]
-              0.344[7][LF]
-          0.334[5][LF]
-      0.285[3][LF]
-          0.275[5][LF]
-        0.226[4][LF]
-          0.216[5][LF]
-              0.177[7][LF]
-                0.167[8][LF]
-            0.157[6][LF]
-              0.118[7][LF]
-                  0.108[9][LF]
-                0.98[8][LF]
-                  0.59[9][LF]
-                      0.49[11][LF]
-                    0.39[10][LF]
-                      0.0[11][LF]
-remove node 12, payload 354[LF]
-Tree look:[LF]
-              0.1013[7][LF]
-            0.1003[6][LF]
-              0.954[7][LF]
-          0.944[5][LF]
-        0.934[4][LF]
-      0.895[3][LF]
-          0.885[5][LF]
-        0.875[4][LF]
-    0.826[2][LF]
-      0.816[3][LF]
-  0.767[1][LF]
-      0.757[3][LF]
-    0.708[2][LF]
-        0.698[4][LF]
-          0.659[5][LF]
-            0.649[6][LF]
-              0.639[7][LF]
-                  0.600[9][LF]
-                    0.590[10][LF]
-                0.580[8][LF]
-      0.541[3][LF]
-                0.531[8][LF]
-                  0.521[9][LF]
-              0.472[7][LF]
-                0.462[8][LF]
-            0.413[6][LF]
-          0.403[5][LF]
-        0.393[4][LF]
-0.344[0][LF]
-  0.334[1][LF]
-    0.285[2][LF]
-        0.275[4][LF]
-      0.226[3][LF]
-        0.216[4][LF]
-            0.177[6][LF]
-              0.167[7][LF]
-          0.157[5][LF]
-            0.118[6][LF]
-                0.108[8][LF]
-              0.98[7][LF]
-                0.59[8][LF]
-                    0.49[10][LF]
-                  0.39[9][LF]
-                    0.0[10][LF]
-remove node 13, payload 895[LF]
-Tree look:[LF]
-        0.1013[4][LF]
-      0.1003[3][LF]
-        0.954[4][LF]
-    0.944[2][LF]
-  0.934[1][LF]
-0.885[0][LF]
-    0.875[2][LF]
-  0.826[1][LF]
-      0.816[3][LF]
-    0.767[2][LF]
-          0.757[5][LF]
-        0.708[4][LF]
-            0.698[6][LF]
-              0.659[7][LF]
-                0.649[8][LF]
-                  0.639[9][LF]
-                      0.600[11][LF]
-                        0.590[12][LF]
-                    0.580[10][LF]
-          0.541[5][LF]
-                    0.531[10][LF]
-                      0.521[11][LF]
-                  0.472[9][LF]
-                    0.462[10][LF]
-                0.413[8][LF]
-              0.403[7][LF]
-            0.393[6][LF]
-      0.344[3][LF]
-        0.334[4][LF]
-          0.285[5][LF]
-              0.275[7][LF]
-            0.226[6][LF]
-              0.216[7][LF]
-                  0.177[9][LF]
-                    0.167[10][LF]
-                0.157[8][LF]
-                  0.118[9][LF]
-                      0.108[11][LF]
-                    0.98[10][LF]
-                      0.59[11][LF]
-                          0.49[13][LF]
-                        0.39[12][LF]
-                          0.0[13][LF]
-remove node 14, payload 413[LF]
-Tree look:[LF]
-            0.1013[6][LF]
-          0.1003[5][LF]
-            0.954[6][LF]
-        0.944[4][LF]
-      0.934[3][LF]
-    0.885[2][LF]
-      0.875[3][LF]
-  0.826[1][LF]
-      0.816[3][LF]
-    0.767[2][LF]
-          0.757[5][LF]
-        0.708[4][LF]
-          0.698[5][LF]
-            0.659[6][LF]
-              0.649[7][LF]
-                0.639[8][LF]
-                    0.600[10][LF]
-                      0.590[11][LF]
-                  0.580[9][LF]
-      0.541[3][LF]
-          0.531[5][LF]
-            0.521[6][LF]
-        0.472[4][LF]
-          0.462[5][LF]
-0.403[0][LF]
-    0.393[2][LF]
-  0.344[1][LF]
-    0.334[2][LF]
-      0.285[3][LF]
-          0.275[5][LF]
-        0.226[4][LF]
-          0.216[5][LF]
-              0.177[7][LF]
-                0.167[8][LF]
-            0.157[6][LF]
-              0.118[7][LF]
-                  0.108[9][LF]
-                0.98[8][LF]
-                  0.59[9][LF]
-                      0.49[11][LF]
-                    0.39[10][LF]
-                      0.0[11][LF]
-remove node 15, payload 954[LF]
-Tree look:[LF]
-    0.1013[2][LF]
-  0.1003[1][LF]
-0.944[0][LF]
-  0.934[1][LF]
-      0.885[3][LF]
-        0.875[4][LF]
-    0.826[2][LF]
-          0.816[5][LF]
-        0.767[4][LF]
-              0.757[7][LF]
-            0.708[6][LF]
-              0.698[7][LF]
-                0.659[8][LF]
-                  0.649[9][LF]
-                    0.639[10][LF]
-                        0.600[12][LF]
-                          0.590[13][LF]
-                      0.580[11][LF]
-          0.541[5][LF]
-              0.531[7][LF]
-                0.521[8][LF]
-            0.472[6][LF]
-              0.462[7][LF]
-      0.403[3][LF]
-          0.393[5][LF]
-        0.344[4][LF]
-          0.334[5][LF]
-            0.285[6][LF]
-                0.275[8][LF]
-              0.226[7][LF]
-                0.216[8][LF]
-                    0.177[10][LF]
-                      0.167[11][LF]
-                  0.157[9][LF]
-                    0.118[10][LF]
-                        0.108[12][LF]
-                      0.98[11][LF]
-                        0.59[12][LF]
-                            0.49[14][LF]
-                          0.39[13][LF]
-                            0.0[14][LF]
-remove node 16, payload 472[LF]
-Tree look:[LF]
-        0.1013[4][LF]
-      0.1003[3][LF]
-    0.944[2][LF]
-  0.934[1][LF]
-      0.885[3][LF]
-        0.875[4][LF]
-    0.826[2][LF]
-          0.816[5][LF]
-        0.767[4][LF]
-            0.757[6][LF]
-          0.708[5][LF]
-            0.698[6][LF]
-              0.659[7][LF]
-                0.649[8][LF]
-                  0.639[9][LF]
-                      0.600[11][LF]
-                        0.590[12][LF]
-                    0.580[10][LF]
-      0.541[3][LF]
-        0.531[4][LF]
-          0.521[5][LF]
-0.462[0][LF]
-  0.403[1][LF]
-      0.393[3][LF]
-    0.344[2][LF]
-      0.334[3][LF]
-        0.285[4][LF]
-            0.275[6][LF]
-          0.226[5][LF]
-            0.216[6][LF]
-                0.177[8][LF]
-                  0.167[9][LF]
-              0.157[7][LF]
-                0.118[8][LF]
-                    0.108[10][LF]
-                  0.98[9][LF]
-                    0.59[10][LF]
-                        0.49[12][LF]
-                      0.39[11][LF]
-                        0.0[12][LF]
-remove node 17, payload 1013[LF]
-Tree look:[LF]
-0.1003[0][LF]
-    0.944[2][LF]
-  0.934[1][LF]
-        0.885[4][LF]
-          0.875[5][LF]
-      0.826[3][LF]
-            0.816[6][LF]
-          0.767[5][LF]
-              0.757[7][LF]
-            0.708[6][LF]
-              0.698[7][LF]
-                0.659[8][LF]
-                  0.649[9][LF]
-                    0.639[10][LF]
-                        0.600[12][LF]
-                          0.590[13][LF]
-                      0.580[11][LF]
-        0.541[4][LF]
-          0.531[5][LF]
-            0.521[6][LF]
-    0.462[2][LF]
-      0.403[3][LF]
-          0.393[5][LF]
-        0.344[4][LF]
-          0.334[5][LF]
-            0.285[6][LF]
-                0.275[8][LF]
-              0.226[7][LF]
-                0.216[8][LF]
-                    0.177[10][LF]
-                      0.167[11][LF]
-                  0.157[9][LF]
-                    0.118[10][LF]
-                        0.108[12][LF]
-                      0.98[11][LF]
-                        0.59[12][LF]
-                            0.49[14][LF]
-                          0.39[13][LF]
-                            0.0[14][LF]
-remove node 18, payload 531[LF]
-Tree look:[LF]
-    0.1003[2][LF]
-      0.944[3][LF]
-  0.934[1][LF]
-        0.885[4][LF]
-          0.875[5][LF]
-      0.826[3][LF]
-          0.816[5][LF]
-        0.767[4][LF]
-            0.757[6][LF]
-          0.708[5][LF]
-            0.698[6][LF]
-              0.659[7][LF]
-                0.649[8][LF]
-                  0.639[9][LF]
-                      0.600[11][LF]
-                        0.590[12][LF]
-                    0.580[10][LF]
-    0.541[2][LF]
-0.521[0][LF]
-  0.462[1][LF]
-    0.403[2][LF]
-        0.393[4][LF]
-      0.344[3][LF]
-        0.334[4][LF]
-          0.285[5][LF]
-              0.275[7][LF]
-            0.226[6][LF]
-              0.216[7][LF]
-                  0.177[9][LF]
-                    0.167[10][LF]
-                0.157[8][LF]
-                  0.118[9][LF]
-                      0.108[11][LF]
-                    0.98[10][LF]
-                      0.59[11][LF]
-                          0.49[13][LF]
-                        0.39[12][LF]
-                          0.0[13][LF]
-remove node 19, payload 49[LF]
-Tree look:[LF]
-        0.1003[4][LF]
-          0.944[5][LF]
-      0.934[3][LF]
-            0.885[6][LF]
-              0.875[7][LF]
-          0.826[5][LF]
-              0.816[7][LF]
-            0.767[6][LF]
-                0.757[8][LF]
-              0.708[7][LF]
-                0.698[8][LF]
-                  0.659[9][LF]
-                    0.649[10][LF]
-                      0.639[11][LF]
-                          0.600[13][LF]
-                            0.590[14][LF]
-                        0.580[12][LF]
-        0.541[4][LF]
-    0.521[2][LF]
-  0.462[1][LF]
-      0.403[3][LF]
-        0.393[4][LF]
-    0.344[2][LF]
-        0.334[4][LF]
-      0.285[3][LF]
-            0.275[6][LF]
-          0.226[5][LF]
-        0.216[4][LF]
-              0.177[7][LF]
-                0.167[8][LF]
-            0.157[6][LF]
-          0.118[5][LF]
-                0.108[8][LF]
-              0.98[7][LF]
-            0.59[6][LF]
-0.39[0][LF]
-  0.0[1][LF]
-remove node 20, payload 590[LF]
-Tree look:[LF]
-    0.1003[2][LF]
-      0.944[3][LF]
-  0.934[1][LF]
-        0.885[4][LF]
-          0.875[5][LF]
-      0.826[3][LF]
-        0.816[4][LF]
-    0.767[2][LF]
-          0.757[5][LF]
-        0.708[4][LF]
-      0.698[3][LF]
-          0.659[5][LF]
-        0.649[4][LF]
-          0.639[5][LF]
-            0.600[6][LF]
-0.580[0][LF]
-    0.541[2][LF]
-  0.521[1][LF]
-    0.462[2][LF]
-          0.403[5][LF]
-            0.393[6][LF]
-        0.344[4][LF]
-            0.334[6][LF]
-          0.285[5][LF]
-                0.275[8][LF]
-              0.226[7][LF]
-            0.216[6][LF]
-                  0.177[9][LF]
-                    0.167[10][LF]
-                0.157[8][LF]
-              0.118[7][LF]
-                    0.108[10][LF]
-                  0.98[9][LF]
-                0.59[8][LF]
-      0.39[3][LF]
-        0.0[4][LF]
-remove node 21, payload 108[LF]
-Tree look:[LF]
-        0.1003[4][LF]
-          0.944[5][LF]
-      0.934[3][LF]
-            0.885[6][LF]
-              0.875[7][LF]
-          0.826[5][LF]
-            0.816[6][LF]
-        0.767[4][LF]
-              0.757[7][LF]
-            0.708[6][LF]
-          0.698[5][LF]
-              0.659[7][LF]
-            0.649[6][LF]
-              0.639[7][LF]
-                0.600[8][LF]
-    0.580[2][LF]
-      0.541[3][LF]
-  0.521[1][LF]
-    0.462[2][LF]
-          0.403[5][LF]
-            0.393[6][LF]
-        0.344[4][LF]
-          0.334[5][LF]
-      0.285[3][LF]
-              0.275[7][LF]
-            0.226[6][LF]
-          0.216[5][LF]
-              0.177[7][LF]
-                0.167[8][LF]
-            0.157[6][LF]
-        0.118[4][LF]
-0.98[0][LF]
-    0.59[2][LF]
-  0.39[1][LF]
-    0.0[2][LF]
-remove node 22, payload 649[LF]
-Tree look:[LF]
-      0.1003[3][LF]
-        0.944[4][LF]
-    0.934[2][LF]
-        0.885[4][LF]
-          0.875[5][LF]
-      0.826[3][LF]
-        0.816[4][LF]
-  0.767[1][LF]
-        0.757[4][LF]
-      0.708[3][LF]
-    0.698[2][LF]
-      0.659[3][LF]
-0.639[0][LF]
-    0.600[2][LF]
-  0.580[1][LF]
-      0.541[3][LF]
-    0.521[2][LF]
-        0.462[4][LF]
-              0.403[7][LF]
-                0.393[8][LF]
-            0.344[6][LF]
-              0.334[7][LF]
-          0.285[5][LF]
-                  0.275[9][LF]
-                0.226[8][LF]
-              0.216[7][LF]
-                  0.177[9][LF]
-                    0.167[10][LF]
-                0.157[8][LF]
-            0.118[6][LF]
-      0.98[3][LF]
-          0.59[5][LF]
-        0.39[4][LF]
-          0.0[5][LF]
-remove node 23, payload 167[LF]
-Tree look:[LF]
-          0.1003[5][LF]
-            0.944[6][LF]
-        0.934[4][LF]
-            0.885[6][LF]
-              0.875[7][LF]
-          0.826[5][LF]
-            0.816[6][LF]
-      0.767[3][LF]
-            0.757[6][LF]
-          0.708[5][LF]
-        0.698[4][LF]
-          0.659[5][LF]
-    0.639[2][LF]
-      0.600[3][LF]
-  0.580[1][LF]
-      0.541[3][LF]
-    0.521[2][LF]
-        0.462[4][LF]
-            0.403[6][LF]
-              0.393[7][LF]
-          0.344[5][LF]
-            0.334[6][LF]
-      0.285[3][LF]
-            0.275[6][LF]
-          0.226[5][LF]
-        0.216[4][LF]
-          0.177[5][LF]
-0.157[0][LF]
-  0.118[1][LF]
-    0.98[2][LF]
-        0.59[4][LF]
-      0.39[3][LF]
-        0.0[4][LF]
-remove node 24, payload 708[LF]
-Tree look:[LF]
-      0.1003[3][LF]
-        0.944[4][LF]
-    0.934[2][LF]
-        0.885[4][LF]
-          0.875[5][LF]
-      0.826[3][LF]
-        0.816[4][LF]
-  0.767[1][LF]
-    0.757[2][LF]
-0.698[0][LF]
-    0.659[2][LF]
-  0.639[1][LF]
-      0.600[3][LF]
-    0.580[2][LF]
-          0.541[5][LF]
-        0.521[4][LF]
-            0.462[6][LF]
-                0.403[8][LF]
-                  0.393[9][LF]
-              0.344[7][LF]
-                0.334[8][LF]
-          0.285[5][LF]
-                0.275[8][LF]
-              0.226[7][LF]
-            0.216[6][LF]
-              0.177[7][LF]
-      0.157[3][LF]
-        0.118[4][LF]
-          0.98[5][LF]
-              0.59[7][LF]
-            0.39[6][LF]
-              0.0[7][LF]
-remove node 25, payload 226[LF]
-Tree look:[LF]
-          0.1003[5][LF]
-            0.944[6][LF]
-        0.934[4][LF]
-            0.885[6][LF]
-              0.875[7][LF]
-          0.826[5][LF]
-            0.816[6][LF]
-      0.767[3][LF]
-        0.757[4][LF]
-    0.698[2][LF]
-      0.659[3][LF]
-  0.639[1][LF]
-      0.600[3][LF]
-    0.580[2][LF]
-          0.541[5][LF]
-        0.521[4][LF]
-          0.462[5][LF]
-              0.403[7][LF]
-                0.393[8][LF]
-            0.344[6][LF]
-              0.334[7][LF]
-      0.285[3][LF]
-        0.275[4][LF]
-0.216[0][LF]
-    0.177[2][LF]
-  0.157[1][LF]
-    0.118[2][LF]
-      0.98[3][LF]
-          0.59[5][LF]
-        0.39[4][LF]
-          0.0[5][LF]
-remove node 26, payload 767[LF]
-Tree look:[LF]
-    0.1003[2][LF]
-      0.944[3][LF]
-  0.934[1][LF]
-      0.885[3][LF]
-        0.875[4][LF]
-    0.826[2][LF]
-      0.816[3][LF]
-0.757[0][LF]
-  0.698[1][LF]
-      0.659[3][LF]
-    0.639[2][LF]
-          0.600[5][LF]
-        0.580[4][LF]
-              0.541[7][LF]
-            0.521[6][LF]
-              0.462[7][LF]
-                  0.403[9][LF]
-                    0.393[10][LF]
-                0.344[8][LF]
-                  0.334[9][LF]
-          0.285[5][LF]
-            0.275[6][LF]
-      0.216[3][LF]
-          0.177[5][LF]
-        0.157[4][LF]
-          0.118[5][LF]
-            0.98[6][LF]
-                0.59[8][LF]
-              0.39[7][LF]
-                0.0[8][LF]
-remove node 27, payload 285[LF]
-Tree look:[LF]
-        0.1003[4][LF]
-          0.944[5][LF]
-      0.934[3][LF]
-          0.885[5][LF]
-            0.875[6][LF]
-        0.826[4][LF]
-          0.816[5][LF]
-    0.757[2][LF]
-  0.698[1][LF]
-      0.659[3][LF]
-    0.639[2][LF]
-        0.600[4][LF]
-      0.580[3][LF]
-          0.541[5][LF]
-        0.521[4][LF]
-          0.462[5][LF]
-              0.403[7][LF]
-                0.393[8][LF]
-            0.344[6][LF]
-              0.334[7][LF]
-0.275[0][LF]
-  0.216[1][LF]
-      0.177[3][LF]
-    0.157[2][LF]
-      0.118[3][LF]
-        0.98[4][LF]
-            0.59[6][LF]
-          0.39[5][LF]
-            0.0[6][LF]
-remove node 28, payload 826[LF]
-Tree look:[LF]
-    0.1003[2][LF]
-      0.944[3][LF]
-  0.934[1][LF]
-    0.885[2][LF]
-      0.875[3][LF]
-0.816[0][LF]
-  0.757[1][LF]
-    0.698[2][LF]
-          0.659[5][LF]
-        0.639[4][LF]
-            0.600[6][LF]
-          0.580[5][LF]
-              0.541[7][LF]
-            0.521[6][LF]
-              0.462[7][LF]
-                  0.403[9][LF]
-                    0.393[10][LF]
-                0.344[8][LF]
-                  0.334[9][LF]
-      0.275[3][LF]
-        0.216[4][LF]
-            0.177[6][LF]
-          0.157[5][LF]
-            0.118[6][LF]
-              0.98[7][LF]
-                  0.59[9][LF]
-                0.39[8][LF]
-                  0.0[9][LF]
-remove node 29, payload 344[LF]
-Tree look:[LF]
-        0.1003[4][LF]
-          0.944[5][LF]
-      0.934[3][LF]
-        0.885[4][LF]
-          0.875[5][LF]
-    0.816[2][LF]
-  0.757[1][LF]
-    0.698[2][LF]
-          0.659[5][LF]
-        0.639[4][LF]
-          0.600[5][LF]
-      0.580[3][LF]
-            0.541[6][LF]
-          0.521[5][LF]
-        0.462[4][LF]
-          0.403[5][LF]
-            0.393[6][LF]
-0.334[0][LF]
-  0.275[1][LF]
-    0.216[2][LF]
-        0.177[4][LF]
-      0.157[3][LF]
-        0.118[4][LF]
-          0.98[5][LF]
-              0.59[7][LF]
-            0.39[6][LF]
-              0.0[7][LF]
-remove node 30, payload 885[LF]
-Tree look:[LF]
-    0.1003[2][LF]
-      0.944[3][LF]
-  0.934[1][LF]
-0.875[0][LF]
-  0.816[1][LF]
-    0.757[2][LF]
-        0.698[4][LF]
-              0.659[7][LF]
-            0.639[6][LF]
-              0.600[7][LF]
-          0.580[5][LF]
-                0.541[8][LF]
-              0.521[7][LF]
-            0.462[6][LF]
-              0.403[7][LF]
-                0.393[8][LF]
-      0.334[3][LF]
-        0.275[4][LF]
-          0.216[5][LF]
-              0.177[7][LF]
-            0.157[6][LF]
-              0.118[7][LF]
-                0.98[8][LF]
-                    0.59[10][LF]
-                  0.39[9][LF]
-                    0.0[10][LF]
-remove node 31, payload 403[LF]
-Tree look:[LF]
-        0.1003[4][LF]
-          0.944[5][LF]
-      0.934[3][LF]
-    0.875[2][LF]
-  0.816[1][LF]
-    0.757[2][LF]
-        0.698[4][LF]
-            0.659[6][LF]
-          0.639[5][LF]
-            0.600[6][LF]
-      0.580[3][LF]
-            0.541[6][LF]
-          0.521[5][LF]
-        0.462[4][LF]
-0.393[0][LF]
-  0.334[1][LF]
-    0.275[2][LF]
-      0.216[3][LF]
-          0.177[5][LF]
-        0.157[4][LF]
-          0.118[5][LF]
-            0.98[6][LF]
-                0.59[8][LF]
-              0.39[7][LF]
-                0.0[8][LF]
-remove node 32, payload 944[LF]
-Tree look:[LF]
-  0.1003[1][LF]
-0.934[0][LF]
-    0.875[2][LF]
-  0.816[1][LF]
-      0.757[3][LF]
-          0.698[5][LF]
-              0.659[7][LF]
-            0.639[6][LF]
-              0.600[7][LF]
-        0.580[4][LF]
-              0.541[7][LF]
-            0.521[6][LF]
-          0.462[5][LF]
-    0.393[2][LF]
-      0.334[3][LF]
-        0.275[4][LF]
-          0.216[5][LF]
-              0.177[7][LF]
-            0.157[6][LF]
-              0.118[7][LF]
-                0.98[8][LF]
-                    0.59[10][LF]
-                  0.39[9][LF]
-                    0.0[10][LF]
-remove node 33, payload 462[LF]
-Tree look:[LF]
-      0.1003[3][LF]
-    0.934[2][LF]
-      0.875[3][LF]
-  0.816[1][LF]
-      0.757[3][LF]
-        0.698[4][LF]
-            0.659[6][LF]
-          0.639[5][LF]
-            0.600[6][LF]
-    0.580[2][LF]
-        0.541[4][LF]
-      0.521[3][LF]
-0.393[0][LF]
-  0.334[1][LF]
-    0.275[2][LF]
-      0.216[3][LF]
-          0.177[5][LF]
-        0.157[4][LF]
-          0.118[5][LF]
-            0.98[6][LF]
-                0.59[8][LF]
-              0.39[7][LF]
-                0.0[8][LF]
-remove node 34, payload 1003[LF]
-Tree look:[LF]
-0.934[0][LF]
-    0.875[2][LF]
-  0.816[1][LF]
-        0.757[4][LF]
-          0.698[5][LF]
-              0.659[7][LF]
-            0.639[6][LF]
-              0.600[7][LF]
-      0.580[3][LF]
-          0.541[5][LF]
-        0.521[4][LF]
-    0.393[2][LF]
-      0.334[3][LF]
-        0.275[4][LF]
-          0.216[5][LF]
-              0.177[7][LF]
-            0.157[6][LF]
-              0.118[7][LF]
-                0.98[8][LF]
-                    0.59[10][LF]
-                  0.39[9][LF]
-                    0.0[10][LF]
-remove node 35, payload 521[LF]
-Tree look:[LF]
-    0.934[2][LF]
-      0.875[3][LF]
-  0.816[1][LF]
-      0.757[3][LF]
-        0.698[4][LF]
-            0.659[6][LF]
-          0.639[5][LF]
-            0.600[6][LF]
-    0.580[2][LF]
-      0.541[3][LF]
-0.393[0][LF]
-  0.334[1][LF]
-    0.275[2][LF]
-      0.216[3][LF]
-          0.177[5][LF]
-        0.157[4][LF]
-          0.118[5][LF]
-            0.98[6][LF]
-                0.59[8][LF]
-              0.39[7][LF]
-                0.0[8][LF]
-remove node 36, payload 39[LF]
-Tree look:[LF]
-        0.934[4][LF]
-          0.875[5][LF]
-      0.816[3][LF]
-          0.757[5][LF]
-            0.698[6][LF]
-                0.659[8][LF]
-              0.639[7][LF]
-                0.600[8][LF]
-        0.580[4][LF]
-          0.541[5][LF]
-    0.393[2][LF]
-  0.334[1][LF]
-      0.275[3][LF]
-    0.216[2][LF]
-          0.177[5][LF]
-        0.157[4][LF]
-      0.118[3][LF]
-        0.98[4][LF]
-          0.59[5][LF]
-0.0[0][LF]
-remove node 37, payload 580[LF]
-Tree look:[LF]
-    0.934[2][LF]
-      0.875[3][LF]
-  0.816[1][LF]
-    0.757[2][LF]
-      0.698[3][LF]
-          0.659[5][LF]
-        0.639[4][LF]
-          0.600[5][LF]
-0.541[0][LF]
-  0.393[1][LF]
-    0.334[2][LF]
-          0.275[5][LF]
-        0.216[4][LF]
-              0.177[7][LF]
-            0.157[6][LF]
-          0.118[5][LF]
-            0.98[6][LF]
-              0.59[7][LF]
-      0.0[3][LF]
-remove node 38, payload 98[LF]
-Tree look:[LF]
-        0.934[4][LF]
-          0.875[5][LF]
-      0.816[3][LF]
-        0.757[4][LF]
-          0.698[5][LF]
-              0.659[7][LF]
-            0.639[6][LF]
-              0.600[7][LF]
-    0.541[2][LF]
-  0.393[1][LF]
-    0.334[2][LF]
-          0.275[5][LF]
-        0.216[4][LF]
-            0.177[6][LF]
-          0.157[5][LF]
-      0.118[3][LF]
-0.59[0][LF]
-  0.0[1][LF]
-remove node 39, payload 639[LF]
-Tree look:[LF]
-      0.934[3][LF]
-        0.875[4][LF]
-    0.816[2][LF]
-  0.757[1][LF]
-    0.698[2][LF]
-      0.659[3][LF]
-0.600[0][LF]
-  0.541[1][LF]
-    0.393[2][LF]
-        0.334[4][LF]
-              0.275[7][LF]
-            0.216[6][LF]
-                0.177[8][LF]
-              0.157[7][LF]
-          0.118[5][LF]
-      0.59[3][LF]
-        0.0[4][LF]
-remove node 40, payload 157[LF]
-Tree look:[LF]
-          0.934[5][LF]
-            0.875[6][LF]
-        0.816[4][LF]
-      0.757[3][LF]
-        0.698[4][LF]
-          0.659[5][LF]
-    0.600[2][LF]
-  0.541[1][LF]
-    0.393[2][LF]
-      0.334[3][LF]
-          0.275[5][LF]
-        0.216[4][LF]
-          0.177[5][LF]
-0.118[0][LF]
-  0.59[1][LF]
-    0.0[2][LF]
-remove node 41, payload 698[LF]
-Tree look:[LF]
-      0.934[3][LF]
-        0.875[4][LF]
-    0.816[2][LF]
-  0.757[1][LF]
-0.659[0][LF]
-  0.600[1][LF]
-    0.541[2][LF]
-        0.393[4][LF]
-          0.334[5][LF]
-              0.275[7][LF]
-            0.216[6][LF]
-              0.177[7][LF]
-      0.118[3][LF]
-        0.59[4][LF]
-          0.0[5][LF]
-remove node 42, payload 216[LF]
-Tree look:[LF]
-          0.934[5][LF]
-            0.875[6][LF]
-        0.816[4][LF]
-      0.757[3][LF]
-    0.659[2][LF]
-  0.600[1][LF]
-    0.541[2][LF]
-        0.393[4][LF]
-      0.334[3][LF]
-        0.275[4][LF]
-0.177[0][LF]
-  0.118[1][LF]
-    0.59[2][LF]
-      0.0[3][LF]
-remove node 43, payload 757[LF]
-Tree look:[LF]
-    0.934[2][LF]
-      0.875[3][LF]
-  0.816[1][LF]
-0.659[0][LF]
-  0.600[1][LF]
-      0.541[3][LF]
-          0.393[5][LF]
-        0.334[4][LF]
-          0.275[5][LF]
-    0.177[2][LF]
-      0.118[3][LF]
-        0.59[4][LF]
-          0.0[5][LF]
-remove node 44, payload 275[LF]
-Tree look:[LF]
-        0.934[4][LF]
-          0.875[5][LF]
-      0.816[3][LF]
-    0.659[2][LF]
-  0.600[1][LF]
-      0.541[3][LF]
-        0.393[4][LF]
-    0.334[2][LF]
-0.177[0][LF]
-  0.118[1][LF]
-    0.59[2][LF]
-      0.0[3][LF]
-remove node 45, payload 816[LF]
-Tree look:[LF]
-  0.934[1][LF]
-    0.875[2][LF]
-0.659[0][LF]
-  0.600[1][LF]
-        0.541[4][LF]
-          0.393[5][LF]
-      0.334[3][LF]
-    0.177[2][LF]
-      0.118[3][LF]
-        0.59[4][LF]
-          0.0[5][LF]
-remove node 46, payload 334[LF]
-Tree look:[LF]
-      0.934[3][LF]
-        0.875[4][LF]
-    0.659[2][LF]
-  0.600[1][LF]
-    0.541[2][LF]
-      0.393[3][LF]
-0.177[0][LF]
-  0.118[1][LF]
-    0.59[2][LF]
-      0.0[3][LF]
-remove node 47, payload 875[LF]
-Tree look:[LF]
-  0.934[1][LF]
-0.659[0][LF]
-  0.600[1][LF]
-      0.541[3][LF]
-        0.393[4][LF]
-    0.177[2][LF]
-      0.118[3][LF]
-        0.59[4][LF]
-          0.0[5][LF]
-remove node 48, payload 393[LF]
-Tree look:[LF]
-      0.934[3][LF]
-    0.659[2][LF]
-  0.600[1][LF]
-    0.541[2][LF]
-0.177[0][LF]
-  0.118[1][LF]
-    0.59[2][LF]
-      0.0[3][LF]
-remove node 49, payload 934[LF]
-Tree look:[LF]
-0.659[0][LF]
-  0.600[1][LF]
-      0.541[3][LF]
-    0.177[2][LF]
-      0.118[3][LF]
-        0.59[4][LF]
-          0.0[5][LF]
-remove node 0, payload 0[LF]
-Tree look:[LF]
-  0.659[1][LF]
-0.600[0][LF]
-      0.541[3][LF]
-    0.177[2][LF]
-  0.118[1][LF]
-    0.59[2][LF]
-remove node 1, payload 541[LF]
-Tree look:[LF]
-    0.659[2][LF]
-  0.600[1][LF]
-0.177[0][LF]
-  0.118[1][LF]
-    0.59[2][LF]
-remove node 2, payload 59[LF]
-Tree look:[LF]
-      0.659[3][LF]
-    0.600[2][LF]
-  0.177[1][LF]
-0.118[0][LF]
-remove node 3, payload 600[LF]
-Tree look:[LF]
-  0.659[1][LF]
-0.177[0][LF]
-  0.118[1][LF]
-remove node 4, payload 118[LF]
-Tree look:[LF]
-  0.659[1][LF]
-0.177[0][LF]
-remove node 5, payload 659[LF]
-Tree look:[LF]
-0.177[0][LF]
-remove node 6, payload 177[LF]
-Removing nodes not larger than 0[LF]
-removed payload 0[0][LF]
-Removing nodes not larger than 100[LF]
-removed payload 39[0][LF]
-removed payload 49[0][LF]
-removed payload 49[1][LF]
-removed payload 59[0][LF]
-removed payload 59[1][LF]
-removed payload 59[2][LF]
-removed payload 98[0][LF]
-removed payload 98[1][LF]
-removed payload 98[2][LF]
-Removing nodes not larger than 200[LF]
-removed payload 108[0][LF]
-removed payload 118[0][LF]
-removed payload 118[1][LF]
-removed payload 157[0][LF]
-removed payload 157[1][LF]
-removed payload 167[0][LF]
-removed payload 167[1][LF]
-removed payload 167[2][LF]
-removed payload 177[0][LF]
-Removing nodes not larger than 300[LF]
-removed payload 216[0][LF]
-removed payload 226[0][LF]
-removed payload 226[1][LF]
-removed payload 236[0][LF]
-removed payload 236[1][LF]
-removed payload 236[2][LF]
-removed payload 275[0][LF]
-removed payload 275[1][LF]
-removed payload 275[2][LF]
-removed payload 285[0][LF]
-removed payload 295[0][LF]
-removed payload 295[1][LF]
-Removing nodes not larger than 400[LF]
-removed payload 334[0][LF]
-removed payload 334[1][LF]
-removed payload 344[0][LF]
-removed payload 344[1][LF]
-removed payload 344[2][LF]
-removed payload 354[0][LF]
-removed payload 393[0][LF]
-Removing nodes not larger than 500[LF]
-removed payload 403[0][LF]
-removed payload 403[1][LF]
-removed payload 413[0][LF]
-removed payload 413[1][LF]
-removed payload 413[2][LF]
-removed payload 462[0][LF]
-removed payload 472[0][LF]
-removed payload 472[1][LF]
-Removing nodes not larger than 600[LF]
-removed payload 521[0][LF]
-removed payload 521[1][LF]
-removed payload 521[2][LF]
-removed payload 531[0][LF]
-removed payload 541[0][LF]
-removed payload 541[1][LF]
-removed payload 580[0][LF]
-removed payload 580[1][LF]
-removed payload 590[0][LF]
-removed payload 590[1][LF]
-removed payload 590[2][LF]
-removed payload 600[0][LF]
-Removing nodes not larger than 700[LF]
-removed payload 639[0][LF]
-removed payload 649[0][LF]
-removed payload 649[1][LF]
-removed payload 659[0][LF]
-removed payload 659[1][LF]
-removed payload 659[2][LF]
-removed payload 698[0][LF]
-removed payload 698[1][LF]
-removed payload 698[2][LF]
-Removing nodes not larger than 800[LF]
-removed payload 708[0][LF]
-removed payload 718[0][LF]
-removed payload 718[1][LF]
-removed payload 757[0][LF]
-removed payload 757[1][LF]
-removed payload 767[0][LF]
-removed payload 767[1][LF]
-removed payload 767[2][LF]
-removed payload 777[0][LF]
-Removing nodes not larger than 900[LF]
-removed payload 816[0][LF]
-removed payload 826[0][LF]
-removed payload 826[1][LF]
-removed payload 836[0][LF]
-removed payload 836[1][LF]
-removed payload 836[2][LF]
-removed payload 875[0][LF]
-removed payload 875[1][LF]
-removed payload 875[2][LF]
-removed payload 885[0][LF]
-removed payload 895[0][LF]
-removed payload 895[1][LF]
-Removing nodes not larger than 1000[LF]
-removed payload 934[0][LF]
-removed payload 934[1][LF]
-removed payload 944[0][LF]
-removed payload 944[1][LF]
-removed payload 944[2][LF]
-removed payload 954[0][LF]
-Removing nodes not larger than 1100[LF]
-removed payload 1003[0][LF]
-removed payload 1003[1][LF]
-removed payload 1013[0][LF]
-removed payload 1013[1][LF]
-removed payload 1013[2][LF]
-Removing nodes not larger than 0[LF]
-removed payload 0[timeout=0][LF]
-Removing nodes not larger than 32[LF]
-removed payload 31[timeout=3][LF]
-removed payload 9[timeout=5][LF]
-removed payload 40[timeout=8][LF]
-removed payload 18[timeout=10][LF]
-removed payload 49[timeout=13][LF]
-removed payload 27[timeout=15][LF]
-removed payload 5[timeout=17][LF]
-removed payload 36[timeout=20][LF]
-removed payload 14[timeout=22][LF]
-removed payload 45[timeout=25][LF]
-removed payload 23[timeout=27][LF]
-removed payload 1[timeout=29][LF]
-removed payload 32[timeout=32][LF]
-Removing nodes not larger than 64[LF]
-removed payload 10[timeout=34][LF]
-removed payload 41[timeout=37][LF]
-removed payload 19[timeout=39][LF]
-removed payload 28[timeout=44][LF]
-removed payload 6[timeout=46][LF]
-removed payload 37[timeout=49][LF]
-removed payload 15[timeout=51][LF]
-removed payload 46[timeout=54][LF]
-removed payload 24[timeout=56][LF]
-removed payload 2[timeout=58][LF]
-removed payload 33[timeout=61][LF]
-removed payload 11[timeout=63][LF]
-Removing nodes not larger than 96[LF]
-removed payload 42[timeout=66][LF]
-removed payload 20[timeout=68][LF]
-removed payload 29[timeout=73][LF]
-removed payload 7[timeout=75][LF]
-removed payload 38[timeout=78][LF]
-removed payload 16[timeout=80][LF]
-removed payload 47[timeout=83][LF]
-removed payload 25[timeout=85][LF]
-removed payload 3[timeout=87][LF]
-removed payload 34[timeout=90][LF]
-removed payload 12[timeout=92][LF]
-removed payload 43[timeout=95][LF]
-Removing nodes not larger than 128[LF]
-removed payload 21[timeout=97][LF]
-removed payload 30[timeout=102][LF]
-removed payload 8[timeout=104][LF]
-removed payload 39[timeout=107][LF]
-removed payload 17[timeout=109][LF]
-removed payload 48[timeout=112][LF]
-removed payload 26[timeout=114][LF]
-removed payload 4[timeout=116][LF]
-removed payload 35[timeout=119][LF]
-removed payload 13[timeout=121][LF]
-removed payload 44[timeout=124][LF]
-removed payload 22[timeout=126][LF]
== Contents of files in the log/5/ directory after test 1309
=== Start of file check-expected
 Result:[LF]
       0.1013[3][LF]
     0.1003[2][LF]
       0.954[3][LF]
   0.944[1][LF]
 0.934[0][LF]
   0.895[1][LF]
         0.885[4][LF]
       0.875[3][LF]
         0.836[4][LF]
               0.826[7][LF]
             0.816[6][LF]
           0.777[5][LF]
                   0.767[9][LF]
                 0.757[8][LF]
               0.718[7][LF]
                     0.708[10][LF]
                   0.698[9][LF]
                 0.659[8][LF]
                   0.649[9][LF]
                     0.639[10][LF]
                         0.600[12][LF]
                           0.590[13][LF]
                       0.580[11][LF]
             0.541[6][LF]
                   0.531[9][LF]
                     0.521[10][LF]
                 0.472[8][LF]
                   0.462[9][LF]
               0.413[7][LF]
     0.403[2][LF]
       0.393[3][LF]
           0.354[5][LF]
         0.344[4][LF]
           0.334[5][LF]
               0.295[7][LF]
             0.285[6][LF]
               0.275[7][LF]
                   0.236[9][LF]
                 0.226[8][LF]
                   0.216[9][LF]
                       0.177[11][LF]
                         0.167[12][LF]
                     0.157[10][LF]
                       0.118[11][LF]
                           0.108[13][LF]
                         0.98[12][LF]
                           0.59[13][LF]
                               0.49[15][LF]
                             0.39[14][LF]
                               0.0[15][LF]
 Tree look:[LF]
       0.1013[3][LF]
     0.1003[2][LF]
       0.954[3][LF]
   0.944[1][LF]
 0.934[0][LF]
   0.895[1][LF]
         0.885[4][LF]
       0.875[3][LF]
         0.836[4][LF]
               0.826[7][LF]
             0.816[6][LF]
           0.777[5][LF]
                   0.767[9][LF]
                 0.757[8][LF]
               0.718[7][LF]
                     0.708[10][LF]
                   0.698[9][LF]
                 0.659[8][LF]
                   0.649[9][LF]
                     0.639[10][LF]
                         0.600[12][LF]
                           0.590[13][LF]
                       0.580[11][LF]
             0.541[6][LF]
                   0.531[9][LF]
                     0.521[10][LF]
                 0.472[8][LF]
                   0.462[9][LF]
               0.413[7][LF]
     0.403[2][LF]
       0.393[3][LF]
           0.354[5][LF]
         0.344[4][LF]
           0.334[5][LF]
               0.295[7][LF]
             0.285[6][LF]
               0.275[7][LF]
                   0.236[9][LF]
                 0.226[8][LF]
                   0.216[9][LF]
                       0.177[11][LF]
                         0.167[12][LF]
                     0.157[10][LF]
                       0.118[11][LF]
                           0.108[13][LF]
                         0.98[12][LF]
                           0.59[13][LF]
                               0.49[15][LF]
                             0.39[14][LF]
                               0.0[15][LF]
 remove node 7, payload 718[LF]
 Tree look:[LF]
           0.1013[5][LF]
         0.1003[4][LF]
           0.954[5][LF]
       0.944[3][LF]
     0.934[2][LF]
   0.895[1][LF]
         0.885[4][LF]
       0.875[3][LF]
     0.836[2][LF]
           0.826[5][LF]
         0.816[4][LF]
       0.777[3][LF]
           0.767[5][LF]
         0.757[4][LF]
 0.708[0][LF]
     0.698[2][LF]
       0.659[3][LF]
         0.649[4][LF]
           0.639[5][LF]
               0.600[7][LF]
                 0.590[8][LF]
             0.580[6][LF]
   0.541[1][LF]
           0.531[5][LF]
             0.521[6][LF]
         0.472[4][LF]
           0.462[5][LF]
       0.413[3][LF]
     0.403[2][LF]
       0.393[3][LF]
           0.354[5][LF]
         0.344[4][LF]
           0.334[5][LF]
               0.295[7][LF]
             0.285[6][LF]
               0.275[7][LF]
                   0.236[9][LF]
                 0.226[8][LF]
                   0.216[9][LF]
                       0.177[11][LF]
                         0.167[12][LF]
                     0.157[10][LF]
                       0.118[11][LF]
                           0.108[13][LF]
                         0.98[12][LF]
                           0.59[13][LF]
                               0.49[15][LF]
                             0.39[14][LF]
                               0.0[15][LF]
 remove node 8, payload 236[LF]
 Tree look:[LF]
               0.1013[7][LF]
             0.1003[6][LF]
               0.954[7][LF]
           0.944[5][LF]
         0.934[4][LF]
       0.895[3][LF]
             0.885[6][LF]
           0.875[5][LF]
         0.836[4][LF]
               0.826[7][LF]
             0.816[6][LF]
           0.777[5][LF]
               0.767[7][LF]
             0.757[6][LF]
     0.708[2][LF]
       0.698[3][LF]
         0.659[4][LF]
           0.649[5][LF]
             0.639[6][LF]
                 0.600[8][LF]
                   0.590[9][LF]
               0.580[7][LF]
   0.541[1][LF]
             0.531[6][LF]
               0.521[7][LF]
           0.472[5][LF]
             0.462[6][LF]
         0.413[4][LF]
       0.403[3][LF]
     0.393[2][LF]
           0.354[5][LF]
         0.344[4][LF]
       0.334[3][LF]
             0.295[6][LF]
           0.285[5][LF]
         0.275[4][LF]
 0.226[0][LF]
   0.216[1][LF]
       0.177[3][LF]
         0.167[4][LF]
     0.157[2][LF]
       0.118[3][LF]
           0.108[5][LF]
         0.98[4][LF]
           0.59[5][LF]
               0.49[7][LF]
             0.39[6][LF]
               0.0[7][LF]
 remove node 9, payload 777[LF]
 Tree look:[LF]
             0.1013[6][LF]
           0.1003[5][LF]
             0.954[6][LF]
         0.944[4][LF]
       0.934[3][LF]
     0.895[2][LF]
         0.885[4][LF]
       0.875[3][LF]
   0.836[1][LF]
       0.826[3][LF]
     0.816[2][LF]
 0.767[0][LF]
     0.757[2][LF]
   0.708[1][LF]
       0.698[3][LF]
         0.659[4][LF]
           0.649[5][LF]
             0.639[6][LF]
                 0.600[8][LF]
                   0.590[9][LF]
               0.580[7][LF]
     0.541[2][LF]
                 0.531[8][LF]
                   0.521[9][LF]
               0.472[7][LF]
                 0.462[8][LF]
             0.413[6][LF]
           0.403[5][LF]
         0.393[4][LF]
               0.354[7][LF]
             0.344[6][LF]
           0.334[5][LF]
                 0.295[8][LF]
               0.285[7][LF]
             0.275[6][LF]
       0.226[3][LF]
         0.216[4][LF]
             0.177[6][LF]
               0.167[7][LF]
           0.157[5][LF]
             0.118[6][LF]
                 0.108[8][LF]
               0.98[7][LF]
                 0.59[8][LF]
                     0.49[10][LF]
                   0.39[9][LF]
                     0.0[10][LF]
 remove node 10, payload 295[LF]
 Tree look:[LF]
                 0.1013[8][LF]
               0.1003[7][LF]
                 0.954[8][LF]
             0.944[6][LF]
           0.934[5][LF]
         0.895[4][LF]
             0.885[6][LF]
           0.875[5][LF]
       0.836[3][LF]
           0.826[5][LF]
         0.816[4][LF]
     0.767[2][LF]
       0.757[3][LF]
   0.708[1][LF]
       0.698[3][LF]
         0.659[4][LF]
           0.649[5][LF]
             0.639[6][LF]
                 0.600[8][LF]
                   0.590[9][LF]
               0.580[7][LF]
     0.541[2][LF]
                 0.531[8][LF]
                   0.521[9][LF]
               0.472[7][LF]
                 0.462[8][LF]
             0.413[6][LF]
           0.403[5][LF]
         0.393[4][LF]
             0.354[6][LF]
           0.344[5][LF]
       0.334[3][LF]
 0.285[0][LF]
     0.275[2][LF]
   0.226[1][LF]
     0.216[2][LF]
         0.177[4][LF]
           0.167[5][LF]
       0.157[3][LF]
         0.118[4][LF]
             0.108[6][LF]
           0.98[5][LF]
             0.59[6][LF]
                 0.49[8][LF]
               0.39[7][LF]
                 0.0[8][LF]
 remove node 11, payload 836[LF]
 Tree look:[LF]
           0.1013[5][LF]
         0.1003[4][LF]
           0.954[5][LF]
       0.944[3][LF]
     0.934[2][LF]
   0.895[1][LF]
       0.885[3][LF]
     0.875[2][LF]
 0.826[0][LF]
     0.816[2][LF]
   0.767[1][LF]
       0.757[3][LF]
     0.708[2][LF]
           0.698[5][LF]
             0.659[6][LF]
               0.649[7][LF]
                 0.639[8][LF]
                     0.600[10][LF]
                       0.590[11][LF]
                   0.580[9][LF]
         0.541[4][LF]
                     0.531[10][LF]
                       0.521[11][LF]
                   0.472[9][LF]
                     0.462[10][LF]
                 0.413[8][LF]
               0.403[7][LF]
             0.393[6][LF]
                 0.354[8][LF]
               0.344[7][LF]
           0.334[5][LF]
       0.285[3][LF]
           0.275[5][LF]
         0.226[4][LF]
           0.216[5][LF]
               0.177[7][LF]
                 0.167[8][LF]
             0.157[6][LF]
               0.118[7][LF]
                   0.108[9][LF]
                 0.98[8][LF]
                   0.59[9][LF]
                       0.49[11][LF]
                     0.39[10][LF]
                       0.0[11][LF]
 remove node 12, payload 354[LF]
 Tree look:[LF]
               0.1013[7][LF]
             0.1003[6][LF]
               0.954[7][LF]
           0.944[5][LF]
         0.934[4][LF]
       0.895[3][LF]
           0.885[5][LF]
         0.875[4][LF]
     0.826[2][LF]
       0.816[3][LF]
   0.767[1][LF]
       0.757[3][LF]
     0.708[2][LF]
         0.698[4][LF]
           0.659[5][LF]
             0.649[6][LF]
               0.639[7][LF]
                   0.600[9][LF]
                     0.590[10][LF]
                 0.580[8][LF]
       0.541[3][LF]
                 0.531[8][LF]
                   0.521[9][LF]
               0.472[7][LF]
                 0.462[8][LF]
             0.413[6][LF]
           0.403[5][LF]
         0.393[4][LF]
 0.344[0][LF]
   0.334[1][LF]
     0.285[2][LF]
         0.275[4][LF]
       0.226[3][LF]
         0.216[4][LF]
             0.177[6][LF]
               0.167[7][LF]
           0.157[5][LF]
             0.118[6][LF]
                 0.108[8][LF]
               0.98[7][LF]
                 0.59[8][LF]
                     0.49[10][LF]
                   0.39[9][LF]
                     0.0[10][LF]
 remove node 13, payload 895[LF]
 Tree look:[LF]
         0.1013[4][LF]
       0.1003[3][LF]
         0.954[4][LF]
     0.944[2][LF]
   0.934[1][LF]
 0.885[0][LF]
     0.875[2][LF]
   0.826[1][LF]
       0.816[3][LF]
     0.767[2][LF]
           0.757[5][LF]
         0.708[4][LF]
             0.698[6][LF]
               0.659[7][LF]
                 0.649[8][LF]
                   0.639[9][LF]
                       0.600[11][LF]
                         0.590[12][LF]
                     0.580[10][LF]
           0.541[5][LF]
                     0.531[10][LF]
                       0.521[11][LF]
                   0.472[9][LF]
                     0.462[10][LF]
                 0.413[8][LF]
               0.403[7][LF]
             0.393[6][LF]
       0.344[3][LF]
         0.334[4][LF]
           0.285[5][LF]
               0.275[7][LF]
             0.226[6][LF]
               0.216[7][LF]
                   0.177[9][LF]
                     0.167[10][LF]
                 0.157[8][LF]
                   0.118[9][LF]
                       0.108[11][LF]
                     0.98[10][LF]
                       0.59[11][LF]
                           0.49[13][LF]
                         0.39[12][LF]
                           0.0[13][LF]
 remove node 14, payload 413[LF]
 Tree look:[LF]
             0.1013[6][LF]
           0.1003[5][LF]
             0.954[6][LF]
         0.944[4][LF]
       0.934[3][LF]
     0.885[2][LF]
       0.875[3][LF]
   0.826[1][LF]
       0.816[3][LF]
     0.767[2][LF]
           0.757[5][LF]
         0.708[4][LF]
           0.698[5][LF]
             0.659[6][LF]
               0.649[7][LF]
                 0.639[8][LF]
                     0.600[10][LF]
                       0.590[11][LF]
                   0.580[9][LF]
       0.541[3][LF]
           0.531[5][LF]
             0.521[6][LF]
         0.472[4][LF]
           0.462[5][LF]
 0.403[0][LF]
     0.393[2][LF]
   0.344[1][LF]
     0.334[2][LF]
       0.285[3][LF]
           0.275[5][LF]
         0.226[4][LF]
           0.216[5][LF]
               0.177[7][LF]
                 0.167[8][LF]
             0.157[6][LF]
               0.118[7][LF]
                   0.108[9][LF]
                 0.98[8][LF]
                   0.59[9][LF]
                       0.49[11][LF]
                     0.39[10][LF]
                       0.0[11][LF]
 remove node 15, payload 954[LF]
 Tree look:[LF]
     0.1013[2][LF]
   0.1003[1][LF]
 0.944[0][LF]
   0.934[1][LF]
       0.885[3][LF]
         0.875[4][LF]
     0.826[2][LF]
           0.816[5][LF]
         0.767[4][LF]
               0.757[7][LF]
             0.708[6][LF]
               0.698[7][LF]
                 0.659[8][LF]
                   0.649[9][LF]
                     0.639[10][LF]
                         0.600[12][LF]
                           0.590[13][LF]
                       0.580[11][LF]
           0.541[5][LF]
               0.531[7][LF]
                 0.521[8][LF]
             0.472[6][LF]
               0.462[7][LF]
       0.403[3][LF]
           0.393[5][LF]
         0.344[4][LF]
           0.334[5][LF]
             0.285[6][LF]
                 0.275[8][LF]
               0.226[7][LF]
                 0.216[8][LF]
                     0.177[10][LF]
                       0.167[11][LF]
                   0.157[9][LF]
                     0.118[10][LF]
                         0.108[12][LF]
                       0.98[11][LF]
                         0.59[12][LF]
                             0.49[14][LF]
                           0.39[13][LF]
                             0.0[14][LF]
 remove node 16, payload 472[LF]
 Tree look:[LF]
         0.1013[4][LF]
       0.1003[3][LF]
     0.944[2][LF]
   0.934[1][LF]
       0.885[3][LF]
         0.875[4][LF]
     0.826[2][LF]
           0.816[5][LF]
         0.767[4][LF]
             0.757[6][LF]
           0.708[5][LF]
             0.698[6][LF]
               0.659[7][LF]
                 0.649[8][LF]
                   0.639[9][LF]
                       0.600[11][LF]
                         0.590[12][LF]
                     0.580[10][LF]
       0.541[3][LF]
         0.531[4][LF]
           0.521[5][LF]
 0.462[0][LF]
   0.403[1][LF]
       0.393[3][LF]
     0.344[2][LF]
       0.334[3][LF]
         0.285[4][LF]
             0.275[6][LF]
           0.226[5][LF]
             0.216[6][LF]
                 0.177[8][LF]
                   0.167[9][LF]
               0.157[7][LF]
                 0.118[8][LF]
                     0.108[10][LF]
                   0.98[9][LF]
                     0.59[10][LF]
                         0.49[12][LF]
                       0.39[11][LF]
                         0.0[12][LF]
 remove node 17, payload 1013[LF]
 Tree look:[LF]
 0.1003[0][LF]
     0.944[2][LF]
   0.934[1][LF]
         0.885[4][LF]
           0.875[5][LF]
       0.826[3][LF]
             0.816[6][LF]
           0.767[5][LF]
               0.757[7][LF]
             0.708[6][LF]
               0.698[7][LF]
                 0.659[8][LF]
                   0.649[9][LF]
                     0.639[10][LF]
                         0.600[12][LF]
                           0.590[13][LF]
                       0.580[11][LF]
         0.541[4][LF]
           0.531[5][LF]
             0.521[6][LF]
     0.462[2][LF]
       0.403[3][LF]
           0.393[5][LF]
         0.344[4][LF]
           0.334[5][LF]
             0.285[6][LF]
                 0.275[8][LF]
               0.226[7][LF]
                 0.216[8][LF]
                     0.177[10][LF]
                       0.167[11][LF]
                   0.157[9][LF]
                     0.118[10][LF]
                         0.108[12][LF]
                       0.98[11][LF]
                         0.59[12][LF]
                             0.49[14][LF]
                           0.39[13][LF]
                             0.0[14][LF]
 remove node 18, payload 531[LF]
 Tree look:[LF]
     0.1003[2][LF]
       0.944[3][LF]
   0.934[1][LF]
         0.885[4][LF]
           0.875[5][LF]
       0.826[3][LF]
           0.816[5][LF]
         0.767[4][LF]
             0.757[6][LF]
           0.708[5][LF]
             0.698[6][LF]
               0.659[7][LF]
                 0.649[8][LF]
                   0.639[9][LF]
                       0.600[11][LF]
                         0.590[12][LF]
                     0.580[10][LF]
     0.541[2][LF]
 0.521[0][LF]
   0.462[1][LF]
     0.403[2][LF]
         0.393[4][LF]
       0.344[3][LF]
         0.334[4][LF]
           0.285[5][LF]
               0.275[7][LF]
             0.226[6][LF]
               0.216[7][LF]
                   0.177[9][LF]
                     0.167[10][LF]
                 0.157[8][LF]
                   0.118[9][LF]
                       0.108[11][LF]
                     0.98[10][LF]
                       0.59[11][LF]
                           0.49[13][LF]
                         0.39[12][LF]
                           0.0[13][LF]
 remove node 19, payload 49[LF]
 Tree look:[LF]
         0.1003[4][LF]
           0.944[5][LF]
       0.934[3][LF]
             0.885[6][LF]
               0.875[7][LF]
           0.826[5][LF]
               0.816[7][LF]
             0.767[6][LF]
                 0.757[8][LF]
               0.708[7][LF]
                 0.698[8][LF]
                   0.659[9][LF]
                     0.649[10][LF]
                       0.639[11][LF]
                           0.600[13][LF]
                             0.590[14][LF]
                         0.580[12][LF]
         0.541[4][LF]
     0.521[2][LF]
   0.462[1][LF]
       0.403[3][LF]
         0.393[4][LF]
     0.344[2][LF]
         0.334[4][LF]
       0.285[3][LF]
             0.275[6][LF]
           0.226[5][LF]
         0.216[4][LF]
               0.177[7][LF]
                 0.167[8][LF]
             0.157[6][LF]
           0.118[5][LF]
                 0.108[8][LF]
               0.98[7][LF]
             0.59[6][LF]
 0.39[0][LF]
   0.0[1][LF]
 remove node 20, payload 590[LF]
 Tree look:[LF]
     0.1003[2][LF]
       0.944[3][LF]
   0.934[1][LF]
         0.885[4][LF]
           0.875[5][LF]
       0.826[3][LF]
         0.816[4][LF]
     0.767[2][LF]
           0.757[5][LF]
         0.708[4][LF]
       0.698[3][LF]
           0.659[5][LF]
         0.649[4][LF]
           0.639[5][LF]
             0.600[6][LF]
 0.580[0][LF]
     0.541[2][LF]
   0.521[1][LF]
     0.462[2][LF]
           0.403[5][LF]
             0.393[6][LF]
         0.344[4][LF]
             0.334[6][LF]
           0.285[5][LF]
                 0.275[8][LF]
               0.226[7][LF]
             0.216[6][LF]
                   0.177[9][LF]
                     0.167[10][LF]
                 0.157[8][LF]
               0.118[7][LF]
                     0.108[10][LF]
                   0.98[9][LF]
                 0.59[8][LF]
       0.39[3][LF]
         0.0[4][LF]
 remove node 21, payload 108[LF]
 Tree look:[LF]
         0.1003[4][LF]
           0.944[5][LF]
       0.934[3][LF]
             0.885[6][LF]
               0.875[7][LF]
           0.826[5][LF]
             0.816[6][LF]
         0.767[4][LF]
               0.757[7][LF]
             0.708[6][LF]
           0.698[5][LF]
               0.659[7][LF]
             0.649[6][LF]
               0.639[7][LF]
                 0.600[8][LF]
     0.580[2][LF]
       0.541[3][LF]
   0.521[1][LF]
     0.462[2][LF]
           0.403[5][LF]
             0.393[6][LF]
         0.344[4][LF]
           0.334[5][LF]
       0.285[3][LF]
               0.275[7][LF]
             0.226[6][LF]
           0.216[5][LF]
               0.177[7][LF]
                 0.167[8][LF]
             0.157[6][LF]
         0.118[4][LF]
 0.98[0][LF]
     0.59[2][LF]
   0.39[1][LF]
     0.0[2][LF]
 remove node 22, payload 649[LF]
 Tree look:[LF]
       0.1003[3][LF]
         0.944[4][LF]
     0.934[2][LF]
         0.885[4][LF]
           0.875[5][LF]
       0.826[3][LF]
         0.816[4][LF]
   0.767[1][LF]
         0.757[4][LF]
       0.708[3][LF]
     0.698[2][LF]
       0.659[3][LF]
 0.639[0][LF]
     0.600[2][LF]
   0.580[1][LF]
       0.541[3][LF]
     0.521[2][LF]
         0.462[4][LF]
               0.403[7][LF]
                 0.393[8][LF]
             0.344[6][LF]
               0.334[7][LF]
           0.285[5][LF]
                   0.275[9][LF]
                 0.226[8][LF]
               0.216[7][LF]
                   0.177[9][LF]
                     0.167[10][LF]
                 0.157[8][LF]
             0.118[6][LF]
       0.98[3][LF]
           0.59[5][LF]
         0.39[4][LF]
           0.0[5][LF]
 remove node 23, payload 167[LF]
 Tree look:[LF]
           0.1003[5][LF]
             0.944[6][LF]
         0.934[4][LF]
             0.885[6][LF]
               0.875[7][LF]
           0.826[5][LF]
             0.816[6][LF]
       0.767[3][LF]
             0.757[6][LF]
           0.708[5][LF]
         0.698[4][LF]
           0.659[5][LF]
     0.639[2][LF]
       0.600[3][LF]
   0.580[1][LF]
       0.541[3][LF]
     0.521[2][LF]
         0.462[4][LF]
             0.403[6][LF]
               0.393[7][LF]
           0.344[5][LF]
             0.334[6][LF]
       0.285[3][LF]
             0.275[6][LF]
           0.226[5][LF]
         0.216[4][LF]
           0.177[5][LF]
 0.157[0][LF]
   0.118[1][LF]
     0.98[2][LF]
         0.59[4][LF]
       0.39[3][LF]
         0.0[4][LF]
 remove node 24, payload 708[LF]
 Tree look:[LF]
       0.1003[3][LF]
         0.944[4][LF]
     0.934[2][LF]
         0.885[4][LF]
           0.875[5][LF]
       0.826[3][LF]
         0.816[4][LF]
   0.767[1][LF]
     0.757[2][LF]
 0.698[0][LF]
     0.659[2][LF]
   0.639[1][LF]
       0.600[3][LF]
     0.580[2][LF]
           0.541[5][LF]
         0.521[4][LF]
             0.462[6][LF]
                 0.403[8][LF]
                   0.393[9][LF]
               0.344[7][LF]
                 0.334[8][LF]
           0.285[5][LF]
                 0.275[8][LF]
               0.226[7][LF]
             0.216[6][LF]
               0.177[7][LF]
       0.157[3][LF]
         0.118[4][LF]
           0.98[5][LF]
               0.59[7][LF]
             0.39[6][LF]
               0.0[7][LF]
 remove node 25, payload 226[LF]
 Tree look:[LF]
           0.1003[5][LF]
             0.944[6][LF]
         0.934[4][LF]
             0.885[6][LF]
               0.875[7][LF]
           0.826[5][LF]
             0.816[6][LF]
       0.767[3][LF]
         0.757[4][LF]
     0.698[2][LF]
       0.659[3][LF]
   0.639[1][LF]
       0.600[3][LF]
     0.580[2][LF]
           0.541[5][LF]
         0.521[4][LF]
           0.462[5][LF]
               0.403[7][LF]
                 0.393[8][LF]
             0.344[6][LF]
               0.334[7][LF]
       0.285[3][LF]
         0.275[4][LF]
 0.216[0][LF]
     0.177[2][LF]
   0.157[1][LF]
     0.118[2][LF]
       0.98[3][LF]
           0.59[5][LF]
         0.39[4][LF]
           0.0[5][LF]
 remove node 26, payload 767[LF]
 Tree look:[LF]
     0.1003[2][LF]
       0.944[3][LF]
   0.934[1][LF]
       0.885[3][LF]
         0.875[4][LF]
     0.826[2][LF]
       0.816[3][LF]
 0.757[0][LF]
   0.698[1][LF]
       0.659[3][LF]
     0.639[2][LF]
           0.600[5][LF]
         0.580[4][LF]
               0.541[7][LF]
             0.521[6][LF]
               0.462[7][LF]
                   0.403[9][LF]
                     0.393[10][LF]
                 0.344[8][LF]
                   0.334[9][LF]
           0.285[5][LF]
             0.275[6][LF]
       0.216[3][LF]
           0.177[5][LF]
         0.157[4][LF]
           0.118[5][LF]
             0.98[6][LF]
                 0.59[8][LF]
               0.39[7][LF]
                 0.0[8][LF]
 remove node 27, payload 285[LF]
 Tree look:[LF]
         0.1003[4][LF]
           0.944[5][LF]
       0.934[3][LF]
           0.885[5][LF]
             0.875[6][LF]
         0.826[4][LF]
           0.816[5][LF]
     0.757[2][LF]
   0.698[1][LF]
       0.659[3][LF]
     0.639[2][LF]
         0.600[4][LF]
       0.580[3][LF]
           0.541[5][LF]
         0.521[4][LF]
           0.462[5][LF]
               0.403[7][LF]
                 0.393[8][LF]
             0.344[6][LF]
               0.334[7][LF]
 0.275[0][LF]
   0.216[1][LF]
       0.177[3][LF]
     0.157[2][LF]
       0.118[3][LF]
         0.98[4][LF]
             0.59[6][LF]
           0.39[5][LF]
             0.0[6][LF]
 remove node 28, payload 826[LF]
 Tree look:[LF]
     0.1003[2][LF]
       0.944[3][LF]
   0.934[1][LF]
     0.885[2][LF]
       0.875[3][LF]
 0.816[0][LF]
   0.757[1][LF]
     0.698[2][LF]
           0.659[5][LF]
         0.639[4][LF]
             0.600[6][LF]
           0.580[5][LF]
               0.541[7][LF]
             0.521[6][LF]
               0.462[7][LF]
                   0.403[9][LF]
                     0.393[10][LF]
                 0.344[8][LF]
                   0.334[9][LF]
       0.275[3][LF]
         0.216[4][LF]
             0.177[6][LF]
           0.157[5][LF]
             0.118[6][LF]
               0.98[7][LF]
                   0.59[9][LF]
                 0.39[8][LF]
                   0.0[9][LF]
 remove node 29, payload 344[LF]
 Tree look:[LF]
         0.1003[4][LF]
           0.944[5][LF]
       0.934[3][LF]
         0.885[4][LF]
           0.875[5][LF]
     0.816[2][LF]
   0.757[1][LF]
     0.698[2][LF]
           0.659[5][LF]
         0.639[4][LF]
           0.600[5][LF]
       0.580[3][LF]
             0.541[6][LF]
           0.521[5][LF]
         0.462[4][LF]
           0.403[5][LF]
             0.393[6][LF]
 0.334[0][LF]
   0.275[1][LF]
     0.216[2][LF]
         0.177[4][LF]
       0.157[3][LF]
         0.118[4][LF]
           0.98[5][LF]
               0.59[7][LF]
             0.39[6][LF]
               0.0[7][LF]
 remove node 30, payload 885[LF]
 Tree look:[LF]
     0.1003[2][LF]
       0.944[3][LF]
   0.934[1][LF]
 0.875[0][LF]
   0.816[1][LF]
     0.757[2][LF]
         0.698[4][LF]
               0.659[7][LF]
             0.639[6][LF]
               0.600[7][LF]
           0.580[5][LF]
                 0.541[8][LF]
               0.521[7][LF]
             0.462[6][LF]
               0.403[7][LF]
                 0.393[8][LF]
       0.334[3][LF]
         0.275[4][LF]
           0.216[5][LF]
               0.177[7][LF]
             0.157[6][LF]
               0.118[7][LF]
                 0.98[8][LF]
                     0.59[10][LF]
                   0.39[9][LF]
                     0.0[10][LF]
 remove node 31, payload 403[LF]
 Tree look:[LF]
         0.1003[4][LF]
           0.944[5][LF]
       0.934[3][LF]
     0.875[2][LF]
   0.816[1][LF]
     0.757[2][LF]
         0.698[4][LF]
             0.659[6][LF]
           0.639[5][LF]
             0.600[6][LF]
       0.580[3][LF]
             0.541[6][LF]
           0.521[5][LF]
         0.462[4][LF]
 0.393[0][LF]
   0.334[1][LF]
     0.275[2][LF]
       0.216[3][LF]
           0.177[5][LF]
         0.157[4][LF]
           0.118[5][LF]
             0.98[6][LF]
                 0.59[8][LF]
               0.39[7][LF]
                 0.0[8][LF]
 remove node 32, payload 944[LF]
 Tree look:[LF]
   0.1003[1][LF]
 0.934[0][LF]
     0.875[2][LF]
   0.816[1][LF]
       0.757[3][LF]
           0.698[5][LF]
               0.659[7][LF]
             0.639[6][LF]
               0.600[7][LF]
         0.580[4][LF]
               0.541[7][LF]
             0.521[6][LF]
           0.462[5][LF]
     0.393[2][LF]
       0.334[3][LF]
         0.275[4][LF]
           0.216[5][LF]
               0.177[7][LF]
             0.157[6][LF]
               0.118[7][LF]
                 0.98[8][LF]
                     0.59[10][LF]
                   0.39[9][LF]
                     0.0[10][LF]
 remove node 33, payload 462[LF]
 Tree look:[LF]
       0.1003[3][LF]
     0.934[2][LF]
       0.875[3][LF]
   0.816[1][LF]
       0.757[3][LF]
         0.698[4][LF]
             0.659[6][LF]
           0.639[5][LF]
             0.600[6][LF]
     0.580[2][LF]
         0.541[4][LF]
       0.521[3][LF]
 0.393[0][LF]
   0.334[1][LF]
     0.275[2][LF]
       0.216[3][LF]
           0.177[5][LF]
         0.157[4][LF]
           0.118[5][LF]
             0.98[6][LF]
                 0.59[8][LF]
               0.39[7][LF]
                 0.0[8][LF]
 remove node 34, payload 1003[LF]
 Tree look:[LF]
 0.934[0][LF]
     0.875[2][LF]
   0.816[1][LF]
         0.757[4][LF]
           0.698[5][LF]
               0.659[7][LF]
             0.639[6][LF]
               0.600[7][LF]
       0.580[3][LF]
           0.541[5][LF]
         0.521[4][LF]
     0.393[2][LF]
       0.334[3][LF]
         0.275[4][LF]
           0.216[5][LF]
               0.177[7][LF]
             0.157[6][LF]
               0.118[7][LF]
                 0.98[8][LF]
                     0.59[10][LF]
                   0.39[9][LF]
                     0.0[10][LF]
 remove node 35, payload 521[LF]
 Tree look:[LF]
     0.934[2][LF]
       0.875[3][LF]
   0.816[1][LF]
       0.757[3][LF]
         0.698[4][LF]
             0.659[6][LF]
           0.639[5][LF]
             0.600[6][LF]
     0.580[2][LF]
       0.541[3][LF]
 0.393[0][LF]
   0.334[1][LF]
     0.275[2][LF]
       0.216[3][LF]
           0.177[5][LF]
         0.157[4][LF]
           0.118[5][LF]
             0.98[6][LF]
                 0.59[8][LF]
               0.39[7][LF]
                 0.0[8][LF]
 remove node 36, payload 39[LF]
 Tree look:[LF]
         0.934[4][LF]
           0.875[5][LF]
       0.816[3][LF]
           0.757[5][LF]
             0.698[6][LF]
                 0.659[8][LF]
               0.639[7][LF]
                 0.600[8][LF]
         0.580[4][LF]
           0.541[5][LF]
     0.393[2][LF]
   0.334[1][LF]
       0.275[3][LF]
     0.216[2][LF]
           0.177[5][LF]
         0.157[4][LF]
       0.118[3][LF]
         0.98[4][LF]
           0.59[5][LF]
 0.0[0][LF]
 remove node 37, payload 580[LF]
 Tree look:[LF]
     0.934[2][LF]
       0.875[3][LF]
=== File too long: 191 lines omitted here
 remove node 0, payload 0[LF]
 Tree look:[LF]
   0.659[1][LF]
 0.600[0][LF]
       0.541[3][LF]
     0.177[2][LF]
   0.118[1][LF]
     0.59[2][LF]
 remove node 1, payload 541[LF]
 Tree look:[LF]
     0.659[2][LF]
   0.600[1][LF]
 0.177[0][LF]
   0.118[1][LF]
     0.59[2][LF]
 remove node 2, payload 59[LF]
 Tree look:[LF]
       0.659[3][LF]
     0.600[2][LF]
   0.177[1][LF]
 0.118[0][LF]
 remove node 3, payload 600[LF]
 Tree look:[LF]
   0.659[1][LF]
 0.177[0][LF]
   0.118[1][LF]
 remove node 4, payload 118[LF]
 Tree look:[LF]
   0.659[1][LF]
 0.177[0][LF]
 remove node 5, payload 659[LF]
 Tree look:[LF]
 0.177[0][LF]
 remove node 6, payload 177[LF]
 Removing nodes not larger than 0[LF]
 removed payload 0[0][LF]
 Removing nodes not larger than 100[LF]
 removed payload 39[0][LF]
 removed payload 49[0][LF]
 removed payload 49[1][LF]
 removed payload 59[0][LF]
 removed payload 59[1][LF]
 removed payload 59[2][LF]
 removed payload 98[0][LF]
 removed payload 98[1][LF]
 removed payload 98[2][LF]
 Removing nodes not larger than 200[LF]
 removed payload 108[0][LF]
 removed payload 118[0][LF]
 removed payload 118[1][LF]
 removed payload 157[0][LF]
 removed payload 157[1][LF]
 removed payload 167[0][LF]
 removed payload 167[1][LF]
 removed payload 167[2][LF]
 removed payload 177[0][LF]
 Removing nodes not larger than 300[LF]
 removed payload 216[0][LF]
 removed payload 226[0][LF]
 removed payload 226[1][LF]
 removed payload 236[0][LF]
 removed payload 236[1][LF]
 removed payload 236[2][LF]
 removed payload 275[0][LF]
 removed payload 275[1][LF]
 removed payload 275[2][LF]
 removed payload 285[0][LF]
 removed payload 295[0][LF]
 removed payload 295[1][LF]
 Removing nodes not larger than 400[LF]
 removed payload 334[0][LF]
 removed payload 334[1][LF]
 removed payload 344[0][LF]
 removed payload 344[1][LF]
 removed payload 344[2][LF]
 removed payload 354[0][LF]
 removed payload 393[0][LF]
 Removing nodes not larger than 500[LF]
 removed payload 403[0][LF]
 removed payload 403[1][LF]
 removed payload 413[0][LF]
 removed payload 413[1][LF]
 removed payload 413[2][LF]
 removed payload 462[0][LF]
 removed payload 472[0][LF]
 removed payload 472[1][LF]
 Removing nodes not larger than 600[LF]
 removed payload 521[0][LF]
 removed payload 521[1][LF]
 removed payload 521[2][LF]
 removed payload 531[0][LF]
 removed payload 541[0][LF]
 removed payload 541[1][LF]
 removed payload 580[0][LF]
 removed payload 580[1][LF]
 removed payload 590[0][LF]
 removed payload 590[1][LF]
 removed payload 590[2][LF]
 removed payload 600[0][LF]
 Removing nodes not larger than 700[LF]
 removed payload 639[0][LF]
 removed payload 649[0][LF]
 removed payload 649[1][LF]
 removed payload 659[0][LF]
 removed payload 659[1][LF]
 removed payload 659[2][LF]
 removed payload 698[0][LF]
 removed payload 698[1][LF]
 removed payload 698[2][LF]
 Removing nodes not larger than 800[LF]
 removed payload 708[0][LF]
 removed payload 718[0][LF]
 removed payload 718[1][LF]
 removed payload 757[0][LF]
 removed payload 757[1][LF]
 removed payload 767[0][LF]
 removed payload 767[1][LF]
 removed payload 767[2][LF]
 removed payload 777[0][LF]
 RemovingCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1323 ./unit/units unit1323 - > log/19/stdout1323 2> log/19/stderr1323
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1297 ../src/curl -q --output log/8/curl1297.out  --include --trace-ascii log/8/trace1297 --trace-time --proxytunnel --proxy 127.0.0.1:33431 http://127.0.0.1:44467/we/want/that/page/1297 > log/8/stdout1297 2> log/8/stderr1297
 nodes not larger than 900[LF]
 removed payload 816[0][LF]
 removed payload 826[0][LF]
 removed payload 826[1][LF]
 removed payload 836[0][LF]
 removed payload 836[1][LF]
 removed payload 836[2][LF]
 removed payload 875[0][LF]
 removed payload 875[1][LF]
 removed payload 875[2][LF]
 removed payload 885[0][LF]
 removed payload 895[0][LF]
 removed payload 895[1][LF]
 Removing nodes not larger than 1000[LF]
 removed payload 934[0][LF]
 removed payload 934[1][LF]
 removed payload 944[0][LF]
 removed payload 944[1][LF]
 removed payload 944[2][LF]
 removed payload 954[0][LF]
 Removing nodes not larger than 1100[LF]
 removed payload 1003[0][LF]
 removed payload 1003[1][LF]
 removed payload 1013[0][LF]
 removed payload 1013[1][LF]
 removed payload 1013[2][LF]
 Removing nodes not larger than 0[LF]
 removed payload 0[timeout=0][LF]
 Removing nodes not larger than 32[LF]
 removed payload 31[timeout=3][LF]
 removed payload 9[timeout=5][LF]
 removed payload 40[timeout=8][LF]
 removed payload 18[timeout=10][LF]
 removed payload 49[timeout=13][LF]
 removed payload 27[timeout=15][LF]
 removed payload 5[timeout=17][LF]
 removed payload 36[timeout=20][LF]
 removed payload 14[timeout=22][LF]
 removed payload 45[timeout=25][LF]
 removed payload 23[timeout=27][LF]
 removed payload 1[timeout=29][LF]
 removed payload 32[timeout=32][LF]
 Removing nodes not larger than 64[LF]
 removed payload 10[timeout=34][LF]
 removed payload 41[timeout=37][LF]
 removed payload 19[timeout=39][LF]
 removed payload 28[timeout=44][LF]
 removed payload 6[timeout=46][LF]
 removed payload 37[timeout=49][LF]
 removed payload 15[timeout=51][LF]
 removed payload 46[timeout=54][LF]
 removed payload 24[timeout=56][LF]
 removed payload 2[timeout=58][LF]
 removed payload 33[timeout=61][LF]
 removed payload 11[timeout=63][LF]
 Removing nodes not larger than 96[LF]
 removed payload 42[timeout=66][LF]
 removed payload 20[timeout=68][LF]
 removed payload 29[timeout=73][LF]
 removed payload 7[timeout=75][LF]
 removed payload 38[timeout=78][LF]
 removed payload 16[timeout=80][LF]
 removed payload 47[timeout=83][LF]
 removed payload 25[timeout=85][LF]
 removed payload 3[timeout=87][LF]
 removed payload 34[timeout=90][LF]
 removed payload 12[timeout=92][LF]
 removed payload 43[timeout=95][LF]
 Removing nodes not larger than 128[LF]
 removed payload 21[timeout=97][LF]
 removed payload 30[timeout=102][LF]
 removed payload 8[timeout=104][LF]
 removed payload 39[timeout=107][LF]
 removed payload 17[timeout=109][LF]
 removed payload 48[timeout=112][LF]
 removed payload 26[timeout=114][LF]
 removed payload 4[timeout=116][LF]
 removed payload 35[timeout=119][LF]
 removed payload 13[timeout=121][LF]
 removed payload 44[timeout=124][LF]
 removed payload 22[timeout=126][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1309 ./unit/units unit1309 - > log/5/stdout1309 2> log/5/stderr1309
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1309
=== End of file server.cmd
=== Start of file valgrind1309
 ==151560== 
 ==151560== Process terminating with default action of signal 4 (SIGILL)
 ==151560==  Illegal opcode at address 0x4091F7F
 ==151560==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==151560==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==151560==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==151560==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1309
test 1323 [curlx_tvdiff]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1323 ./unit/units unit1323 - > log/19/stdout1323 2> log/19/stderr1323

units returned 132, when expecting 0
 1323: exit FAILED
== Contents of files in the log/19/ directory after test 1323
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1323 ./unit/units unit1323 - > log/19/stdout1323 2> log/19/stderr1323
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1323
=== End of file server.cmd
=== Start of file valgrind1323
 ==152064== 
 ==152064== Process terminating with default action of signal 4 (SIGILL)
 ==152064==  Illegal opcode at address 0x4091F7F
 ==152064==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==152064==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==152064==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==152064==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1323
test 1297 [CONNECT to peer that returns nothing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1297 ../src/curl -q --output log/8/curl1297.out  --include --trace-ascii log/8/trace1297 --trace-time --proxytunnel --proxy 127.0.0.1:33431 http://127.0.0.1:44467/we/want/that/page/1297 > log/8/stdout1297 2> log/8/stderr1297

 1297: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1297
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1297 ../src/curl -q --output log/8/curl1297.out  --include --trace-ascii log/8/trace1297 --trace-time --proxytunnel --proxy 127.0.0.1:33431 http://127.0.0.1:44467/we/want/that/page/1297 > log/8/stdout1297 2> log/8/stderr1297
=== End of file commands.log
=== Start of file http2_server.log
 19:28:22.965423 ====> Client connect
 19:28:22.965459 accept_connection 3 returned 4
 19:28:22.965564 Read 93 bytes
 19:28:22.965579 Process 93 bytes request
 19:28:22.965593 Got request: GET /verifiedserver HTTP/1.1
 19:28:22.965602 Are-we-friendly question received
 19:28:22.965635 Wrote request (93 bytes) input to log/8/proxy.input
 19:28:22.965653 Identifying ourselves as friends
 19:28:22.965713 Response sent (56 bytes) and written to log/8/proxy.response
 19:28:22.965723 special request received, no persistency
 19:28:22.965731 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:33431...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33431) from 127.0.0.1 port 57240 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33431
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33431 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 95309
=== End of file http2_verify.out
=== Start of file http_server.log
 19:28:21.875895 ====> Client connect
 19:28:21.875929 accept_connection 3 returned 4
 19:28:21.875950 Read 93 bytes
 19:28:21.875960 Process 93 bytes request
 19:28:21.875973 Got request: GET /verifiedserver HTTP/1.1
 19:28:21.875981 Are-we-friendly question received
 19:28:21.876007 Wrote request (93 bytes) input to log/8/server.input
 19:28:21.876023 Identifying ourselves as friends
 19:28:21.876081 Response sent (56 bytes) and written to log/8/server.response
 19:28:21.876090 special request received, no persistency
 19:28:21.876098 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 56608 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1313 ../src/curl -q --trace-ascii log/17/trace1313 --trace-time http://127.0.0.1:35993/1313 -J -O --output-dir log/17 > log/17/stdout1313 2> log/17/stderr1313
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1310 ../src/curl -q --trace-ascii log/24/trace1310 --trace-time http://127.0.0.1:38895/junk -J -O --show-headers --output-dir log/24 > log/24/stdout1310 2> log/24/stderr1310
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1312 ../src/curl -q --trace-ascii log/23/trace1312 --trace-time 127.0.0.1:44711/1312 -J -O --output-dir log/23 > log/23/stdout1312 2> log/23/stderr1312
log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 95309
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1297
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1297
 ==150889== 
 ==150889== Process terminating with default action of signal 4 (SIGILL)
 ==150889==  Illegal opcode at address 0x492B75F
 ==150889==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==150889==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==150889==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==150889==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==150889==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==150889==    by 0x49908EB: curl_version_info (version.c:600)
 ==150889==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==150889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==150889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==150889==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1297
test 1313 [HTTP GET with -J, Content-Disposition, uneven quotes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1313 ../src/curl -q --trace-ascii log/17/trace1313 --trace-time http://127.0.0.1:35993/1313 -J -O --output-dir log/17 > log/17/stdout1313 2> log/17/stderr1313

 1313: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1313
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1313 ../src/curl -q --trace-ascii log/17/trace1313 --trace-time http://127.0.0.1:35993/1313 -J -O --output-dir log/17 > log/17/stdout1313 2> log/17/stderr1313
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.261806 ====> Client connect
 19:28:24.261845 accept_connection 3 returned 4
 19:28:24.261869 Read 93 bytes
 19:28:24.261878 Process 93 bytes request
 19:28:24.261891 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.261899 Are-we-friendly question received
 19:28:24.261926 Wrote request (93 bytes) input to log/17/server.input
 19:28:24.261942 Identifying ourselves as friends
 19:28:24.262018 Response sent (56 bytes) and written to log/17/server.response
 19:28:24.262027 special request received, no persistency
 19:28:24.262035 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 54126 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1313
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1313
 ==151561== 
 ==151561== Process terminating with default action of signal 4 (SIGILL)
 ==151561==  Illegal opcode at address 0x492B75F
 ==151561==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151561==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151561==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151561==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151561==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151561==    by 0x49908EB: curl_version_info (version.c:600)
 ==151561==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151561==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151561==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151561==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1313
test 1310 [HTTP GET with -J + --show-headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1310 ../src/curl -q --trace-ascii log/24/trace1310 --trace-time http://127.0.0.1:38895/junk -J -O --show-headers --output-dir log/24 > log/24/stdout1310 2> log/24/stderr1310

 1310: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1310
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1310 ../src/curl -q --trace-ascii log/24/trace1310 --trace-time http://127.0.0.1:38895/junk -J -O --show-headers --output-dir log/24 > log/24/stdout1310 2> log/24/stderr1310
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.033792 ====> Client connect
 19:28:23.033818 accept_connection 3 returned 4
 19:28:23.033835 Read 93 bytes
 19:28:23.033842 Process 93 bytes request
 19:28:23.033852 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.033859 Are-we-friendly question received
 19:28:23.033878 Wrote request (93 bytes) input to log/24/server.input
 19:28:23.033890 Identifying ourselves as friends
 19:28:23.033937 Response sent (56 bytes) and written to log/24/server.response
 19:28:23.033944 special request received, no persistency
 19:28:23.033950 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 56682 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1310
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1310
 ==151401== 
 ==151401== Process terminating with default action of signal 4 (SIGILL)
 ==151401==  Illegal opcode at address 0x492B75F
 ==151401==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151401==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151401==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151401==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151401==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151401==    by 0x49908EB: curl_version_info (version.c:600)
 ==151401==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151401==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151401==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151401==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1310
test 1312 [HTTP GET with -J, Content-Disposition and ; in filename]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1312 ../src/curl -q --trace-ascii log/23/trace1312 --trace-time 127.0.0.1:44711/1312 -J -O --output-dir log/23 > log/23/stdout1312 2> log/23/stderr1312

 1312: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files iCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1318 ../src/curl -q --output log/20/curl1318.out  --include --trace-ascii log/20/trace1318 --trace-time --resolve MiXeDcAsE.cOm:33897:127.0.0.1 http://MiXeDcAsE.cOm:33897/1318 http://mixedcase.com:33897/13180001 > log/20/stdout1318 2> log/20/stderr1318
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1311 ../src/curl -q --trace-ascii log/12/trace1311 --trace-time http://127.0.0.1:40921/1311 -J -O --output-dir log/12 > log/12/stdout1311 2> log/12/stderr1311
n the log/23/ directory after test 1312
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1312 ../src/curl -q --trace-ascii log/23/trace1312 --trace-time 127.0.0.1:44711/1312 -J -O --output-dir log/23 > log/23/stdout1312 2> log/23/stderr1312
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.224348 ====> Client connect
 19:28:23.224387 accept_connection 3 returned 4
 19:28:23.224414 Read 93 bytes
 19:28:23.224425 Process 93 bytes request
 19:28:23.224439 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.224448 Are-we-friendly question received
 19:28:23.224479 Wrote request (93 bytes) input to log/23/server.input
 19:28:23.224497 Identifying ourselves as friends
 19:28:23.224569 Response sent (56 bytes) and written to log/23/server.response
 19:28:23.224581 special request received, no persistency
 19:28:23.224590 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 46938 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1312
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1312
 ==151541== 
 ==151541== Process terminating with default action of signal 4 (SIGILL)
 ==151541==  Illegal opcode at address 0x492B75F
 ==151541==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151541==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151541==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151541==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151541==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151541==    by 0x49908EB: curl_version_info (version.c:600)
 ==151541==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151541==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151541==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151541==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1312
test 1318 [HTTP with --resolve and same hostname using different cases]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1318 ../src/curl -q --output log/20/curl1318.out  --include --trace-ascii log/20/trace1318 --trace-time --resolve MiXeDcAsE.cOm:33897:127.0.0.1 http://MiXeDcAsE.cOm:33897/1318 http://mixedcase.com:33897/13180001 > log/20/stdout1318 2> log/20/stderr1318

 1318: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1318
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1318 ../src/curl -q --output log/20/curl1318.out  --include --trace-ascii log/20/trace1318 --trace-time --resolve MiXeDcAsE.cOm:33897:127.0.0.1 http://MiXeDcAsE.cOm:33897/1318 http://mixedcase.com:33897/13180001 > log/20/stdout1318 2> log/20/stderr1318
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.445086 ====> Client connect
 19:28:23.445118 accept_connection 3 returned 4
 19:28:23.445647 Read 93 bytes
 19:28:23.445662 Process 93 bytes request
 19:28:23.445673 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.445682 Are-we-friendly question received
 19:28:23.445712 Wrote request (93 bytes) input to log/20/server.input
 19:28:23.445729 Identifying ourselves as friends
 19:28:23.445794 Response sent (56 bytes) and written to log/20/server.response
 19:28:23.445803 special request received, no persistency
 19:28:23.445811 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 42590 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1318
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1318
 ==151783== 
 ==151783== Process terminating with default action of signal 4 (SIGILL)
 ==151783==  Illegal opcode at address 0x492B75F
 ==151783==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151783==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151783==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151783==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151783==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151783==    by 0x49908EB: curl_version_info (version.c:600)
 ==151783==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151783==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151783==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151783==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1318
test 1311 [HTTP GET with -J and Content-Disposition]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1311 ../src/curl -q --trace-ascii log/12/trace1311 --trace-time http://127.0.0.1:40921/1311 -J -O --output-dir log/12 > log/12/stdout1311 2> log/12/stderr1311

 1311: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1311
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1311 ../src/curl -q --trace-ascii log/12/trace1311 --trace-time http://127.0.0.1:40921/1311 -J -O --output-dir log/12 > log/12/stdout1311 2> log/12/stderr1311
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.192962 ====> Client connect
 19:28:23.193002 accept_connection 3 returned 4
 19:28:23.193026 Read 93 bytes
 19:28:23.193037 Process 93 bytes request
 19:28:23.193049 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.193058 Are-we-friendly question received
 19:28:23.193091 Wrote request (93 bytes) input to log/12/server.input
 19:28:23.193111 Identifying ourselves as friends
 19:28:23.193187 Response sent (56 bytes) and written to log/12/server.response
 19:28:23.193199 special request received, no persistency
 19:28:23.193208 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 57796 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1314 ../src/curl -q --output log/7/curl1314.out  --include --trace-ascii log/7/trace1314 --trace-time http://firstplace.example.com/want/1314 -L -x http://127.0.0.1:40859 > log/7/stdout1314 2> log/7/stderr1314
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1317 ../src/curl -q --output log/3/curl1317.out  --include --trace-ascii log/3/trace1317 --trace-time --resolve example.com:36161:127.0.0.1 http://example.com:36161/1317 > log/3/stdout1317 2> log/3/stderr1317
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1322 ../src/curl -q --output log/10/curl1322.out  --include --trace-ascii log/10/trace1322 --trace-time --ipv4 --resolve example.com.:40913:127.0.0.1 http://example.com.:40913/1322 > log/10/stdout1322 2> log/10/stderr1322
== Start of file server.cmd
 Testnum 1311
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1311
 ==151491== 
 ==151491== Process terminating with default action of signal 4 (SIGILL)
 ==151491==  Illegal opcode at address 0x492B75F
 ==151491==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151491==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151491==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151491==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151491==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151491==    by 0x49908EB: curl_version_info (version.c:600)
 ==151491==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151491==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1311
test 1314 [HTTP Location: following a // prefixed url]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1314 ../src/curl -q --output log/7/curl1314.out  --include --trace-ascii log/7/trace1314 --trace-time http://firstplace.example.com/want/1314 -L -x http://127.0.0.1:40859 > log/7/stdout1314 2> log/7/stderr1314

 1314: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1314
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1314 ../src/curl -q --output log/7/curl1314.out  --include --trace-ascii log/7/trace1314 --trace-time http://firstplace.example.com/want/1314 -L -x http://127.0.0.1:40859 > log/7/stdout1314 2> log/7/stderr1314
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.278511 ====> Client connect
 19:28:23.288687 accept_connection 3 returned 4
 19:28:23.288786 Read 93 bytes
 19:28:23.288797 Process 93 bytes request
 19:28:23.288812 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.288820 Are-we-friendly question received
 19:28:23.308429 Wrote request (93 bytes) input to log/7/server.input
 19:28:23.308469 Identifying ourselves as friends
 19:28:23.308547 Response sent (56 bytes) and written to log/7/server.response
 19:28:23.308557 special request received, no persistency
 19:28:23.308564 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 46980 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1314
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1314
 ==151620== 
 ==151620== Process terminating with default action of signal 4 (SIGILL)
 ==151620==  Illegal opcode at address 0x492B75F
 ==151620==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151620==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151620==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151620==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151620==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151620==    by 0x49908EB: curl_version_info (version.c:600)
 ==151620==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151620==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151620==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151620==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1314
test 1317 [HTTP with --resolve]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1317 ../src/curl -q --output log/3/curl1317.out  --include --trace-ascii log/3/trace1317 --trace-time --resolve example.com:36161:127.0.0.1 http://example.com:36161/1317 > log/3/stdout1317 2> log/3/stderr1317

 1317: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1317
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1317 ../src/curl -q --output log/3/curl1317.out  --include --trace-ascii log/3/trace1317 --trace-time --resolve example.com:36161:127.0.0.1 http://example.com:36161/1317 > log/3/stdout1317 2> log/3/stderr1317
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.443104 ====> Client connect
 19:28:24.443143 accept_connection 3 returned 4
 19:28:24.443167 Read 93 bytes
 19:28:24.443177 Process 93 bytes request
 19:28:24.443191 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.443200 Are-we-friendly question received
 19:28:24.443232 Wrote request (93 bytes) input to log/3/server.input
 19:28:24.443252 Identifying ourselves as friends
 19:28:24.443326 Response sent (56 bytes) and written to log/3/server.response
 19:28:24.443339 special request received, no persistency
 19:28:24.443348 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36300 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1317
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1317
 ==151772== 
 ==151772== Process terminating with default action of signal 4 (SIGILL)
 ==151772==  Illegal opcode at address 0x492B75F
 ==151772==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151772==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151772==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151772==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151772==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151772==    by 0x49908EB: curl_version_info (version.c:600)
 ==151772==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151772==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151772==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151772==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1317
test 1322 [HTTP with --resolve and hostname with trailing dot]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1322 ../src/curl -q --output log/10/curl1322.out  --include --trace-ascii log/10/trace1322 --trace-time --ipv4 --resolve example.com.:40913:127.0.0.1 http://example.com.:40913/1322 > log/10/stdout1322 2> log/10/stderr1322

 1322: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in theCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1320 ../src/curl -q --output log/4/curl1320.out  --include --trace-ascii log/4/trace1320 --trace-time smtp://smtp.1320:32885/1320 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - -p -x 127.0.0.1:45375 <log/4/stdin-for-1320 > log/4/stdout1320 2> log/4/stderr1320
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1315 ../src/curl -q --output log/13/curl1315.out  --include --trace-ascii log/13/trace1315 --trace-time http://127.0.0.1:38821/we/want/1315 -F name=value -F 'file=@log/13/test1315.txt,log/13/test1315.txt;type=magic/content,log/13/test1315.txt' > log/13/stdout1315 2> log/13/stderr1315
 log/10/ directory after test 1322
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1322 ../src/curl -q --output log/10/curl1322.out  --include --trace-ascii log/10/trace1322 --trace-time --ipv4 --resolve example.com.:40913:127.0.0.1 http://example.com.:40913/1322 > log/10/stdout1322 2> log/10/stderr1322
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.799600 ====> Client connect
 19:28:23.799659 accept_connection 3 returned 4
 19:28:23.799687 Read 93 bytes
 19:28:23.799696 Process 93 bytes request
 19:28:23.799709 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.799718 Are-we-friendly question received
 19:28:23.799762 Wrote request (93 bytes) input to log/10/server.input
 19:28:23.799798 Identifying ourselves as friends
 19:28:23.800034 Response sent (56 bytes) and written to log/10/server.response
 19:28:23.800048 special request received, no persistency
 19:28:23.800057 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 41114 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1322
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1322
 ==152081== 
 ==152081== Process terminating with default action of signal 4 (SIGILL)
 ==152081==  Illegal opcode at address 0x492B75F
 ==152081==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152081==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152081==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152081==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152081==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152081==    by 0x49908EB: curl_version_info (version.c:600)
 ==152081==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152081==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152081==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152081==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1322
test 1320 [SMTP send tunneled through HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1320 ../src/curl -q --output log/4/curl1320.out  --include --trace-ascii log/4/trace1320 --trace-time smtp://smtp.1320:32885/1320 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - -p -x 127.0.0.1:45375 <log/4/stdin-for-1320 > log/4/stdout1320 2> log/4/stderr1320

 1320: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1320
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1320 ../src/curl -q --output log/4/curl1320.out  --include --trace-ascii log/4/trace1320 --trace-time smtp://smtp.1320:32885/1320 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - -p -x 127.0.0.1:45375 <log/4/stdin-for-1320 > log/4/stdout1320 2> log/4/stderr1320
=== End of file commands.log
=== Start of file http2_server.log
 19:28:23.765107 ====> Client connect
 19:28:23.765161 accept_connection 3 returned 4
 19:28:23.765190 Read 93 bytes
 19:28:23.765202 Process 93 bytes request
 19:28:23.765230 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.765240 Are-we-friendly question received
 19:28:23.765271 Wrote request (93 bytes) input to log/4/proxy.input
 19:28:23.765292 Identifying ourselves as friends
 19:28:23.765395 Response sent (56 bytes) and written to log/4/proxy.response
 19:28:23.765409 special request received, no persistency
 19:28:23.765418 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:45375...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45375) from 127.0.0.1 port 59998 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45375
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45375 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 83777
=== End of file http2_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 83777
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1320
=== End of file server.cmd
=== Start of file smtp_server.log
 19:28:24.118431 ====> Client connect
 19:28:24.118623 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:24.122377 < "EHLO verifiedserver"
 19:28:24.122438 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:28:24.123026 < "HELP"
 19:28:24.123064 > "214 WE ROOLZ: 113210[CR][LF]"
 19:28:24.123083 return proof we are we
 19:28:24.123345 < "QUIT"
 19:28:24.123375 > "221 curl ESMTP server signing off[CR][LF]"
 19:28:24.124579 MAIN sockfilt said DISC
 19:28:24.124608 ====> Client disconnected
 19:28:24.124688 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:28:23.721365 ====> Client connect
 19:28:23.721717 Received DATA (on stdin)
 19:28:23.721733 > 146 bytes data, server => client
 19:28:23.721744 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:23.721753 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:23.721761 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:23.725201 < 21 bytes data, client => server
 19:28:23.725228 'EHLO verifiedserver\r\n'
 19:28:23.725498 Received DATA (on stdin)
 19:28:23.725511 > 53 bytes data, server => client
 19:28:23.725523 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:28:23.725962 < 6 bytes data, client => server
 19:28:23.725979 'HELP\r\n'
 19:28:23.726135 Received DATA (on stdin)
 19:28:23.726148 > 22 bytes data, server => client
 19:28:23.726158 '214 WE ROOLZ: 113210\r\n'
 19:28:23.726276 < 6 bytes data, client => server
 19:28:23.726292 'QUIT\r\n'
 19:28:23.726428 Received DATA (on stdin)
 19:28:23.726440 > 35 bytes data, server => client
 19:28:23.726450 '221 curl ESMTP server signing off\r\n'
 19:28:23.727577 ====> Client disconnect
 19:28:23.727738 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-1320
 From: different
 To: another
 body
=== End of file stdin-for-1320
=== Start of file valgrind1320
 ==152039== 
 ==152039== Process terminating with default action of signal 4 (SIGILL)
 ==152039==  Illegal opcode at address 0x492B75F
 ==152039==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152039==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152039==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152039==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152039==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152039==    by 0x49908EB: curl_version_info (version.c:600)
 ==152039==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152039==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152039==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152039==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1320
test 1315 [HTTP -F witCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1325 ../src/curl -q --output log/9/curl1325.out  --include --trace-ascii log/9/trace1325 --trace-time http://127.0.0.1:43733/we/1325 -L -d "moo" > log/9/stdout1325 2> log/9/stderr1325
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1328 ../src/curl -q --output log/15/curl1328.out  --include --trace-ascii log/15/trace1328 --trace-time -f 'http://127.0.0.1:40321/[13280000-13280001]' -o log/15/#1 > log/15/stdout1328 2> log/15/stderr1328
h three files, one with explicit type]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1315 ../src/curl -q --output log/13/curl1315.out  --include --trace-ascii log/13/trace1315 --trace-time http://127.0.0.1:38821/we/want/1315 -F name=value -F 'file=@log/13/test1315.txt,log/13/test1315.txt;type=magic/content,log/13/test1315.txt' > log/13/stdout1315 2> log/13/stderr1315

 1315: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1315
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1315 ../src/curl -q --output log/13/curl1315.out  --include --trace-ascii log/13/trace1315 --trace-time http://127.0.0.1:38821/we/want/1315 -F name=value -F 'file=@log/13/test1315.txt,log/13/test1315.txt;type=magic/content,log/13/test1315.txt' > log/13/stdout1315 2> log/13/stderr1315
=== End of file commands.log
=== Start of file http_server.log
 19:28:23.306033 ====> Client connect
 19:28:23.306102 accept_connection 3 returned 4
 19:28:23.306125 Read 93 bytes
 19:28:23.306135 Process 93 bytes request
 19:28:23.306148 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.306156 Are-we-friendly question received
 19:28:23.306184 Wrote request (93 bytes) input to log/13/server.input
 19:28:23.306201 Identifying ourselves as friends
 19:28:23.306268 Response sent (56 bytes) and written to log/13/server.response
 19:28:23.306277 special request received, no persistency
 19:28:23.306286 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 43500 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1315
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file test1315.txt
 dummy data
=== End of file test1315.txt
=== Start of file valgrind1315
 ==151604== 
 ==151604== Process terminating with default action of signal 4 (SIGILL)
 ==151604==  Illegal opcode at address 0x492B75F
 ==151604==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==151604==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==151604==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==151604==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==151604==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==151604==    by 0x49908EB: curl_version_info (version.c:600)
 ==151604==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==151604==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==151604==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==151604==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1315
test 1325 [HTTP 308-redirect with POST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1325 ../src/curl -q --output log/9/curl1325.out  --include --trace-ascii log/9/trace1325 --trace-time http://127.0.0.1:43733/we/1325 -L -d "moo" > log/9/stdout1325 2> log/9/stderr1325

 1325: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1325
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1325 ../src/curl -q --output log/9/curl1325.out  --include --trace-ascii log/9/trace1325 --trace-time http://127.0.0.1:43733/we/1325 -L -d "moo" > log/9/stdout1325 2> log/9/stderr1325
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.015090 ====> Client connect
 19:28:24.015132 accept_connection 3 returned 4
 19:28:24.015158 Read 93 bytes
 19:28:24.015169 Process 93 bytes request
 19:28:24.015182 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.015191 Are-we-friendly question received
 19:28:24.015217 Wrote request (93 bytes) input to log/9/server.input
 19:28:24.015234 Identifying ourselves as friends
 19:28:24.015318 Response sent (56 bytes) and written to log/9/server.response
 19:28:24.015328 special request received, no persistency
 19:28:24.015336 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 51386 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1325
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1325
 ==152261== 
 ==152261== Process terminating with default action of signal 4 (SIGILL)
 ==152261==  Illegal opcode at address 0x492B75F
 ==152261==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152261==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152261==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152261==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152261==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152261==    by 0x49908EB: curl_version_info (version.c:600)
 ==152261==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152261==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152261==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152261==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1325
test 1328 [HTTP GET a globbed range with -f]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1328 ../src/curl -q --output log/15/curl1328.out  --include --trace-ascii log/15/trace1328 --trace-time -f 'http://127.0.0.1:40321/[13280000-13280001]' -o log/15/#1 > log/15/stdout1328 2> log/15/stderr1328

 1328: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1328
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1328 ../src/curl -q --output log/15/curl1328.out  --include --trace-ascii log/15/trace1328 --trace-time -f 'http://127.0.0.1:40321/[13280000-13280001]' -o log/15/#1 > log/15/stdout1328 2> log/15/stderr1328
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.351751 ====> Client connect
 19:28:25.351791 accept_connection 3 returned 4
 19:28:25.351812 Read 93 bytes
 19:28:25.351820 Process 93 bytes request
 19:28:25.351831 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.351839 Are-we-friendly question received
 19:28:25.351860 Wrote request (93 bytes) input to log/15/server.input
 19:28:25.351878 IdentCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1319 ../src/curl -q --output log/14/curl1319.out  --include --trace-ascii log/14/trace1319 --trace-time pop3://pop.1319:44619/1319 -p -x 127.0.0.1:37729 -u user:secret > log/14/stdout1319 2> log/14/stderr1319
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1321 ../src/curl -q --output log/1/curl1321.out  --include --trace-ascii log/1/trace1321 --trace-time 'imap://imap.1321:35739/1321/;MAILINDEX=1' -u user:secret -p -x 127.0.0.1:38255 > log/1/stdout1321 2> log/1/stderr1321
ifying ourselves as friends
 19:28:25.351938 Response sent (56 bytes) and written to log/15/server.response
 19:28:25.351945 special request received, no persistency
 19:28:25.351952 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 54296 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1328
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1328
 ==152450== 
 ==152450== Process terminating with default action of signal 4 (SIGILL)
 ==152450==  Illegal opcode at address 0x492B75F
 ==152450==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152450==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152450==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152450==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152450==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152450==    by 0x49908EB: curl_version_info (version.c:600)
 ==152450==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152450==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152450==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152450==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1328
test 1319 [POP3 fetch tunneled through HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1319 ../src/curl -q --output log/14/curl1319.out  --include --trace-ascii log/14/trace1319 --trace-time pop3://pop.1319:44619/1319 -p -x 127.0.0.1:37729 -u user:secret > log/14/stdout1319 2> log/14/stderr1319

 1319: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1319
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1319 ../src/curl -q --output log/14/curl1319.out  --include --trace-ascii log/14/trace1319 --trace-time pop3://pop.1319:44619/1319 -p -x 127.0.0.1:37729 -u user:secret > log/14/stdout1319 2> log/14/stderr1319
=== End of file commands.log
=== Start of file http2_server.log
 19:28:23.734257 ====> Client connect
 19:28:23.734295 accept_connection 3 returned 4
 19:28:23.734317 Read 93 bytes
 19:28:23.734328 Process 93 bytes request
 19:28:23.734341 Got request: GET /verifiedserver HTTP/1.1
 19:28:23.734350 Are-we-friendly question received
 19:28:23.734380 Wrote request (93 bytes) input to log/14/proxy.input
 19:28:23.734398 Identifying ourselves as friends
 19:28:23.734467 Response sent (56 bytes) and written to log/14/proxy.response
 19:28:23.734479 special request received, no persistency
 19:28:23.734488 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:37729...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37729) from 127.0.0.1 port 42142 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37729
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37729 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 83621
=== End of file http2_verify.out
=== Start of file pop3_server.log
 19:28:23.982868 ====> Client connect
 19:28:23.983138 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:28:23.983472 < "CAPA"
 19:28:23.983524 > "-ERR Unrecognized command[CR][LF]"
 19:28:23.983716 < "RETR verifiedserver"
 19:28:23.983752 return proof we are we
 19:28:23.983778 > "+OK Mail transfer starts[CR][LF]"
 19:28:23.983802 > "WE ROOLZ: 125320[CR][LF]"
 19:28:23.983819 > ".[CR][LF]"
 19:28:24.032764 < "QUIT"
 19:28:24.033252 > "+OK curl POP3 server signing off[CR][LF]"
 19:28:24.042023 MAIN sockfilt said DISC
 19:28:24.042107 ====> Client disconnected
 19:28:24.042212 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:28:24.584468 ====> Client connect
 19:28:24.586214 Received DATA (on stdin)
 19:28:24.586229 > 164 bytes data, server => client
 19:28:24.586240 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:24.586249 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:24.586257 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:28:24.586351 < 6 bytes data, client => server
 19:28:24.586365 'CAPA\r\n'
 19:28:24.586585 Received DATA (on stdin)
 19:28:24.586597 > 27 bytes data, server => client
 19:28:24.586608 '-ERR Unrecognized command\r\n'
 19:28:24.586671 < 21 bytes data, client => server
 19:28:24.586684 'RETR verifiedserver\r\n'
 19:28:24.586874 Received DATA (on stdin)
 19:28:24.586886 > 26 bytes data, server => client
 19:28:24.586896 '+OK Mail transfer starts\r\n'
 19:28:24.586920 Received DATA (on stdin)
 19:28:24.586929 > 18 bytes data, server => client
 19:28:24.586938 'WE ROOLZ: 125320\r\n'
 19:28:24.586951 Received DATA (on stdin)
 19:28:24.586960 > 3 bytes data, server => client
 19:28:24.586969 '.\r\n'
 19:28:24.634556 < 6 bytes data, client => server
 19:28:24.634586 'QUIT\r\n'
 19:28:24.636652 Received DATA (on stdin)
 19:28:24.637391 > 34 bytes data, server => client
 19:28:24.637796 '+OK curl POP3 server signing off\r\n'
 19:28:24.639581 ====> Client disconnect
 19:28:24.645288 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 83621
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1319
=== End of file server.cmd
=== Start of file valgrind1319
 ==152031== 
 ==152031== Process terminating with default action of signal 4 (SIGILL)
 ==152031==  Illegal opcode at address 0x492B75F
 ==152031==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152031==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152031==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152031==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152031==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152031==    by 0x49908EB: curl_version_info (version.c:600)
 ==152031==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152031==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152031==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152031==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1319
test 1321 [IMAP FETCH tunneled through HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1321 ../src/curl -q --output log/1/curl1321.out  --include --trace-ascii log/1/trace1321 --trace-time 'imap://imap.1321:35739/1321/;MAILINDEX=1' -u user:secret -p -x 127.0.0.1:38255 > log/1/stdout1321 2> log/1/stderr1321

 1321: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1321
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callerCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1326 ../src/curl -q --output log/18/curl1326.out  --include --trace-ascii log/18/trace1326 --trace-time telnet://127.0.0.1:43739 --upload-file - <log/18/stdin-for-1326 > log/18/stdout1326 2> log/18/stderr1326
s=16 --log-file=log/1/valgrind1321 ../src/curl -q --output log/1/curl1321.out  --include --trace-ascii log/1/trace1321 --trace-time 'imap://imap.1321:35739/1321/;MAILINDEX=1' -u user:secret -p -x 127.0.0.1:38255 > log/1/stdout1321 2> log/1/stderr1321
=== End of file commands.log
=== Start of file http2_server.log
 19:28:24.941059 ====> Client connect
 19:28:24.941097 accept_connection 3 returned 4
 19:28:24.941125 Read 93 bytes
 19:28:24.941135 Process 93 bytes request
 19:28:24.941158 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.941167 Are-we-friendly question received
 19:28:24.941199 Wrote request (93 bytes) input to log/1/proxy.input
 19:28:24.941223 Identifying ourselves as friends
 19:28:24.941293 Response sent (57 bytes) and written to log/1/proxy.response
 19:28:24.941304 special request received, no persistency
 19:28:24.941312 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:38255...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38255) from 127.0.0.1 port 58730 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38255
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:38255 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 116732
=== End of file http2_verify.out
=== Start of file imap_server.log
 19:28:24.198230 ====> Client connect
 19:28:24.198397 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:28:24.198688 < "A001 CAPABILITY"
 19:28:24.198742 > "A001 BAD Command[CR][LF]"
 19:28:24.198909 < "A002 LIST "verifiedserver" *"
 19:28:24.198937 LIST_imap got "verifiedserver" *
 19:28:24.198961 > "* LIST () "/" "WE ROOLZ: 122891"[CR][LF]"
 19:28:24.198979 > "A002 OK LIST Completed[CR][LF]"
 19:28:24.198993 return proof we are we
 19:28:24.249227 < "A003 LOGOUT"
 19:28:24.249283 > "* BYE curl IMAP server signing off[CR][LF]"
 19:28:24.249304 > "A003 OK LOGOUT completed[CR][LF]"
 19:28:24.253055 MAIN sockfilt said DISC
 19:28:24.253099 ====> Client disconnected
 19:28:24.253172 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:23.801179 ====> Client connect
 19:28:23.801450 Received DATA (on stdin)
 19:28:23.801463 > 164 bytes data, server => client
 19:28:23.801474 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:23.801483 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:23.801492 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:28:23.801559 < 17 bytes data, client => server
 19:28:23.801571 'A001 CAPABILITY\r\n'
 19:28:23.801789 Received DATA (on stdin)
 19:28:23.801801 > 18 bytes data, server => client
 19:28:23.801810 'A001 BAD Command\r\n'
 19:28:23.801867 < 30 bytes data, client => server
 19:28:23.801877 'A002 LIST "verifiedserver" *\r\n'
 19:28:23.802038 Received DATA (on stdin)
 19:28:23.802048 > 34 bytes data, server => client
 19:28:23.802058 '* LIST () "/" "WE ROOLZ: 122891"\r\n'
 19:28:23.802079 Received DATA (on stdin)
 19:28:23.802088 > 24 bytes data, server => client
 19:28:23.802097 'A002 OK LIST Completed\r\n'
 19:28:23.852088 < 13 bytes data, client => server
 19:28:23.852120 'A003 LOGOUT\r\n'
 19:28:23.855029 Received DATA (on stdin)
 19:28:23.855054 > 36 bytes data, server => client
 19:28:23.855063 '* BYE curl IMAP server signing off\r\n'
 19:28:23.855093 Received DATA (on stdin)
 19:28:23.855101 > 26 bytes data, server => client
 19:28:23.855110 'A003 OK LOGOUT completed\r\n'
 19:28:23.856042 ====> Client disconnect
 19:28:23.856213 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 116732
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1321
=== End of file server.cmd
=== Start of file valgrind1321
 ==152195== 
 ==152195== Process terminating with default action of signal 4 (SIGILL)
 ==152195==  Illegal opcode at address 0x492B75F
 ==152195==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152195==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152195==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152195==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152195==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152195==    by 0x49908EB: curl_version_info (version.c:600)
 ==152195==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152195==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152195==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152195==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1321
test 1326 [TELNET to HTTP server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1326 ../src/curl -q --output log/18/curl1326.out  --include --trace-ascii log/18/trace1326 --trace-time telnet://127.0.0.1:43739 --upload-file - <log/18/stdin-for-1326 > log/18/stdout1326 2> log/18/stderr1326

 1326: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1326
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1326 ../src/curl -q --output log/18/curl1326.out  --include --trace-ascii log/18/trace1326 --trace-time telnet://127.0.0.1:43739 --upload-file - <log/18/stdin-for-1326 > log/18/stdout1326 2> log/18/stderr1326
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.251368 ====> Client connect
 19:28:25.251404 accept_connection 3 returned 4
 19:28:25.251424 Read 93 bytes
 19:28:25.251433 Process 93 bytes request
 19:28:25.251446 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.251454 Are-we-friendly question received
 19:28:25.251479 Wrote request (93 bytes) input to log/18/server.input
 19:28:25.251494 Identifying ourselves as friends
 19:28:25.251554 Response sent (56 bytes) and written to log/18/server.response
 19:28:25.251564 special request received, no persistency
 19:28:25.251572 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 36324 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1326
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file stdin-for-1326
 GET /we/want/1326 HTTP/1.0
=== End of file stdin-for-1326
=== Start of file valgrind1326
 ==152392== 
 ==152392== Process terminating with default action of signal 4 (SIGILL)
 ==152392==  Illegal opcode at address 0x492B75F
 ==152392==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152392==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152392==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152392==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152392==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152392==    by 0x49908EB: curl_version_info (version.c:600)
 ==152392==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152392==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152392==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1329 ../src/curl -q --output log/22/curl1329.out  --include --trace-ascii log/22/trace1329 --trace-time http://127.0.0.1:35989/we/want/that/page/1329 -x "/server" > log/22/stdout1329 2> log/22/stderr1329
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1334 ../src/curl -q --trace-ascii log/5/trace1334 --trace-time http://127.0.0.1:37089/1334 -O -D log/5/heads1334 --output-dir log/5 > log/5/stdout1334 2> log/5/stderr1334
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1327 ../src/curl -q --include --trace-ascii log/11/trace1327 --trace-time telnet://127.0.0.1:40989 -T log/11/1327.txt <log/11/stdin-for-1327 > log/11/stdout1327 2> log/11/stderr1327
10)
 ==152392==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1326
test 1329 [/-prefixed proxy name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1329 ../src/curl -q --output log/22/curl1329.out  --include --trace-ascii log/22/trace1329 --trace-time http://127.0.0.1:35989/we/want/that/page/1329 -x "/server" > log/22/stdout1329 2> log/22/stderr1329

curl returned 132, when expecting 5
 1329: exit FAILED
== Contents of files in the log/22/ directory after test 1329
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1329 ../src/curl -q --output log/22/curl1329.out  --include --trace-ascii log/22/trace1329 --trace-time http://127.0.0.1:35989/we/want/that/page/1329 -x "/server" > log/22/stdout1329 2> log/22/stderr1329
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.521720 ====> Client connect
 19:28:24.521758 accept_connection 3 returned 4
 19:28:24.521781 Read 93 bytes
 19:28:24.521791 Process 93 bytes request
 19:28:24.521804 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.521812 Are-we-friendly question received
 19:28:24.521841 Wrote request (93 bytes) input to log/22/server.input
 19:28:24.521858 Identifying ourselves as friends
 19:28:24.521935 Response sent (56 bytes) and written to log/22/server.response
 19:28:24.521945 special request received, no persistency
 19:28:24.521954 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 52060 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1329
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1329
 ==152594== 
 ==152594== Process terminating with default action of signal 4 (SIGILL)
 ==152594==  Illegal opcode at address 0x492B75F
 ==152594==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152594==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152594==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152594==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152594==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152594==    by 0x49908EB: curl_version_info (version.c:600)
 ==152594==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152594==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152594==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152594==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1329
test 1334 [HTTP GET with -O without Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1334 ../src/curl -q --trace-ascii log/5/trace1334 --trace-time http://127.0.0.1:37089/1334 -O -D log/5/heads1334 --output-dir log/5 > log/5/stdout1334 2> log/5/stderr1334

 1334: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1334
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1334 ../src/curl -q --trace-ascii log/5/trace1334 --trace-time http://127.0.0.1:37089/1334 -O -D log/5/heads1334 --output-dir log/5 > log/5/stdout1334 2> log/5/stderr1334
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.748403 ====> Client connect
 19:28:24.748444 accept_connection 3 returned 4
 19:28:24.748468 Read 93 bytes
 19:28:24.748477 Process 93 bytes request
 19:28:24.748490 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.748498 Are-we-friendly question received
 19:28:24.748525 Wrote request (93 bytes) input to log/5/server.input
 19:28:24.748541 Identifying ourselves as friends
 19:28:24.748615 Response sent (56 bytes) and written to log/5/server.response
 19:28:24.748626 special request received, no persistency
 19:28:24.748634 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 50184 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1334
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1334
 ==152812== 
 ==152812== Process terminating with default action of signal 4 (SIGILL)
 ==152812==  Illegal opcode at address 0x492B75F
 ==152812==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152812==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152812==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152812==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152812==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152812==    by 0x49908EB: curl_version_info (version.c:600)
 ==152812==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152812==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152812==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152812==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1334
test 1327 [TELNET check of upload with stdout redirected]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1327 ../src/curl -q --include --trace-ascii log/11/trace1327 --trace-time telnet://127.0.0.1:40989 -T log/11/1327.txt <log/11/stdin-for-1327 > log/11/stdout1327 2> log/11/stderr1327

 1327: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1327
=== Start of file 1327.txt
 GET /we/want/1327 HTTP/1.0
=== End of file 1327.txt
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1327 ../src/curl -q --include --trace-ascii log/11/trace1327 --trace-time telnet://127.0.0.1:40989 -T log/11/1327.txt <log/11/stdin-for-1327 > log/11/stdout1327 2> log/11/stderr1327
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.278398 ====> Client connect
 19:28:24.278441 accept_connection 3 returned 4
 19:28:24.278467 Read 93 bytes
 19:28:24.278478 Process 93 bytes request
 19:28:24.278493 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.278502 Are-we-friendly question received
 19:28:24.278532 Wrote request (93 bytes) input to log/11/server.input
 19:28:24.278550 Identifying ourselves as friends
 19:28:24.278622 Response sent (56 bytes) and written to log/11/server.response
 19:28:24.278633 special request received, no persistency
 19:28:24.278641 ====> CCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1333 ../src/curl -q --output log/6/curl1333.out  --include --trace-ascii log/6/trace1333 --trace-time -d "" --header="Transfer-Encoding: chunked" http://127.0.0.1:33935/1333 > log/6/stdout1333 2> log/6/stderr1333
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1331 ../src/curl -q --output log/2/curl1331.out  --include --trace-ascii log/2/trace1331 --trace-time -U myname:mypassword -x 127.0.0.1:34531 http://z.x.com/1331 --proxy-anyauth -c log/2/dump1331 > log/2/stdout1331 2> log/2/stderr1331
lient disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 55556 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1327
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file stdin-for-1327
 GET /ignore/for/1327 HTTP/1.0
=== End of file stdin-for-1327
=== Start of file valgrind1327
 ==152408== 
 ==152408== Process terminating with default action of signal 4 (SIGILL)
 ==152408==  Illegal opcode at address 0x492B75F
 ==152408==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152408==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152408==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152408==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152408==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152408==    by 0x49908EB: curl_version_info (version.c:600)
 ==152408==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152408==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152408==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152408==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1327
test 1333 [HTTP POST zero length, chunked-encoded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1333 ../src/curl -q --output log/6/curl1333.out  --include --trace-ascii log/6/trace1333 --trace-time -d "" --header="Transfer-Encoding: chunked" http://127.0.0.1:33935/1333 > log/6/stdout1333 2> log/6/stderr1333

 1333: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1333
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1333 ../src/curl -q --output log/6/curl1333.out  --include --trace-ascii log/6/trace1333 --trace-time -d "" --header="Transfer-Encoding: chunked" http://127.0.0.1:33935/1333 > log/6/stdout1333 2> log/6/stderr1333
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.687501 ====> Client connect
 19:28:24.687537 accept_connection 3 returned 4
 19:28:24.687558 Read 93 bytes
 19:28:24.687568 Process 93 bytes request
 19:28:24.687582 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.687591 Are-we-friendly question received
 19:28:24.687618 Wrote request (93 bytes) input to log/6/server.input
 19:28:24.687635 Identifying ourselves as friends
 19:28:24.687698 Response sent (56 bytes) and written to log/6/server.response
 19:28:24.687708 special request received, no persistency
 19:28:24.687716 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 52314 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1333
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1333
 ==152747== 
 ==152747== Process terminating with default action of signal 4 (SIGILL)
 ==152747==  Illegal opcode at address 0x492B75F
 ==152747==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152747==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152747==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152747==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152747==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152747==    by 0x49908EB: curl_version_info (version.c:600)
 ==152747==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152747==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152747==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152747==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1333
test 1331 [HTTP --proxy-anyauth and 407 with cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1331 ../src/curl -q --output log/2/curl1331.out  --include --trace-ascii log/2/trace1331 --trace-time -U myname:mypassword -x 127.0.0.1:34531 http://z.x.com/1331 --proxy-anyauth -c log/2/dump1331 > log/2/stdout1331 2> log/2/stderr1331

 1331: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1331
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1331 ../src/curl -q --output log/2/curl1331.out  --include --trace-ascii log/2/trace1331 --trace-time -U myname:mypassword -x 127.0.0.1:34531 http://z.x.com/1331 --proxy-anyauth -c log/2/dump1331 > log/2/stdout1331 2> log/2/stderr1331
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.528409 ====> Client connect
 19:28:25.528453 accept_connection 3 returned 4
 19:28:25.528477 Read 93 bytes
 19:28:25.528486 Process 93 bytes request
 19:28:25.528500 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.528508 Are-we-friendly question received
 19:28:25.528534 Wrote request (93 bytes) input to log/2/server.input
 19:28:25.528554 Identifying ourselves as friends
 19:28:25.528626 Response sent (56 bytes) and written to log/2/server.response
 19:28:25.528635 special request received, no persistency
 19:28:25.528642 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 50778 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1331
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1331
 ==152598== 
 ==152598== Process terminating with default action of signal 4 (SIGILL)
 ==152598==  Illegal opcode at address 0x492B75F
 ==152598==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152598==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152598==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152598==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152598==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152598==    by 0x49908EB: curl_version_info (version.c:600)
 ==152598==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152598==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152598==    by 0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1324 ../src/curl -q --output log/16/curl1324.out  --include --trace-ascii log/16/trace1324 --trace-time --resolve example.com:39667:[::1] http://example.com:39667/1324 > log/16/stdout1324 2> log/16/stderr1324
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1332 ../src/curl -q --output log/21/curl1332.out  --include --trace-ascii log/21/trace1332 --trace-time http://127.0.0.1:39881/blah/1332 -L -d "moo" --post303 > log/21/stdout1332 2> log/21/stderr1332
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1338 ../src/curl -q --trace-ascii log/24/trace1338 --trace-time http://127.0.0.1:38895/1338 -J -O -D log/24/heads1338 --output-dir log/24 > log/24/stdout1338 2> log/24/stderr1338
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1336 ../src/curl -q --trace-ascii log/8/trace1336 --trace-time http://127.0.0.1:44467/1336 -O -D log/8/heads1336 --output-dir log/8 > log/8/stdout1336 2> log/8/stderr1336
x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152598==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1331
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/16/server/http_ipv6_server.pid" --logfile "log/16/http_ipv6_server.log" --logdir "log/16" --portfile log/16/server/http_ipv6_server.port --config log/16/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 152116 port 39667
* pid http-ipv6 => 152116 152116
test 1324 [HTTP with --resolve and [ipv6address]]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1324 ../src/curl -q --output log/16/curl1324.out  --include --trace-ascii log/16/trace1324 --trace-time --resolve example.com:39667:[::1] http://example.com:39667/1324 > log/16/stdout1324 2> log/16/stderr1324

 1324: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1324
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1324 ../src/curl -q --output log/16/curl1324.out  --include --trace-ascii log/16/trace1324 --trace-time --resolve example.com:39667:[::1] http://example.com:39667/1324 > log/16/stdout1324 2> log/16/stderr1324
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:28:24.947613 Running HTTP IPv6 version on port 39667
 19:28:24.947715 Wrote pid 152116 to log/16/server/http_ipv6_server.pid
 19:28:24.947753 Wrote port 39667 to log/16/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 1324
=== End of file server.cmd
=== Start of file valgrind1324
 ==152886== 
 ==152886== Process terminating with default action of signal 4 (SIGILL)
 ==152886==  Illegal opcode at address 0x492B75F
 ==152886==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152886==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152886==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152886==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152886==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152886==    by 0x49908EB: curl_version_info (version.c:600)
 ==152886==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152886==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1324
test 1332 [HTTP POST with 303 redirect and --post303]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1332 ../src/curl -q --output log/21/curl1332.out  --include --trace-ascii log/21/trace1332 --trace-time http://127.0.0.1:39881/blah/1332 -L -d "moo" --post303 > log/21/stdout1332 2> log/21/stderr1332

 1332: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1332
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1332 ../src/curl -q --output log/21/curl1332.out  --include --trace-ascii log/21/trace1332 --trace-time http://127.0.0.1:39881/blah/1332 -L -d "moo" --post303 > log/21/stdout1332 2> log/21/stderr1332
=== End of file commands.log
=== Start of file http_server.log
 19:28:24.566789 ====> Client connect
 19:28:24.566823 accept_connection 3 returned 4
 19:28:24.566844 Read 93 bytes
 19:28:24.566854 Process 93 bytes request
 19:28:24.566866 Got request: GET /verifiedserver HTTP/1.1
 19:28:24.566875 Are-we-friendly question received
 19:28:24.566902 Wrote request (93 bytes) input to log/21/server.input
 19:28:24.566920 Identifying ourselves as friends
 19:28:24.566982 Response sent (56 bytes) and written to log/21/server.response
 19:28:24.566992 special request received, no persistency
 19:28:24.567000 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 45440 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1332
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1332
 ==152629== 
 ==152629== Process terminating with default action of signal 4 (SIGILL)
 ==152629==  Illegal opcode at address 0x492B75F
 ==152629==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152629==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152629==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152629==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152629==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152629==    by 0x49908EB: curl_version_info (version.c:600)
 ==152629==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152629==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152629==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152629==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1332
test 1338 [HTTP GET with -O -J without Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1338 ../src/curl -q --trace-ascii log/24/trace1338 --trace-time http://127.0.0.1:38895/1338 -J -O -D log/24/heads1338 --output-dir log/24 > log/24/stdout1338 2> log/24/stderr1338

 1338: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1338
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1338 ../src/curl -q --trace-ascii log/24/trace1338 --trace-time http://127.0.0.1:38895/1338 -J -O -D log/24/heads1338 --output-dir log/24 > log/24/stdout1338 2> log/24/stderr1338
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.515795 ====> Client connect
 19:28:25.515833 accept_connection 3 returned 4
 19:28:25.516010 Read 93 bytes
 19:28:25.516027 Process 93 bytes request
 19:28:25.516041 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.516050 Are-we-friendly question received
 19:28:25.516083 Wrote request (93 bytes) input to log/24/server.input
 19:28:25.516101 Identifying ourselves as friends
 19:28:25.516166 Response sent (56 bytes) and written to log/24/server.response
 19:28:25.516177 special request received, no persistency
 19:28:25.516186 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 56688 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 leCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1339 ../src/curl -q --trace-ascii log/23/trace1339 --trace-time http://127.0.0.1:44711/1339 -J -O -D - --output-dir log/23 > log/23/stdout1339 2> log/23/stderr1339
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1342 ../src/curl -q --trace-ascii log/7/trace1342 --trace-time http://127.0.0.1:40859/1342 -i -O -D log/7/heads1342 --output-dir log/7 > log/7/stdout1342 2> log/7/stderr1342
ft intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1338
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1338
 ==153089== 
 ==153089== Process terminating with default action of signal 4 (SIGILL)
 ==153089==  Illegal opcode at address 0x492B75F
 ==153089==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153089==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153089==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153089==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153089==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153089==    by 0x49908EB: curl_version_info (version.c:600)
 ==153089==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153089==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153089==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153089==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1338
test 1336 [HTTP GET with -O and Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1336 ../src/curl -q --trace-ascii log/8/trace1336 --trace-time http://127.0.0.1:44467/1336 -O -D log/8/heads1336 --output-dir log/8 > log/8/stdout1336 2> log/8/stderr1336

 1336: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1336
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1336 ../src/curl -q --trace-ascii log/8/trace1336 --trace-time http://127.0.0.1:44467/1336 -O -D log/8/heads1336 --output-dir log/8 > log/8/stdout1336 2> log/8/stderr1336
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.277363 ====> Client connect
 19:28:25.277405 accept_connection 3 returned 4
 19:28:25.277430 Read 93 bytes
 19:28:25.277442 Process 93 bytes request
 19:28:25.277456 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.277465 Are-we-friendly question received
 19:28:25.277498 Wrote request (93 bytes) input to log/8/server.input
 19:28:25.277519 Identifying ourselves as friends
 19:28:25.277593 Response sent (56 bytes) and written to log/8/server.response
 19:28:25.277605 special request received, no persistency
 19:28:25.277615 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 56620 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1336
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1336
 ==152985== 
 ==152985== Process terminating with default action of signal 4 (SIGILL)
 ==152985==  Illegal opcode at address 0x492B75F
 ==152985==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==152985==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==152985==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==152985==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==152985==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==152985==    by 0x49908EB: curl_version_info (version.c:600)
 ==152985==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==152985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==152985==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==152985==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1336
test 1339 [HTTP GET with -O -J without Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1339 ../src/curl -q --trace-ascii log/23/trace1339 --trace-time http://127.0.0.1:44711/1339 -J -O -D - --output-dir log/23 > log/23/stdout1339 2> log/23/stderr1339

 1339: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1339
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1339 ../src/curl -q --trace-ascii log/23/trace1339 --trace-time http://127.0.0.1:44711/1339 -J -O -D - --output-dir log/23 > log/23/stdout1339 2> log/23/stderr1339
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.578355 ====> Client connect
 19:28:25.578397 accept_connection 3 returned 4
 19:28:25.578421 Read 93 bytes
 19:28:25.578433 Process 93 bytes request
 19:28:25.578447 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.578456 Are-we-friendly question received
 19:28:25.578489 Wrote request (93 bytes) input to log/23/server.input
 19:28:25.578509 Identifying ourselves as friends
 19:28:25.578587 Response sent (56 bytes) and written to log/23/server.response
 19:28:25.578599 special request received, no persistency
 19:28:25.578608 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 46944 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1339
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1339
 ==153100== 
 ==153100== Process terminating with default action of signal 4 (SIGILL)
 ==153100==  Illegal opcode at address 0x492B75F
 ==153100==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153100==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153100==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153100==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153100==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153100==    by 0x49908EB: curl_version_info (version.c:600)
 ==153100==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153100==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153100==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153100==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1339
test 1342 [HTTP GET with -O -i without Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1342 ../src/curl -q --trace-ascii log/7/trace1342 --trace-time http://127.0.0.1:40859/1342 -i -O -D log/7/heads1342 --output-dir log/7 > log/7/stdout1342 2> log/7/stderr1342

 1342: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1342
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1340 ../src/curl -q --trace-ascii log/20/trace1340 --trace-time http://127.0.0.1:33897/1340 -J -O -D log/20/heads1340 -w "curl saved to filename %{filename_effective}\n" --output-dir log/20 > log/20/stdout1340 2> log/20/stderr1340
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1344 ../src/curl -q --trace-ascii log/10/trace1344 --trace-time http://127.0.0.1:40913/1344 -i -O -D log/10/heads1344 --output-dir log/10 > log/10/stdout1344 2> log/10/stderr1344
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1342 ../src/curl -q --trace-ascii log/7/trace1342 --trace-time http://127.0.0.1:40859/1342 -i -O -D log/7/heads1342 --output-dir log/7 > log/7/stdout1342 2> log/7/stderr1342
=== End of file commands.log
=== Start of file http_server.log
 19:28:26.011859 ====> Client connect
 19:28:26.011898 accept_connection 3 returned 4
 19:28:26.011922 Read 93 bytes
 19:28:26.011931 Process 93 bytes request
 19:28:26.011945 Got request: GET /verifiedserver HTTP/1.1
 19:28:26.011954 Are-we-friendly question received
 19:28:26.011983 Wrote request (93 bytes) input to log/7/server.input
 19:28:26.012002 Identifying ourselves as friends
 19:28:26.012076 Response sent (56 bytes) and written to log/7/server.response
 19:28:26.012087 special request received, no persistency
 19:28:26.012096 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 46992 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1342
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1342
 ==153371== 
 ==153371== Process terminating with default action of signal 4 (SIGILL)
 ==153371==  Illegal opcode at address 0x492B75F
 ==153371==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153371==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153371==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153371==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153371==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153371==    by 0x49908EB: curl_version_info (version.c:600)
 ==153371==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153371==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153371==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153371==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1342
test 1340 [HTTP GET with -O -J and Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1340 ../src/curl -q --trace-ascii log/20/trace1340 --trace-time http://127.0.0.1:33897/1340 -J -O -D log/20/heads1340 -w "curl saved to filename %{filename_effective}\n" --output-dir log/20 > log/20/stdout1340 2> log/20/stderr1340

 1340: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1340
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1340 ../src/curl -q --trace-ascii log/20/trace1340 --trace-time http://127.0.0.1:33897/1340 -J -O -D log/20/heads1340 -w "curl saved to filename %{filename_effective}\n" --output-dir log/20 > log/20/stdout1340 2> log/20/stderr1340
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.768342 ====> Client connect
 19:28:25.768391 accept_connection 3 returned 4
 19:28:25.768597 Read 93 bytes
 19:28:25.768612 Process 93 bytes request
 19:28:25.768624 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.768633 Are-we-friendly question received
 19:28:25.768666 Wrote request (93 bytes) input to log/20/server.input
 19:28:25.768683 Identifying ourselves as friends
 19:28:25.768747 Response sent (56 bytes) and written to log/20/server.response
 19:28:25.768756 special request received, no persistency
 19:28:25.768764 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 42604 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1340
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1340
 ==153252== 
 ==153252== Process terminating with default action of signal 4 (SIGILL)
 ==153252==  Illegal opcode at address 0x492B75F
 ==153252==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153252==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153252==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153252==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153252==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153252==    by 0x49908EB: curl_version_info (version.c:600)
 ==153252==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153252==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153252==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153252==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1340
test 1344 [HTTP GET with -O -i and Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1344 ../src/curl -q --trace-ascii log/10/trace1344 --trace-time http://127.0.0.1:40913/1344 -i -O -D log/10/heads1344 --output-dir log/10 > log/10/stdout1344 2> log/10/stderr1344

 1344: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1344
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1344 ../src/curl -q --trace-ascii log/10/trace1344 --trace-time http://127.0.0.1:40913/1344 -i -O -D log/10/heads1344 --output-dir log/10 > log/10/stdout1344 2> log/10/stderr1344
=== End of file commands.log
=== Start of file http_server.log
 19:28:26.121673 ====> Client connect
 19:28:26.121720 accept_connection 3 returned 4
 19:28:26.121746 Read 93 bytes
 19:28:26.121756 Process 93 bytes request
 19:28:26.121768 Got request: GET /verifiedserver HTTP/1.1
 19:28:26.121777 Are-we-friendly question received
 19:28:26.121807 Wrote request (93 bytes) input to log/10/server.input
 19:28:26.121823 Identifying ourselves as friends
 19:28:26.121914 Response sent (56 bytes) and written to log/10/server.response
 19:28:26.121925 special request received, no persistency
 19:28:26.121933 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 41118 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file serCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1341 ../src/curl -q --trace-ascii log/12/trace1341 --trace-time http://127.0.0.1:40921/1341 -J -O -D - -w "curl saved to filename %{filename_effective}\n" --output-dir log/12 > log/12/stdout1341 2> log/12/stderr1341
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1337 ../src/curl -q --trace-ascii log/17/trace1337 --trace-time http://127.0.0.1:35993/1337 -O -D - --output-dir log/17 > log/17/stdout1337 2> log/17/stderr1337
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1343 ../src/curl -q --trace-ascii log/3/trace1343 --trace-time http://127.0.0.1:36161/1343 -i -O -D - --output-dir log/3 > log/3/stdout1343 2> log/3/stderr1343
ver.cmd
 Testnum 1344
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1344
 ==153468== 
 ==153468== Process terminating with default action of signal 4 (SIGILL)
 ==153468==  Illegal opcode at address 0x492B75F
 ==153468==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153468==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153468==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153468==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153468==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153468==    by 0x49908EB: curl_version_info (version.c:600)
 ==153468==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153468==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153468==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153468==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1344
test 1341 [HTTP GET with -O -J and Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1341 ../src/curl -q --trace-ascii log/12/trace1341 --trace-time http://127.0.0.1:40921/1341 -J -O -D - -w "curl saved to filename %{filename_effective}\n" --output-dir log/12 > log/12/stdout1341 2> log/12/stderr1341

 1341: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1341
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1341 ../src/curl -q --trace-ascii log/12/trace1341 --trace-time http://127.0.0.1:40921/1341 -J -O -D - -w "curl saved to filename %{filename_effective}\n" --output-dir log/12 > log/12/stdout1341 2> log/12/stderr1341
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.894773 ====> Client connect
 19:28:25.895005 accept_connection 3 returned 4
 19:28:25.895037 Read 93 bytes
 19:28:25.895047 Process 93 bytes request
 19:28:25.895060 Got request: GET /verifiedserver HTTP/1.1
 19:28:25.895068 Are-we-friendly question received
 19:28:25.895099 Wrote request (93 bytes) input to log/12/server.input
 19:28:25.895115 Identifying ourselves as friends
 19:28:25.895201 Response sent (56 bytes) and written to log/12/server.response
 19:28:25.895209 special request received, no persistency
 19:28:25.895217 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 57810 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1341
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1341
 ==153319== 
 ==153319== Process terminating with default action of signal 4 (SIGILL)
 ==153319==  Illegal opcode at address 0x492B75F
 ==153319==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153319==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153319==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153319==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153319==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153319==    by 0x49908EB: curl_version_info (version.c:600)
 ==153319==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153319==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153319==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153319==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1341
test 1337 [HTTP GET with -O and Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1337 ../src/curl -q --trace-ascii log/17/trace1337 --trace-time http://127.0.0.1:35993/1337 -O -D - --output-dir log/17 > log/17/stdout1337 2> log/17/stderr1337

 1337: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1337
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1337 ../src/curl -q --trace-ascii log/17/trace1337 --trace-time http://127.0.0.1:35993/1337 -O -D - --output-dir log/17 > log/17/stdout1337 2> log/17/stderr1337
=== End of file commands.log
=== Start of file http_server.log
 19:28:26.541753 ====> Client connect
 19:28:26.541801 accept_connection 3 returned 4
 19:28:26.541955 Read 93 bytes
 19:28:26.541972 Process 93 bytes request
 19:28:26.541985 Got request: GET /verifiedserver HTTP/1.1
 19:28:26.541994 Are-we-friendly question received
 19:28:26.542028 Wrote request (93 bytes) input to log/17/server.input
 19:28:26.542046 Identifying ourselves as friends
 19:28:26.542112 Response sent (56 bytes) and written to log/17/server.response
 19:28:26.542123 special request received, no persistency
 19:28:26.542132 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 54134 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1337
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1337
 ==153093== 
 ==153093== Process terminating with default action of signal 4 (SIGILL)
 ==153093==  Illegal opcode at address 0x492B75F
 ==153093==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153093==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153093==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153093==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153093==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153093==    by 0x49908EB: curl_version_info (version.c:600)
 ==153093==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153093==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153093==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153093==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1337
test 1343 [HTTP GET with -O -i without Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1343 ../src/curl -q --trace-ascii log/3/trace1343 --trace-time http://127.0.0.1:36161/1343 -i -O -D - --output-dir log/3 > log/3/stdout1343 2> log/3/stderr1343

 1343: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1343
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1335 ../src/curl -q --trace-ascii log/19/trace1335 --trace-time http://127.0.0.1:37077/1335 -O -D - --output-dir="log/19" > log/19/stdout1335 2> log/19/stderr1335
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1345 ../src/curl -q --trace-ascii log/4/trace1345 --trace-time http://127.0.0.1:35735/1345 -i -O -D - --output-dir log/4 > log/4/stdout1345 2> log/4/stderr1345
grind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1343 ../src/curl -q --trace-ascii log/3/trace1343 --trace-time http://127.0.0.1:36161/1343 -i -O -D - --output-dir log/3 > log/3/stdout1343 2> log/3/stderr1343
=== End of file commands.log
=== Start of file http_server.log
 19:28:27.083219 ====> Client connect
 19:28:27.083259 accept_connection 3 returned 4
 19:28:27.083284 Read 93 bytes
 19:28:27.083295 Process 93 bytes request
 19:28:27.083309 Got request: GET /verifiedserver HTTP/1.1
 19:28:27.083320 Are-we-friendly question received
 19:28:27.083351 Wrote request (93 bytes) input to log/3/server.input
 19:28:27.083372 Identifying ourselves as friends
 19:28:27.083445 Response sent (56 bytes) and written to log/3/server.response
 19:28:27.083457 special request received, no persistency
 19:28:27.083467 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36304 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1343
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1343
 ==153460== 
 ==153460== Process terminating with default action of signal 4 (SIGILL)
 ==153460==  Illegal opcode at address 0x492B75F
 ==153460==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153460==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153460==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153460==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153460==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153460==    by 0x49908EB: curl_version_info (version.c:600)
 ==153460==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153460==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153460==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153460==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1343
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/19/server/http_server.pid" --logfile "log/19/http_server.log" --logdir "log/19" --portfile log/19/server/http_server.port --config log/19/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 152965 port 37077
* pid http => 152965 152965
test 1335 [HTTP GET with -O without Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1335 ../src/curl -q --trace-ascii log/19/trace1335 --trace-time http://127.0.0.1:37077/1335 -O -D - --output-dir="log/19" > log/19/stdout1335 2> log/19/stderr1335

 1335: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1335
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1335 ../src/curl -q --trace-ascii log/19/trace1335 --trace-time http://127.0.0.1:37077/1335 -O -D - --output-dir="log/19" > log/19/stdout1335 2> log/19/stderr1335
=== End of file commands.log
=== Start of file http_server.log
 19:28:25.262154 Running HTTP IPv4 version on port 37077
 19:28:25.262258 Wrote pid 152965 to log/19/server/http_server.pid
 19:28:25.262299 Wrote port 37077 to log/19/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 1335
=== End of file server.cmd
=== Start of file valgrind1335
 ==153538== 
 ==153538== Process terminating with default action of signal 4 (SIGILL)
 ==153538==  Illegal opcode at address 0x492B75F
 ==153538==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153538==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153538==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153538==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153538==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153538==    by 0x49908EB: curl_version_info (version.c:600)
 ==153538==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153538==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153538==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153538==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1335
test 1345 [HTTP GET with -O -i and Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1345 ../src/curl -q --trace-ascii log/4/trace1345 --trace-time http://127.0.0.1:35735/1345 -i -O -D - --output-dir log/4 > log/4/stdout1345 2> log/4/stderr1345

 1345: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1345
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1345 ../src/curl -q --trace-ascii log/4/trace1345 --trace-time http://127.0.0.1:35735/1345 -i -O -D - --output-dir log/4 > log/4/stdout1345 2> log/4/stderr1345
=== End of file commands.log
=== Start of file http_server.log
 19:28:27.257943 ====> Client connect
 19:28:27.257987 accept_connection 3 returned 4
 19:28:27.258013 Read 93 bytes
 19:28:27.258025 Process 93 bytes request
 19:28:27.258038 Got request: GET /verifiedserver HTTP/1.1
 19:28:27.258048 Are-we-friendly question received
 19:28:27.258081 Wrote request (93 bytes) input to log/4/server.input
 19:28:27.258101 Identifying ourselves as friends
 19:28:27.258176 Response sent (56 bytes) and written to log/4/server.response
 19:28:27.258189 special request received, no persistency
 19:28:27.258198 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 54138 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1345
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1345
 ==153570== 
 ==153570== Process terminating with default action of signal 4 (SIGILL)
 ==153570==  Illegal opcode at address 0x492B75F
 ==153570==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153570==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153570==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153570==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153570==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153570==    by 0x49908EB: curl_version_info (version.c:600)
 ==153570==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153570==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153570==    by 0x4003269: UnknownInlinedFun (toCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1347 ../src/curl -q --trace-ascii log/9/trace1347 --trace-time http://127.0.0.1:43733/1347 -i -O --output-dir log/9 > log/9/stdout1347 2> log/9/stderr1347
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1346 ../src/curl -q --trace-ascii log/13/trace1346 --trace-time http://127.0.0.1:38821/1346 -i -O --output-dir log/13 > log/13/stdout1346 2> log/13/stderr1346
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1351 ../src/curl -q --trace-ascii log/18/trace1351 --trace-time ftp://127.0.0.1:36115/path/file1351 -O -J -D log/18/heads1351 --output-dir log/18 > log/18/stdout1351 2> log/18/stderr1351
ol_cfgable.c:310)
 ==153570==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1345
test 1347 [HTTP GET with -O -i and Content-Disposition, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1347 ../src/curl -q --trace-ascii log/9/trace1347 --trace-time http://127.0.0.1:43733/1347 -i -O --output-dir log/9 > log/9/stdout1347 2> log/9/stderr1347

 1347: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1347
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1347 ../src/curl -q --trace-ascii log/9/trace1347 --trace-time http://127.0.0.1:43733/1347 -i -O --output-dir log/9 > log/9/stdout1347 2> log/9/stderr1347
=== End of file commands.log
=== Start of file http_server.log
 19:28:26.374995 ====> Client connect
 19:28:26.375044 accept_connection 3 returned 4
 19:28:26.375065 Read 93 bytes
 19:28:26.375074 Process 93 bytes request
 19:28:26.375085 Got request: GET /verifiedserver HTTP/1.1
 19:28:26.375094 Are-we-friendly question received
 19:28:26.375121 Wrote request (93 bytes) input to log/9/server.input
 19:28:26.375136 Identifying ourselves as friends
 19:28:26.375200 Response sent (56 bytes) and written to log/9/server.response
 19:28:26.375209 special request received, no persistency
 19:28:26.375216 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 51396 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1347
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1347
 ==153706== 
 ==153706== Process terminating with default action of signal 4 (SIGILL)
 ==153706==  Illegal opcode at address 0x492B75F
 ==153706==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153706==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153706==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153706==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153706==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153706==    by 0x49908EB: curl_version_info (version.c:600)
 ==153706==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153706==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153706==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153706==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1347
test 1346 [HTTP GET with -O -i without Content-Disposition, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1346 ../src/curl -q --trace-ascii log/13/trace1346 --trace-time http://127.0.0.1:38821/1346 -i -O --output-dir log/13 > log/13/stdout1346 2> log/13/stderr1346

 1346: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1346
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1346 ../src/curl -q --trace-ascii log/13/trace1346 --trace-time http://127.0.0.1:38821/1346 -i -O --output-dir log/13 > log/13/stdout1346 2> log/13/stderr1346
=== End of file commands.log
=== Start of file http_server.log
 19:28:26.391906 ====> Client connect
 19:28:26.391944 accept_connection 3 returned 4
 19:28:26.391964 Read 93 bytes
 19:28:26.391972 Process 93 bytes request
 19:28:26.391985 Got request: GET /verifiedserver HTTP/1.1
 19:28:26.391994 Are-we-friendly question received
 19:28:26.392019 Wrote request (93 bytes) input to log/13/server.input
 19:28:26.392034 Identifying ourselves as friends
 19:28:26.392090 Response sent (56 bytes) and written to log/13/server.response
 19:28:26.392099 special request received, no persistency
 19:28:26.392106 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 43506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1346
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1346
 ==153726== 
 ==153726== Process terminating with default action of signal 4 (SIGILL)
 ==153726==  Illegal opcode at address 0x492B75F
 ==153726==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153726==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153726==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153726==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153726==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153726==    by 0x49908EB: curl_version_info (version.c:600)
 ==153726==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153726==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153726==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153726==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1346
test 1351 [FTP download, file without C-D inside, using -O -J -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1351 ../src/curl -q --trace-ascii log/18/trace1351 --trace-time ftp://127.0.0.1:36115/path/file1351 -O -J -D log/18/heads1351 --output-dir log/18 > log/18/stdout1351 2> log/18/stderr1351

 1351: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1351
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1351 ../src/curl -q --trace-ascii log/18/trace1351 --trace-time ftp://127.0.0.1:36115/path/file1351 -O -J -D log/18/heads1351 --output-dir log/18 > log/18/stdout1351 2> log/18/stderr1351
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.064197 ====> Client connect
 19:28:27.064426 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.064803 < "USER anonymous"
 19:28:27.064842 > "331 We are happy you popped in![CR][LF]"
 19:28:27.065300 < "PASS ftp@example.com"
 19:28:27.065343 > "230 Welcome you silly person[CR][LF]"
 19:28:27.065513 < "PWD"
 19:28:27.065549 > "257 "/" is current directory[CR][LF]"
 19:28:27.068876 < "EPSV"
 19:28:27.068907 ====> Passive DATA channel requested bCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1352 ../src/curl -q --trace-ascii log/22/trace1352 --trace-time ftp://127.0.0.1:33255/path/file1352 -O -J -D - --output-dir log/22 > log/22/stdout1352 2> log/22/stderr1352
y client
 19:28:27.068924 DATA sockfilt for passive data channel starting...
 19:28:27.074469 DATA sockfilt for passive data channel started (pid 153889)
 19:28:27.074614 DATA sockfilt for passive data channel listens on port 32815
 19:28:27.074670 > "229 Entering Passive Mode (|||32815|)[CR][LF]"
 19:28:27.074693 Client has been notified that upcoming DATA connection is awaited on port 32815
 19:28:27.075011 Client connects to port 32815
 19:28:27.075042 ====> Client established passive DATA connection on port 32815
 19:28:27.075140 < "TYPE I"
 19:28:27.075178 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.075431 < "SIZE verifiedserver"
 19:28:27.075478 > "213 17[CR][LF]"
 19:28:27.075670 < "RETR verifiedserver"
 19:28:27.075711 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.075812 =====> Closing passive DATA connection...
 19:28:27.075836 Server disconnects passive DATA connection
 19:28:27.076094 Server disconnected passive DATA connection
 19:28:27.076125 DATA sockfilt for passive data channel quits (pid 153889)
 19:28:27.076447 DATA sockfilt for passive data channel quit (pid 153889)
 19:28:27.076478 =====> Closed passive DATA connection
 19:28:27.076511 > "226 File transfer complete[CR][LF]"
 19:28:27.130250 < "QUIT"
 19:28:27.132016 > "221 bye bye baby[CR][LF]"
 19:28:27.132078 MAIN sockfilt said DISC
 19:28:27.132104 ====> Client disconnected
 19:28:27.132197 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:26.666993 ====> Client connect
 19:28:26.667376 Received DATA (on stdin)
 19:28:26.667395 > 146 bytes data, server => client
 19:28:26.667407 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:26.667416 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:26.667426 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:26.667563 < 16 bytes data, client => server
 19:28:26.667580 'USER anonymous\r\n'
 19:28:26.667771 Received DATA (on stdin)
 19:28:26.667784 > 33 bytes data, server => client
 19:28:26.667794 '331 We are happy you popped in!\r\n'
 19:28:26.668108 < 22 bytes data, client => server
 19:28:26.668126 'PASS ftp@example.com\r\n'
 19:28:26.668271 Received DATA (on stdin)
 19:28:26.668282 > 30 bytes data, server => client
 19:28:26.668291 '230 Welcome you silly person\r\n'
 19:28:26.668347 < 5 bytes data, client => server
 19:28:26.668359 'PWD\r\n'
 19:28:26.671577 Received DATA (on stdin)
 19:28:26.671600 > 30 bytes data, server => client
 19:28:26.671612 '257 "/" is current directory\r\n'
 19:28:26.671695 < 6 bytes data, client => server
 19:28:26.671709 'EPSV\r\n'
 19:28:26.677632 Received DATA (on stdin)
 19:28:26.677649 > 39 bytes data, server => client
 19:28:26.677660 '229 Entering Passive Mode (|||32815|)\r\n'
 19:28:26.677880 < 8 bytes data, client => server
 19:28:26.677893 'TYPE I\r\n'
 19:28:26.678112 Received DATA (on stdin)
 19:28:26.678125 > 33 bytes data, server => client
 19:28:26.678136 '200 I modify TYPE as you wanted\r\n'
 19:28:26.678239 < 21 bytes data, client => server
 19:28:26.678256 'SIZE verifiedserver\r\n'
 19:28:26.678413 Received DATA (on stdin)
 19:28:26.678426 > 8 bytes data, server => client
 19:28:26.678435 '213 17\r\n'
 19:28:26.678496 < 21 bytes data, client => server
 19:28:26.678511 'RETR verifiedserver\r\n'
 19:28:26.678766 Received DATA (on stdin)
 19:28:26.678779 > 29 bytes data, server => client
 19:28:26.678790 '150 Binary junk (17 bytes).\r\n'
 19:28:26.679442 Received DATA (on stdin)
 19:28:26.679459 > 28 bytes data, server => client
 19:28:26.679469 '226 File transfer complete\r\n'
 19:28:26.732968 < 6 bytes data, client => server
 19:28:26.733005 'QUIT\r\n'
 19:28:26.733208 Received DATA (on stdin)
 19:28:26.733221 > 18 bytes data, server => client
 19:28:26.733240 '221 bye bye baby\r\n'
 19:28:26.734593 ====> Client disconnect
 19:28:26.735122 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.676270 Running IPv4 version
 19:28:27.676360 Listening on port 32815
 19:28:27.676416 Wrote pid 153889 to log/18/server/ftp_sockdata.pid
 19:28:27.677314 Received PING (on stdin)
 19:28:27.677436 Received PORT (on stdin)
 19:28:27.677847 ====> Client connect
 19:28:27.678820 Received DATA (on stdin)
 19:28:27.678835 > 17 bytes data, server => client
 19:28:27.678846 'WE ROOLZ: 85350\r\n'
 19:28:27.678875 Received DISC (on stdin)
 19:28:27.678889 ====> Client forcibly disconnected
 19:28:27.679065 Received QUIT (on stdin)
 19:28:27.679078 quits
 19:28:27.679158 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1351
=== End of file server.cmd
=== Start of file valgrind1351
 ==153952== 
 ==153952== Process terminating with default action of signal 4 (SIGILL)
 ==153952==  Illegal opcode at address 0x492B75F
 ==153952==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153952==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153952==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153952==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153952==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153952==    by 0x49908EB: curl_version_info (version.c:600)
 ==153952==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153952==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153952==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153952==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1351
test 1352 [FTP download, file without C-D inside, using -O -J -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1352 ../src/curl -q --trace-ascii log/22/trace1352 --trace-time ftp://127.0.0.1:33255/path/file1352 -O -J -D - --output-dir log/22 > log/22/stdout1352 2> log/22/stderr1352

 1352: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1352
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1352 ../src/curl -q --trace-ascii log/22/trace1352 --trace-time ftp://127.0.0.1:33255/path/file1352 -O -J -D - --output-dir log/22 > log/22/stdout1352 2> log/22/stderr1352
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.431196 ====> Client connect
 19:28:27.431397 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.434009 < "USER anonymous"
 19:28:27.434058 > "331 We are happy you popped in![CR][LF]"
 19:28:27.434890 < "PASS ftp@example.com"
 19:28:27.434936 > "230 Welcome you silly person[CR][LF]"
 19:28:27.442139 < "PWD"
 19:28:27.442214 > "257 "/" is current directory[CR][LF]"
 19:28:27.455471 < "EPSV"
 19:28:27.455513 ====> Passive DATA channel requested by client
 19:28:27.455529 DATA sockfilt for passive data channel starting...
 19:28:27.462042 DATA sockfilt for passive data channel started (pid 154113)
 19:28:27.462221 DATA sockfilt for passive data channel listens on port 40723
 19:28:27.462281 > "229 Entering Passive Mode (|||40723|)[CR][LF]"
 19:28:27.462305 Client has been notified that upcoming DATA connection is awaited on port 40723
 19:28:27.466669 Client connects to port 40723
 19:28:27.466725 ====> Client established passive DATA connection on port 40723
 19:28:27.466856 < "TYPE I"
 19:28:27.466898 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.482153 < "SIZE verifiedserver"
 19:28:27.482233 > "213 17[CR][LF]"
 19:28:27.482529 < "RETR verifiedserver"
 19:28:27.482580 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.482697 =====> Closing passive DATA connection...
 19:28:27.482723 Server disconnects passive DATA connection
 19:28:27.483002 Server disconnected passive DATA connection
 19:28:27.483035 DATA sockfilt for passive data channel quits (pid 154113)
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1349 ../src/curl -q --trace-ascii log/14/trace1349 --trace-time ftp://127.0.0.1:37411/path/file1349 -O -D log/14/heads1349 --output-dir log/14 > log/14/stdout1349 2> log/14/stderr1349
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1348 ../src/curl -q --trace-ascii log/15/trace1348 --trace-time ftp://127.0.0.1:44883/path/file1348 -O --output-dir log/15 > log/15/stdout1348 2> log/15/stderr1348
 19:28:27.483361 DATA sockfilt for passive data channel quit (pid 154113)
 19:28:27.483395 =====> Closed passive DATA connection
 19:28:27.483427 > "226 File transfer complete[CR][LF]"
 19:28:27.542511 < "QUIT"
 19:28:27.542573 > "221 bye bye baby[CR][LF]"
 19:28:27.543823 MAIN sockfilt said DISC
 19:28:27.543868 ====> Client disconnected
 19:28:27.543977 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:28.033991 ====> Client connect
 19:28:28.035172 Received DATA (on stdin)
 19:28:28.035199 > 146 bytes data, server => client
 19:28:28.035288 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:28.035301 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:28.035310 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:28.036713 < 16 bytes data, client => server
 19:28:28.036732 'USER anonymous\r\n'
 19:28:28.037561 Received DATA (on stdin)
 19:28:28.037590 > 33 bytes data, server => client
 19:28:28.037614 '331 We are happy you popped in!\r\n'
 19:28:28.037692 < 22 bytes data, client => server
 19:28:28.037703 'PASS ftp@example.com\r\n'
 19:28:28.037848 Received DATA (on stdin)
 19:28:28.037858 > 30 bytes data, server => client
 19:28:28.037868 '230 Welcome you silly person\r\n'
 19:28:28.041597 < 5 bytes data, client => server
 19:28:28.041625 'PWD\r\n'
 19:28:28.050577 Received DATA (on stdin)
 19:28:28.050600 > 30 bytes data, server => client
 19:28:28.050611 '257 "/" is current directory\r\n'
 19:28:28.051645 < 6 bytes data, client => server
 19:28:28.051665 'EPSV\r\n'
 19:28:28.068499 Received DATA (on stdin)
 19:28:28.068534 > 39 bytes data, server => client
 19:28:28.068546 '229 Entering Passive Mode (|||40723|)\r\n'
 19:28:28.068787 < 8 bytes data, client => server
 19:28:28.068804 'TYPE I\r\n'
 19:28:28.078232 Received DATA (on stdin)
 19:28:28.078270 > 33 bytes data, server => client
 19:28:28.078282 '200 I modify TYPE as you wanted\r\n'
 19:28:28.081648 < 21 bytes data, client => server
 19:28:28.081676 'SIZE verifiedserver\r\n'
 19:28:28.085160 Received DATA (on stdin)
 19:28:28.085185 > 8 bytes data, server => client
 19:28:28.085195 '213 17\r\n'
 19:28:28.085314 < 21 bytes data, client => server
 19:28:28.085330 'RETR verifiedserver\r\n'
 19:28:28.085639 Received DATA (on stdin)
 19:28:28.085653 > 29 bytes data, server => client
 19:28:28.085664 '150 Binary junk (17 bytes).\r\n'
 19:28:28.086341 Received DATA (on stdin)
 19:28:28.086354 > 28 bytes data, server => client
 19:28:28.086364 '226 File transfer complete\r\n'
 19:28:28.145213 < 6 bytes data, client => server
 19:28:28.145249 'QUIT\r\n'
 19:28:28.145491 Received DATA (on stdin)
 19:28:28.145507 > 18 bytes data, server => client
 19:28:28.145518 '221 bye bye baby\r\n'
 19:28:28.146668 ====> Client disconnect
 19:28:28.146897 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.062326 Running IPv4 version
 19:28:27.062417 Listening on port 40723
 19:28:27.062463 Wrote pid 154113 to log/22/server/ftp_sockdata.pid
 19:28:27.062492 Received PING (on stdin)
 19:28:27.065017 Received PORT (on stdin)
 19:28:27.069505 ====> Client connect
 19:28:27.085699 Received DATA (on stdin)
 19:28:27.085716 > 17 bytes data, server => client
 19:28:27.085726 'WE ROOLZ: 84714\r\n'
 19:28:27.085753 Received DISC (on stdin)
 19:28:27.085764 ====> Client forcibly disconnected
 19:28:27.085960 Received QUIT (on stdin)
 19:28:27.085974 quits
 19:28:27.086057 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1352
=== End of file server.cmd
=== Start of file valgrind1352
 ==154152== 
 ==154152== Process terminating with default action of signal 4 (SIGILL)
 ==154152==  Illegal opcode at address 0x492B75F
 ==154152==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154152==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154152==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154152==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154152==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154152==    by 0x49908EB: curl_version_info (version.c:600)
 ==154152==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154152==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154152==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154152==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1352
test 1349 [FTP download, file without C-D inside, using -O -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1349 ../src/curl -q --trace-ascii log/14/trace1349 --trace-time ftp://127.0.0.1:37411/path/file1349 -O -D log/14/heads1349 --output-dir log/14 > log/14/stdout1349 2> log/14/stderr1349

 1349: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1349
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1349 ../src/curl -q --trace-ascii log/14/trace1349 --trace-time ftp://127.0.0.1:37411/path/file1349 -O -D log/14/heads1349 --output-dir log/14 > log/14/stdout1349 2> log/14/stderr1349
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.004884 ====> Client connect
 19:28:27.005060 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.005309 < "USER anonymous"
 19:28:27.005500 > "331 We are happy you popped in![CR][LF]"
 19:28:27.005653 < "PASS ftp@example.com"
 19:28:27.005725 > "230 Welcome you silly person[CR][LF]"
 19:28:27.005817 < "PWD"
 19:28:27.005845 > "257 "/" is current directory[CR][LF]"
 19:28:27.007938 < "EPSV"
 19:28:27.007965 ====> Passive DATA channel requested by client
 19:28:27.007978 DATA sockfilt for passive data channel starting...
 19:28:27.012174 DATA sockfilt for passive data channel started (pid 153868)
 19:28:27.012280 DATA sockfilt for passive data channel listens on port 45241
 19:28:27.012319 > "229 Entering Passive Mode (|||45241|)[CR][LF]"
 19:28:27.012336 Client has been notified that upcoming DATA connection is awaited on port 45241
 19:28:27.012555 Client connects to port 45241
 19:28:27.012582 ====> Client established passive DATA connection on port 45241
 19:28:27.012654 < "TYPE I"
 19:28:27.012679 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.012817 < "SIZE verifiedserver"
 19:28:27.012847 > "213 17[CR][LF]"
 19:28:27.012976 < "RETR verifiedserver"
 19:28:27.013005 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.013099 =====> Closing passive DATA connection...
 19:28:27.013114 Server disconnects passive DATA connection
 19:28:27.013307 Server disconnected passive DATA connection
 19:28:27.013329 DATA sockfilt for passive data channel quits (pid 153868)
 19:28:27.013590 DATA sockfilt for passive data channel quit (pid 153868)
 19:28:27.013611 =====> Closed passive DATA connection
 19:28:27.013636 > "226 File transfer complete[CR][LF]"
 19:28:27.058999 < "QUIT"
 19:28:27.059066 > "221 bye bye baby[CR][LF]"
 19:28:27.060264 MAIN sockfilt said DISC
 19:28:27.060294 ====> Client disconnected
 19:28:27.060388 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.607715 ====> Client connect
 19:28:27.607994 Received DATA (on stdin)
 19:28:27.608006 > 146 bytes data, server => client
 19:28:27.608016 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.608025 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.608034 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.608110 < 16 bytes data, client => server
 19:28:27.608120 'USER anonymous\r\n'
 19:28:27.608430 Received DATA (on stdin)
 19:28:27.608441 > 33 bytes data, server => client
 19:28:27.608450 '331 We are happy you popped in!\r\n'
 19:28:27.608500 < 22 bytes data, client => server
 19:28:27.608510 'PASS ftp@example.com\r\n'
 19:28:27.608583 Received DATA (on stdin)
 19:28:27.608593 > 30 bytes data, server => client
 19:28:27.608608 '230 Welcome you silly person\r\n'
 19:28:27.608672 < 5 bytes data, client => server
 19:28:27.608681 'PWD\r\n'
 19:28:27.608768 Received DATA (on stdin)
 19:28:27.608777 > 30 bytes data, server => client
 19:28:27.608786 '257 "/" is current directory\r\n'
 19:28:27.608831 < 6 bytes data, client => server
 19:28:27.608840 'EPSV\r\n'
 19:28:27.615267 Received DATA (on stdin)
 19:28:27.615281 > 39 bytes data, server => client
 19:28:27.615291 '229 Entering Passive Mode (|||45241|)\r\n'
 19:28:27.615412 < 8 bytes data, client => server
 19:28:27.615424 'TYPE I\r\n'
 19:28:27.615604 Received DATA (on stdin)
 19:28:27.615614 > 33 bytes data, server => client
 19:28:27.615624 '200 I modify TYPE as you wanted\r\n'
 19:28:27.615670 < 21 bytes data, client => server
 19:28:27.615679 'SIZE verifiedserver\r\n'
 19:28:27.615771 Received DATA (on stdin)
 19:28:27.615780 > 8 bytes data, server => client
 19:28:27.615788 '213 17\r\n'
 19:28:27.615832 < 21 bytes data, client => server
 19:28:27.615840 'RETR verifiedserver\r\n'
 19:28:27.616038 Received DATA (on stdin)
 19:28:27.616048 > 29 bytes data, server => client
 19:28:27.616057 '150 Binary junk (17 bytes).\r\n'
 19:28:27.616562 Received DATA (on stdin)
 19:28:27.616573 > 28 bytes data, server => client
 19:28:27.616582 '226 File transfer complete\r\n'
 19:28:27.661697 < 6 bytes data, client => server
 19:28:27.661738 'QUIT\r\n'
 19:28:27.662005 Received DATA (on stdin)
 19:28:27.662019 > 18 bytes data, server => client
 19:28:27.662030 '221 bye bye baby\r\n'
 19:28:27.663139 ====> Client disconnect
 19:28:27.663322 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.612802 Running IPv4 version
 19:28:27.612872 Listening on port 45241
 19:28:27.612910 Wrote pid 153868 to log/14/server/ftp_sockdata.pid
 19:28:27.615034 Received PING (on stdin)
 19:28:27.615123 Received PORT (on stdin)
 19:28:27.615441 ====> Client connect
 19:28:27.616079 Received DATA (on stdin)
 19:28:27.616090 > 17 bytes data, server => client
 19:28:27.616098 'WE ROOLZ: 85053\r\n'
 19:28:27.616119 Received DISC (on stdin)
 19:28:27.616128 ====> Client forcibly disconnected
 19:28:27.616259 Received QUIT (on stdin)
 19:28:27.616269 quits
 19:28:27.616333 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1349
=== End of file server.cmd
=== Start of file valgrind1349
 ==153913== 
 ==153913== Process terminating with default action of signal 4 (SIGILL)
 ==153913==  Illegal opcode at address 0x492B75F
 ==153913==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153913==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153913==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153913==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153913==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153913==    by 0x49908EB: curl_version_info (version.c:600)
 ==153913==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153913==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153913==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153913==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1349
test 1348 [FTP download, file without Content-Disposition inside, using -O]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1348 ../src/curl -q --trace-ascii log/15/trace1348 --trace-time ftp://127.0.0.1:44883/path/file1348 -O --output-dir log/15 > log/15/stdout1348 2> log/15/stderr1348

 1348: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1348
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1348 ../src/curl -q --trace-ascii log/15/trace1348 --trace-time ftp://127.0.0.1:44883/path/file1348 -O --output-dir log/15 > log/15/stdout1348 2> log/15/stderr1348
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:26.985444 ====> Client connect
 19:28:26.985626 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:26.992163 < "USER anonymous"
 19:28:26.992213 > "331 We are happy you popped in![CR][LF]"
 19:28:26.992411 < "PASS ftp@example.com"
 19:28:26.992442 > "230 Welcome you silly person[CR][LF]"
 19:28:26.992603 < "PWD"
 19:28:26.992634 > "257 "/" is current directory[CR][LF]"
 19:28:26.992793 < "EPSV"
 19:28:26.992818 ====> Passive DATA channel requested by client
 19:28:26.992832 DATA sockfilt for passive data channel starting...
 19:28:27.012226 DATA sockfilt for passive data channel started (pid 153853)
 19:28:27.012382 DATA sockfilt for passive data channel listens on port 42955
 19:28:27.012439 > "229 Entering Passive Mode (|||42955|)[CR][LF]"
 19:28:27.012463 Client has been notified that upcoming DATA connection is awaited on port 42955
 19:28:27.019828 Client connects to port 42955
 19:28:27.019891 ====> Client established passive DATA connection on port 42955
 19:28:27.020019 < "TYPE I"
 19:28:27.020066 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.027276 < "SIZE verifiedserver"
 19:28:27.027353 > "213 17[CR][LF]"
 19:28:27.032117 < "RETR verifiedserver"
 19:28:27.032185 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.032297 =====> Closing passive DATA connection...
 19:28:27.032319 Server disconnects passive DATA connection
 19:28:27.032467 Server disconnected passive DATA connection
 19:28:27.032502 DATA sockfilt for passive data channel quits (pid 153853)
 19:28:27.032811 DATA sockfilt for passive data channel quit (pid 153853)
 19:28:27.032840 =====> Closed passive DATA connection
 19:28:27.032871 > "226 File transfer complete[CR][LF]"
 19:28:27.082297 < "QUIT"
 19:28:27.082348 > "221 bye bye baby[CR][LF]"
 19:28:27.083443 MAIN sockfilt said DISC
 19:28:27.083473 ====> Client disconnected
 19:28:27.083546 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:26.588258 ====> Client connect
 19:28:26.588566 Received DATA (on stdin)
 19:28:26.588580 > 146 bytes data, server => client
 19:28:26.588591 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:26.588601 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:26.588610 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:26.591653 < 16 bytes data, client => server
 19:28:26.591671 'USER anonymous\r\n'
 19:28:26.595146 Received DATA (on stdin)
 19:28:26.595160 > 33 bytes data, server => client
 19:28:26.595170 '331 We are happy you popped in!\r\n'
 19:28:26.595241 < 22 bytes data, client => server
 19:28:26.595253 'PASS ftp@example.com\r\n'
 19:28:26.595371 Received DATA (on stdin)
 19:28:26.595382 > 30 bytes data, server => client
 19:28:26.595392 '230 Welcome you silly person\r\n'
 19:28:26.595445 < 5 bytes data, client => server
 19:28:26.595457 'PWD\r\n'
 19:28:26.595560 Received DATA (on stdin)
 19:28:26.595571 > 30 bytes data, server => client
 19:28:26.595580 '257 "/" is current directory\r\n'
 19:28:26.595641 < 6 bytes data, client => server
 19:28:26.595651 'EPSV\r\n'
 19:28:26.615403 Received DATA (on stdin)
 19:28:26.615419 > 39 bytes data, server => client
 19:28:26.615430 '229 Entering Passive Mode (|||42955|)\r\n'
 19:28:26.621758 < 8 bytes data, client => server
 19:28:26.621784 'TYPE I\r\n'
 19:28:26.628247 Received DATA (on stdin)
 19:28:26.628282 > 33 bytes data, server => client
 19:28:26.628294 '200 I modify TYPE as you wanted\r\n'
 19:28:26.628410 < 21 bytes data, client => server
 19:28:26.628422 'SIZE verifiedserver\r\n'
 19:28:26.631584 Received DATA (on stdCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1350 ../src/curl -q --trace-ascii log/1/trace1350 --trace-time ftp://127.0.0.1:40221/path/file1350 -O -D - --output-dir log/1 > log/1/stdout1350 2> log/1/stderr1350
in)
 19:28:26.631602 > 8 bytes data, server => client
 19:28:26.631611 '213 17\r\n'
 19:28:26.631684 < 21 bytes data, client => server
 19:28:26.631693 'RETR verifiedserver\r\n'
 19:28:26.638275 Received DATA (on stdin)
 19:28:26.638304 > 29 bytes data, server => client
 19:28:26.638314 '150 Binary junk (17 bytes).\r\n'
 19:28:26.638347 Received DATA (on stdin)
 19:28:26.638356 > 28 bytes data, server => client
 19:28:26.638366 '226 File transfer complete\r\n'
 19:28:26.685057 < 6 bytes data, client => server
 19:28:26.685086 'QUIT\r\n'
 19:28:26.685275 Received DATA (on stdin)
 19:28:26.685286 > 18 bytes data, server => client
 19:28:26.685296 '221 bye bye baby\r\n'
 19:28:26.686317 ====> Client disconnect
 19:28:26.686468 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:26.602363 Running IPv4 version
 19:28:26.602449 Listening on port 42955
 19:28:26.602490 Wrote pid 153853 to log/15/server/ftp_sockdata.pid
 19:28:26.615064 Received PING (on stdin)
 19:28:26.615205 Received PORT (on stdin)
 19:28:26.622681 ====> Client connect
 19:28:26.635256 Received DATA (on stdin)
 19:28:26.635275 > 17 bytes data, server => client
 19:28:26.635285 'WE ROOLZ: 84744\r\n'
 19:28:26.635324 Received DISC (on stdin)
 19:28:26.635336 ====> Client forcibly disconnected
 19:28:26.635441 Received QUIT (on stdin)
 19:28:26.635453 quits
 19:28:26.635532 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1348
=== End of file server.cmd
=== Start of file valgrind1348
 ==153908== 
 ==153908== Process terminating with default action of signal 4 (SIGILL)
 ==153908==  Illegal opcode at address 0x492B75F
 ==153908==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153908==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153908==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153908==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153908==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153908==    by 0x49908EB: curl_version_info (version.c:600)
 ==153908==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153908==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153908==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153908==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1348
test 1350 [FTP download, file without C-D inside, using -O -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1350 ../src/curl -q --trace-ascii log/1/trace1350 --trace-time ftp://127.0.0.1:40221/path/file1350 -O -D - --output-dir log/1 > log/1/stdout1350 2> log/1/stderr1350

 1350: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1350
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1350 ../src/curl -q --trace-ascii log/1/trace1350 --trace-time ftp://127.0.0.1:40221/path/file1350 -O -D - --output-dir log/1 > log/1/stdout1350 2> log/1/stderr1350
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.002108 ====> Client connect
 19:28:27.002325 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.002625 < "USER anonymous"
 19:28:27.002665 > "331 We are happy you popped in![CR][LF]"
 19:28:27.002834 < "PASS ftp@example.com"
 19:28:27.002863 > "230 Welcome you silly person[CR][LF]"
 19:28:27.003013 < "PWD"
 19:28:27.003044 > "257 "/" is current directory[CR][LF]"
 19:28:27.003197 < "EPSV"
 19:28:27.003218 ====> Passive DATA channel requested by client
 19:28:27.003231 DATA sockfilt for passive data channel starting...
 19:28:27.009234 DATA sockfilt for passive data channel started (pid 153865)
 19:28:27.009382 DATA sockfilt for passive data channel listens on port 37669
 19:28:27.009440 > "229 Entering Passive Mode (|||37669|)[CR][LF]"
 19:28:27.009465 Client has been notified that upcoming DATA connection is awaited on port 37669
 19:28:27.012316 Client connects to port 37669
 19:28:27.012371 ====> Client established passive DATA connection on port 37669
 19:28:27.012556 < "TYPE I"
 19:28:27.012609 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.012829 < "SIZE verifiedserver"
 19:28:27.012878 > "213 17[CR][LF]"
 19:28:27.013082 < "RETR verifiedserver"
 19:28:27.013125 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.013235 =====> Closing passive DATA connection...
 19:28:27.013258 Server disconnects passive DATA connection
 19:28:27.013397 Server disconnected passive DATA connection
 19:28:27.013423 DATA sockfilt for passive data channel quits (pid 153865)
 19:28:27.013676 DATA sockfilt for passive data channel quit (pid 153865)
 19:28:27.013709 =====> Closed passive DATA connection
 19:28:27.013740 > "226 File transfer complete[CR][LF]"
 19:28:27.062158 < "QUIT"
 19:28:27.062209 > "221 bye bye baby[CR][LF]"
 19:28:27.063578 MAIN sockfilt said DISC
 19:28:27.063622 ====> Client disconnected
 19:28:27.063705 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.604928 ====> Client connect
 19:28:27.605269 Received DATA (on stdin)
 19:28:27.605284 > 146 bytes data, server => client
 19:28:27.605296 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.605307 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.605316 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.605402 < 16 bytes data, client => server
 19:28:27.605414 'USER anonymous\r\n'
 19:28:27.605595 Received DATA (on stdin)
 19:28:27.605606 > 33 bytes data, server => client
 19:28:27.605616 '331 We are happy you popped in!\r\n'
 19:28:27.605670 < 22 bytes data, client => server
 19:28:27.605681 'PASS ftp@example.com\r\n'
 19:28:27.605790 Received DATA (on stdin)
 19:28:27.605800 > 30 bytes data, server => client
 19:28:27.605810 '230 Welcome you silly person\r\n'
 19:28:27.605859 < 5 bytes data, client => server
 19:28:27.605869 'PWD\r\n'
 19:28:27.605969 Received DATA (on stdin)
 19:28:27.605980 > 30 bytes data, server => client
 19:28:27.605989 '257 "/" is current directory\r\n'
 19:28:27.606048 < 6 bytes data, client => server
 19:28:27.606058 'EPSV\r\n'
 19:28:27.614914 Received DATA (on stdin)
 19:28:27.614942 > 39 bytes data, server => client
 19:28:27.614955 '229 Entering Passive Mode (|||37669|)\r\n'
 19:28:27.615334 < 8 bytes data, client => server
 19:28:27.615354 'TYPE I\r\n'
 19:28:27.615547 Received DATA (on stdin)
 19:28:27.615560 > 33 bytes data, server => client
 19:28:27.615571 '200 I modify TYPE as you wanted\r\n'
 19:28:27.615642 < 21 bytes data, client => server
 19:28:27.615657 'SIZE verifiedserver\r\n'
 19:28:27.615816 Received DATA (on stdin)
 19:28:27.615830 > 8 bytes data, server => client
 19:28:27.615840 '213 17\r\n'
 19:28:27.615903 < 21 bytes data, client => server
 19:28:27.615919 'RETR verifiedserver\r\n'
 19:28:27.616674 Received DATA (on stdin)
 19:28:27.616688 > 29 bytes data, server => client
 19:28:27.616698 '150 Binary junk (17 bytes).\r\n'
 19:28:27.616724 Received DATA (on stdin)
 19:28:27.616736 > 28 bytes data, server => client
 19:28:27.616747 '226 File transfer complete\r\n'
 19:28:27.664920 < 6 bytes data, client => server
 19:28:27.664945 'QUIT\r\n'
 19:28:27.665143 Received DATA (on stdin)
 19:28:27.665156 > 18 bytes data, server => client
 19:28:27.665166 '221 bye bye baby\r\n'
 19:28:27.666444 ====> Client disconnect
 19:28:27.666638 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.611769 Running IPv4 version
 19:28:27.611867 Listening on port 37669
 19:28:27.611909 Wrote pid 153865 to log/1/server/ftp_sockdata.pid
 19:28:27.612095 Received PING (on stdin)
 19:28:27.612203 Received PORT (on stdin)
 19:28CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1353 ../src/curl -q --trace-ascii log/5/trace1353 --trace-time ftp://127.0.0.1:39641/path/file1353 -O -i -D log/5/heads1353 --output-dir log/5 > log/5/stdout1353 2> log/5/stderr1353
:27.615171 ====> Client connect
 19:28:27.616195 Received DATA (on stdin)
 19:28:27.616212 > 17 bytes data, server => client
 19:28:27.616223 'WE ROOLZ: 84935\r\n'
 19:28:27.616255 Received DISC (on stdin)
 19:28:27.616269 ====> Client forcibly disconnected
 19:28:27.616360 Received QUIT (on stdin)
 19:28:27.616371 quits
 19:28:27.616435 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1350
=== End of file server.cmd
=== Start of file valgrind1350
 ==153891== 
 ==153891== Process terminating with default action of signal 4 (SIGILL)
 ==153891==  Illegal opcode at address 0x492B75F
 ==153891==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==153891==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==153891==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==153891==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==153891==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==153891==    by 0x49908EB: curl_version_info (version.c:600)
 ==153891==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==153891==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==153891==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==153891==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1350
test 1353 [FTP download, file without C-D inside, using -O -i -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1353 ../src/curl -q --trace-ascii log/5/trace1353 --trace-time ftp://127.0.0.1:39641/path/file1353 -O -i -D log/5/heads1353 --output-dir log/5 > log/5/stdout1353 2> log/5/stderr1353

 1353: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1353
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1353 ../src/curl -q --trace-ascii log/5/trace1353 --trace-time ftp://127.0.0.1:39641/path/file1353 -O -i -D log/5/heads1353 --output-dir log/5 > log/5/stdout1353 2> log/5/stderr1353
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.507024 ====> Client connect
 19:28:27.507215 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.507469 < "USER anonymous"
 19:28:27.507502 > "331 We are happy you popped in![CR][LF]"
 19:28:27.507656 < "PASS ftp@example.com"
 19:28:27.507679 > "230 Welcome you silly person[CR][LF]"
 19:28:27.507821 < "PWD"
 19:28:27.507853 > "257 "/" is current directory[CR][LF]"
 19:28:27.508015 < "EPSV"
 19:28:27.508043 ====> Passive DATA channel requested by client
 19:28:27.508057 DATA sockfilt for passive data channel starting...
 19:28:27.515523 DATA sockfilt for passive data channel started (pid 154132)
 19:28:27.515662 DATA sockfilt for passive data channel listens on port 44899
 19:28:27.515706 > "229 Entering Passive Mode (|||44899|)[CR][LF]"
 19:28:27.515722 Client has been notified that upcoming DATA connection is awaited on port 44899
 19:28:27.516008 Client connects to port 44899
 19:28:27.516038 ====> Client established passive DATA connection on port 44899
 19:28:27.516123 < "TYPE I"
 19:28:27.516154 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.516312 < "SIZE verifiedserver"
 19:28:27.516346 > "213 17[CR][LF]"
 19:28:27.516498 < "RETR verifiedserver"
 19:28:27.516529 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.516621 =====> Closing passive DATA connection...
 19:28:27.516638 Server disconnects passive DATA connection
 19:28:27.516787 Server disconnected passive DATA connection
 19:28:27.516810 DATA sockfilt for passive data channel quits (pid 154132)
 19:28:27.517059 DATA sockfilt for passive data channel quit (pid 154132)
 19:28:27.517082 =====> Closed passive DATA connection
 19:28:27.517108 > "226 File transfer complete[CR][LF]"
 19:28:27.568969 < "QUIT"
 19:28:27.569023 > "221 bye bye baby[CR][LF]"
 19:28:27.570200 MAIN sockfilt said DISC
 19:28:27.570232 ====> Client disconnected
 19:28:27.570314 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.109811 ====> Client connect
 19:28:27.110133 Received DATA (on stdin)
 19:28:27.110146 > 146 bytes data, server => client
 19:28:27.110156 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.110165 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.110173 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.110244 < 16 bytes data, client => server
 19:28:27.110254 'USER anonymous\r\n'
 19:28:27.110410 Received DATA (on stdin)
 19:28:27.110421 > 33 bytes data, server => client
 19:28:27.110431 '331 We are happy you popped in!\r\n'
 19:28:27.110482 < 22 bytes data, client => server
 19:28:27.110492 'PASS ftp@example.com\r\n'
 19:28:27.110583 Received DATA (on stdin)
 19:28:27.110593 > 30 bytes data, server => client
 19:28:27.110603 '230 Welcome you silly person\r\n'
 19:28:27.110650 < 5 bytes data, client => server
 19:28:27.110661 'PWD\r\n'
 19:28:27.110760 Received DATA (on stdin)
 19:28:27.110770 > 30 bytes data, server => client
 19:28:27.110779 '257 "/" is current directory\r\n'
 19:28:27.110839 < 6 bytes data, client => server
 19:28:27.110850 'EPSV\r\n'
 19:28:27.118636 Received DATA (on stdin)
 19:28:27.118652 > 39 bytes data, server => client
 19:28:27.118663 '229 Entering Passive Mode (|||44899|)\r\n'
 19:28:27.118837 < 8 bytes data, client => server
 19:28:27.118850 'TYPE I\r\n'
 19:28:27.119061 Received DATA (on stdin)
 19:28:27.119072 > 33 bytes data, server => client
 19:28:27.119082 '200 I modify TYPE as you wanted\r\n'
 19:28:27.119136 < 21 bytes data, client => server
 19:28:27.119146 'SIZE verifiedserver\r\n'
 19:28:27.119252 Received DATA (on stdin)
 19:28:27.119263 > 8 bytes data, server => client
 19:28:27.119272 '213 17\r\n'
 19:28:27.119323 < 21 bytes data, client => server
 19:28:27.119334 'RETR verifiedserver\r\n'
 19:28:27.119625 Received DATA (on stdin)
 19:28:27.119636 > 29 bytes data, server => client
 19:28:27.119646 '150 Binary junk (17 bytes).\r\n'
 19:28:27.120015 Received DATA (on stdin)
 19:28:27.120026 > 28 bytes data, server => client
 19:28:27.120036 '226 File transfer complete\r\n'
 19:28:27.171673 < 6 bytes data, client => server
 19:28:27.171708 'QUIT\r\n'
 19:28:27.171931 Received DATA (on stdin)
 19:28:27.171942 > 18 bytes data, server => client
 19:28:27.171952 '221 bye bye baby\r\n'
 19:28:27.173052 ====> Client disconnect
 19:28:27.173220 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.112643 Running IPv4 version
 19:28:27.112703 Listening on port 44899
 19:28:27.112742 Wrote pid 154132 to log/5/server/ftp_sockdata.pid
 19:28:27.118347 Received PING (on stdin)
 19:28:27.118475 Received PORT (on stdin)
 19:28:27.118869 ====> Client connect
 19:28:27.119545 Received DATA (on stdin)
 19:28:27.119556 > 17 bytes data, server => client
 19:28:27.119565 'WE ROOLZ: 85245\r\n'
 19:28:27.119591 Received DISC (on stdin)
 19:28:27.119601 ====> Client forcibly disconnected
 19:28:27.119724 Received QUIT (on stdin)
 19:28:27.119734 quits
 19:28:27.119804 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1353
=== End of file server.cmd
=== Start of file valgrind1353
 ==154160== 
 ==154160== Process terminating with default action of signal 4 (SIGILL)
 ==154160==  Illegal opcode at address 0x492B75F
 ==154160==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154160==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154160==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154160==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154160==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154160==    by 0x49908EB: curl_version_info (version.c:600)
 ==154160==    by 0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1358 ../src/curl -q --trace-ascii log/21/trace1358 --trace-time ftp://127.0.0.1:35787/path/file1358 -O -D - --output-dir log/21 > log/21/stdout1358 2> log/21/stderr1358
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1355 ../src/curl -q --trace-ascii log/6/trace1355 --trace-time ftp://127.0.0.1:33989/path/file1355 -O -i --output-dir log/6 > log/6/stdout1355 2> log/6/stderr1355
x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154160==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154160==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154160==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1353
test 1358 [FTP download, file with C-D inside, using -O -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1358 ../src/curl -q --trace-ascii log/21/trace1358 --trace-time ftp://127.0.0.1:35787/path/file1358 -O -D - --output-dir log/21 > log/21/stdout1358 2> log/21/stderr1358

 1358: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1358
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1358 ../src/curl -q --trace-ascii log/21/trace1358 --trace-time ftp://127.0.0.1:35787/path/file1358 -O -D - --output-dir log/21 > log/21/stdout1358 2> log/21/stderr1358
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.862130 ====> Client connect
 19:28:27.862349 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.865505 < "USER anonymous"
 19:28:27.865551 > "331 We are happy you popped in![CR][LF]"
 19:28:27.869943 < "PASS ftp@example.com"
 19:28:27.869998 > "230 Welcome you silly person[CR][LF]"
 19:28:27.870213 < "PWD"
 19:28:27.870254 > "257 "/" is current directory[CR][LF]"
 19:28:27.870459 < "EPSV"
 19:28:27.870489 ====> Passive DATA channel requested by client
 19:28:27.870507 DATA sockfilt for passive data channel starting...
 19:28:27.880046 DATA sockfilt for passive data channel started (pid 154347)
 19:28:27.880213 DATA sockfilt for passive data channel listens on port 33213
 19:28:27.880276 > "229 Entering Passive Mode (|||33213|)[CR][LF]"
 19:28:27.880298 Client has been notified that upcoming DATA connection is awaited on port 33213
 19:28:27.880637 Client connects to port 33213
 19:28:27.880673 ====> Client established passive DATA connection on port 33213
 19:28:27.880778 < "TYPE I"
 19:28:27.880819 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.881034 < "SIZE verifiedserver"
 19:28:27.881084 > "213 17[CR][LF]"
 19:28:27.881281 < "RETR verifiedserver"
 19:28:27.881329 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.881430 =====> Closing passive DATA connection...
 19:28:27.881451 Server disconnects passive DATA connection
 19:28:27.881703 Server disconnected passive DATA connection
 19:28:27.881734 DATA sockfilt for passive data channel quits (pid 154347)
 19:28:27.882020 DATA sockfilt for passive data channel quit (pid 154347)
 19:28:27.882051 =====> Closed passive DATA connection
 19:28:27.882084 > "226 File transfer complete[CR][LF]"
 19:28:27.929047 < "QUIT"
 19:28:27.929112 > "221 bye bye baby[CR][LF]"
 19:28:27.930525 MAIN sockfilt said DISC
 19:28:27.930572 ====> Client disconnected
 19:28:27.930668 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.464892 ====> Client connect
 19:28:27.465256 Received DATA (on stdin)
 19:28:27.465269 > 146 bytes data, server => client
 19:28:27.465280 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.465290 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.465299 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.468221 < 16 bytes data, client => server
 19:28:27.468239 'USER anonymous\r\n'
 19:28:27.468448 Received DATA (on stdin)
 19:28:27.468460 > 33 bytes data, server => client
 19:28:27.468470 '331 We are happy you popped in!\r\n'
 19:28:27.472658 < 22 bytes data, client => server
 19:28:27.472680 'PASS ftp@example.com\r\n'
 19:28:27.472906 Received DATA (on stdin)
 19:28:27.472920 > 30 bytes data, server => client
 19:28:27.472931 '230 Welcome you silly person\r\n'
 19:28:27.472999 < 5 bytes data, client => server
 19:28:27.473013 'PWD\r\n'
 19:28:27.473153 Received DATA (on stdin)
 19:28:27.473166 > 30 bytes data, server => client
 19:28:27.473177 '257 "/" is current directory\r\n'
 19:28:27.473251 < 6 bytes data, client => server
 19:28:27.473266 'EPSV\r\n'
 19:28:27.483206 Received DATA (on stdin)
 19:28:27.483225 > 39 bytes data, server => client
 19:28:27.483236 '229 Entering Passive Mode (|||33213|)\r\n'
 19:28:27.483438 < 8 bytes data, client => server
 19:28:27.483457 'TYPE I\r\n'
 19:28:27.483718 Received DATA (on stdin)
 19:28:27.483732 > 33 bytes data, server => client
 19:28:27.483743 '200 I modify TYPE as you wanted\r\n'
 19:28:27.483813 < 21 bytes data, client => server
 19:28:27.483828 'SIZE verifiedserver\r\n'
 19:28:27.483983 Received DATA (on stdin)
 19:28:27.483997 > 8 bytes data, server => client
 19:28:27.484007 '213 17\r\n'
 19:28:27.484073 < 21 bytes data, client => server
 19:28:27.484088 'RETR verifiedserver\r\n'
 19:28:27.484347 Received DATA (on stdin)
 19:28:27.484360 > 29 bytes data, server => client
 19:28:27.484371 '150 Binary junk (17 bytes).\r\n'
 19:28:27.484983 Received DATA (on stdin)
 19:28:27.484996 > 28 bytes data, server => client
 19:28:27.485006 '226 File transfer complete\r\n'
 19:28:27.531697 < 6 bytes data, client => server
 19:28:27.531734 'QUIT\r\n'
 19:28:27.532015 Received DATA (on stdin)
 19:28:27.532031 > 18 bytes data, server => client
 19:28:27.532041 '221 bye bye baby\r\n'
 19:28:27.533352 ====> Client disconnect
 19:28:27.533566 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.482494 Running IPv4 version
 19:28:27.482608 Listening on port 33213
 19:28:27.482657 Wrote pid 154347 to log/21/server/ftp_sockdata.pid
 19:28:27.482866 Received PING (on stdin)
 19:28:27.482998 Received PORT (on stdin)
 19:28:27.483480 ====> Client connect
 19:28:27.484401 Received DATA (on stdin)
 19:28:27.484414 > 17 bytes data, server => client
 19:28:27.484424 'WE ROOLZ: 84694\r\n'
 19:28:27.484451 Received DISC (on stdin)
 19:28:27.484464 ====> Client forcibly disconnected
 19:28:27.484642 Received QUIT (on stdin)
 19:28:27.484656 quits
 19:28:27.484729 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1358
=== End of file server.cmd
=== Start of file valgrind1358
 ==154378== 
 ==154378== Process terminating with default action of signal 4 (SIGILL)
 ==154378==  Illegal opcode at address 0x492B75F
 ==154378==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154378==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154378==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154378==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154378==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154378==    by 0x49908EB: curl_version_info (version.c:600)
 ==154378==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154378==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154378==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154378==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1358
test 1355 [FTP download, file without C-D inside, using -O -i, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1355 ../src/curl -q --trace-ascii log/6/trace1355 --trace-time ftp://127.0.0.1:33989/path/file1355 -O -i --output-dir log/6 > log/6/stdout1355 2> log/6/stderr1355

 1355: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1355
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1357 ../src/curl -q --trace-ascii log/16/trace1357 --trace-time ftp://127.0.0.1:40031/path/file1357 -O -D log/16/heads1357 --output-dir log/16 > log/16/stdout1357 2> log/16/stderr1357
-num-callers=16 --log-file=log/6/valgrind1355 ../src/curl -q --trace-ascii log/6/trace1355 --trace-time ftp://127.0.0.1:33989/path/file1355 -O -i --output-dir log/6 > log/6/stdout1355 2> log/6/stderr1355
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.585656 ====> Client connect
 19:28:27.585893 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.586180 < "USER anonymous"
 19:28:27.586218 > "331 We are happy you popped in![CR][LF]"
 19:28:27.586384 < "PASS ftp@example.com"
 19:28:27.586412 > "230 Welcome you silly person[CR][LF]"
 19:28:27.586557 < "PWD"
 19:28:27.586586 > "257 "/" is current directory[CR][LF]"
 19:28:27.586734 < "EPSV"
 19:28:27.586757 ====> Passive DATA channel requested by client
 19:28:27.586771 DATA sockfilt for passive data channel starting...
 19:28:27.588933 DATA sockfilt for passive data channel started (pid 154153)
 19:28:27.589040 DATA sockfilt for passive data channel listens on port 38827
 19:28:27.589079 > "229 Entering Passive Mode (|||38827|)[CR][LF]"
 19:28:27.589095 Client has been notified that upcoming DATA connection is awaited on port 38827
 19:28:27.589331 Client connects to port 38827
 19:28:27.589361 ====> Client established passive DATA connection on port 38827
 19:28:27.589430 < "TYPE I"
 19:28:27.589458 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.589602 < "SIZE verifiedserver"
 19:28:27.589639 > "213 17[CR][LF]"
 19:28:27.589776 < "RETR verifiedserver"
 19:28:27.589809 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.589899 =====> Closing passive DATA connection...
 19:28:27.589914 Server disconnects passive DATA connection
 19:28:27.590121 Server disconnected passive DATA connection
 19:28:27.590146 DATA sockfilt for passive data channel quits (pid 154153)
 19:28:27.590394 DATA sockfilt for passive data channel quit (pid 154153)
 19:28:27.590416 =====> Closed passive DATA connection
 19:28:27.590441 > "226 File transfer complete[CR][LF]"
 19:28:27.638820 < "QUIT"
 19:28:27.638880 > "221 bye bye baby[CR][LF]"
 19:28:27.648758 MAIN sockfilt said DISC
 19:28:27.648845 ====> Client disconnected
 19:28:27.648939 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:28.188413 ====> Client connect
 19:28:28.188811 Received DATA (on stdin)
 19:28:28.188825 > 146 bytes data, server => client
 19:28:28.188836 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:28.188846 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:28.188855 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:28.188937 < 16 bytes data, client => server
 19:28:28.188948 'USER anonymous\r\n'
 19:28:28.189125 Received DATA (on stdin)
 19:28:28.189136 > 33 bytes data, server => client
 19:28:28.189146 '331 We are happy you popped in!\r\n'
 19:28:28.189198 < 22 bytes data, client => server
 19:28:28.189208 'PASS ftp@example.com\r\n'
 19:28:28.189315 Received DATA (on stdin)
 19:28:28.189325 > 30 bytes data, server => client
 19:28:28.189335 '230 Welcome you silly person\r\n'
 19:28:28.189383 < 5 bytes data, client => server
 19:28:28.189392 'PWD\r\n'
 19:28:28.189487 Received DATA (on stdin)
 19:28:28.189497 > 30 bytes data, server => client
 19:28:28.189507 '257 "/" is current directory\r\n'
 19:28:28.189563 < 6 bytes data, client => server
 19:28:28.189572 'EPSV\r\n'
 19:28:28.192006 Received DATA (on stdin)
 19:28:28.192019 > 39 bytes data, server => client
 19:28:28.192029 '229 Entering Passive Mode (|||38827|)\r\n'
 19:28:28.192159 < 8 bytes data, client => server
 19:28:28.192171 'TYPE I\r\n'
 19:28:28.192360 Received DATA (on stdin)
 19:28:28.192371 > 33 bytes data, server => client
 19:28:28.192381 '200 I modify TYPE as you wanted\r\n'
 19:28:28.192429 < 21 bytes data, client => server
 19:28:28.192439 'SIZE verifiedserver\r\n'
 19:28:28.192541 Received DATA (on stdin)
 19:28:28.192550 > 8 bytes data, server => client
 19:28:28.192560 '213 17\r\n'
 19:28:28.192605 < 21 bytes data, client => server
 19:28:28.192615 'RETR verifiedserver\r\n'
 19:28:28.192817 Received DATA (on stdin)
 19:28:28.192827 > 29 bytes data, server => client
 19:28:28.192837 '150 Binary junk (17 bytes).\r\n'
 19:28:28.193345 Received DATA (on stdin)
 19:28:28.193356 > 28 bytes data, server => client
 19:28:28.193366 '226 File transfer complete\r\n'
 19:28:28.238246 < 6 bytes data, client => server
 19:28:28.238277 'QUIT\r\n'
 19:28:28.241793 Received DATA (on stdin)
 19:28:28.241809 > 18 bytes data, server => client
 19:28:28.241819 '221 bye bye baby\r\n'
 19:28:28.251555 ====> Client disconnect
 19:28:28.251848 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.191499 Running IPv4 version
 19:28:27.191593 Listening on port 38827
 19:28:27.191630 Wrote pid 154153 to log/6/server/ftp_sockdata.pid
 19:28:27.191782 Received PING (on stdin)
 19:28:27.191862 Received PORT (on stdin)
 19:28:27.192191 ====> Client connect
 19:28:27.192861 Received DATA (on stdin)
 19:28:27.192872 > 17 bytes data, server => client
 19:28:27.192885 'WE ROOLZ: 85558\r\n'
 19:28:27.192907 Received DISC (on stdin)
 19:28:27.192917 ====> Client forcibly disconnected
 19:28:27.193056 Received QUIT (on stdin)
 19:28:27.193066 quits
 19:28:27.193124 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1355
=== End of file server.cmd
=== Start of file valgrind1355
 ==154196== 
 ==154196== Process terminating with default action of signal 4 (SIGILL)
 ==154196==  Illegal opcode at address 0x492B75F
 ==154196==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154196==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154196==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154196==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154196==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154196==    by 0x49908EB: curl_version_info (version.c:600)
 ==154196==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154196==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154196==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154196==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1355
test 1357 [FTP download, file with C-D inside, using -O -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1357 ../src/curl -q --trace-ascii log/16/trace1357 --trace-time ftp://127.0.0.1:40031/path/file1357 -O -D log/16/heads1357 --output-dir log/16 > log/16/stdout1357 2> log/16/stderr1357

 1357: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1357
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1357 ../src/curl -q --trace-ascii log/16/trace1357 --trace-time ftp://127.0.0.1:40031/path/file1357 -O -D log/16/heads1357 --output-dir log/16 > log/16/stdout1357 2> log/16/stderr1357
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.868795 ====> Client connect
 19:28:27.869018 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.888855 < "USER anonymous"
 19:28:27.888926 > "331 We are happy you popped in![CR][LF]"
 19:28:27.895705 < "PASS ftp@example.com"
 19:28:27.895776 > "230 Welcome you silly person[CR][LF]"
 19:28:27.896049 < "PWD"
 19:28:27.896100 > "257 "/" is current directory[CR][LF]"
 19:28:27.896339 < "EPSV"
 19:28:27.896376 ====> Passive DATA channel requested by client
 19:28:27.896395 DATA sockfilt for passive data channel starting...
 19:28:27.900288 DATA sockfilt for passive data channel started (pid 154353)
 19:28:27.CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1356 ../src/curl -q --trace-ascii log/2/trace1356 --trace-time ftp://127.0.0.1:38033/path/file1356 -O --output-dir log/2 > log/2/stdout1356 2> log/2/stderr1356
900412 DATA sockfilt for passive data channel listens on port 41643
 19:28:27.900465 > "229 Entering Passive Mode (|||41643|)[CR][LF]"
 19:28:27.900484 Client has been notified that upcoming DATA connection is awaited on port 41643
 19:28:27.908752 Client connects to port 41643
 19:28:27.908818 ====> Client established passive DATA connection on port 41643
 19:28:27.908940 < "TYPE I"
 19:28:27.908982 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.912271 < "SIZE verifiedserver"
 19:28:27.912328 > "213 17[CR][LF]"
 19:28:27.912518 < "RETR verifiedserver"
 19:28:27.912559 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.912668 =====> Closing passive DATA connection...
 19:28:27.912685 Server disconnects passive DATA connection
 19:28:27.912972 Server disconnected passive DATA connection
 19:28:27.913002 DATA sockfilt for passive data channel quits (pid 154353)
 19:28:27.913276 DATA sockfilt for passive data channel quit (pid 154353)
 19:28:27.913300 =====> Closed passive DATA connection
 19:28:27.913336 > "226 File transfer complete[CR][LF]"
 19:28:27.962204 < "QUIT"
 19:28:27.962275 > "221 bye bye baby[CR][LF]"
 19:28:27.963918 MAIN sockfilt said DISC
 19:28:27.963964 ====> Client disconnected
 19:28:27.964053 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.471563 ====> Client connect
 19:28:27.471927 Received DATA (on stdin)
 19:28:27.471943 > 146 bytes data, server => client
 19:28:27.471954 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.471965 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.471975 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.488238 < 16 bytes data, client => server
 19:28:27.488263 'USER anonymous\r\n'
 19:28:27.491840 Received DATA (on stdin)
 19:28:27.491858 > 33 bytes data, server => client
 19:28:27.491869 '331 We are happy you popped in!\r\n'
 19:28:27.498355 < 22 bytes data, client => server
 19:28:27.498393 'PASS ftp@example.com\r\n'
 19:28:27.498687 Received DATA (on stdin)
 19:28:27.498704 > 30 bytes data, server => client
 19:28:27.498716 '230 Welcome you silly person\r\n'
 19:28:27.498800 < 5 bytes data, client => server
 19:28:27.498818 'PWD\r\n'
 19:28:27.499003 Received DATA (on stdin)
 19:28:27.499018 > 30 bytes data, server => client
 19:28:27.499030 '257 "/" is current directory\r\n'
 19:28:27.499114 < 6 bytes data, client => server
 19:28:27.499130 'EPSV\r\n'
 19:28:27.508208 Received DATA (on stdin)
 19:28:27.508241 > 39 bytes data, server => client
 19:28:27.508255 '229 Entering Passive Mode (|||41643|)\r\n'
 19:28:27.508496 < 8 bytes data, client => server
 19:28:27.508515 'TYPE I\r\n'
 19:28:27.514874 Received DATA (on stdin)
 19:28:27.514904 > 33 bytes data, server => client
 19:28:27.514916 '200 I modify TYPE as you wanted\r\n'
 19:28:27.515020 < 21 bytes data, client => server
 19:28:27.515032 'SIZE verifiedserver\r\n'
 19:28:27.515223 Received DATA (on stdin)
 19:28:27.515236 > 8 bytes data, server => client
 19:28:27.515245 '213 17\r\n'
 19:28:27.515310 < 21 bytes data, client => server
 19:28:27.515320 'RETR verifiedserver\r\n'
 19:28:27.515581 Received DATA (on stdin)
 19:28:27.515594 > 29 bytes data, server => client
 19:28:27.515604 '150 Binary junk (17 bytes).\r\n'
 19:28:27.516230 Received DATA (on stdin)
 19:28:27.516243 > 28 bytes data, server => client
 19:28:27.516253 '226 File transfer complete\r\n'
 19:28:27.564895 < 6 bytes data, client => server
 19:28:27.564932 'QUIT\r\n'
 19:28:27.565175 Received DATA (on stdin)
 19:28:27.565190 > 18 bytes data, server => client
 19:28:27.565201 '221 bye bye baby\r\n'
 19:28:27.566742 ====> Client disconnect
 19:28:27.566948 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.502777 Running IPv4 version
 19:28:27.502862 Listening on port 41643
 19:28:27.502901 Wrote pid 154353 to log/16/server/ftp_sockdata.pid
 19:28:27.502921 Received PING (on stdin)
 19:28:27.503211 Received PORT (on stdin)
 19:28:27.511562 ====> Client connect
 19:28:27.515683 Received DATA (on stdin)
 19:28:27.515700 > 17 bytes data, server => client
 19:28:27.515710 'WE ROOLZ: 84702\r\n'
 19:28:27.515740 Received DISC (on stdin)
 19:28:27.515751 ====> Client forcibly disconnected
 19:28:27.515905 Received QUIT (on stdin)
 19:28:27.515917 quits
 19:28:27.515990 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1357
=== End of file server.cmd
=== Start of file valgrind1357
 ==154398== 
 ==154398== Process terminating with default action of signal 4 (SIGILL)
 ==154398==  Illegal opcode at address 0x492B75F
 ==154398==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154398==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154398==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154398==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154398==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154398==    by 0x49908EB: curl_version_info (version.c:600)
 ==154398==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154398==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154398==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154398==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1357
test 1356 [FTP download, file with Content-Disposition inside, using -O]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1356 ../src/curl -q --trace-ascii log/2/trace1356 --trace-time ftp://127.0.0.1:38033/path/file1356 -O --output-dir log/2 > log/2/stdout1356 2> log/2/stderr1356

 1356: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1356
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1356 ../src/curl -q --trace-ascii log/2/trace1356 --trace-time ftp://127.0.0.1:38033/path/file1356 -O --output-dir log/2 > log/2/stdout1356 2> log/2/stderr1356
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.808491 ====> Client connect
 19:28:27.808734 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:27.809058 < "USER anonymous"
 19:28:27.809151 > "331 We are happy you popped in![CR][LF]"
 19:28:27.809276 < "PASS ftp@example.com"
 19:28:27.809305 > "230 Welcome you silly person[CR][LF]"
 19:28:27.809453 < "PWD"
 19:28:27.809487 > "257 "/" is current directory[CR][LF]"
 19:28:27.809637 < "EPSV"
 19:28:27.809661 ====> Passive DATA channel requested by client
 19:28:27.809674 DATA sockfilt for passive data channel starting...
 19:28:27.819921 DATA sockfilt for passive data channel started (pid 154305)
 19:28:27.820061 DATA sockfilt for passive data channel listens on port 39585
 19:28:27.820114 > "229 Entering Passive Mode (|||39585|)[CR][LF]"
 19:28:27.820133 Client has been notified that upcoming DATA connection is awaited on port 39585
 19:28:27.825449 Client connects to port 39585
 19:28:27.825506 ====> Client established passive DATA connection on port 39585
 19:28:27.825628 < "TYPE I"
 19:28:27.825670 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:27.835498 < "SIZE verifiedserver"
 19:28:27.835581 > "213 17[CR][LF]"
 19:28:27.835829 < "RETR verifiedserver"
 19:28:27.835867 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:27.835968 =====> Closing passive DATA connection...
 19:28:27.835984 Server disconnects passive DATA connection
 19:28:27.836114 Server disconnected passive DATA connection
 19:28:27.836133 DATA sockfilt for passive data channel quits (pid 154305)
 19:28:27.836398 DATA sockfilt for passive data channel quit (pid 154305)
 19:28:27.836422 =====> Closed passive DATA connection
 19:28:27.836448 > "226 File transfer complete[CR][LF]"
 19:28:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1360 ../src/curl -q --trace-ascii log/8/trace1360 --trace-time ftp://127.0.0.1:41879/path/file1360 -O -J -D - --output-dir log/8 > log/8/stdout1360 2> log/8/stderr1360
27.882298 < "QUIT"
 19:28:27.882367 > "221 bye bye baby[CR][LF]"
 19:28:27.883757 MAIN sockfilt said DISC
 19:28:27.883807 ====> Client disconnected
 19:28:27.883888 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.411242 ====> Client connect
 19:28:27.411652 Received DATA (on stdin)
 19:28:27.411668 > 146 bytes data, server => client
 19:28:27.411680 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.411690 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.411700 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.411799 < 16 bytes data, client => server
 19:28:27.411812 'USER anonymous\r\n'
 19:28:27.411970 Received DATA (on stdin)
 19:28:27.411981 > 33 bytes data, server => client
 19:28:27.411998 '331 We are happy you popped in!\r\n'
 19:28:27.412076 < 22 bytes data, client => server
 19:28:27.412088 'PASS ftp@example.com\r\n'
 19:28:27.412199 Received DATA (on stdin)
 19:28:27.412209 > 30 bytes data, server => client
 19:28:27.412219 '230 Welcome you silly person\r\n'
 19:28:27.412268 < 5 bytes data, client => server
 19:28:27.412278 'PWD\r\n'
 19:28:27.412381 Received DATA (on stdin)
 19:28:27.412390 > 30 bytes data, server => client
 19:28:27.412400 '257 "/" is current directory\r\n'
 19:28:27.412453 < 6 bytes data, client => server
 19:28:27.412463 'EPSV\r\n'
 19:28:27.424885 Received DATA (on stdin)
 19:28:27.424910 > 39 bytes data, server => client
 19:28:27.424922 '229 Entering Passive Mode (|||39585|)\r\n'
 19:28:27.425127 < 8 bytes data, client => server
 19:28:27.425144 'TYPE I\r\n'
 19:28:27.428721 Received DATA (on stdin)
 19:28:27.428743 > 33 bytes data, server => client
 19:28:27.428753 '200 I modify TYPE as you wanted\r\n'
 19:28:27.428838 < 21 bytes data, client => server
 19:28:27.428850 'SIZE verifiedserver\r\n'
 19:28:27.438461 Received DATA (on stdin)
 19:28:27.438486 > 8 bytes data, server => client
 19:28:27.438497 '213 17\r\n'
 19:28:27.438628 < 21 bytes data, client => server
 19:28:27.438643 'RETR verifiedserver\r\n'
 19:28:27.439347 Received DATA (on stdin)
 19:28:27.439359 > 29 bytes data, server => client
 19:28:27.439369 '150 Binary junk (17 bytes).\r\n'
 19:28:27.439392 Received DATA (on stdin)
 19:28:27.439401 > 28 bytes data, server => client
 19:28:27.439410 '226 File transfer complete\r\n'
 19:28:27.485003 < 6 bytes data, client => server
 19:28:27.485028 'QUIT\r\n'
 19:28:27.485272 Received DATA (on stdin)
 19:28:27.485286 > 18 bytes data, server => client
 19:28:27.485296 '221 bye bye baby\r\n'
 19:28:27.486587 ====> Client disconnect
 19:28:27.486785 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:27.422453 Running IPv4 version
 19:28:27.422547 Listening on port 39585
 19:28:27.422589 Wrote pid 154305 to log/2/server/ftp_sockdata.pid
 19:28:27.422758 Received PING (on stdin)
 19:28:27.422851 Received PORT (on stdin)
 19:28:27.428272 ====> Client connect
 19:28:27.438885 Received DATA (on stdin)
 19:28:27.438902 > 17 bytes data, server => client
 19:28:27.438911 'WE ROOLZ: 85208\r\n'
 19:28:27.438945 Received DISC (on stdin)
 19:28:27.438957 ====> Client forcibly disconnected
 19:28:27.439033 Received QUIT (on stdin)
 19:28:27.439043 quits
 19:28:27.439132 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1356
=== End of file server.cmd
=== Start of file valgrind1356
 ==154357== 
 ==154357== Process terminating with default action of signal 4 (SIGILL)
 ==154357==  Illegal opcode at address 0x492B75F
 ==154357==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154357==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154357==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154357==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154357==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154357==    by 0x49908EB: curl_version_info (version.c:600)
 ==154357==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154357==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154357==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154357==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1356
test 1360 [FTP download, file with C-D inside, using -O -J -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1360 ../src/curl -q --trace-ascii log/8/trace1360 --trace-time ftp://127.0.0.1:41879/path/file1360 -O -J -D - --output-dir log/8 > log/8/stdout1360 2> log/8/stderr1360

 1360: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1360
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1360 ../src/curl -q --trace-ascii log/8/trace1360 --trace-time ftp://127.0.0.1:41879/path/file1360 -O -J -D - --output-dir log/8 > log/8/stdout1360 2> log/8/stderr1360
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:28.323602 ====> Client connect
 19:28:28.325481 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:28.328963 < "USER anonymous"
 19:28:28.329010 > "331 We are happy you popped in![CR][LF]"
 19:28:28.329169 < "PASS ftp@example.com"
 19:28:28.329195 > "230 Welcome you silly person[CR][LF]"
 19:28:28.329331 < "PWD"
 19:28:28.329358 > "257 "/" is current directory[CR][LF]"
 19:28:28.329501 < "EPSV"
 19:28:28.329524 ====> Passive DATA channel requested by client
 19:28:28.329537 DATA sockfilt for passive data channel starting...
 19:28:28.348709 DATA sockfilt for passive data channel started (pid 154545)
 19:28:28.348940 DATA sockfilt for passive data channel listens on port 34675
 19:28:28.348991 > "229 Entering Passive Mode (|||34675|)[CR][LF]"
 19:28:28.349009 Client has been notified that upcoming DATA connection is awaited on port 34675
 19:28:28.349348 Client connects to port 34675
 19:28:28.349389 ====> Client established passive DATA connection on port 34675
 19:28:28.349497 < "TYPE I"
 19:28:28.349536 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:28.349733 < "SIZE verifiedserver"
 19:28:28.349775 > "213 17[CR][LF]"
 19:28:28.349950 < "RETR verifiedserver"
 19:28:28.349990 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:28.350090 =====> Closing passive DATA connection...
 19:28:28.350110 Server disconnects passive DATA connection
 19:28:28.350343 Server disconnected passive DATA connection
 19:28:28.350373 DATA sockfilt for passive data channel quits (pid 154545)
 19:28:28.350677 DATA sockfilt for passive data channel quit (pid 154545)
 19:28:28.350704 =====> Closed passive DATA connection
 19:28:28.350735 > "226 File transfer complete[CR][LF]"
 19:28:28.395605 < "QUIT"
 19:28:28.395661 > "221 bye bye baby[CR][LF]"
 19:28:28.397168 MAIN sockfilt said DISC
 19:28:28.397207 ====> Client disconnected
 19:28:28.397285 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.926318 ====> Client connect
 19:28:27.928380 Received DATA (on stdin)
 19:28:27.928399 > 146 bytes data, server => client
 19:28:27.928410 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:27.928420 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:27.928429 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:27.931654 < 16 bytes data, client => server
 19:28:27.931669 'USER anonymous\r\n'
 19:28:27.931888 Received DATA (on stdin)
 19:28:27.931899 > 33 bytes data, server => client
 19:28:27.931909 '331 We are happy you popped in!\r\n'
 19:28:27.931963 < 22 bytes data, client => server
 19:28:27.931972 'PASS ftp@example.com\r\n'
 19:28:27.932068 Received DATA (on stdin)
 19:28:27.932078 > 30 bytes data, server => client
 19:28:27.932087 '230 Welcome you sillCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1359 ../src/curl -q --trace-ascii log/24/trace1359 --trace-time ftp://127.0.0.1:37215/path/file1359 -O -J -D log/24/heads1359 --output-dir log/24 > log/24/stdout1359 2> log/24/stderr1359
y person\r\n'
 19:28:27.932133 < 5 bytes data, client => server
 19:28:27.932142 'PWD\r\n'
 19:28:27.932230 Received DATA (on stdin)
 19:28:27.932240 > 30 bytes data, server => client
 19:28:27.932249 '257 "/" is current directory\r\n'
 19:28:27.932304 < 6 bytes data, client => server
 19:28:27.932313 'EPSV\r\n'
 19:28:27.951892 Received DATA (on stdin)
 19:28:27.951912 > 39 bytes data, server => client
 19:28:27.951923 '229 Entering Passive Mode (|||34675|)\r\n'
 19:28:27.952128 < 8 bytes data, client => server
 19:28:27.952144 'TYPE I\r\n'
 19:28:27.952416 Received DATA (on stdin)
 19:28:27.952429 > 33 bytes data, server => client
 19:28:27.952439 '200 I modify TYPE as you wanted\r\n'
 19:28:27.952505 < 21 bytes data, client => server
 19:28:27.952519 'SIZE verifiedserver\r\n'
 19:28:27.952652 Received DATA (on stdin)
 19:28:27.952664 > 8 bytes data, server => client
 19:28:27.952673 '213 17\r\n'
 19:28:27.952732 < 21 bytes data, client => server
 19:28:27.952744 'RETR verifiedserver\r\n'
 19:28:27.953080 Received DATA (on stdin)
 19:28:27.953092 > 29 bytes data, server => client
 19:28:27.953102 '150 Binary junk (17 bytes).\r\n'
 19:28:27.953613 Received DATA (on stdin)
 19:28:27.953625 > 28 bytes data, server => client
 19:28:27.953635 '226 File transfer complete\r\n'
 19:28:27.998333 < 6 bytes data, client => server
 19:28:27.998368 'QUIT\r\n'
 19:28:27.998538 Received DATA (on stdin)
 19:28:27.998550 > 18 bytes data, server => client
 19:28:27.998561 '221 bye bye baby\r\n'
 19:28:27.999526 ====> Client disconnect
 19:28:28.000160 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:28.938960 Running IPv4 version
 19:28:28.939044 Listening on port 34675
 19:28:28.939082 Wrote pid 154545 to log/8/server/ftp_sockdata.pid
 19:28:28.948217 Received PING (on stdin)
 19:28:28.951690 Received PORT (on stdin)
 19:28:28.952169 ====> Client connect
 19:28:28.952989 Received DATA (on stdin)
 19:28:28.953003 > 17 bytes data, server => client
 19:28:28.953013 'WE ROOLZ: 84824\r\n'
 19:28:28.953042 Received DISC (on stdin)
 19:28:28.953053 ====> Client forcibly disconnected
 19:28:28.953259 Received QUIT (on stdin)
 19:28:28.953270 quits
 19:28:28.953345 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1360
=== End of file server.cmd
=== Start of file valgrind1360
 ==154593== 
 ==154593== Process terminating with default action of signal 4 (SIGILL)
 ==154593==  Illegal opcode at address 0x492B75F
 ==154593==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154593==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154593==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154593==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154593==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154593==    by 0x49908EB: curl_version_info (version.c:600)
 ==154593==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154593==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154593==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154593==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1360
test 1359 [FTP download, file with C-D inside, using -O -J -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1359 ../src/curl -q --trace-ascii log/24/trace1359 --trace-time ftp://127.0.0.1:37215/path/file1359 -O -J -D log/24/heads1359 --output-dir log/24 > log/24/stdout1359 2> log/24/stderr1359

 1359: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1359
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1359 ../src/curl -q --trace-ascii log/24/trace1359 --trace-time ftp://127.0.0.1:37215/path/file1359 -O -J -D log/24/heads1359 --output-dir log/24 > log/24/stdout1359 2> log/24/stderr1359
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:28.323584 ====> Client connect
 19:28:28.323820 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:28.332128 < "USER anonymous"
 19:28:28.332180 > "331 We are happy you popped in![CR][LF]"
 19:28:28.332374 < "PASS ftp@example.com"
 19:28:28.332402 > "230 Welcome you silly person[CR][LF]"
 19:28:28.332551 < "PWD"
 19:28:28.332582 > "257 "/" is current directory[CR][LF]"
 19:28:28.332739 < "EPSV"
 19:28:28.332762 ====> Passive DATA channel requested by client
 19:28:28.332776 DATA sockfilt for passive data channel starting...
 19:28:28.336782 DATA sockfilt for passive data channel started (pid 154546)
 19:28:28.336936 DATA sockfilt for passive data channel listens on port 34497
 19:28:28.336992 > "229 Entering Passive Mode (|||34497|)[CR][LF]"
 19:28:28.337014 Client has been notified that upcoming DATA connection is awaited on port 34497
 19:28:28.337334 Client connects to port 34497
 19:28:28.337370 ====> Client established passive DATA connection on port 34497
 19:28:28.337467 < "TYPE I"
 19:28:28.337505 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:28.337694 < "SIZE verifiedserver"
 19:28:28.337737 > "213 17[CR][LF]"
 19:28:28.337920 < "RETR verifiedserver"
 19:28:28.337961 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:28.338053 =====> Closing passive DATA connection...
 19:28:28.338076 Server disconnects passive DATA connection
 19:28:28.342286 Server disconnected passive DATA connection
 19:28:28.342327 DATA sockfilt for passive data channel quits (pid 154546)
 19:28:28.342591 DATA sockfilt for passive data channel quit (pid 154546)
 19:28:28.342619 =====> Closed passive DATA connection
 19:28:28.342654 > "226 File transfer complete[CR][LF]"
 19:28:28.385994 < "QUIT"
 19:28:28.386049 > "221 bye bye baby[CR][LF]"
 19:28:28.387305 MAIN sockfilt said DISC
 19:28:28.387342 ====> Client disconnected
 19:28:28.387429 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:28.926335 ====> Client connect
 19:28:28.926710 Received DATA (on stdin)
 19:28:28.926724 > 146 bytes data, server => client
 19:28:28.926734 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:28.926742 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:28.926750 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:28.931600 < 16 bytes data, client => server
 19:28:28.931625 'USER anonymous\r\n'
 19:28:28.935062 Received DATA (on stdin)
 19:28:28.935077 > 33 bytes data, server => client
 19:28:28.935088 '331 We are happy you popped in!\r\n'
 19:28:28.935161 < 22 bytes data, client => server
 19:28:28.935172 'PASS ftp@example.com\r\n'
 19:28:28.935277 Received DATA (on stdin)
 19:28:28.935287 > 30 bytes data, server => client
 19:28:28.935297 '230 Welcome you silly person\r\n'
 19:28:28.935349 < 5 bytes data, client => server
 19:28:28.935358 'PWD\r\n'
 19:28:28.935456 Received DATA (on stdin)
 19:28:28.935467 > 30 bytes data, server => client
 19:28:28.935476 '257 "/" is current directory\r\n'
 19:28:28.935535 < 6 bytes data, client => server
 19:28:28.935545 'EPSV\r\n'
 19:28:28.939903 Received DATA (on stdin)
 19:28:28.939922 > 39 bytes data, server => client
 19:28:28.939933 '229 Entering Passive Mode (|||34497|)\r\n'
 19:28:28.940121 < 8 bytes data, client => server
 19:28:28.940138 'TYPE I\r\n'
 19:28:28.940387 Received DATA (on stdin)
 19:28:28.940400 > 33 bytes data, server => client
 19:28:28.940410 '200 I modify TYPE as you wanted\r\n'
 19:28:28.940471 < 21 bytes data, client => server
 19:28:28.940485 'SIZE verifiedserver\r\n'
 19:28:28.940618 Received DATA (on stdin)
 19:28:28.940631 > 8 bytes data, server => client
 19:28:28.940641 '213 17\r\n'
 19:28:28.940700 < 21 bytes data, client => server
 19:28:28.940715 'RETR verifiedserver\r\n'
 19:28:28.94CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1354 ../src/curl -q --trace-ascii log/11/trace1354 --trace-time ftp://127.0.0.1:36697/path/file1354 -O -i -D - --output-dir log/11 > log/11/stdout1354 2> log/11/stderr1354
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1364 ../src/curl -q --trace-ascii log/10/trace1364 --trace-time http://127.0.0.1:40913/1364 -o log/10/outfile1364 -D log/10/heads1364 > log/10/stdout1364 2> log/10/stderr1364
4860 Received DATA (on stdin)
 19:28:28.944884 > 29 bytes data, server => client
 19:28:28.944896 '150 Binary junk (17 bytes).\r\n'
 19:28:28.945538 Received DATA (on stdin)
 19:28:28.945551 > 28 bytes data, server => client
 19:28:28.945561 '226 File transfer complete\r\n'
 19:28:28.988650 < 6 bytes data, client => server
 19:28:28.988684 'QUIT\r\n'
 19:28:28.988927 Received DATA (on stdin)
 19:28:28.988939 > 18 bytes data, server => client
 19:28:28.988949 '221 bye bye baby\r\n'
 19:28:28.989225 ====> Client disconnect
 19:28:28.990306 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:28.939295 Running IPv4 version
 19:28:28.939365 Listening on port 34497
 19:28:28.939412 Wrote pid 154546 to log/24/server/ftp_sockdata.pid
 19:28:28.939584 Received PING (on stdin)
 19:28:28.939703 Received PORT (on stdin)
 19:28:28.940161 ====> Client connect
 19:28:28.944972 Received DATA (on stdin)
 19:28:28.944989 > 17 bytes data, server => client
 19:28:28.945003 'WE ROOLZ: 85113\r\n'
 19:28:28.945035 Received DISC (on stdin)
 19:28:28.945049 ====> Client forcibly disconnected
 19:28:28.945221 Received QUIT (on stdin)
 19:28:28.945235 quits
 19:28:28.945302 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1359
=== End of file server.cmd
=== Start of file valgrind1359
 ==154555== 
 ==154555== Process terminating with default action of signal 4 (SIGILL)
 ==154555==  Illegal opcode at address 0x492B75F
 ==154555==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154555==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154555==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154555==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154555==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154555==    by 0x49908EB: curl_version_info (version.c:600)
 ==154555==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154555==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1359
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/11/server/ftp_server.pid" --logfile "log/11/ftp_server.log" --logdir "log/11" --portfile "log/11/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36697 (log/11/server/ftp_server.port)
RUN: FTP server is PID 154115 port 36697
* pid ftp => 154115 154115
test 1354 [FTP download, file without C-D inside, using -O -i -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1354 ../src/curl -q --trace-ascii log/11/trace1354 --trace-time ftp://127.0.0.1:36697/path/file1354 -O -i -D - --output-dir log/11 > log/11/stdout1354 2> log/11/stderr1354

 1354: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1354
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1354 ../src/curl -q --trace-ascii log/11/trace1354 --trace-time ftp://127.0.0.1:36697/path/file1354 -O -i -D - --output-dir log/11 > log/11/stdout1354 2> log/11/stderr1354
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:27.508862 FTP server listens on port IPv4/36697
 19:28:27.508941 logged pid 154115 in log/11/server/ftp_server.pid
 19:28:27.508964 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:27.111393 Running IPv4 version
 19:28:27.111457 Listening on port 36697
 19:28:27.111523 Wrote pid 154131 to log/11/server/ftp_sockctrl.pid
 19:28:27.111569 Wrote port 36697 to log/11/server/ftp_server.port
 19:28:27.111689 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 Testnum 1354
=== End of file server.cmd
=== Start of file valgrind1354
 ==154627== 
 ==154627== Process terminating with default action of signal 4 (SIGILL)
 ==154627==  Illegal opcode at address 0x492B75F
 ==154627==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154627==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154627==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154627==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154627==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154627==    by 0x49908EB: curl_version_info (version.c:600)
 ==154627==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154627==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154627==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154627==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1354
test 1364 [HTTP GET -o fname without Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1364 ../src/curl -q --trace-ascii log/10/trace1364 --trace-time http://127.0.0.1:40913/1364 -o log/10/outfile1364 -D log/10/heads1364 > log/10/stdout1364 2> log/10/stderr1364

 1364: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1364
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1364 ../src/curl -q --trace-ascii log/10/trace1364 --trace-time http://127.0.0.1:40913/1364 -o log/10/outfile1364 -D log/10/heads1364 > log/10/stdout1364 2> log/10/stderr1364
=== End of file commands.log
=== Start of file http_server.log
 19:28:28.278528 ====> Client connect
 19:28:28.278579 accept_connection 3 returned 4
 19:28:28.278600 Read 93 bytes
 19:28:28.278609 Process 93 bytes request
 19:28:28.278622 Got request: GET /verifiedserver HTTP/1.1
 19:28:28.278630 Are-we-friendly question received
 19:28:28.278659 Wrote request (93 bytes) input to log/10/server.input
 19:28:28.278676 Identifying ourselves as friends
 19:28:28.278746 Response sent (56 bytes) and written to log/10/server.response
 19:28:28.278758 special request received, no persistency
 19:28:28.278766 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 41134 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1364
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1364
 ==154799== 
 ==154799== Process terminating with default action of signal 4 (SIGILL)
 ==154799==  Illegal opcode at address 0x492B75F
 ==154799==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154799==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154799==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154799==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154799==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154799==    by 0x49908EB: curl_version_info (version.c:600)
 ==154799==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154799==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154799==    by 0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1362 ../src/curl -q --trace-ascii log/7/trace1362 --trace-time ftp://127.0.0.1:44283/path/file1362 -O -i -D - --output-dir log/7 > log/7/stdout1362 2> log/7/stderr1362
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1363 ../src/curl -q --trace-ascii log/20/trace1363 --trace-time ftp://127.0.0.1:41549/path/file1363 -O -i --output-dir log/20 > log/20/stdout1363 2> log/20/stderr1363
x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154799==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1364
test 1362 [FTP download, file with C-D inside, using -O -i -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1362 ../src/curl -q --trace-ascii log/7/trace1362 --trace-time ftp://127.0.0.1:44283/path/file1362 -O -i -D - --output-dir log/7 > log/7/stdout1362 2> log/7/stderr1362

 1362: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1362
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1362 ../src/curl -q --trace-ascii log/7/trace1362 --trace-time ftp://127.0.0.1:44283/path/file1362 -O -i -D - --output-dir log/7 > log/7/stdout1362 2> log/7/stderr1362
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:28.518205 ====> Client connect
 19:28:28.518461 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:28.518810 < "USER anonymous"
 19:28:28.518858 > "331 We are happy you popped in![CR][LF]"
 19:28:28.522302 < "PASS ftp@example.com"
 19:28:28.522357 > "230 Welcome you silly person[CR][LF]"
 19:28:28.522594 < "PWD"
 19:28:28.522639 > "257 "/" is current directory[CR][LF]"
 19:28:28.522848 < "EPSV"
 19:28:28.522881 ====> Passive DATA channel requested by client
 19:28:28.522896 DATA sockfilt for passive data channel starting...
 19:28:28.535701 DATA sockfilt for passive data channel started (pid 154631)
 19:28:28.535868 DATA sockfilt for passive data channel listens on port 44691
 19:28:28.535938 > "229 Entering Passive Mode (|||44691|)[CR][LF]"
 19:28:28.535957 Client has been notified that upcoming DATA connection is awaited on port 44691
 19:28:28.536244 Client connects to port 44691
 19:28:28.536282 ====> Client established passive DATA connection on port 44691
 19:28:28.536385 < "TYPE I"
 19:28:28.536426 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:28.542262 < "SIZE verifiedserver"
 19:28:28.542328 > "213 17[CR][LF]"
 19:28:28.542514 < "RETR verifiedserver"
 19:28:28.542555 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:28.542647 =====> Closing passive DATA connection...
 19:28:28.542663 Server disconnects passive DATA connection
 19:28:28.542831 Server disconnected passive DATA connection
 19:28:28.542854 DATA sockfilt for passive data channel quits (pid 154631)
 19:28:28.543125 DATA sockfilt for passive data channel quit (pid 154631)
 19:28:28.543149 =====> Closed passive DATA connection
 19:28:28.543178 > "226 File transfer complete[CR][LF]"
 19:28:28.588956 < "QUIT"
 19:28:28.589066 > "221 bye bye baby[CR][LF]"
 19:28:28.593233 MAIN sockfilt said DISC
 19:28:28.593280 ====> Client disconnected
 19:28:28.593374 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:29.120943 ====> Client connect
 19:28:29.121363 Received DATA (on stdin)
 19:28:29.121382 > 146 bytes data, server => client
 19:28:29.121394 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:29.121404 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:29.121414 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:29.121515 < 16 bytes data, client => server
 19:28:29.121530 'USER anonymous\r\n'
 19:28:29.121731 Received DATA (on stdin)
 19:28:29.121743 > 33 bytes data, server => client
 19:28:29.121753 '331 We are happy you popped in!\r\n'
 19:28:29.124993 < 22 bytes data, client => server
 19:28:29.125015 'PASS ftp@example.com\r\n'
 19:28:29.125235 Received DATA (on stdin)
 19:28:29.125253 > 30 bytes data, server => client
 19:28:29.125263 '230 Welcome you silly person\r\n'
 19:28:29.125348 < 5 bytes data, client => server
 19:28:29.125362 'PWD\r\n'
 19:28:29.125512 Received DATA (on stdin)
 19:28:29.125524 > 30 bytes data, server => client
 19:28:29.125534 '257 "/" is current directory\r\n'
 19:28:29.125609 < 6 bytes data, client => server
 19:28:29.125623 'EPSV\r\n'
 19:28:29.138793 Received DATA (on stdin)
 19:28:29.138829 > 39 bytes data, server => client
 19:28:29.138841 '229 Entering Passive Mode (|||44691|)\r\n'
 19:28:29.139080 < 8 bytes data, client => server
 19:28:29.139100 'TYPE I\r\n'
 19:28:29.139301 Received DATA (on stdin)
 19:28:29.139317 > 33 bytes data, server => client
 19:28:29.139327 '200 I modify TYPE as you wanted\r\n'
 19:28:29.144953 < 21 bytes data, client => server
 19:28:29.144976 'SIZE verifiedserver\r\n'
 19:28:29.145201 Received DATA (on stdin)
 19:28:29.145213 > 8 bytes data, server => client
 19:28:29.145223 '213 17\r\n'
 19:28:29.145288 < 21 bytes data, client => server
 19:28:29.145299 'RETR verifiedserver\r\n'
 19:28:29.145532 Received DATA (on stdin)
 19:28:29.145543 > 29 bytes data, server => client
 19:28:29.145553 '150 Binary junk (17 bytes).\r\n'
 19:28:29.146047 Received DATA (on stdin)
 19:28:29.146059 > 28 bytes data, server => client
 19:28:29.146069 '226 File transfer complete\r\n'
 19:28:29.191633 < 6 bytes data, client => server
 19:28:29.191662 'QUIT\r\n'
 19:28:29.191851 Received DATA (on stdin)
 19:28:29.191862 > 18 bytes data, server => client
 19:28:29.191877 '221 bye bye baby\r\n'
 19:28:29.196028 ====> Client disconnect
 19:28:29.196250 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:28.129469 Running IPv4 version
 19:28:28.129587 Listening on port 44691
 19:28:28.129626 Wrote pid 154631 to log/7/server/ftp_sockdata.pid
 19:28:28.138472 Received PING (on stdin)
 19:28:28.138625 Received PORT (on stdin)
 19:28:28.139051 ====> Client connect
 19:28:28.145584 Received DATA (on stdin)
 19:28:28.145600 > 17 bytes data, server => client
 19:28:28.145610 'WE ROOLZ: 84721\r\n'
 19:28:28.145635 Received DISC (on stdin)
 19:28:28.145646 ====> Client forcibly disconnected
 19:28:28.145726 Received QUIT (on stdin)
 19:28:28.145736 quits
 19:28:28.145808 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1362
=== End of file server.cmd
=== Start of file valgrind1362
 ==154712== 
 ==154712== Process terminating with default action of signal 4 (SIGILL)
 ==154712==  Illegal opcode at address 0x492B75F
 ==154712==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154712==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154712==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154712==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154712==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154712==    by 0x49908EB: curl_version_info (version.c:600)
 ==154712==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154712==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1362
test 1363 [FTP download, file with C-D inside, using -O -i, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1363 ../src/curl -q --trace-ascii log/20/trace1363 --trace-time ftp://127.0.0.1:41549/path/file1363 -O -i --output-dir log/20 > log/20/stdout1363 2> log/20/stderr1363

 1363: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1363
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1363 ../src/curl -q --trace-ascii log/20/trace1363 --trace-time ftp://127.0.0.1:41549/path/filCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1361 ../src/curl -q --trace-ascii log/23/trace1361 --trace-time ftp://127.0.0.1:35523/path/file1361 -O -i -D log/23/heads1361 --output-dir log/23 > log/23/stdout1361 2> log/23/stderr1361
e1363 -O -i --output-dir log/20 > log/20/stdout1363 2> log/20/stderr1363
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:28.685484 ====> Client connect
 19:28:28.685686 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:28.692215 < "USER anonymous"
 19:28:28.692265 > "331 We are happy you popped in![CR][LF]"
 19:28:28.692484 < "PASS ftp@example.com"
 19:28:28.692514 > "230 Welcome you silly person[CR][LF]"
 19:28:28.692673 < "PWD"
 19:28:28.692706 > "257 "/" is current directory[CR][LF]"
 19:28:28.692875 < "EPSV"
 19:28:28.692899 ====> Passive DATA channel requested by client
 19:28:28.692913 DATA sockfilt for passive data channel starting...
 19:28:28.705449 DATA sockfilt for passive data channel started (pid 154789)
 19:28:28.705632 DATA sockfilt for passive data channel listens on port 44647
 19:28:28.705692 > "229 Entering Passive Mode (|||44647|)[CR][LF]"
 19:28:28.705717 Client has been notified that upcoming DATA connection is awaited on port 44647
 19:28:28.712378 Client connects to port 44647
 19:28:28.712450 ====> Client established passive DATA connection on port 44647
 19:28:28.712591 < "TYPE I"
 19:28:28.712643 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:28.722151 < "SIZE verifiedserver"
 19:28:28.722226 > "213 17[CR][LF]"
 19:28:28.725553 < "RETR verifiedserver"
 19:28:28.725607 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:28.725712 =====> Closing passive DATA connection...
 19:28:28.725729 Server disconnects passive DATA connection
 19:28:28.725871 Server disconnected passive DATA connection
 19:28:28.725892 DATA sockfilt for passive data channel quits (pid 154789)
 19:28:28.726185 DATA sockfilt for passive data channel quit (pid 154789)
 19:28:28.726212 =====> Closed passive DATA connection
 19:28:28.726242 > "226 File transfer complete[CR][LF]"
 19:28:28.778851 < "QUIT"
 19:28:28.778913 > "221 bye bye baby[CR][LF]"
 19:28:28.785351 MAIN sockfilt said DISC
 19:28:28.785436 ====> Client disconnected
 19:28:28.785523 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:28.288193 ====> Client connect
 19:28:28.288563 Received DATA (on stdin)
 19:28:28.288577 > 146 bytes data, server => client
 19:28:28.288589 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:28.288600 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:28.288609 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:28.294864 < 16 bytes data, client => server
 19:28:28.294901 'USER anonymous\r\n'
 19:28:28.295132 Received DATA (on stdin)
 19:28:28.295145 > 33 bytes data, server => client
 19:28:28.295156 '331 We are happy you popped in!\r\n'
 19:28:28.295249 < 22 bytes data, client => server
 19:28:28.295262 'PASS ftp@example.com\r\n'
 19:28:28.295377 Received DATA (on stdin)
 19:28:28.295388 > 30 bytes data, server => client
 19:28:28.295398 '230 Welcome you silly person\r\n'
 19:28:28.295451 < 5 bytes data, client => server
 19:28:28.295462 'PWD\r\n'
 19:28:28.295568 Received DATA (on stdin)
 19:28:28.295579 > 30 bytes data, server => client
 19:28:28.295589 '257 "/" is current directory\r\n'
 19:28:28.295654 < 6 bytes data, client => server
 19:28:28.295665 'EPSV\r\n'
 19:28:28.311525 Received DATA (on stdin)
 19:28:28.311555 > 39 bytes data, server => client
 19:28:28.311567 '229 Entering Passive Mode (|||44647|)\r\n'
 19:28:28.315103 < 8 bytes data, client => server
 19:28:28.315134 'TYPE I\r\n'
 19:28:28.315516 Received DATA (on stdin)
 19:28:28.315533 > 33 bytes data, server => client
 19:28:28.315544 '200 I modify TYPE as you wanted\r\n'
 19:28:28.315614 < 21 bytes data, client => server
 19:28:28.315630 'SIZE verifiedserver\r\n'
 19:28:28.325103 Received DATA (on stdin)
 19:28:28.325123 > 8 bytes data, server => client
 19:28:28.325133 '213 17\r\n'
 19:28:28.328256 < 21 bytes data, client => server
 19:28:28.328280 'RETR verifiedserver\r\n'
 19:28:28.329109 Received DATA (on stdin)
 19:28:28.329125 > 29 bytes data, server => client
 19:28:28.329136 '150 Binary junk (17 bytes).\r\n'
 19:28:28.329164 Received DATA (on stdin)
 19:28:28.329173 > 28 bytes data, server => client
 19:28:28.329183 '226 File transfer complete\r\n'
 19:28:28.372272 < 6 bytes data, client => server
 19:28:28.372308 'QUIT\r\n'
 19:28:28.381757 Received DATA (on stdin)
 19:28:28.381786 > 18 bytes data, server => client
 19:28:28.381798 '221 bye bye baby\r\n'
 19:28:28.381890 ====> Client disconnect
 19:28:28.388452 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:28.297593 Running IPv4 version
 19:28:28.297675 Listening on port 44647
 19:28:28.297718 Wrote pid 154789 to log/20/server/ftp_sockdata.pid
 19:28:28.308192 Received PING (on stdin)
 19:28:28.308373 Received PORT (on stdin)
 19:28:28.315167 ====> Client connect
 19:28:28.328598 Received DATA (on stdin)
 19:28:28.328615 > 17 bytes data, server => client
 19:28:28.328630 'WE ROOLZ: 84833\r\n'
 19:28:28.328665 Received DISC (on stdin)
 19:28:28.328677 ====> Client forcibly disconnected
 19:28:28.328760 Received QUIT (on stdin)
 19:28:28.328770 quits
 19:28:28.328846 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1363
=== End of file server.cmd
=== Start of file valgrind1363
 ==154911== 
 ==154911== Process terminating with default action of signal 4 (SIGILL)
 ==154911==  Illegal opcode at address 0x492B75F
 ==154911==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154911==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154911==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154911==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154911==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154911==    by 0x49908EB: curl_version_info (version.c:600)
 ==154911==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154911==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154911==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154911==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1363
test 1361 [FTP download, file with C-D inside, using -O -i -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1361 ../src/curl -q --trace-ascii log/23/trace1361 --trace-time ftp://127.0.0.1:35523/path/file1361 -O -i -D log/23/heads1361 --output-dir log/23 > log/23/stdout1361 2> log/23/stderr1361

 1361: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1361
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1361 ../src/curl -q --trace-ascii log/23/trace1361 --trace-time ftp://127.0.0.1:35523/path/file1361 -O -i -D log/23/heads1361 --output-dir log/23 > log/23/stdout1361 2> log/23/stderr1361
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:28.544641 ====> Client connect
 19:28:28.544862 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:28.552136 < "USER anonymous"
 19:28:28.552187 > "331 We are happy you popped in![CR][LF]"
 19:28:28.552376 < "PASS ftp@example.com"
 19:28:28.552400 > "230 Welcome you silly person[CR][LF]"
 19:28:28.552557 < "PWD"
 19:28:28.552588 > "257 "/" is current directory[CR][LF]"
 19:28:28.552749 < "EPSV"
 19:28:28.552772 ====> Passive DATA channel requested by client
 19:28:28.552786 DATA sockfilt for passive data channel starting...
 19:28:28.560891 DATA sockfilt for passive data channel started (pid 154652)
 19:28:28.561062 DATA sockfilt for passive data channel listens on port 41843
 19:28:28.561109 > "229 Entering Passive Mode (|||418CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1365 ../src/curl -q --trace-ascii log/12/trace1365 --trace-time http://127.0.0.1:40921/1365 -o log/12/outfile1365 -D - > log/12/stdout1365 2> log/12/stderr1365
43|)[CR][LF]"
 19:28:28.561126 Client has been notified that upcoming DATA connection is awaited on port 41843
 19:28:28.561395 Client connects to port 41843
 19:28:28.561426 ====> Client established passive DATA connection on port 41843
 19:28:28.561556 < "TYPE I"
 19:28:28.561591 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:28.561763 < "SIZE verifiedserver"
 19:28:28.561804 > "213 17[CR][LF]"
 19:28:28.561969 < "RETR verifiedserver"
 19:28:28.562019 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:28.562113 =====> Closing passive DATA connection...
 19:28:28.562131 Server disconnects passive DATA connection
 19:28:28.562289 Server disconnected passive DATA connection
 19:28:28.562314 DATA sockfilt for passive data channel quits (pid 154652)
 19:28:28.562552 DATA sockfilt for passive data channel quit (pid 154652)
 19:28:28.562578 =====> Closed passive DATA connection
 19:28:28.562609 > "226 File transfer complete[CR][LF]"
 19:28:28.607692 < "QUIT"
 19:28:28.607759 > "221 bye bye baby[CR][LF]"
 19:28:28.611812 MAIN sockfilt said DISC
 19:28:28.611853 ====> Client disconnected
 19:28:28.611926 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:29.147392 ====> Client connect
 19:28:29.151520 Received DATA (on stdin)
 19:28:29.151549 > 146 bytes data, server => client
 19:28:29.151561 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:29.151571 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:29.151580 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:29.151669 < 16 bytes data, client => server
 19:28:29.151680 'USER anonymous\r\n'
 19:28:29.155060 Received DATA (on stdin)
 19:28:29.155076 > 33 bytes data, server => client
 19:28:29.155086 '331 We are happy you popped in!\r\n'
 19:28:29.155154 < 22 bytes data, client => server
 19:28:29.155166 'PASS ftp@example.com\r\n'
 19:28:29.155266 Received DATA (on stdin)
 19:28:29.155276 > 30 bytes data, server => client
 19:28:29.155286 '230 Welcome you silly person\r\n'
 19:28:29.155338 < 5 bytes data, client => server
 19:28:29.155348 'PWD\r\n'
 19:28:29.155454 Received DATA (on stdin)
 19:28:29.155464 > 30 bytes data, server => client
 19:28:29.155474 '257 "/" is current directory\r\n'
 19:28:29.155536 < 6 bytes data, client => server
 19:28:29.155546 'EPSV\r\n'
 19:28:29.164002 Received DATA (on stdin)
 19:28:29.164016 > 39 bytes data, server => client
 19:28:29.164027 '229 Entering Passive Mode (|||41843|)\r\n'
 19:28:29.164315 < 8 bytes data, client => server
 19:28:29.164327 'TYPE I\r\n'
 19:28:29.164460 Received DATA (on stdin)
 19:28:29.164471 > 33 bytes data, server => client
 19:28:29.164482 '200 I modify TYPE as you wanted\r\n'
 19:28:29.164538 < 21 bytes data, client => server
 19:28:29.164551 'SIZE verifiedserver\r\n'
 19:28:29.164673 Received DATA (on stdin)
 19:28:29.164684 > 8 bytes data, server => client
 19:28:29.164694 '213 17\r\n'
 19:28:29.164748 < 21 bytes data, client => server
 19:28:29.164760 'RETR verifiedserver\r\n'
 19:28:29.165087 Received DATA (on stdin)
 19:28:29.165098 > 29 bytes data, server => client
 19:28:29.165108 '150 Binary junk (17 bytes).\r\n'
 19:28:29.165479 Received DATA (on stdin)
 19:28:29.165491 > 28 bytes data, server => client
 19:28:29.165501 '226 File transfer complete\r\n'
 19:28:29.210378 < 6 bytes data, client => server
 19:28:29.210406 'QUIT\r\n'
 19:28:29.210643 Received DATA (on stdin)
 19:28:29.210660 > 18 bytes data, server => client
 19:28:29.210670 '221 bye bye baby\r\n'
 19:28:29.213899 ====> Client disconnect
 19:28:29.214790 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:28.157656 Running IPv4 version
 19:28:28.157718 Listening on port 41843
 19:28:28.157757 Wrote pid 154652 to log/23/server/ftp_sockdata.pid
 19:28:28.163680 Received PING (on stdin)
 19:28:28.163835 Received PORT (on stdin)
 19:28:28.164208 ====> Client connect
 19:28:28.165001 Received DATA (on stdin)
 19:28:28.165013 > 17 bytes data, server => client
 19:28:28.165022 'WE ROOLZ: 84709\r\n'
 19:28:28.165051 Received DISC (on stdin)
 19:28:28.165063 ====> Client forcibly disconnected
 19:28:28.165187 Received QUIT (on stdin)
 19:28:28.165196 quits
 19:28:28.165268 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1361
=== End of file server.cmd
=== Start of file valgrind1361
 ==154718== 
 ==154718== Process terminating with default action of signal 4 (SIGILL)
 ==154718==  Illegal opcode at address 0x492B75F
 ==154718==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154718==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154718==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154718==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154718==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154718==    by 0x49908EB: curl_version_info (version.c:600)
 ==154718==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154718==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154718==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154718==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1361
test 1365 [HTTP GET -o fname without Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1365 ../src/curl -q --trace-ascii log/12/trace1365 --trace-time http://127.0.0.1:40921/1365 -o log/12/outfile1365 -D - > log/12/stdout1365 2> log/12/stderr1365

 1365: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1365
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1365 ../src/curl -q --trace-ascii log/12/trace1365 --trace-time http://127.0.0.1:40921/1365 -o log/12/outfile1365 -D - > log/12/stdout1365 2> log/12/stderr1365
=== End of file commands.log
=== Start of file http_server.log
 19:28:28.406343 ====> Client connect
 19:28:28.406383 accept_connection 3 returned 4
 19:28:28.406408 Read 93 bytes
 19:28:28.406420 Process 93 bytes request
 19:28:28.406434 Got request: GET /verifiedserver HTTP/1.1
 19:28:28.406444 Are-we-friendly question received
 19:28:28.406478 Wrote request (93 bytes) input to log/12/server.input
 19:28:28.406499 Identifying ourselves as friends
 19:28:28.406578 Response sent (56 bytes) and written to log/12/server.response
 19:28:28.406591 special request received, no persistency
 19:28:28.406601 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 57826 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1365
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1365
 ==154954== 
 ==154954== Process terminating with default action of signal 4 (SIGILL)
 ==154954==  Illegal opcode at address 0x492B75F
 ==154954==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154954==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154954==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154954==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154954==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154954==    by 0x49908EB: curl_version_info (version.c:600)
 ==154954==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154954=CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1369 ../src/curl -q --trace-ascii log/4/trace1369 --trace-time http://127.0.0.1:35735/1369 -J -o log/4/outfile1369 -D - > log/4/stdout1369 2> log/4/stderr1369
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1368 ../src/curl -q --trace-ascii log/19/trace1368 --trace-time http://127.0.0.1:37077/1368 -J -o log/19/outfile1368 -D log/19/heads1368 > log/19/stdout1368 2> log/19/stderr1368
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1367 ../src/curl -q --trace-ascii log/3/trace1367 --trace-time http://127.0.0.1:36161/1367 -o log/3/outfile1367 -D - > log/3/stdout1367 2> log/3/stderr1367
=    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154954==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154954==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1365
test 1369 [HTTP GET -o fname -J without Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1369 ../src/curl -q --trace-ascii log/4/trace1369 --trace-time http://127.0.0.1:35735/1369 -J -o log/4/outfile1369 -D - > log/4/stdout1369 2> log/4/stderr1369

 1369: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1369
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1369 ../src/curl -q --trace-ascii log/4/trace1369 --trace-time http://127.0.0.1:35735/1369 -J -o log/4/outfile1369 -D - > log/4/stdout1369 2> log/4/stderr1369
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.753970 ====> Client connect
 19:28:29.754010 accept_connection 3 returned 4
 19:28:29.754185 Read 93 bytes
 19:28:29.754200 Process 93 bytes request
 19:28:29.754213 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.754221 Are-we-friendly question received
 19:28:29.754253 Wrote request (93 bytes) input to log/4/server.input
 19:28:29.754271 Identifying ourselves as friends
 19:28:29.754343 Response sent (56 bytes) and written to log/4/server.response
 19:28:29.754353 special request received, no persistency
 19:28:29.754361 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 54150 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1369
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1369
 ==155202== 
 ==155202== Process terminating with default action of signal 4 (SIGILL)
 ==155202==  Illegal opcode at address 0x492B75F
 ==155202==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155202==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155202==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155202==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155202==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155202==    by 0x49908EB: curl_version_info (version.c:600)
 ==155202==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155202==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155202==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155202==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1369
test 1368 [HTTP GET -o fname -J without Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1368 ../src/curl -q --trace-ascii log/19/trace1368 --trace-time http://127.0.0.1:37077/1368 -J -o log/19/outfile1368 -D log/19/heads1368 > log/19/stdout1368 2> log/19/stderr1368

 1368: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1368
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1368 ../src/curl -q --trace-ascii log/19/trace1368 --trace-time http://127.0.0.1:37077/1368 -J -o log/19/outfile1368 -D log/19/heads1368 > log/19/stdout1368 2> log/19/stderr1368
=== End of file commands.log
=== Start of file http_server.log
 19:28:28.755906 ====> Client connect
 19:28:28.755949 accept_connection 3 returned 4
 19:28:28.764920 Read 93 bytes
 19:28:28.764946 Process 93 bytes request
 19:28:28.764970 Got request: GET /verifiedserver HTTP/1.1
 19:28:28.764979 Are-we-friendly question received
 19:28:28.770482 Wrote request (93 bytes) input to log/19/server.input
 19:28:28.770521 Identifying ourselves as friends
 19:28:28.770613 Response sent (57 bytes) and written to log/19/server.response
 19:28:28.770623 special request received, no persistency
 19:28:28.770631 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 51822 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1368
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1368
 ==155210== 
 ==155210== Process terminating with default action of signal 4 (SIGILL)
 ==155210==  Illegal opcode at address 0x492B75F
 ==155210==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155210==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155210==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155210==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155210==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155210==    by 0x49908EB: curl_version_info (version.c:600)
 ==155210==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155210==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155210==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155210==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1368
test 1367 [HTTP GET -o fname and Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1367 ../src/curl -q --trace-ascii log/3/trace1367 --trace-time http://127.0.0.1:36161/1367 -o log/3/outfile1367 -D - > log/3/stdout1367 2> log/3/stderr1367

 1367: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1367
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1367 ../src/curl -q --trace-ascii log/3/trace1367 --trace-time http://127.0.0.1:36161/1367 -o log/3/outfile1367 -D - > log/3/stdout1367 2> log/3/stderr1367
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.524903 ====> Client connect
 19:28:29.524949 accept_connection 3 returned 4
 19:28:29.524974 Read 93 bytes
 19:28:29.524983 Process 93 bytes request
 19:28:29.524999 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.525008 Are-we-friendly question received
 19:28:29.525033 Wrote request (93 bytes) input to log/3/server.input
 19:28:29.525055 Identifying ourselves as friends
 19:28:29.525134 Response sent (56 bytes) and written to log/3/server.response
 19:28:29.525142 special request received,CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1366 ../src/curl -q --trace-ascii log/17/trace1366 --trace-time http://127.0.0.1:35993/1366 -o log/17/outfile1366 -D log/17/heads1366 > log/17/stdout1366 2> log/17/stderr1366
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1372 ../src/curl -q --trace-ascii log/18/trace1372 --trace-time http://127.0.0.1:43739/1372 -i -o log/18/outfile1372 -D log/18/heads1372 > log/18/stdout1372 2> log/18/stderr1372
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1370 ../src/curl -q --trace-ascii log/9/trace1370 --trace-time http://127.0.0.1:43733/1370 -J -o log/9/outfile1370 -D log/9/heads1370 > log/9/stdout1370 2> log/9/stderr1370
 no persistency
 19:28:29.525150 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 36310 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1367
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1367
 ==155059== 
 ==155059== Process terminating with default action of signal 4 (SIGILL)
 ==155059==  Illegal opcode at address 0x492B75F
 ==155059==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155059==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155059==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155059==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155059==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155059==    by 0x49908EB: curl_version_info (version.c:600)
 ==155059==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155059==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155059==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155059==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1367
test 1366 [HTTP GET -o fname and Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1366 ../src/curl -q --trace-ascii log/17/trace1366 --trace-time http://127.0.0.1:35993/1366 -o log/17/outfile1366 -D log/17/heads1366 > log/17/stdout1366 2> log/17/stderr1366

 1366: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1366
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1366 ../src/curl -q --trace-ascii log/17/trace1366 --trace-time http://127.0.0.1:35993/1366 -o log/17/outfile1366 -D log/17/heads1366 > log/17/stdout1366 2> log/17/stderr1366
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.452006 ====> Client connect
 19:28:29.452047 accept_connection 3 returned 4
 19:28:29.452071 Read 93 bytes
 19:28:29.452082 Process 93 bytes request
 19:28:29.452095 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.452103 Are-we-friendly question received
 19:28:29.452135 Wrote request (93 bytes) input to log/17/server.input
 19:28:29.452154 Identifying ourselves as friends
 19:28:29.452225 Response sent (56 bytes) and written to log/17/server.response
 19:28:29.452237 special request received, no persistency
 19:28:29.452246 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 54144 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1366
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1366
 ==154980== 
 ==154980== Process terminating with default action of signal 4 (SIGILL)
 ==154980==  Illegal opcode at address 0x492B75F
 ==154980==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==154980==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==154980==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==154980==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==154980==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==154980==    by 0x49908EB: curl_version_info (version.c:600)
 ==154980==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==154980==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==154980==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==154980==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1366
test 1372 [HTTP GET -o fname -i without Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1372 ../src/curl -q --trace-ascii log/18/trace1372 --trace-time http://127.0.0.1:43739/1372 -i -o log/18/outfile1372 -D log/18/heads1372 > log/18/stdout1372 2> log/18/stderr1372

 1372: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1372
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1372 ../src/curl -q --trace-ascii log/18/trace1372 --trace-time http://127.0.0.1:43739/1372 -i -o log/18/outfile1372 -D log/18/heads1372 > log/18/stdout1372 2> log/18/stderr1372
=== End of file commands.log
=== Start of file http_server.log
 19:28:30.114877 ====> Client connect
 19:28:30.114923 accept_connection 3 returned 4
 19:28:30.114949 Read 93 bytes
 19:28:30.114959 Process 93 bytes request
 19:28:30.114972 Got request: GET /verifiedserver HTTP/1.1
 19:28:30.114981 Are-we-friendly question received
 19:28:30.115009 Wrote request (93 bytes) input to log/18/server.input
 19:28:30.115026 Identifying ourselves as friends
 19:28:30.115122 Response sent (56 bytes) and written to log/18/server.response
 19:28:30.115132 special request received, no persistency
 19:28:30.115140 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 36340 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1372
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1372
 ==155374== 
 ==155374== Process terminating with default action of signal 4 (SIGILL)
 ==155374==  Illegal opcode at address 0x492B75F
 ==155374==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155374==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155374==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155374==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155374==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155374==    by 0x49908EB: curl_version_info (version.c:600)
 ==155374==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155374==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155374==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155374==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1372
test 1370 [HTTP GET -o fname -J and Content-Disposition, -D file]
../libtooCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1374 ../src/curl -q --trace-ascii log/14/trace1374 --trace-time http://127.0.0.1:45467/1374 -i -o log/14/outfile1374 -D log/14/heads1374 > log/14/stdout1374 2> log/14/stderr1374
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1373 ../src/curl -q --trace-ascii log/22/trace1373 --trace-time http://127.0.0.1:35989/1373 -i -o log/22/outfile1373 -D - > log/22/stdout1373 2> log/22/stderr1373
l --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1370 ../src/curl -q --trace-ascii log/9/trace1370 --trace-time http://127.0.0.1:43733/1370 -J -o log/9/outfile1370 -D log/9/heads1370 > log/9/stdout1370 2> log/9/stderr1370

 1370: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1370
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1370 ../src/curl -q --trace-ascii log/9/trace1370 --trace-time http://127.0.0.1:43733/1370 -J -o log/9/outfile1370 -D log/9/heads1370 > log/9/stdout1370 2> log/9/stderr1370
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.098212 ====> Client connect
 19:28:29.098253 accept_connection 3 returned 4
 19:28:29.098278 Read 93 bytes
 19:28:29.098288 Process 93 bytes request
 19:28:29.098302 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.098310 Are-we-friendly question received
 19:28:29.098344 Wrote request (93 bytes) input to log/9/server.input
 19:28:29.098362 Identifying ourselves as friends
 19:28:29.098450 Response sent (56 bytes) and written to log/9/server.response
 19:28:29.098463 special request received, no persistency
 19:28:29.098472 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 51410 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1370
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1370
 ==155377== 
 ==155377== Process terminating with default action of signal 4 (SIGILL)
 ==155377==  Illegal opcode at address 0x492B75F
 ==155377==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155377==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155377==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155377==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155377==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155377==    by 0x49908EB: curl_version_info (version.c:600)
 ==155377==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155377==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155377==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155377==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1370
test 1374 [HTTP GET -o fname -i and Content-Disposition, -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1374 ../src/curl -q --trace-ascii log/14/trace1374 --trace-time http://127.0.0.1:45467/1374 -i -o log/14/outfile1374 -D log/14/heads1374 > log/14/stdout1374 2> log/14/stderr1374

 1374: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1374
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1374 ../src/curl -q --trace-ascii log/14/trace1374 --trace-time http://127.0.0.1:45467/1374 -i -o log/14/outfile1374 -D log/14/heads1374 > log/14/stdout1374 2> log/14/stderr1374
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.578182 ====> Client connect
 19:28:29.578217 accept_connection 3 returned 4
 19:28:29.578239 Read 93 bytes
 19:28:29.578248 Process 93 bytes request
 19:28:29.578261 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.578269 Are-we-friendly question received
 19:28:29.578296 Wrote request (93 bytes) input to log/14/server.input
 19:28:29.578320 Identifying ourselves as friends
 19:28:29.578386 Response sent (56 bytes) and written to log/14/server.response
 19:28:29.578395 special request received, no persistency
 19:28:29.578403 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 37348 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1374
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1374
 ==155614== 
 ==155614== Process terminating with default action of signal 4 (SIGILL)
 ==155614==  Illegal opcode at address 0x492B75F
 ==155614==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155614==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155614==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155614==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155614==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155614==    by 0x49908EB: curl_version_info (version.c:600)
 ==155614==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155614==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155614==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155614==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1374
test 1373 [HTTP GET -o fname -i without Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1373 ../src/curl -q --trace-ascii log/22/trace1373 --trace-time http://127.0.0.1:35989/1373 -i -o log/22/outfile1373 -D - > log/22/stdout1373 2> log/22/stderr1373

 1373: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1373
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1373 ../src/curl -q --trace-ascii log/22/trace1373 --trace-time http://127.0.0.1:35989/1373 -i -o log/22/outfile1373 -D - > log/22/stdout1373 2> log/22/stderr1373
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.311641 ====> Client connect
 19:28:29.311681 accept_connection 3 returned 4
 19:28:29.311707 Read 93 bytes
 19:28:29.311717 Process 93 bytes request
 19:28:29.311731 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.311741 Are-we-friendly question received
 19:28:29.311770 Wrote request (93 bytes) input to log/22/server.input
 19:28:29.311788 Identifying ourselves as friends
 19:28:29.311860 Response sent (56 bytes) and written to log/22/server.response
 19:28:29.311871 special request received, no persistency
 19:28:29.311881 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 5CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1371 ../src/curl -q --trace-ascii log/13/trace1371 --trace-time http://127.0.0.1:38821/1371 -J -o log/13/outfile1371 -D - > log/13/stdout1371 2> log/13/stderr1371
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1375 ../src/curl -q --trace-ascii log/15/trace1375 --trace-time http://127.0.0.1:40321/1375 -i -o log/15/outfile1375 -D - > log/15/stdout1375 2> log/15/stderr1375
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1377 ../src/curl -q --trace-ascii log/5/trace1377 --trace-time http://127.0.0.1:37089/1377 -i -o log/5/outfile1377 > log/5/stdout1377 2> log/5/stderr1377
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1376 ../src/curl -q --trace-ascii log/1/trace1376 --trace-time http://127.0.0.1:38815/1376 -i -o log/1/outfile1376 > log/1/stdout1376 2> log/1/stderr1376
2064 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1373
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1373
 ==155521== 
 ==155521== Process terminating with default action of signal 4 (SIGILL)
 ==155521==  Illegal opcode at address 0x492B75F
 ==155521==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155521==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155521==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155521==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155521==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155521==    by 0x49908EB: curl_version_info (version.c:600)
 ==155521==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155521==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155521==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155521==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1373
test 1371 [HTTP GET -o fname -J and Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1371 ../src/curl -q --trace-ascii log/13/trace1371 --trace-time http://127.0.0.1:38821/1371 -J -o log/13/outfile1371 -D - > log/13/stdout1371 2> log/13/stderr1371

 1371: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1371
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1371 ../src/curl -q --trace-ascii log/13/trace1371 --trace-time http://127.0.0.1:38821/1371 -J -o log/13/outfile1371 -D - > log/13/stdout1371 2> log/13/stderr1371
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.060352 ====> Client connect
 19:28:29.060392 accept_connection 3 returned 4
 19:28:29.060557 Read 93 bytes
 19:28:29.060573 Process 93 bytes request
 19:28:29.060587 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.060596 Are-we-friendly question received
 19:28:29.060628 Wrote request (93 bytes) input to log/13/server.input
 19:28:29.060647 Identifying ourselves as friends
 19:28:29.060718 Response sent (56 bytes) and written to log/13/server.response
 19:28:29.060731 special request received, no persistency
 19:28:29.060741 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 43520 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1371
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1371
 ==155347== 
 ==155347== Process terminating with default action of signal 4 (SIGILL)
 ==155347==  Illegal opcode at address 0x492B75F
 ==155347==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155347==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155347==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155347==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155347==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155347==    by 0x49908EB: curl_version_info (version.c:600)
 ==155347==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155347==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155347==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155347==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1371
test 1375 [HTTP GET -o fname -i and Content-Disposition, -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1375 ../src/curl -q --trace-ascii log/15/trace1375 --trace-time http://127.0.0.1:40321/1375 -i -o log/15/outfile1375 -D - > log/15/stdout1375 2> log/15/stderr1375

 1375: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1375
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1375 ../src/curl -q --trace-ascii log/15/trace1375 --trace-time http://127.0.0.1:40321/1375 -i -o log/15/outfile1375 -D - > log/15/stdout1375 2> log/15/stderr1375
=== End of file commands.log
=== Start of file http_server.log
 19:28:30.583921 ====> Client connect
 19:28:30.583954 accept_connection 3 returned 4
 19:28:30.583975 Read 93 bytes
 19:28:30.583984 Process 93 bytes request
 19:28:30.583997 Got request: GET /verifiedserver HTTP/1.1
 19:28:30.584006 Are-we-friendly question received
 19:28:30.584031 Wrote request (93 bytes) input to log/15/server.input
 19:28:30.584047 Identifying ourselves as friends
 19:28:30.584105 Response sent (56 bytes) and written to log/15/server.response
 19:28:30.584114 special request received, no persistency
 19:28:30.584122 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 54306 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1375
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1375
 ==155623== 
 ==155623== Process terminating with default action of signal 4 (SIGILL)
 ==155623==  Illegal opcode at address 0x492B75F
 ==155623==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155623==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155623==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155623==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155623==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155623==    by 0x49908EB: curl_version_info (version.c:600)
 ==155623==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155623==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155623==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155623==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1375
test 1377 [HTTP GET -o fname -i and Content-Disposition, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1377 ../src/curl -q --trace-ascii log/5/trace1377 --trace-time http://127.0.0.1:37089/1377 -i -o log/5/outfile1377 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1379 ../src/curl -q --trace-ascii log/6/trace1379 --trace-time ftp://127.0.0.1:33989/path/file1379 -o log/6/download1379 -D log/6/heads1379 > log/6/stdout1379 2> log/6/stderr1379
> log/5/stdout1377 2> log/5/stderr1377

 1377: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1377
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1377 ../src/curl -q --trace-ascii log/5/trace1377 --trace-time http://127.0.0.1:37089/1377 -i -o log/5/outfile1377 > log/5/stdout1377 2> log/5/stderr1377
=== End of file commands.log
=== Start of file http_server.log
 19:28:29.951517 ====> Client connect
 19:28:29.951551 accept_connection 3 returned 4
 19:28:29.951712 Read 93 bytes
 19:28:29.951728 Process 93 bytes request
 19:28:29.951742 Got request: GET /verifiedserver HTTP/1.1
 19:28:29.951750 Are-we-friendly question received
 19:28:29.951782 Wrote request (93 bytes) input to log/5/server.input
 19:28:29.951798 Identifying ourselves as friends
 19:28:29.951858 Response sent (56 bytes) and written to log/5/server.response
 19:28:29.951868 special request received, no persistency
 19:28:29.951875 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 50196 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1377
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1377
 ==155841== 
 ==155841== Process terminating with default action of signal 4 (SIGILL)
 ==155841==  Illegal opcode at address 0x492B75F
 ==155841==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155841==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155841==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155841==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155841==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155841==    by 0x49908EB: curl_version_info (version.c:600)
 ==155841==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155841==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155841==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155841==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1377
test 1376 [HTTP GET -o fname -i without Content-Disposition, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1376 ../src/curl -q --trace-ascii log/1/trace1376 --trace-time http://127.0.0.1:38815/1376 -i -o log/1/outfile1376 > log/1/stdout1376 2> log/1/stderr1376

 1376: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1376
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1376 ../src/curl -q --trace-ascii log/1/trace1376 --trace-time http://127.0.0.1:38815/1376 -i -o log/1/outfile1376 > log/1/stdout1376 2> log/1/stderr1376
=== End of file commands.log
=== Start of file http_server.log
 19:28:30.774865 ====> Client connect
 19:28:30.774900 accept_connection 3 returned 4
 19:28:30.774920 Read 93 bytes
 19:28:30.774928 Process 93 bytes request
 19:28:30.774937 Got request: GET /verifiedserver HTTP/1.1
 19:28:30.774944 Are-we-friendly question received
 19:28:30.774964 Wrote request (93 bytes) input to log/1/server.input
 19:28:30.774977 Identifying ourselves as friends
 19:28:30.775036 Response sent (56 bytes) and written to log/1/server.response
 19:28:30.775045 special request received, no persistency
 19:28:30.775052 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 34028 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1376
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1376
 ==155729== 
 ==155729== Process terminating with default action of signal 4 (SIGILL)
 ==155729==  Illegal opcode at address 0x492B75F
 ==155729==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155729==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155729==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155729==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155729==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155729==    by 0x49908EB: curl_version_info (version.c:600)
 ==155729==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155729==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155729==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155729==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1376
test 1379 [FTP DL, file without C-D inside, using -o fname -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1379 ../src/curl -q --trace-ascii log/6/trace1379 --trace-time ftp://127.0.0.1:33989/path/file1379 -o log/6/download1379 -D log/6/heads1379 > log/6/stdout1379 2> log/6/stderr1379

 1379: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1379
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1379 ../src/curl -q --trace-ascii log/6/trace1379 --trace-time ftp://127.0.0.1:33989/path/file1379 -o log/6/download1379 -D log/6/heads1379 > log/6/stdout1379 2> log/6/stderr1379
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:30.385466 ====> Client connect
 19:28:30.385666 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:30.385973 < "USER anonymous"
 19:28:30.386010 > "331 We are happy you popped in![CR][LF]"
 19:28:30.386179 < "PASS ftp@example.com"
 19:28:30.386208 > "230 Welcome you silly person[CR][LF]"
 19:28:30.386350 < "PWD"
 19:28:30.386378 > "257 "/" is current directory[CR][LF]"
 19:28:30.386523 < "EPSV"
 19:28:30.386545 ====> Passive DATA channel requested by client
 19:28:30.386557 DATA sockfilt for passive data channel starting...
 19:28:30.390206 DATA sockfilt for passive data channel started (pid 155839)
 19:28:30.390333 DATA sockfilt for passive data channel listens on port 38353
 19:28:30.390375 > "229 Entering Passive Mode (|||38353|)[CR][LF]"
 19:28:30.390391 Client has been notified that upcoming DATA connection is awaited on port 38353
 19:28:30.395390 Client connects to port 38353
 19:28:30.395437 ====> Client established passive DATA conneCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1378 ../src/curl -q --trace-ascii log/21/trace1378 --trace-time ftp://127.0.0.1:35787/path/file1378 -o log/21/download1378 > log/21/stdout1378 2> log/21/stderr1378
ction on port 38353
 19:28:30.395533 < "TYPE I"
 19:28:30.395569 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:30.395737 < "SIZE verifiedserver"
 19:28:30.395770 > "213 17[CR][LF]"
 19:28:30.395896 < "RETR verifiedserver"
 19:28:30.395926 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:30.396008 =====> Closing passive DATA connection...
 19:28:30.396021 Server disconnects passive DATA connection
 19:28:30.396123 Server disconnected passive DATA connection
 19:28:30.396140 DATA sockfilt for passive data channel quits (pid 155839)
 19:28:30.396403 DATA sockfilt for passive data channel quit (pid 155839)
 19:28:30.396423 =====> Closed passive DATA connection
 19:28:30.396444 > "226 File transfer complete[CR][LF]"
 19:28:30.446402 < "QUIT"
 19:28:30.446456 > "221 bye bye baby[CR][LF]"
 19:28:30.447568 MAIN sockfilt said DISC
 19:28:30.447597 ====> Client disconnected
 19:28:30.447679 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:30.988130 ====> Client connect
 19:28:30.988481 Received DATA (on stdin)
 19:28:30.988496 > 146 bytes data, server => client
 19:28:30.988506 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:30.988516 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:30.988524 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:30.988625 < 16 bytes data, client => server
 19:28:30.988637 'USER anonymous\r\n'
 19:28:30.988812 Received DATA (on stdin)
 19:28:30.988823 > 33 bytes data, server => client
 19:28:30.988832 '331 We are happy you popped in!\r\n'
 19:28:30.988887 < 22 bytes data, client => server
 19:28:30.988896 'PASS ftp@example.com\r\n'
 19:28:30.989006 Received DATA (on stdin)
 19:28:30.989016 > 30 bytes data, server => client
 19:28:30.989025 '230 Welcome you silly person\r\n'
 19:28:30.989072 < 5 bytes data, client => server
 19:28:30.989081 'PWD\r\n'
 19:28:30.989174 Received DATA (on stdin)
 19:28:30.989184 > 30 bytes data, server => client
 19:28:30.989192 '257 "/" is current directory\r\n'
 19:28:30.989247 < 6 bytes data, client => server
 19:28:30.989256 'EPSV\r\n'
 19:28:30.993196 Received DATA (on stdin)
 19:28:30.993211 > 39 bytes data, server => client
 19:28:30.993221 '229 Entering Passive Mode (|||38353|)\r\n'
 19:28:30.993381 < 8 bytes data, client => server
 19:28:30.993394 'TYPE I\r\n'
 19:28:30.998369 Received DATA (on stdin)
 19:28:30.998382 > 33 bytes data, server => client
 19:28:30.998393 '200 I modify TYPE as you wanted\r\n'
 19:28:30.998463 < 21 bytes data, client => server
 19:28:30.998472 'SIZE verifiedserver\r\n'
 19:28:30.998565 Received DATA (on stdin)
 19:28:30.998574 > 8 bytes data, server => client
 19:28:30.998582 '213 17\r\n'
 19:28:30.998624 < 21 bytes data, client => server
 19:28:30.998633 'RETR verifiedserver\r\n'
 19:28:30.999240 Received DATA (on stdin)
 19:28:30.999251 > 29 bytes data, server => client
 19:28:30.999260 '150 Binary junk (17 bytes).\r\n'
 19:28:30.999280 Received DATA (on stdin)
 19:28:30.999288 > 28 bytes data, server => client
 19:28:30.999296 '226 File transfer complete\r\n'
 19:28:31.049014 < 6 bytes data, client => server
 19:28:31.049046 'QUIT\r\n'
 19:28:31.049253 Received DATA (on stdin)
 19:28:31.049264 > 18 bytes data, server => client
 19:28:31.049273 '221 bye bye baby\r\n'
 19:28:31.050317 ====> Client disconnect
 19:28:31.050473 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:30.992670 Running IPv4 version
 19:28:30.992760 Listening on port 38353
 19:28:30.992792 Wrote pid 155839 to log/6/server/ftp_sockdata.pid
 19:28:30.992950 Received PING (on stdin)
 19:28:30.993035 Received PORT (on stdin)
 19:28:30.998122 ====> Client connect
 19:28:30.998818 Received DATA (on stdin)
 19:28:30.998829 > 17 bytes data, server => client
 19:28:30.998837 'WE ROOLZ: 85558\r\n'
 19:28:30.998863 Received DISC (on stdin)
 19:28:30.998873 ====> Client forcibly disconnected
 19:28:30.998940 Received QUIT (on stdin)
 19:28:30.998949 quits
 19:28:30.999009 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1379
=== End of file server.cmd
=== Start of file valgrind1379
 ==155889== 
 ==155889== Process terminating with default action of signal 4 (SIGILL)
 ==155889==  Illegal opcode at address 0x492B75F
 ==155889==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155889==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155889==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155889==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155889==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155889==    by 0x49908EB: curl_version_info (version.c:600)
 ==155889==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155889==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1379
test 1378 [FTP DL, file without Content-Disposition inside, using -o fname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1378 ../src/curl -q --trace-ascii log/21/trace1378 --trace-time ftp://127.0.0.1:35787/path/file1378 -o log/21/download1378 > log/21/stdout1378 2> log/21/stderr1378

 1378: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1378
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1378 ../src/curl -q --trace-ascii log/21/trace1378 --trace-time ftp://127.0.0.1:35787/path/file1378 -o log/21/download1378 > log/21/stdout1378 2> log/21/stderr1378
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:30.332056 ====> Client connect
 19:28:30.332352 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:30.335817 < "USER anonymous"
 19:28:30.335881 > "331 We are happy you popped in![CR][LF]"
 19:28:30.336717 < "PASS ftp@example.com"
 19:28:30.336764 > "230 Welcome you silly person[CR][LF]"
 19:28:30.336970 < "PWD"
 19:28:30.337010 > "257 "/" is current directory[CR][LF]"
 19:28:30.337210 < "EPSV"
 19:28:30.337239 ====> Passive DATA channel requested by client
 19:28:30.337254 DATA sockfilt for passive data channel starting...
 19:28:30.348906 DATA sockfilt for passive data channel started (pid 155813)
 19:28:30.349066 DATA sockfilt for passive data channel listens on port 37579
 19:28:30.349114 > "229 Entering Passive Mode (|||37579|)[CR][LF]"
 19:28:30.349129 Client has been notified that upcoming DATA connection is awaited on port 37579
 19:28:30.349406 Client connects to port 37579
 19:28:30.349443 ====> Client established passive DATA connection on port 37579
 19:28:30.349549 < "TYPE I"
 19:28:30.349597 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:30.349826 < "SIZE verifiedserver"
 19:28:30.349871 > "213 17[CR][LF]"
 19:28:30.350031 < "RETR verifiedserver"
 19:28:30.350068 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:30.350156 =====> Closing passive DATA connection...
 19:28:30.350171 Server disconnects passive DATA connection
 19:28:30.350411 Server disconnected passive DATA connection
 19:28:30.350439 DATA sockfilt for passive data channel quits (pid 155813)
 19:28:30.350688 DATA sockfilt for passive data channel quit (pid 155813)
 19:28:30.350710 =====> Closed passive DATA connection
 19:28:30.350737 > "226 File transfer complete[CR][LF]"
 19:28:30.392289 < "QUIT"
 19:28:30.392346 > "221 bye bye baby[CR][LF]"
 19:28:30.393712 MAIN sockfilt said DISC
 19:28:30.393756 ====> Client disconnected
 19:28:30.393842 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:29.933042 ====> Client connect
 19:28:29.935186 Received DATA (on stdinCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1394 ./tunit/tunits tool1394 - > log/18/stdout1394 2> log/18/stderr1394
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1381 ../src/curl -q --trace-ascii log/2/trace1381 --trace-time ftp://127.0.0.1:38033/path/file1381 -o log/2/download1381 -J -D log/2/heads1381 > log/2/stdout1381 2> log/2/stderr1381
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1385 ../src/curl -q --trace-ascii log/10/trace1385 --trace-time ftp://127.0.0.1:44817/path/file1385 -o log/10/download1385 -i > log/10/stdout1385 2> log/10/stderr1385
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1384 ../src/curl -q --trace-ascii log/11/trace1384 --trace-time ftp://127.0.0.1:36697/path/file1384 -o log/11/download1384 -i -D - > log/11/stdout1384 2> log/11/stderr1384
)
 19:28:29.935208 > 146 bytes data, server => client
 19:28:29.935220 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:29.935231 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:29.935240 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:29.938383 < 16 bytes data, client => server
 19:28:29.938409 'USER anonymous\r\n'
 19:28:29.938695 Received DATA (on stdin)
 19:28:29.938710 > 33 bytes data, server => client
 19:28:29.938726 '331 We are happy you popped in!\r\n'
 19:28:29.939373 < 22 bytes data, client => server
 19:28:29.939393 'PASS ftp@example.com\r\n'
 19:28:29.939574 Received DATA (on stdin)
 19:28:29.939587 > 30 bytes data, server => client
 19:28:29.939598 '230 Welcome you silly person\r\n'
 19:28:29.939664 < 5 bytes data, client => server
 19:28:29.939679 'PWD\r\n'
 19:28:29.939814 Received DATA (on stdin)
 19:28:29.939826 > 30 bytes data, server => client
 19:28:29.939837 '257 "/" is current directory\r\n'
 19:28:29.939909 < 6 bytes data, client => server
 19:28:29.939924 'EPSV\r\n'
 19:28:29.951944 Received DATA (on stdin)
 19:28:29.951960 > 39 bytes data, server => client
 19:28:29.951970 '229 Entering Passive Mode (|||37579|)\r\n'
 19:28:29.952121 < 8 bytes data, client => server
 19:28:29.952135 'TYPE I\r\n'
 19:28:29.952408 Received DATA (on stdin)
 19:28:29.952422 > 33 bytes data, server => client
 19:28:29.952433 '200 I modify TYPE as you wanted\r\n'
 19:28:29.952518 < 21 bytes data, client => server
 19:28:29.952528 'SIZE verifiedserver\r\n'
 19:28:29.952675 Received DATA (on stdin)
 19:28:29.952684 > 8 bytes data, server => client
 19:28:29.952694 '213 17\r\n'
 19:28:29.952745 < 21 bytes data, client => server
 19:28:29.952755 'RETR verifiedserver\r\n'
 19:28:29.952977 Received DATA (on stdin)
 19:28:29.952988 > 29 bytes data, server => client
 19:28:29.952997 '150 Binary junk (17 bytes).\r\n'
 19:28:29.953545 Received DATA (on stdin)
 19:28:29.953557 > 28 bytes data, server => client
 19:28:29.953566 '226 File transfer complete\r\n'
 19:28:29.994917 < 6 bytes data, client => server
 19:28:29.994944 'QUIT\r\n'
 19:28:29.995153 Received DATA (on stdin)
 19:28:29.995167 > 18 bytes data, server => client
 19:28:29.995177 '221 bye bye baby\r\n'
 19:28:29.996449 ====> Client disconnect
 19:28:29.996646 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:30.949048 Running IPv4 version
 19:28:30.949155 Listening on port 37579
 19:28:30.949199 Wrote pid 155813 to log/21/server/ftp_sockdata.pid
 19:28:30.951638 Received PING (on stdin)
 19:28:30.951762 Received PORT (on stdin)
 19:28:30.952154 ====> Client connect
 19:28:30.953059 Received DATA (on stdin)
 19:28:30.953072 > 17 bytes data, server => client
 19:28:30.953081 'WE ROOLZ: 84694\r\n'
 19:28:30.953106 Received DISC (on stdin)
 19:28:30.953116 ====> Client forcibly disconnected
 19:28:30.953251 Received QUIT (on stdin)
 19:28:30.953261 quits
 19:28:30.953327 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1378
=== End of file server.cmd
=== Start of file valgrind1378
 ==155853== 
 ==155853== Process terminating with default action of signal 4 (SIGILL)
 ==155853==  Illegal opcode at address 0x492B75F
 ==155853==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==155853==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==155853==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==155853==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==155853==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==155853==    by 0x49908EB: curl_version_info (version.c:600)
 ==155853==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==155853==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==155853==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==155853==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1378
test 1394 [unit test for parse_cert_parameter()]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1394 ./tunit/tunits tool1394 - > log/18/stdout1394 2> log/18/stderr1394

tunits returned 132, when expecting 0
 1394: exit FAILED
== Contents of files in the log/18/ directory after test 1394
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1394 ./tunit/tunits tool1394 - > log/18/stdout1394 2> log/18/stderr1394
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1394
=== End of file server.cmd
=== Start of file valgrind1394
 ==156831== 
 ==156831== Process terminating with default action of signal 4 (SIGILL)
 ==156831==  Illegal opcode at address 0x48F863F
 ==156831==    at 0x48F863F: formatf.constprop.1 (mprintf.c:1115)
 ==156831==    by 0x48FC58B: curl_mvfprintf (mprintf.c:1482)
 ==156831==    by 0x48FC662: curl_mfprintf (mprintf.c:1493)
 ==156831==    by 0x40011A9: main (first.c:264)
=== End of file valgrind1394
test 1381 [FTP DL, file without C-D inside, using -o fname -J -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1381 ../src/curl -q --trace-ascii log/2/trace1381 --trace-time ftp://127.0.0.1:38033/path/file1381 -o log/2/download1381 -J -D log/2/heads1381 > log/2/stdout1381 2> log/2/stderr1381

 1381: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1381
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1381 ../src/curl -q --trace-ascii log/2/trace1381 --trace-time ftp://127.0.0.1:38033/path/file1381 -o log/2/download1381 -J -D log/2/heads1381 > log/2/stdout1381 2> log/2/stderr1381
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:30.818284 ====> Client connect
 19:28:30.818489 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:30.818836 < "USER anonymous"
 19:28:30.818867 > "331 We are happy you popped in![CR][LF]"
 19:28:30.819729 < "PASS ftp@example.com"
 19:28:30.819756 > "230 Welcome you silly person[CR][LF]"
 19:28:30.819909 < "PWD"
 19:28:30.819941 > "257 "/" is current directory[CR][LF]"
 19:28:30.821913 < "EPSV"
 19:28:30.821938 ====> Passive DATA channel requested by client
 19:28:30.821952 DATA sockfilt for passive data channel starting...
 19:28:30.833127 DATA sockfilt for passive data channel started (pid 156055)
 19:28:30.833314 DATA sockfilt for passive data channel listens on port 33233
 19:28:30.833362 > "229 Entering Passive Mode (|||33233|)[CR][LF]"
 19:28:30.833381 Client has been notified that upcoming DATA connection is awaited on port 33233
 19:28:30.833696 Client connects to port 33233
 19:28:30.833726 ====> Client established passive DATA connection on port 33233
 19:28:30.833811 < "TYPE I"
 19:28:30.833842 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:30.833995 < "SIZE verifiedserver"
 19:28:30.834028 > "213 17[CR][LF]"
 19:28:30.834162 < "RETR verifiedserver"
 19:28:30.834194 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:30.834283 =====> Closing passive DATA connection...
 19:28:30.834298 Server disconnects passive DATA connection
 19:28:30.834444 Server disconnected passive DATA connection
 19:28:30.834464 DATA sockfilt for passive data channel quits (pid 156055)
 19:28:30.834751 DATA sockfilt for passive data channel quit (pid 156055)
 19:28:30.834779 =====> Closed passive DATA connection
 19:28:30.834806 > "226 File transfer complete[CR][LF]"
 19:28:30.878962 < "QUIT"
 19:28:30.879016 > "221 bye bye baby[CR][LF]"
 19:28:30.880304 MAIN sockfilt said DISC
 19:28:30.880342 ====> Client disconnected
 19:28:30.880419 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:30.420944 ====> Client connect
 19:28:30.421284 Received DATA (on stdin)
 19:28:30.421297 > 146 bytes data, server => client
 19:28:30.421308 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:30.421318 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:30.421327 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:30.421401 < 16 bytes data, client => server
 19:28:30.421652 'USER anonymous\r\n'
 19:28:30.421665 Received DATA (on stdin)
 19:28:30.421674 > 33 bytes data, server => client
 19:28:30.421684 '331 We are happy you popped in!\r\n'
 19:28:30.422409 < 22 bytes data, client => server
 19:28:30.422425 'PASS ftp@example.com\r\n'
 19:28:30.422539 Received DATA (on stdin)
 19:28:30.422549 > 30 bytes data, server => client
 19:28:30.422559 '230 Welcome you silly person\r\n'
 19:28:30.422609 < 5 bytes data, client => server
 19:28:30.422620 'PWD\r\n'
 19:28:30.424509 Received DATA (on stdin)
 19:28:30.424527 > 30 bytes data, server => client
 19:28:30.424538 '257 "/" is current directory\r\n'
 19:28:30.424606 < 6 bytes data, client => server
 19:28:30.424616 'EPSV\r\n'
 19:28:30.436174 Received DATA (on stdin)
 19:28:30.436190 > 39 bytes data, server => client
 19:28:30.436201 '229 Entering Passive Mode (|||33233|)\r\n'
 19:28:30.436398 < 8 bytes data, client => server
 19:28:30.436411 'TYPE I\r\n'
 19:28:30.436624 Received DATA (on stdin)
 19:28:30.436634 > 33 bytes data, server => client
 19:28:30.436644 '200 I modify TYPE as you wanted\r\n'
 19:28:30.436696 < 21 bytes data, client => server
 19:28:30.436707 'SIZE verifiedserver\r\n'
 19:28:30.436808 Received DATA (on stdin)
 19:28:30.436817 > 8 bytes data, server => client
 19:28:30.436826 '213 17\r\n'
 19:28:30.436871 < 21 bytes data, client => server
 19:28:30.436880 'RETR verifiedserver\r\n'
 19:28:30.437079 Received DATA (on stdin)
 19:28:30.437090 > 29 bytes data, server => client
 19:28:30.437099 '150 Binary junk (17 bytes).\r\n'
 19:28:30.437588 Received DATA (on stdin)
 19:28:30.437600 > 28 bytes data, server => client
 19:28:30.437610 '226 File transfer complete\r\n'
 19:28:30.481571 < 6 bytes data, client => server
 19:28:30.481598 'QUIT\r\n'
 19:28:30.481802 Received DATA (on stdin)
 19:28:30.481814 > 18 bytes data, server => client
 19:28:30.481824 '221 bye bye baby\r\n'
 19:28:30.483029 ====> Client disconnect
 19:28:30.483204 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:30.431161 Running IPv4 version
 19:28:30.431275 Listening on port 33233
 19:28:30.431322 Wrote pid 156055 to log/2/server/ftp_sockdata.pid
 19:28:30.431344 Received PING (on stdin)
 19:28:30.435981 Received PORT (on stdin)
 19:28:30.436431 ====> Client connect
 19:28:30.437122 Received DATA (on stdin)
 19:28:30.437133 > 17 bytes data, server => client
 19:28:30.437147 'WE ROOLZ: 85208\r\n'
 19:28:30.437168 Received DISC (on stdin)
 19:28:30.437179 ====> Client forcibly disconnected
 19:28:30.437250 Received QUIT (on stdin)
 19:28:30.437260 quits
 19:28:30.437343 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1381
=== End of file server.cmd
=== Start of file valgrind1381
 ==156087== 
 ==156087== Process terminating with default action of signal 4 (SIGILL)
 ==156087==  Illegal opcode at address 0x492B75F
 ==156087==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156087==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156087==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156087==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156087==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156087==    by 0x49908EB: curl_version_info (version.c:600)
 ==156087==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156087==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156087==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156087==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1381
test 1385 [FTP DL, file without C-D inside, using -o fname -i, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1385 ../src/curl -q --trace-ascii log/10/trace1385 --trace-time ftp://127.0.0.1:44817/path/file1385 -o log/10/download1385 -i > log/10/stdout1385 2> log/10/stderr1385

 1385: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1385
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1385 ../src/curl -q --trace-ascii log/10/trace1385 --trace-time ftp://127.0.0.1:44817/path/file1385 -o log/10/download1385 -i > log/10/stdout1385 2> log/10/stderr1385
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.034341 ====> Client connect
 19:28:31.034592 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.034946 < "USER anonymous"
 19:28:31.034997 > "331 We are happy you popped in![CR][LF]"
 19:28:31.035204 < "PASS ftp@example.com"
 19:28:31.035247 > "230 Welcome you silly person[CR][LF]"
 19:28:31.035481 < "PWD"
 19:28:31.035524 > "257 "/" is current directory[CR][LF]"
 19:28:31.035716 < "EPSV"
 19:28:31.035742 ====> Passive DATA channel requested by client
 19:28:31.035755 DATA sockfilt for passive data channel starting...
 19:28:31.045410 DATA sockfilt for passive data channel started (pid 156176)
 19:28:31.045557 DATA sockfilt for passive data channel listens on port 33957
 19:28:31.045612 > "229 Entering Passive Mode (|||33957|)[CR][LF]"
 19:28:31.045631 Client has been notified that upcoming DATA connection is awaited on port 33957
 19:28:31.045979 Client connects to port 33957
 19:28:31.046017 ====> Client established passive DATA connection on port 33957
 19:28:31.046130 < "TYPE I"
 19:28:31.046174 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.046398 < "SIZE verifiedserver"
 19:28:31.046457 > "213 17[CR][LF]"
 19:28:31.046658 < "RETR verifiedserver"
 19:28:31.046701 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.046803 =====> Closing passive DATA connection...
 19:28:31.046825 Server disconnects passive DATA connection
 19:28:31.047092 Server disconnected passive DATA connection
 19:28:31.047121 DATA sockfilt for passive data channel quits (pid 156176)
 19:28:31.047401 DATA sockfilt for passive data channel quit (pid 156176)
 19:28:31.047430 =====> Closed passive DATA connection
 19:28:31.047463 > "226 File transfer complete[CR][LF]"
 19:28:31.092282 < "QUIT"
 19:28:31.092336 > "221 bye bye baby[CR][LF]"
 19:28:31.093540 MAIN sockfilt said DISC
 19:28:31.093627 ====> Client disconnected
 19:28:31.093716 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.636980 ====> Client connect
 19:28:31.637399 Received DATA (on stdin)
 19:28:31.637420 > 146 bytes data, server => client
 19:28:31.637432 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.637443 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.637453 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.637546 < 16 bytes data, client => server
 19:28:31.637563 'USER anonymous\r\n'
 19:28:31.637783 Received DATA (on stdin)
 19:28:31.637796 > 33 bytes data, server => client
 19:28:31.637807 '331 We are happy you popped in!\r\n'
 19:28:31.637866 < 22 bytes data, client => server
 19:28:31.637879 'PASS ftp@example.com\r\n'
 19:28:31.638030 Received DATA (on stdin)
 19:28:31.638043 > 30 bytes data, server => client
 19:28:31.638053 '230 Welcome you silly person\r\n'
 19:28:31.638150 < 5 bytes data, client => server
 19:28:31.638165 'PWD\r\n'
 19:28:31.638305 Received DATA (on stdin)
 19:28:31.638317 > 30 bytes data, server => client
 19:28:31.638328 '257 "/" is current directory\r\n'
 19:28:31.638397 < 6 bytes data, client => server
 19:28:31.638410 'EPSV\r\n'
 19:28:31.648419 Received DATA (on stdin)
 19:28:31.648437 > 39 bytes data, server => client
 19:28:31.648448 '229 Entering Passive Mode (|||33957|)\r\n'
 19:28:31.648654 < 8 bytes data, client => server
 19:28:31.648674 'TYPE I\r\n'
 19:28:31.648957 Received DATA (on stdin)
 19:28:31.648972 > 33 bytes data, server => client
 19:28:31.648982 '200 I modify TYPE as you wanted\r\n'
 19:28:31.649052 < 21 bytes data, client => server
 19:28:31.649067 'SIZE verifiedserver\r\n'
 19:28:31.649243 Received DATA (on stdin)
 19:28:31.649256 > 8 bytes data, server => client
 19:28:31.649266 '213 17\r\n'
 19:28:31.649329 < 21 bytes data, client => server
 19:28:31.649344 'RETR verifiedserver\r\n'
 19:28:31.649605 Received DATA (on stdin)
 19:28:31.649617 > 29 bytes data, server => client
 19:28:31.649627 '150 Binary junk (17 bytes).\r\n'
 19:28:31.650244 Received DATA (on stdin)
 19:28:31.650257 > 28 bytes data, server => client
 19:28:31.650266 '226 File transfer complete\r\n'
 19:28:31.694865 < 6 bytes data, client => server
 19:28:31.694896 'QUIT\r\n'
 19:28:31.695113 Received DATA (on stdin)
 19:28:31.695125 > 18 bytes data, server => client
 19:28:31.695134 '221 bye bye baby\r\n'
 19:28:31.696255 ====> Client disconnect
 19:28:31.696331 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.642714 Running IPv4 version
 19:28:31.642806 Listening on port 33957
 19:28:31.642847 Wrote pid 156176 to log/10/server/ftp_sockdata.pid
 19:28:31.648101 Received PING (on stdin)
 19:28:31.648230 Received PORT (on stdin)
 19:28:31.648700 ====> Client connect
 19:28:31.649694 Received DATA (on stdin)
 19:28:31.649711 > 17 bytes data, server => client
 19:28:31.649721 'WE ROOLZ: 85153\r\n'
 19:28:31.649752 Received DISC (on stdin)
 19:28:31.649764 ====> Client forcibly disconnected
 19:28:31.649908 Received QUIT (on stdin)
 19:28:31.649920 quits
 19:28:31.649987 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1385
=== End of file server.cmd
=== Start of file valgrind1385
 ==156216== 
 ==156216== Process terminating with default action of signal 4 (SIGILL)
 ==156216==  Illegal opcode at address 0x492B75F
 ==156216==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156216==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156216==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156216==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156216==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156216==    by 0x49908EB: curl_version_info (version.c:600)
 ==156216==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156216==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156216==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156216==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1385
test 1384 [FTP DL, file without C-D inside, using -o fname -i -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1384 ../src/curl -q --trace-ascii log/11/trace1384 --trace-time ftp://127.0.0.1:36697/path/file1384 -o log/11/download1384 -i -D - > log/11/stdout1384 2> log/11/stderr1384

 1384: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1384
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1384 ../src/curl -q --trace-ascii log/11/trace1384 --trace-time ftp://127.0.0.1:36697/path/file1384 -o log/11/download1384 -i -D - > log/11/stdout1384 2> log/11/stderr1384
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.052120 ====> Client connect
 19:28:31.052337 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.052685 < "USER anonymous"
 19:28:31.052727 > "331 We are happy you popped in![CR][LF]"
 19:28:31.052911 < "PASS ftp@example.com"
 19:28:31.052944 > "230 Welcome you silly person[CR][LF]"
 19:28:31.053122 < "PWD"
 19:28:31.053158 > "257 "/" is current directory[CR][LF]"
 19:28:31.053347 < "EPSV"
 19:28:31.053379 ====> Passive DATA channel requested by client
 19:28:31.053394 DATA sockfilt for passive data channel starting...
 19:28:31.056891 DATA sockfilt for passive data channel started (pid 156181)
 19:28:31.057004 DATA sockfilt for passive data channel listens on port 33821
 19:28:31.057049 > "229 Entering Passive Mode (|||33821|)[CR][LF]"
 19:28:31.057066 Client has been notified that upcoming DATA connection is awaited on port 33821
 19:28:31.057316 Client connects to port 33821
 19:28:31.057350 ====> Client established passive DATA connection on port 33821
 19:28:31.057430 < "TYPE I"
 19:28:31.057459 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.057614 < "SIZE verifiedserver"
 19:28:31.057648 > "213 18[CR][LF]"
 19:28:31.058830 < "RETR verifiedserver"
 19:28:31.058869 > "150 Binary junk (18 bytes).[CR][LF]"
 19:28:31.058958 =====> Closing passive DATA connection...
 19:28:31.058973 Server disconnects passive DATA connection
 19:28:31.059207 Server disconnected passive DATA connection
 19:28:31.059233 DATA sockfilt for passive data channel quits (pid 156181)
 19:28:31.059488 DATA sockfilt for passive data channel quit (pid 156181)
 19:28:31.059512 =====> Closed passive DATA connection
 19:28:31.059538 > "226 File transfer complete[CR][LF]"
 19:28:31.105635 < "QUIT"
 19:28:31.105690 > "221 bye bye baby[CR][LF]"
 19:28:31.106983 MAIN sockfilt said DISC
 19:28:31.107019 ====> Client disconnected
 19:28:31.107103 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:30.654769 ====> Client connect
 19:28:30.655125 Received DATA (on stdin)
 19:28:30.655138 > 146 bytes data, server => client
 19:28:30.655148 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:30.655161 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:30.655169 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:30.655279 < 16 bytes data, client => server
 19:28:30.655293 'USER anonymous\r\n'
 19:28:30.655510 Received DATA (on stdin)
 19:28:30.655524 > 33 bytes data, server => client
 19:28:30.655533 '331 We are happy you popped in!\r\n'
 19:28:30.655587 < 22 bytes data, client => server
 19:28:30.655598 'PASS ftp@example.com\r\n'
 19:28:30.655723 Received DATA (on stdin)
 19:28:30.655736 > 30 bytes data, server => client
 19:28:30.655746 '230 Welcome you silly person\r\n'
 19:28:30.655804 < 5 bytes data, client => server
 19:28:30.655818 'PWD\r\n'
 19:28:30.655935 Received DATA (on stdin)
 19:28:30.655948 > 30 bytes data, server => client
 19:28:30.655958 '257 "/" is current directory\r\n'
 19:28:30.656025 < 6 bytes data, client => server
 19:28:30.656039 'EPSV\r\n'
 19:28:30.659845 Received DATA (on stdin)
 19:28:30.659858 > 39 bytes data, server => client
 19:28:30.659868 '229 Entering Passive Mode (|||33821|)\r\n'
 19:28:30.660014 < 8 bytes data, client => server
 19:28:30.660028 'TYPE I\r\n'
 19:28:30.660234 Received DATA (on stdin)
 19:28:30.660245 > 33 bytes data, server => client
 19:28:30.660255 '200 I modify TYPE as you wanted\r\n'
 19:28:30.660308 < 21 bytes data, client => server
 19:28:30.660318 'SIZE verifiedserver\r\n'
 19:28:30.660420 Received DATA (on stdin)
 19:28:30.660430 > 8 bytes data, server => client
 19:28:30.660439 '213 18\r\n'
 19:28:30.661176 < 21 bytes data, client => server
 19:28:30.661191 'RETR verifiedserver\r\n'
 19:28:30.661748 Received DATA (on stdin)
 19:28:30.661759 > 29 bytes data, server => client
 19:28:30.661769 '150 Binary junk (18 bytes).\r\n'
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1380 ../src/curl -q --trace-ascii log/16/trace1380 --trace-time ftp://127.0.0.1:40031/path/file1380 -o log/16/download1380 -D - > log/16/stdout1380 2> log/16/stderr1380
 19:28:30.662317 Received DATA (on stdin)
 19:28:30.662328 > 28 bytes data, server => client
 19:28:30.662339 '226 File transfer complete\r\n'
 19:28:30.708225 < 6 bytes data, client => server
 19:28:30.708251 'QUIT\r\n'
 19:28:30.708465 Received DATA (on stdin)
 19:28:30.708476 > 18 bytes data, server => client
 19:28:30.708486 '221 bye bye baby\r\n'
 19:28:30.709691 ====> Client disconnect
 19:28:30.709875 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.659346 Running IPv4 version
 19:28:31.659419 Listening on port 33821
 19:28:31.659459 Wrote pid 156181 to log/11/server/ftp_sockdata.pid
 19:28:31.659610 Received PING (on stdin)
 19:28:31.659691 Received PORT (on stdin)
 19:28:31.660046 ====> Client connect
 19:28:31.661824 Received DATA (on stdin)
 19:28:31.661836 > 18 bytes data, server => client
 19:28:31.661846 'WE ROOLZ: 154115\r\n'
 19:28:31.661875 Received DISC (on stdin)
 19:28:31.661885 ====> Client forcibly disconnected
 19:28:31.662015 Received QUIT (on stdin)
 19:28:31.662026 quits
 19:28:31.662091 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1384
=== End of file server.cmd
=== Start of file valgrind1384
 ==156234== 
 ==156234== Process terminating with default action of signal 4 (SIGILL)
 ==156234==  Illegal opcode at address 0x492B75F
 ==156234==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156234==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156234==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156234==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156234==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156234==    by 0x49908EB: curl_version_info (version.c:600)
 ==156234==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156234==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156234==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156234==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1384
test 1380 [FTP DL, file without C-D inside, using -o fname -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1380 ../src/curl -q --trace-ascii log/16/trace1380 --trace-time ftp://127.0.0.1:40031/path/file1380 -o log/16/download1380 -D - > log/16/stdout1380 2> log/16/stderr1380

 1380: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1380
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1380 ../src/curl -q --trace-ascii log/16/trace1380 --trace-time ftp://127.0.0.1:40031/path/file1380 -o log/16/download1380 -D - > log/16/stdout1380 2> log/16/stderr1380
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:30.582029 ====> Client connect
 19:28:30.582273 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:30.585535 < "USER anonymous"
 19:28:30.585585 > "331 We are happy you popped in![CR][LF]"
 19:28:30.585804 < "PASS ftp@example.com"
 19:28:30.585839 > "230 Welcome you silly person[CR][LF]"
 19:28:30.586017 < "PWD"
 19:28:30.586060 > "257 "/" is current directory[CR][LF]"
 19:28:30.586246 < "EPSV"
 19:28:30.586275 ====> Passive DATA channel requested by client
 19:28:30.586289 DATA sockfilt for passive data channel starting...
 19:28:30.590342 DATA sockfilt for passive data channel started (pid 155966)
 19:28:30.590479 DATA sockfilt for passive data channel listens on port 44551
 19:28:30.590542 > "229 Entering Passive Mode (|||44551|)[CR][LF]"
 19:28:30.590571 Client has been notified that upcoming DATA connection is awaited on port 44551
 19:28:30.598737 Client connects to port 44551
 19:28:30.598811 ====> Client established passive DATA connection on port 44551
 19:28:30.598946 < "TYPE I"
 19:28:30.598995 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:30.602100 < "SIZE verifiedserver"
 19:28:30.602155 > "213 17[CR][LF]"
 19:28:30.615521 < "RETR verifiedserver"
 19:28:30.615616 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:30.615730 =====> Closing passive DATA connection...
 19:28:30.615752 Server disconnects passive DATA connection
 19:28:30.615928 Server disconnected passive DATA connection
 19:28:30.615962 DATA sockfilt for passive data channel quits (pid 155966)
 19:28:30.616230 DATA sockfilt for passive data channel quit (pid 155966)
 19:28:30.616259 =====> Closed passive DATA connection
 19:28:30.616294 > "226 File transfer complete[CR][LF]"
 19:28:30.668819 < "QUIT"
 19:28:30.668885 > "221 bye bye baby[CR][LF]"
 19:28:30.670276 MAIN sockfilt said DISC
 19:28:30.670318 ====> Client disconnected
 19:28:30.670398 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:30.181528 ====> Client connect
 19:28:30.185088 Received DATA (on stdin)
 19:28:30.185106 > 146 bytes data, server => client
 19:28:30.185117 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:30.185127 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:30.185136 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:30.188134 < 16 bytes data, client => server
 19:28:30.188158 'USER anonymous\r\n'
 19:28:30.188386 Received DATA (on stdin)
 19:28:30.188400 > 33 bytes data, server => client
 19:28:30.188411 '331 We are happy you popped in!\r\n'
 19:28:30.188479 < 22 bytes data, client => server
 19:28:30.188492 'PASS ftp@example.com\r\n'
 19:28:30.188633 Received DATA (on stdin)
 19:28:30.188644 > 30 bytes data, server => client
 19:28:30.188655 '230 Welcome you silly person\r\n'
 19:28:30.188710 < 5 bytes data, client => server
 19:28:30.188721 'PWD\r\n'
 19:28:30.188854 Received DATA (on stdin)
 19:28:30.188866 > 30 bytes data, server => client
 19:28:30.188876 '257 "/" is current directory\r\n'
 19:28:30.188944 < 6 bytes data, client => server
 19:28:30.188957 'EPSV\r\n'
 19:28:30.198164 Received DATA (on stdin)
 19:28:30.198193 > 39 bytes data, server => client
 19:28:30.198203 '229 Entering Passive Mode (|||44551|)\r\n'
 19:28:30.198412 < 8 bytes data, client => server
 19:28:30.198426 'TYPE I\r\n'
 19:28:30.201764 Received DATA (on stdin)
 19:28:30.201785 > 33 bytes data, server => client
 19:28:30.201797 '200 I modify TYPE as you wanted\r\n'
 19:28:30.201876 < 21 bytes data, client => server
 19:28:30.201888 'SIZE verifiedserver\r\n'
 19:28:30.204954 Received DATA (on stdin)
 19:28:30.204968 > 8 bytes data, server => client
 19:28:30.204979 '213 17\r\n'
 19:28:30.211624 < 21 bytes data, client => server
 19:28:30.211664 'RETR verifiedserver\r\n'
 19:28:30.221447 Received DATA (on stdin)
 19:28:30.221474 > 29 bytes data, server => client
 19:28:30.221487 '150 Binary junk (17 bytes).\r\n'
 19:28:30.221525 Received DATA (on stdin)
 19:28:30.221539 > 28 bytes data, server => client
 19:28:30.221549 '226 File transfer complete\r\n'
 19:28:30.268249 < 6 bytes data, client => server
 19:28:30.268284 'QUIT\r\n'
 19:28:30.271689 Received DATA (on stdin)
 19:28:30.271707 > 18 bytes data, server => client
 19:28:30.271718 '221 bye bye baby\r\n'
 19:28:30.273002 ====> Client disconnect
 19:28:30.273189 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:30.192777 Running IPv4 version
 19:28:30.192861 Listening on port 44551
 19:28:30.192903 Wrote pid 155966 to log/16/server/ftp_sockdata.pid
 19:28:30.193067 Received PING (on stdin)
 19:28:30.193170 Received PORT (on stdin)
 19:28:30.201449 ====> Client connect
 19:28:30.218557 Received DATA (on stdin)
 19:28:30.218579 > 17 bytes data, server => client
 19:28:30.218590 'WE ROOLZ: 84702\r\n'
 19:28:30.218640 Received DISC (on stdin)
 19:28:30.218656 ====> Client forcibly disconnected
 19:28:30.218766 Received QUIT (on stdin)
 19:28:3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1397 ./unit/units unit1397 - > log/22/stdout1397 2> log/22/stderr1397
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1383 ../src/curl -q --trace-ascii log/24/trace1383 --trace-time ftp://127.0.0.1:37215/path/file1383 -o log/24/download1383 -i -D log/24/heads1383 > log/24/stdout1383 2> log/24/stderr1383
0.218779 quits
 19:28:30.218854 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1380
=== End of file server.cmd
=== Start of file valgrind1380
 ==156011== 
 ==156011== Process terminating with default action of signal 4 (SIGILL)
 ==156011==  Illegal opcode at address 0x492B75F
 ==156011==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156011==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156011==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156011==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156011==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156011==    by 0x49908EB: curl_version_info (version.c:600)
 ==156011==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156011==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1380
test 1397 [Curl_cert_hostcheck unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1397 ./unit/units unit1397 - > log/22/stdout1397 2> log/22/stderr1397

units returned 132, when expecting 0
 1397: exit FAILED
== Contents of files in the log/22/ directory after test 1397
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1397 ./unit/units unit1397 - > log/22/stdout1397 2> log/22/stderr1397
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1397
=== End of file server.cmd
=== Start of file valgrind1397
 ==157006== 
 ==157006== Process terminating with default action of signal 4 (SIGILL)
 ==157006==  Illegal opcode at address 0x4091F7F
 ==157006==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==157006==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==157006==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==157006==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1397
test 1383 [FTP DL, file without C-D inside, using -o fname -i -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1383 ../src/curl -q --trace-ascii log/24/trace1383 --trace-time ftp://127.0.0.1:37215/path/file1383 -o log/24/download1383 -i -D log/24/heads1383 > log/24/stdout1383 2> log/24/stderr1383

 1383: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1383
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1383 ../src/curl -q --trace-ascii log/24/trace1383 --trace-time ftp://127.0.0.1:37215/path/file1383 -o log/24/download1383 -i -D log/24/heads1383 > log/24/stdout1383 2> log/24/stderr1383
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:30.984233 ====> Client connect
 19:28:30.984445 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:30.984745 < "USER anonymous"
 19:28:30.984785 > "331 We are happy you popped in![CR][LF]"
 19:28:30.984968 < "PASS ftp@example.com"
 19:28:30.984997 > "230 Welcome you silly person[CR][LF]"
 19:28:30.985153 < "PWD"
 19:28:30.985186 > "257 "/" is current directory[CR][LF]"
 19:28:30.985363 < "EPSV"
 19:28:30.985390 ====> Passive DATA channel requested by client
 19:28:30.985403 DATA sockfilt for passive data channel starting...
 19:28:30.993053 DATA sockfilt for passive data channel started (pid 156141)
 19:28:30.993170 DATA sockfilt for passive data channel listens on port 42535
 19:28:30.993212 > "229 Entering Passive Mode (|||42535|)[CR][LF]"
 19:28:30.993227 Client has been notified that upcoming DATA connection is awaited on port 42535
 19:28:30.993491 Client connects to port 42535
 19:28:30.993519 ====> Client established passive DATA connection on port 42535
 19:28:30.993600 < "TYPE I"
 19:28:30.993628 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:30.993774 < "SIZE verifiedserver"
 19:28:30.993808 > "213 17[CR][LF]"
 19:28:30.993943 < "RETR verifiedserver"
 19:28:30.993974 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:30.994052 =====> Closing passive DATA connection...
 19:28:30.994067 Server disconnects passive DATA connection
 19:28:30.994271 Server disconnected passive DATA connection
 19:28:30.994298 DATA sockfilt for passive data channel quits (pid 156141)
 19:28:30.994519 DATA sockfilt for passive data channel quit (pid 156141)
 19:28:30.994540 =====> Closed passive DATA connection
 19:28:30.994566 > "226 File transfer complete[CR][LF]"
 19:28:31.042399 < "QUIT"
 19:28:31.042453 > "221 bye bye baby[CR][LF]"
 19:28:31.043588 MAIN sockfilt said DISC
 19:28:31.043686 ====> Client disconnected
 19:28:31.043766 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.586905 ====> Client connect
 19:28:31.587239 Received DATA (on stdin)
 19:28:31.587255 > 146 bytes data, server => client
 19:28:31.587266 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.587276 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.587285 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.587369 < 16 bytes data, client => server
 19:28:31.587382 'USER anonymous\r\n'
 19:28:31.587566 Received DATA (on stdin)
 19:28:31.587577 > 33 bytes data, server => client
 19:28:31.587587 '331 We are happy you popped in!\r\n'
 19:28:31.587643 < 22 bytes data, client => server
 19:28:31.587655 'PASS ftp@example.com\r\n'
 19:28:31.587774 Received DATA (on stdin)
 19:28:31.587785 > 30 bytes data, server => client
 19:28:31.587795 '230 Welcome you silly person\r\n'
 19:28:31.587844 < 5 bytes data, client => server
 19:28:31.587854 'PWD\r\n'
 19:28:31.587962 Received DATA (on stdin)
 19:28:31.587972 > 30 bytes data, server => client
 19:28:31.587981 '257 "/" is current directory\r\n'
 19:28:31.588041 < 6 bytes data, client => server
 19:28:31.588052 'EPSV\r\n'
 19:28:31.596009 Received DATA (on stdin)
 19:28:31.596025 > 39 bytes data, server => client
 19:28:31.596035 '229 Entering Passive Mode (|||42535|)\r\n'
 19:28:31.596191 < 8 bytes data, client => server
 19:28:31.596203 'TYPE I\r\n'
 19:28:31.596404 Received DATA (on stdin)
 19:28:31.596415 > 33 bytes data, server => client
 19:28:31.596424 '200 I modify TYPE as you wanted\r\n'
 19:28:31.596472 < 21 bytes data, client => server
 19:28:31.596482 'SIZE verifiedserver\r\n'
 19:28:31.596582 Received DATA (on stdin)
 19:28:31.596591 > 8 bytes data, server => client
 19:28:31.596600 '213 17\r\n'
 19:28:31.596645 < 21 bytes data, client => server
 19:28:31.596654 'RETR verifiedserver\r\n'
 19:28:31.596844 Received DATA (on stdin)
 19:28:31.596854 > 29 bytes data, server => client
 19:28:31.596863 '150 Binary junk (17 bytes).\r\n'
 19:28:31.597341 Received DATA (on stdin)
 19:28:31.597351 > 28 bytes data, server => client
 19:28:31.597360 '226 File transfer complete\r\n'
 19:28:31.645011 < 6 bytes data, client => server
 19:28:31.645034 'QUIT\r\n'
 19:28:31.645236 Received DATA (on stdin)
 19:28:31.645249 > 18 bytes data, server => client
 19:28:31.645259 '221 bye bye baby\r\n'
 19:28:31.646300 ====> Client disconnect
 19:28:31.646390 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:30.595509 Running IPv4 version
 19:28:30.595570 Listening on port 42535
 19:28:30.595609 Wrote pid 156141 to log/24/server/ftp_sockdata.pid
 19:28:30.595775 Received PING (on stdin)
 19:28:30.595858 Received PORT (on stdin)
 19:28:30.596223 ====> Client connect
 19:28:30.596886 Received DATA (on stdin)
 19:28:30.596897 >CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1395 ./unit/units unit1395 - > log/9/stdout1395 2> log/9/stderr1395
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1396 ./libtest/libtests lib1396 - > log/14/stdout1396 2> log/14/stderr1396
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1391 ../src/curl -q --trace-ascii log/19/trace1391 --trace-time ftp://127.0.0.1:38555/path/file1391 -o log/19/download1391 -i -D log/19/heads1391 > log/19/stdout1391 2> log/19/stderr1391
 17 bytes data, server => client
 19:28:30.596908 'WE ROOLZ: 85113\r\n'
 19:28:30.596932 Received DISC (on stdin)
 19:28:30.596942 ====> Client forcibly disconnected
 19:28:30.597081 Received QUIT (on stdin)
 19:28:30.597091 quits
 19:28:30.597150 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1383
=== End of file server.cmd
=== Start of file valgrind1383
 ==156192== 
 ==156192== Process terminating with default action of signal 4 (SIGILL)
 ==156192==  Illegal opcode at address 0x492B75F
 ==156192==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156192==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156192==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156192==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156192==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156192==    by 0x49908EB: curl_version_info (version.c:600)
 ==156192==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156192==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156192==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156192==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1383
test 1395 [Curl_dedotdotify]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1395 ./unit/units unit1395 - > log/9/stdout1395 2> log/9/stderr1395

units returned 132, when expecting 0
 1395: exit FAILED
== Contents of files in the log/9/ directory after test 1395
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1395 ./unit/units unit1395 - > log/9/stdout1395 2> log/9/stderr1395
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1395
=== End of file server.cmd
=== Start of file valgrind1395
 ==156990== 
 ==156990== Process terminating with default action of signal 4 (SIGILL)
 ==156990==  Illegal opcode at address 0x4091F7F
 ==156990==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==156990==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==156990==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==156990==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1395
test 1396 [curl_easy_escape and curl_easy_unescape]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1396 ./libtest/libtests lib1396 - > log/14/stdout1396 2> log/14/stderr1396

libtests returned 132, when expecting 0
 1396: exit FAILED
== Contents of files in the log/14/ directory after test 1396
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1396 ./libtest/libtests lib1396 - > log/14/stdout1396 2> log/14/stderr1396
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1396
=== End of file server.cmd
=== Start of file valgrind1396
 ==156988== 
 ==156988== Process terminating with default action of signal 4 (SIGILL)
 ==156988==  Illegal opcode at address 0x51CC63F
 ==156988==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==156988==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==156988==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==156988==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1396
test 1391 [FTP DL, file with C-D inside, using -o fname -i -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1391 ../src/curl -q --trace-ascii log/19/trace1391 --trace-time ftp://127.0.0.1:38555/path/file1391 -o log/19/download1391 -i -D log/19/heads1391 > log/19/stdout1391 2> log/19/stderr1391

 1391: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1391
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1391 ../src/curl -q --trace-ascii log/19/trace1391 --trace-time ftp://127.0.0.1:38555/path/file1391 -o log/19/download1391 -i -D log/19/heads1391 > log/19/stdout1391 2> log/19/stderr1391
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.688792 ====> Client connect
 19:28:31.688971 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.692268 < "USER anonymous"
 19:28:31.692317 > "331 We are happy you popped in![CR][LF]"
 19:28:31.692477 < "PASS ftp@example.com"
 19:28:31.692503 > "230 Welcome you silly person[CR][LF]"
 19:28:31.692650 < "PWD"
 19:28:31.692680 > "257 "/" is current directory[CR][LF]"
 19:28:31.692827 < "EPSV"
 19:28:31.692850 ====> Passive DATA channel requested by client
 19:28:31.692863 DATA sockfilt for passive data channel starting...
 19:28:31.705583 DATA sockfilt for passive data channel started (pid 156733)
 19:28:31.705756 DATA sockfilt for passive data channel listens on port 42695
 19:28:31.705810 > "229 Entering Passive Mode (|||42695|)[CR][LF]"
 19:28:31.705829 Client has been notified that upcoming DATA connection is awaited on port 42695
 19:28:31.706245 Client connects to port 42695
 19:28:31.706275 ====> Client established passive DATA connection on port 42695
 19:28:31.706369 < "TYPE I"
 19:28:31.706404 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.706967 < "SIZE verifiedserver"
 19:28:31.707007 > "213 17[CR][LF]"
 19:28:31.707199 < "RETR verifiedserver"
 19:28:31.707236 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.707328 =====> Closing passive DATA connection...
 19:28:31.707348 Server disconnects passive DATA connection
 19:28:31.707516 Server disconnected passive DATA connection
 19:28:31.707540 DATA sockfilt for passive data channel quits (pid 156733)
 19:28:31.707809 DATA sockfilt for passive data channel quit (pid 156733)
 19:28:31.707835 =====> Closed passive DATA connection
 19:28:31.707866 > "226 File transfer complete[CR][LF]"
 19:28:31.749146 < "QUIT"
 19:28:31.749213 > "221 bye bye baby[CR][LF]"
 19:28:31.750818 MAIN sockfilt said DISC
 19:28:31.750867 ====> Client disconnected
 19:28:31.750966 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.291414 ====> Client connect
 19:28:31.291734 Received DATA (on stdin)
 19:28:31.291748 > 146 bytes data, server => client
 19:28:31.291759 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.291770 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.291778 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.294826 < 16 bytes data, client => server
 19:28:31.294848 'USER anonymous\r\n'
 19:28:31.295072 Received DATA (on stdin)
 19:28:31.295083 > 33 bytes data, server => client
 19:28:31.295093 '331 We are happy you popped in!\r\n'
 19:28:31.295147 < 22 bytes data, client => server
 19:28:31.295157 'PASS ftp@example.com\r\n'
 19:28:31.295255 Received DATA (on stdin)
 19:28:31.295265 > 30 bytes data, server => client
 19:28:31.295275 '230 Welcome you silly person\r\n'
 19:28:31.295327 < 5 bytes data, client => server
 19:28:31.295336 'PWD\r\n'
 19:28:31.295431 Received DATA (on stdin)
 19:28:31.295441 > 30 bytes data, server => client
 19:28:31.295450 '257 "/" is current directory\r\n'
 19:28:31.295506 < 6 bytes data, client => server
 19:28:31.295515 'EPSV\r\n'
 19:28:31.308593 Received DATA (on stdin)
 19:28:31.308611 > 39 bytes data, server => client
 19:28:31.308622 '229 Entering Passive Mode (|||42695|)\r\n'
 19:28:31.308913 < 8 bytes data, client => server
 19:28:31.308928 'TYPE I\CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1390 ../src/curl -q --trace-ascii log/4/trace1390 --trace-time ftp://127.0.0.1:39739/path/file1390 -o log/4/download1390 -J -D - > log/4/stdout1390 2> log/4/stderr1390
r\n'
 19:28:31.309158 Received DATA (on stdin)
 19:28:31.309170 > 33 bytes data, server => client
 19:28:31.309181 '200 I modify TYPE as you wanted\r\n'
 19:28:31.309625 < 21 bytes data, client => server
 19:28:31.309638 'SIZE verifiedserver\r\n'
 19:28:31.309761 Received DATA (on stdin)
 19:28:31.309772 > 8 bytes data, server => client
 19:28:31.309782 '213 17\r\n'
 19:28:31.309862 < 21 bytes data, client => server
 19:28:31.309873 'RETR verifiedserver\r\n'
 19:28:31.310196 Received DATA (on stdin)
 19:28:31.310208 > 29 bytes data, server => client
 19:28:31.310218 '150 Binary junk (17 bytes).\r\n'
 19:28:31.310620 Received DATA (on stdin)
 19:28:31.310632 > 28 bytes data, server => client
 19:28:31.310642 '226 File transfer complete\r\n'
 19:28:31.351686 < 6 bytes data, client => server
 19:28:31.351721 'QUIT\r\n'
 19:28:31.351978 Received DATA (on stdin)
 19:28:31.351994 > 18 bytes data, server => client
 19:28:31.352004 '221 bye bye baby\r\n'
 19:28:31.353203 ====> Client disconnect
 19:28:31.353730 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.302229 Running IPv4 version
 19:28:31.308186 Listening on port 42695
 19:28:31.308241 Wrote pid 156733 to log/19/server/ftp_sockdata.pid
 19:28:31.308264 Received PING (on stdin)
 19:28:31.308395 Received PORT (on stdin)
 19:28:31.308950 ====> Client connect
 19:28:31.310102 Received DATA (on stdin)
 19:28:31.310114 > 17 bytes data, server => client
 19:28:31.310127 'WE ROOLZ: 84587\r\n'
 19:28:31.310155 Received DISC (on stdin)
 19:28:31.310168 ====> Client forcibly disconnected
 19:28:31.310302 Received QUIT (on stdin)
 19:28:31.310313 quits
 19:28:31.310391 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1391
=== End of file server.cmd
=== Start of file valgrind1391
 ==156774== 
 ==156774== Process terminating with default action of signal 4 (SIGILL)
 ==156774==  Illegal opcode at address 0x492B75F
 ==156774==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156774==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156774==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156774==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156774==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156774==    by 0x49908EB: curl_version_info (version.c:600)
 ==156774==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156774==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156774==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156774==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1391
test 1390 [FTP DL, file with C-D inside, using -o fname -J -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1390 ../src/curl -q --trace-ascii log/4/trace1390 --trace-time ftp://127.0.0.1:39739/path/file1390 -o log/4/download1390 -J -D - > log/4/stdout1390 2> log/4/stderr1390

 1390: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1390
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1390 ../src/curl -q --trace-ascii log/4/trace1390 --trace-time ftp://127.0.0.1:39739/path/file1390 -o log/4/download1390 -J -D - > log/4/stdout1390 2> log/4/stderr1390
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.521116 ====> Client connect
 19:28:31.521331 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.522322 < "USER anonymous"
 19:28:31.522379 > "331 We are happy you popped in![CR][LF]"
 19:28:31.522625 < "PASS ftp@example.com"
 19:28:31.522671 > "230 Welcome you silly person[CR][LF]"
 19:28:31.522875 < "PWD"
 19:28:31.522917 > "257 "/" is current directory[CR][LF]"
 19:28:31.523124 < "EPSV"
 19:28:31.523158 ====> Passive DATA channel requested by client
 19:28:31.523175 DATA sockfilt for passive data channel starting...
 19:28:31.529952 DATA sockfilt for passive data channel started (pid 156630)
 19:28:31.530147 DATA sockfilt for passive data channel listens on port 42747
 19:28:31.530202 > "229 Entering Passive Mode (|||42747|)[CR][LF]"
 19:28:31.530225 Client has been notified that upcoming DATA connection is awaited on port 42747
 19:28:31.530595 Client connects to port 42747
 19:28:31.530628 ====> Client established passive DATA connection on port 42747
 19:28:31.530733 < "TYPE I"
 19:28:31.530776 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.530977 < "SIZE verifiedserver"
 19:28:31.531022 > "213 17[CR][LF]"
 19:28:31.531206 < "RETR verifiedserver"
 19:28:31.531310 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.531412 =====> Closing passive DATA connection...
 19:28:31.531433 Server disconnects passive DATA connection
 19:28:31.531646 Server disconnected passive DATA connection
 19:28:31.531678 DATA sockfilt for passive data channel quits (pid 156630)
 19:28:31.531917 DATA sockfilt for passive data channel quit (pid 156630)
 19:28:31.531944 =====> Closed passive DATA connection
 19:28:31.531973 > "226 File transfer complete[CR][LF]"
 19:28:31.582213 < "QUIT"
 19:28:31.582270 > "221 bye bye baby[CR][LF]"
 19:28:31.592097 MAIN sockfilt said DISC
 19:28:31.592156 ====> Client disconnected
 19:28:31.601340 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.123760 ====> Client connect
 19:28:31.124100 Received DATA (on stdin)
 19:28:31.124113 > 146 bytes data, server => client
 19:28:31.124124 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.124133 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.124142 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.124841 < 16 bytes data, client => server
 19:28:31.124871 'USER anonymous\r\n'
 19:28:31.125152 Received DATA (on stdin)
 19:28:31.125168 > 33 bytes data, server => client
 19:28:31.125179 '331 We are happy you popped in!\r\n'
 19:28:31.125251 < 22 bytes data, client => server
 19:28:31.125266 'PASS ftp@example.com\r\n'
 19:28:31.125437 Received DATA (on stdin)
 19:28:31.125450 > 30 bytes data, server => client
 19:28:31.125460 '230 Welcome you silly person\r\n'
 19:28:31.125524 < 5 bytes data, client => server
 19:28:31.125539 'PWD\r\n'
 19:28:31.125682 Received DATA (on stdin)
 19:28:31.125696 > 30 bytes data, server => client
 19:28:31.125706 '257 "/" is current directory\r\n'
 19:28:31.125778 < 6 bytes data, client => server
 19:28:31.125793 'EPSV\r\n'
 19:28:31.133014 Received DATA (on stdin)
 19:28:31.133033 > 39 bytes data, server => client
 19:28:31.133044 '229 Entering Passive Mode (|||42747|)\r\n'
 19:28:31.133262 < 8 bytes data, client => server
 19:28:31.133281 'TYPE I\r\n'
 19:28:31.133542 Received DATA (on stdin)
 19:28:31.133555 > 33 bytes data, server => client
 19:28:31.133566 '200 I modify TYPE as you wanted\r\n'
 19:28:31.133630 < 21 bytes data, client => server
 19:28:31.133645 'SIZE verifiedserver\r\n'
 19:28:31.133786 Received DATA (on stdin)
 19:28:31.133799 > 8 bytes data, server => client
 19:28:31.133808 '213 17\r\n'
 19:28:31.133869 < 21 bytes data, client => server
 19:28:31.133883 'RETR verifiedserver\r\n'
 19:28:31.133986 Received DATA (on stdin)
 19:28:31.134000 > 29 bytes data, server => client
 19:28:31.134017 '150 Binary junk (17 bytes).\r\n'
 19:28:31.134743 Received DATA (on stdin)
 19:28:31.134755 > 28 bytes data, server => client
 19:28:31.134766 '226 File transfer complete\r\n'
 19:28:31.184764 < 6 bytes data, client => server
 19:28:31.184801 'QUIT\r\n'
 19:28:31.185031 Received DATA (on stdin)
 19:28:31.185044 > 18 bytes data, server => client
 19:28:31.185055 '221 bye bye baby\r\n'
 19:28:31.194756 ====> Client disconnect
 19:28:31.194973 Received ACKD (on stdin)
=== End of fiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1386 ../src/curl -q --trace-ascii log/7/trace1386 --trace-time ftp://127.0.0.1:44283/path/file1386 -o log/7/download1386 > log/7/stdout1386 2> log/7/stderr1386
le ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.132475 Running IPv4 version
 19:28:31.132574 Listening on port 42747
 19:28:31.132622 Wrote pid 156630 to log/4/server/ftp_sockdata.pid
 19:28:31.132644 Received PING (on stdin)
 19:28:31.132792 Received PORT (on stdin)
 19:28:31.133304 ====> Client connect
 19:28:31.134230 Received DATA (on stdin)
 19:28:31.134246 > 17 bytes data, server => client
 19:28:31.134256 'WE ROOLZ: 85249\r\n'
 19:28:31.134288 Received DISC (on stdin)
 19:28:31.134300 ====> Client forcibly disconnected
 19:28:31.134445 Received QUIT (on stdin)
 19:28:31.134457 quits
 19:28:31.134526 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1390
=== End of file server.cmd
=== Start of file valgrind1390
 ==156710== 
 ==156710== Process terminating with default action of signal 4 (SIGILL)
 ==156710==  Illegal opcode at address 0x492B75F
 ==156710==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156710==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156710==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156710==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156710==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156710==    by 0x49908EB: curl_version_info (version.c:600)
 ==156710==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156710==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156710==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156710==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1390
test 1386 [FTP DL, file with Content-Disposition inside, using -o fname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1386 ../src/curl -q --trace-ascii log/7/trace1386 --trace-time ftp://127.0.0.1:44283/path/file1386 -o log/7/download1386 > log/7/stdout1386 2> log/7/stderr1386

 1386: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1386
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1386 ../src/curl -q --trace-ascii log/7/trace1386 --trace-time ftp://127.0.0.1:44283/path/file1386 -o log/7/download1386 > log/7/stdout1386 2> log/7/stderr1386
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.202108 ====> Client connect
 19:28:31.202416 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.202634 < "USER anonymous"
 19:28:31.202663 > "331 We are happy you popped in![CR][LF]"
 19:28:31.202786 < "PASS ftp@example.com"
 19:28:31.202843 > "230 Welcome you silly person[CR][LF]"
 19:28:31.202923 < "PWD"
 19:28:31.203010 > "257 "/" is current directory[CR][LF]"
 19:28:31.203079 < "EPSV"
 19:28:31.203098 ====> Passive DATA channel requested by client
 19:28:31.203108 DATA sockfilt for passive data channel starting...
 19:28:31.205086 DATA sockfilt for passive data channel started (pid 156345)
 19:28:31.205193 DATA sockfilt for passive data channel listens on port 32897
 19:28:31.205231 > "229 Entering Passive Mode (|||32897|)[CR][LF]"
 19:28:31.205246 Client has been notified that upcoming DATA connection is awaited on port 32897
 19:28:31.205503 Client connects to port 32897
 19:28:31.205539 ====> Client established passive DATA connection on port 32897
 19:28:31.205616 < "TYPE I"
 19:28:31.205647 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.205810 < "SIZE verifiedserver"
 19:28:31.205848 > "213 17[CR][LF]"
 19:28:31.206007 < "RETR verifiedserver"
 19:28:31.206040 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.206120 =====> Closing passive DATA connection...
 19:28:31.206137 Server disconnects passive DATA connection
 19:28:31.206345 Server disconnected passive DATA connection
 19:28:31.206372 DATA sockfilt for passive data channel quits (pid 156345)
 19:28:31.206627 DATA sockfilt for passive data channel quit (pid 156345)
 19:28:31.206650 =====> Closed passive DATA connection
 19:28:31.206673 > "226 File transfer complete[CR][LF]"
 19:28:31.252354 < "QUIT"
 19:28:31.252420 > "221 bye bye baby[CR][LF]"
 19:28:31.253499 MAIN sockfilt said DISC
 19:28:31.253534 ====> Client disconnected
 19:28:31.253628 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.804728 ====> Client connect
 19:28:31.805065 Received DATA (on stdin)
 19:28:31.805084 > 146 bytes data, server => client
 19:28:31.805104 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.805114 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.805122 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.805258 < 16 bytes data, client => server
 19:28:31.805271 'USER anonymous\r\n'
 19:28:31.805430 Received DATA (on stdin)
 19:28:31.805438 > 33 bytes data, server => client
 19:28:31.805446 '331 We are happy you popped in!\r\n'
 19:28:31.805485 < 22 bytes data, client => server
 19:28:31.805492 'PASS ftp@example.com\r\n'
 19:28:31.805553 Received DATA (on stdin)
 19:28:31.805561 > 30 bytes data, server => client
 19:28:31.805573 '230 Welcome you silly person\r\n'
 19:28:31.805628 < 5 bytes data, client => server
 19:28:31.805636 'PWD\r\n'
 19:28:31.805696 Received DATA (on stdin)
 19:28:31.805703 > 30 bytes data, server => client
 19:28:31.805721 '257 "/" is current directory\r\n'
 19:28:31.805786 < 6 bytes data, client => server
 19:28:31.805793 'EPSV\r\n'
 19:28:31.808020 Received DATA (on stdin)
 19:28:31.808032 > 39 bytes data, server => client
 19:28:31.808042 '229 Entering Passive Mode (|||32897|)\r\n'
 19:28:31.808189 < 8 bytes data, client => server
 19:28:31.808204 'TYPE I\r\n'
 19:28:31.808416 Received DATA (on stdin)
 19:28:31.808428 > 33 bytes data, server => client
 19:28:31.808438 '200 I modify TYPE as you wanted\r\n'
 19:28:31.808492 < 21 bytes data, client => server
 19:28:31.808504 'SIZE verifiedserver\r\n'
 19:28:31.808618 Received DATA (on stdin)
 19:28:31.808629 > 8 bytes data, server => client
 19:28:31.808639 '213 17\r\n'
 19:28:31.808692 < 21 bytes data, client => server
 19:28:31.808704 'RETR verifiedserver\r\n'
 19:28:31.808908 Received DATA (on stdin)
 19:28:31.808919 > 29 bytes data, server => client
 19:28:31.808928 '150 Binary junk (17 bytes).\r\n'
 19:28:31.809440 Received DATA (on stdin)
 19:28:31.809450 > 28 bytes data, server => client
 19:28:31.809459 '226 File transfer complete\r\n'
 19:28:31.854914 < 6 bytes data, client => server
 19:28:31.854950 'QUIT\r\n'
 19:28:31.855201 Received DATA (on stdin)
 19:28:31.855215 > 18 bytes data, server => client
 19:28:31.855226 '221 bye bye baby\r\n'
 19:28:31.856212 ====> Client disconnect
 19:28:31.856405 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.807060 Running IPv4 version
 19:28:31.807118 Listening on port 32897
 19:28:31.807155 Wrote pid 156345 to log/7/server/ftp_sockdata.pid
 19:28:31.807785 Received PING (on stdin)
 19:28:31.807879 Received PORT (on stdin)
 19:28:31.808223 ====> Client connect
 19:28:31.808954 Received DATA (on stdin)
 19:28:31.808965 > 17 bytes data, server => client
 19:28:31.808975 'WE ROOLZ: 84721\r\n'
 19:28:31.808997 Received DISC (on stdin)
 19:28:31.809008 ====> Client forcibly disconnected
 19:28:31.809146 Received QUIT (on stdin)
 19:28:31.809156 quits
 19:28:31.809213 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1386
=== End of file server.cmd
=== Start of file valgrind1386
 ==156459== 
 ==156459== Process terminating with default action of signal 4 (SIGILL)
 ==156459==  Illegal opcode at address 0x492B75F
 ==156459==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156459==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156459==    by CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1399 ./unit/units unit1399 - > log/15/stdout1399 2> log/15/stderr1399
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1382 ../src/curl -q --trace-ascii log/8/trace1382 --trace-time ftp://127.0.0.1:41879/path/file1382 -o log/8/download1382 -J -D - > log/8/stdout1382 2> log/8/stderr1382
0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156459==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156459==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156459==    by 0x49908EB: curl_version_info (version.c:600)
 ==156459==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156459==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156459==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156459==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1386
test 1399 [Curl_pgrsTime unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1399 ./unit/units unit1399 - > log/15/stdout1399 2> log/15/stderr1399

units returned 132, when expecting 0
 1399: exit FAILED
== Contents of files in the log/15/ directory after test 1399
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1399 ./unit/units unit1399 - > log/15/stdout1399 2> log/15/stderr1399
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1399
=== End of file server.cmd
=== Start of file valgrind1399
 ==157115== 
 ==157115== Process terminating with default action of signal 4 (SIGILL)
 ==157115==  Illegal opcode at address 0x4091F7F
 ==157115==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==157115==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==157115==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==157115==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1399
test 1382 [FTP DL, file without C-D inside, using -o fname -J -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1382 ../src/curl -q --trace-ascii log/8/trace1382 --trace-time ftp://127.0.0.1:41879/path/file1382 -o log/8/download1382 -J -D - > log/8/stdout1382 2> log/8/stderr1382

 1382: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1382
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1382 ../src/curl -q --trace-ascii log/8/trace1382 --trace-time ftp://127.0.0.1:41879/path/file1382 -o log/8/download1382 -J -D - > log/8/stdout1382 2> log/8/stderr1382
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:30.988695 ====> Client connect
 19:28:30.989050 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:30.989397 < "USER anonymous"
 19:28:30.989442 > "331 We are happy you popped in![CR][LF]"
 19:28:30.989641 < "PASS ftp@example.com"
 19:28:30.989675 > "230 Welcome you silly person[CR][LF]"
 19:28:30.989850 < "PWD"
 19:28:30.989884 > "257 "/" is current directory[CR][LF]"
 19:28:30.990074 < "EPSV"
 19:28:30.990102 ====> Passive DATA channel requested by client
 19:28:30.990116 DATA sockfilt for passive data channel starting...
 19:28:30.995534 DATA sockfilt for passive data channel started (pid 156150)
 19:28:30.995667 DATA sockfilt for passive data channel listens on port 42173
 19:28:30.995721 > "229 Entering Passive Mode (|||42173|)[CR][LF]"
 19:28:30.995742 Client has been notified that upcoming DATA connection is awaited on port 42173
 19:28:30.996009 Client connects to port 42173
 19:28:30.996043 ====> Client established passive DATA connection on port 42173
 19:28:30.996136 < "TYPE I"
 19:28:30.996170 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:30.996358 < "SIZE verifiedserver"
 19:28:30.996398 > "213 17[CR][LF]"
 19:28:30.996570 < "RETR verifiedserver"
 19:28:30.996614 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:30.996703 =====> Closing passive DATA connection...
 19:28:30.996723 Server disconnects passive DATA connection
 19:28:30.996983 Server disconnected passive DATA connection
 19:28:30.997013 DATA sockfilt for passive data channel quits (pid 156150)
 19:28:30.997269 DATA sockfilt for passive data channel quit (pid 156150)
 19:28:30.997295 =====> Closed passive DATA connection
 19:28:30.997326 > "226 File transfer complete[CR][LF]"
 19:28:31.042164 < "QUIT"
 19:28:31.042215 > "221 bye bye baby[CR][LF]"
 19:28:31.043562 MAIN sockfilt said DISC
 19:28:31.043598 ====> Client disconnected
 19:28:31.043681 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:30.583732 ====> Client connect
 19:28:30.591859 Received DATA (on stdin)
 19:28:30.591880 > 146 bytes data, server => client
 19:28:30.591892 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:30.591902 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:30.591911 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:30.592018 < 16 bytes data, client => server
 19:28:30.592033 'USER anonymous\r\n'
 19:28:30.592225 Received DATA (on stdin)
 19:28:30.592238 > 33 bytes data, server => client
 19:28:30.592249 '331 We are happy you popped in!\r\n'
 19:28:30.592313 < 22 bytes data, client => server
 19:28:30.592325 'PASS ftp@example.com\r\n'
 19:28:30.592455 Received DATA (on stdin)
 19:28:30.592467 > 30 bytes data, server => client
 19:28:30.592477 '230 Welcome you silly person\r\n'
 19:28:30.592534 < 5 bytes data, client => server
 19:28:30.592544 'PWD\r\n'
 19:28:30.592662 Received DATA (on stdin)
 19:28:30.592673 > 30 bytes data, server => client
 19:28:30.592686 '257 "/" is current directory\r\n'
 19:28:30.592760 < 6 bytes data, client => server
 19:28:30.592772 'EPSV\r\n'
 19:28:30.598530 Received DATA (on stdin)
 19:28:30.598545 > 39 bytes data, server => client
 19:28:30.598556 '229 Entering Passive Mode (|||42173|)\r\n'
 19:28:30.598697 < 8 bytes data, client => server
 19:28:30.598714 'TYPE I\r\n'
 19:28:30.598951 Received DATA (on stdin)
 19:28:30.598963 > 33 bytes data, server => client
 19:28:30.598974 '200 I modify TYPE as you wanted\r\n'
 19:28:30.599038 < 21 bytes data, client => server
 19:28:30.599051 'SIZE verifiedserver\r\n'
 19:28:30.599178 Received DATA (on stdin)
 19:28:30.599190 > 8 bytes data, server => client
 19:28:30.599199 '213 17\r\n'
 19:28:30.599256 < 21 bytes data, client => server
 19:28:30.599268 'RETR verifiedserver\r\n'
 19:28:30.599514 Received DATA (on stdin)
 19:28:30.599525 > 29 bytes data, server => client
 19:28:30.599536 '150 Binary junk (17 bytes).\r\n'
 19:28:30.600106 Received DATA (on stdin)
 19:28:30.600118 > 28 bytes data, server => client
 19:28:30.600128 '226 File transfer complete\r\n'
 19:28:30.644776 < 6 bytes data, client => server
 19:28:30.644800 'QUIT\r\n'
 19:28:30.644992 Received DATA (on stdin)
 19:28:30.645003 > 18 bytes data, server => client
 19:28:30.645013 '221 bye bye baby\r\n'
 19:28:30.646282 ====> Client disconnect
 19:28:30.646455 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:30.594631 Running IPv4 version
 19:28:30.594699 Listening on port 42173
 19:28:30.594737 Wrote pid 156150 to log/8/server/ftp_sockdata.pid
 19:28:30.598238 Received PING (on stdin)
 19:28:30.598344 Received PORT (on stdin)
 19:28:30.598735 ====> Client connect
 19:28:30.599593 Received DATA (on stdin)
 19:28:30.599608 > 17 bytes data, server => client
 19:28:30.599618 'WE ROOLZ: 84824\r\n'
 19:28:30.599647 Received DISC (on stdin)
 19:28:30.599660 ====> Client forcibly disconnected
 19:28:30.599801 Received QUIT (on stdin)
 19:28:30.599813 quits
 19:28:30.599869 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1382
=== End of file server.cmd
=== Start of file valgrind1382
 ==156195== 
 ==156195== Process terminating with default action of signal 4 (SIGILL)
 ==156195==  Illegal opcodCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1392 ../src/curl -q --trace-ascii log/3/trace1392 --trace-time ftp://127.0.0.1:42249/path/file1392 -o log/3/download1392 -i -D - > log/3/stdout1392 2> log/3/stderr1392
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1387 ../src/curl -q --trace-ascii log/20/trace1387 --trace-time ftp://127.0.0.1:41549/path/file1387 -o log/20/download1387 -D log/20/heads1387 > log/20/stdout1387 2> log/20/stderr1387
e at address 0x492B75F
 ==156195==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156195==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156195==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156195==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156195==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156195==    by 0x49908EB: curl_version_info (version.c:600)
 ==156195==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156195==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156195==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156195==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1382
test 1392 [FTP DL, file with C-D inside, using -o fname -i -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1392 ../src/curl -q --trace-ascii log/3/trace1392 --trace-time ftp://127.0.0.1:42249/path/file1392 -o log/3/download1392 -i -D - > log/3/stdout1392 2> log/3/stderr1392

 1392: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1392
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1392 ../src/curl -q --trace-ascii log/3/trace1392 --trace-time ftp://127.0.0.1:42249/path/file1392 -o log/3/download1392 -i -D - > log/3/stdout1392 2> log/3/stderr1392
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.698693 ====> Client connect
 19:28:31.698981 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.699348 < "USER anonymous"
 19:28:31.699388 > "331 We are happy you popped in![CR][LF]"
 19:28:31.699961 < "PASS ftp@example.com"
 19:28:31.700006 > "230 Welcome you silly person[CR][LF]"
 19:28:31.700193 < "PWD"
 19:28:31.700228 > "257 "/" is current directory[CR][LF]"
 19:28:31.700399 < "EPSV"
 19:28:31.700426 ====> Passive DATA channel requested by client
 19:28:31.700439 DATA sockfilt for passive data channel starting...
 19:28:31.705965 DATA sockfilt for passive data channel started (pid 156738)
 19:28:31.706556 DATA sockfilt for passive data channel listens on port 46265
 19:28:31.706612 > "229 Entering Passive Mode (|||46265|)[CR][LF]"
 19:28:31.706633 Client has been notified that upcoming DATA connection is awaited on port 46265
 19:28:31.708010 Client connects to port 46265
 19:28:31.708047 ====> Client established passive DATA connection on port 46265
 19:28:31.708148 < "TYPE I"
 19:28:31.708185 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.708360 < "SIZE verifiedserver"
 19:28:31.708400 > "213 17[CR][LF]"
 19:28:31.708566 < "RETR verifiedserver"
 19:28:31.708605 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.708720 =====> Closing passive DATA connection...
 19:28:31.708741 Server disconnects passive DATA connection
 19:28:31.708962 Server disconnected passive DATA connection
 19:28:31.708993 DATA sockfilt for passive data channel quits (pid 156738)
 19:28:31.709226 DATA sockfilt for passive data channel quit (pid 156738)
 19:28:31.709252 =====> Closed passive DATA connection
 19:28:31.709284 > "226 File transfer complete[CR][LF]"
 19:28:31.759032 < "QUIT"
 19:28:31.759086 > "221 bye bye baby[CR][LF]"
 19:28:31.760436 MAIN sockfilt said DISC
 19:28:31.760525 ====> Client disconnected
 19:28:31.760608 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:32.294762 ====> Client connect
 19:28:32.301756 Received DATA (on stdin)
 19:28:32.301777 > 146 bytes data, server => client
 19:28:32.301787 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:32.301796 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:32.301803 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:32.301929 < 16 bytes data, client => server
 19:28:32.301943 'USER anonymous\r\n'
 19:28:32.302145 Received DATA (on stdin)
 19:28:32.302158 > 33 bytes data, server => client
 19:28:32.302167 '331 We are happy you popped in!\r\n'
 19:28:32.302230 < 22 bytes data, client => server
 19:28:32.302242 'PASS ftp@example.com\r\n'
 19:28:32.302764 Received DATA (on stdin)
 19:28:32.302776 > 30 bytes data, server => client
 19:28:32.302787 '230 Welcome you silly person\r\n'
 19:28:32.302853 < 5 bytes data, client => server
 19:28:32.302863 'PWD\r\n'
 19:28:32.302979 Received DATA (on stdin)
 19:28:32.302989 > 30 bytes data, server => client
 19:28:32.302998 '257 "/" is current directory\r\n'
 19:28:32.303062 < 6 bytes data, client => server
 19:28:32.303074 'EPSV\r\n'
 19:28:32.309398 Received DATA (on stdin)
 19:28:32.309415 > 39 bytes data, server => client
 19:28:32.309426 '229 Entering Passive Mode (|||46265|)\r\n'
 19:28:32.309562 < 8 bytes data, client => server
 19:28:32.309578 'TYPE I\r\n'
 19:28:32.310940 Received DATA (on stdin)
 19:28:32.310952 > 33 bytes data, server => client
 19:28:32.310962 '200 I modify TYPE as you wanted\r\n'
 19:28:32.311022 < 21 bytes data, client => server
 19:28:32.311034 'SIZE verifiedserver\r\n'
 19:28:32.311153 Received DATA (on stdin)
 19:28:32.311164 > 8 bytes data, server => client
 19:28:32.311174 '213 17\r\n'
 19:28:32.311228 < 21 bytes data, client => server
 19:28:32.311240 'RETR verifiedserver\r\n'
 19:28:32.311498 Received DATA (on stdin)
 19:28:32.311510 > 29 bytes data, server => client
 19:28:32.311520 '150 Binary junk (17 bytes).\r\n'
 19:28:32.312039 Received DATA (on stdin)
 19:28:32.312051 > 28 bytes data, server => client
 19:28:32.312061 '226 File transfer complete\r\n'
 19:28:32.361557 < 6 bytes data, client => server
 19:28:32.361594 'QUIT\r\n'
 19:28:32.361841 Received DATA (on stdin)
 19:28:32.361854 > 18 bytes data, server => client
 19:28:32.361864 '221 bye bye baby\r\n'
 19:28:32.363125 ====> Client disconnect
 19:28:32.363205 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.305884 Running IPv4 version
 19:28:31.305966 Listening on port 46265
 19:28:31.306006 Wrote pid 156738 to log/3/server/ftp_sockdata.pid
 19:28:31.308081 Received PING (on stdin)
 19:28:31.309208 Received PORT (on stdin)
 19:28:31.309812 ====> Client connect
 19:28:31.311548 Received DATA (on stdin)
 19:28:31.311560 > 17 bytes data, server => client
 19:28:31.311570 'WE ROOLZ: 84710\r\n'
 19:28:31.311594 Received DISC (on stdin)
 19:28:31.311605 ====> Client forcibly disconnected
 19:28:31.311754 Received QUIT (on stdin)
 19:28:31.311765 quits
 19:28:31.311825 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1392
=== End of file server.cmd
=== Start of file valgrind1392
 ==156767== 
 ==156767== Process terminating with default action of signal 4 (SIGILL)
 ==156767==  Illegal opcode at address 0x492B75F
 ==156767==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156767==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156767==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156767==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156767==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156767==    by 0x49908EB: curl_version_info (version.c:600)
 ==156767==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156767==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156767==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156767==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1392
test 1387 [FTP DL, file with C-D inside, using -o fname -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1387 ../src/curl -q --trace-ascii log/20/trace1387 --trace-time ftp://127.0.0.1:41549/path/file1387 -o log/20/download1387 -D lCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1389 ../src/curl -q --trace-ascii log/12/trace1389 --trace-time ftp://127.0.0.1:40417/path/file1389 -o log/12/download1389 -J -D log/12/heads1389 > log/12/stdout1389 2> log/12/stderr1389
og/20/heads1387 > log/20/stdout1387 2> log/20/stderr1387

 1387: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1387
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1387 ../src/curl -q --trace-ascii log/20/trace1387 --trace-time ftp://127.0.0.1:41549/path/file1387 -o log/20/download1387 -D log/20/heads1387 > log/20/stdout1387 2> log/20/stderr1387
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.217386 ====> Client connect
 19:28:31.217677 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.218082 < "USER anonymous"
 19:28:31.218132 > "331 We are happy you popped in![CR][LF]"
 19:28:31.218334 < "PASS ftp@example.com"
 19:28:31.218364 > "230 Welcome you silly person[CR][LF]"
 19:28:31.218520 < "PWD"
 19:28:31.218555 > "257 "/" is current directory[CR][LF]"
 19:28:31.235463 < "EPSV"
 19:28:31.235511 ====> Passive DATA channel requested by client
 19:28:31.235527 DATA sockfilt for passive data channel starting...
 19:28:31.239385 DATA sockfilt for passive data channel started (pid 156387)
 19:28:31.239529 DATA sockfilt for passive data channel listens on port 35683
 19:28:31.239577 > "229 Entering Passive Mode (|||35683|)[CR][LF]"
 19:28:31.239595 Client has been notified that upcoming DATA connection is awaited on port 35683
 19:28:31.239924 Client connects to port 35683
 19:28:31.239957 ====> Client established passive DATA connection on port 35683
 19:28:31.240054 < "TYPE I"
 19:28:31.240090 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.240268 < "SIZE verifiedserver"
 19:28:31.240305 > "213 17[CR][LF]"
 19:28:31.240465 < "RETR verifiedserver"
 19:28:31.240500 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.240590 =====> Closing passive DATA connection...
 19:28:31.240607 Server disconnects passive DATA connection
 19:28:31.240854 Server disconnected passive DATA connection
 19:28:31.240881 DATA sockfilt for passive data channel quits (pid 156387)
 19:28:31.241110 DATA sockfilt for passive data channel quit (pid 156387)
 19:28:31.241136 =====> Closed passive DATA connection
 19:28:31.241163 > "226 File transfer complete[CR][LF]"
 19:28:31.289375 < "QUIT"
 19:28:31.289431 > "221 bye bye baby[CR][LF]"
 19:28:31.296694 MAIN sockfilt said DISC
 19:28:31.296768 ====> Client disconnected
 19:28:31.296857 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:30.818094 ====> Client connect
 19:28:30.820467 Received DATA (on stdin)
 19:28:30.820485 > 146 bytes data, server => client
 19:28:30.820497 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:30.820507 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:30.820517 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:30.820660 < 16 bytes data, client => server
 19:28:30.820672 'USER anonymous\r\n'
 19:28:30.820909 Received DATA (on stdin)
 19:28:30.820921 > 33 bytes data, server => client
 19:28:30.820932 '331 We are happy you popped in!\r\n'
 19:28:30.821000 < 22 bytes data, client => server
 19:28:30.821011 'PASS ftp@example.com\r\n'
 19:28:30.821132 Received DATA (on stdin)
 19:28:30.821143 > 30 bytes data, server => client
 19:28:30.821153 '230 Welcome you silly person\r\n'
 19:28:30.821206 < 5 bytes data, client => server
 19:28:30.821217 'PWD\r\n'
 19:28:30.821322 Received DATA (on stdin)
 19:28:30.821332 > 30 bytes data, server => client
 19:28:30.821342 '257 "/" is current directory\r\n'
 19:28:30.824765 < 6 bytes data, client => server
 19:28:30.824787 'EPSV\r\n'
 19:28:30.842376 Received DATA (on stdin)
 19:28:30.842393 > 39 bytes data, server => client
 19:28:30.842404 '229 Entering Passive Mode (|||35683|)\r\n'
 19:28:30.842607 < 8 bytes data, client => server
 19:28:30.842623 'TYPE I\r\n'
 19:28:30.842860 Received DATA (on stdin)
 19:28:30.842872 > 33 bytes data, server => client
 19:28:30.842883 '200 I modify TYPE as you wanted\r\n'
 19:28:30.842945 < 21 bytes data, client => server
 19:28:30.842956 'SIZE verifiedserver\r\n'
 19:28:30.843073 Received DATA (on stdin)
 19:28:30.843084 > 8 bytes data, server => client
 19:28:30.843094 '213 17\r\n'
 19:28:30.843148 < 21 bytes data, client => server
 19:28:30.843159 'RETR verifiedserver\r\n'
 19:28:30.843377 Received DATA (on stdin)
 19:28:30.843388 > 29 bytes data, server => client
 19:28:30.843398 '150 Binary junk (17 bytes).\r\n'
 19:28:30.843933 Received DATA (on stdin)
 19:28:30.843945 > 28 bytes data, server => client
 19:28:30.843955 '226 File transfer complete\r\n'
 19:28:30.888103 < 6 bytes data, client => server
 19:28:30.888135 'QUIT\r\n'
 19:28:30.892209 Received DATA (on stdin)
 19:28:30.892227 > 18 bytes data, server => client
 19:28:30.892238 '221 bye bye baby\r\n'
 19:28:30.893266 ====> Client disconnect
 19:28:30.899632 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.841728 Running IPv4 version
 19:28:31.841804 Listening on port 35683
 19:28:31.841843 Wrote pid 156387 to log/20/server/ftp_sockdata.pid
 19:28:31.842087 Received PING (on stdin)
 19:28:31.842198 Received PORT (on stdin)
 19:28:31.842644 ====> Client connect
 19:28:31.843459 Received DATA (on stdin)
 19:28:31.843472 > 17 bytes data, server => client
 19:28:31.843485 'WE ROOLZ: 84833\r\n'
 19:28:31.843512 Received DISC (on stdin)
 19:28:31.843523 ====> Client forcibly disconnected
 19:28:31.843659 Received QUIT (on stdin)
 19:28:31.843670 quits
 19:28:31.843738 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1387
=== End of file server.cmd
=== Start of file valgrind1387
 ==156485== 
 ==156485== Process terminating with default action of signal 4 (SIGILL)
 ==156485==  Illegal opcode at address 0x492B75F
 ==156485==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156485==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156485==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156485==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156485==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156485==    by 0x49908EB: curl_version_info (version.c:600)
 ==156485==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156485==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1387
test 1389 [FTP DL, file with C-D inside, using -o fname -J -D file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1389 ../src/curl -q --trace-ascii log/12/trace1389 --trace-time ftp://127.0.0.1:40417/path/file1389 -o log/12/download1389 -J -D log/12/heads1389 > log/12/stdout1389 2> log/12/stderr1389

 1389: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1389
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1389 ../src/curl -q --trace-ascii log/12/trace1389 --trace-time ftp://127.0.0.1:40417/path/file1389 -o log/12/download1389 -J -D log/12/heads1389 > log/12/stdout1389 2> log/12/stderr1389
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.304182 ====> Client connect
 19:28:31.304591 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.304726 < "USER anonymous"
 19:28:31.304806 > "331 We arCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1393 ../src/curl -q --trace-ascii log/17/trace1393 --trace-time ftp://127.0.0.1:46137/path/file1393 -o log/17/download1393 -i > log/17/stdout1393 2> log/17/stderr1393
e happy you popped in![CR][LF]"
 19:28:31.304986 < "PASS ftp@example.com"
 19:28:31.305019 > "230 Welcome you silly person[CR][LF]"
 19:28:31.308432 < "PWD"
 19:28:31.308478 > "257 "/" is current directory[CR][LF]"
 19:28:31.308807 < "EPSV"
 19:28:31.308840 ====> Passive DATA channel requested by client
 19:28:31.308854 DATA sockfilt for passive data channel starting...
 19:28:31.320070 DATA sockfilt for passive data channel started (pid 156467)
 19:28:31.320219 DATA sockfilt for passive data channel listens on port 39799
 19:28:31.320271 > "229 Entering Passive Mode (|||39799|)[CR][LF]"
 19:28:31.320290 Client has been notified that upcoming DATA connection is awaited on port 39799
 19:28:31.320623 Client connects to port 39799
 19:28:31.320658 ====> Client established passive DATA connection on port 39799
 19:28:31.320759 < "TYPE I"
 19:28:31.320793 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.322108 < "SIZE verifiedserver"
 19:28:31.322158 > "213 17[CR][LF]"
 19:28:31.322336 < "RETR verifiedserver"
 19:28:31.322373 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.322466 =====> Closing passive DATA connection...
 19:28:31.322483 Server disconnects passive DATA connection
 19:28:31.322641 Server disconnected passive DATA connection
 19:28:31.322662 DATA sockfilt for passive data channel quits (pid 156467)
 19:28:31.323025 DATA sockfilt for passive data channel quit (pid 156467)
 19:28:31.323055 =====> Closed passive DATA connection
 19:28:31.323084 > "226 File transfer complete[CR][LF]"
 19:28:31.368949 < "QUIT"
 19:28:31.369005 > "221 bye bye baby[CR][LF]"
 19:28:31.370301 MAIN sockfilt said DISC
 19:28:31.370346 ====> Client disconnected
 19:28:31.370424 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.906842 ====> Client connect
 19:28:31.907158 Received DATA (on stdin)
 19:28:31.907179 > 146 bytes data, server => client
 19:28:31.907201 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.907212 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.907221 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.907292 < 16 bytes data, client => server
 19:28:31.907305 'USER anonymous\r\n'
 19:28:31.907514 Received DATA (on stdin)
 19:28:31.907528 > 33 bytes data, server => client
 19:28:31.907583 '331 We are happy you popped in!\r\n'
 19:28:31.907643 < 22 bytes data, client => server
 19:28:31.907657 'PASS ftp@example.com\r\n'
 19:28:31.910963 Received DATA (on stdin)
 19:28:31.910987 > 30 bytes data, server => client
 19:28:31.910997 '230 Welcome you silly person\r\n'
 19:28:31.911081 < 5 bytes data, client => server
 19:28:31.911091 'PWD\r\n'
 19:28:31.911244 Received DATA (on stdin)
 19:28:31.911255 > 30 bytes data, server => client
 19:28:31.911264 '257 "/" is current directory\r\n'
 19:28:31.911327 < 6 bytes data, client => server
 19:28:31.911337 'EPSV\r\n'
 19:28:31.923068 Received DATA (on stdin)
 19:28:31.923086 > 39 bytes data, server => client
 19:28:31.923096 '229 Entering Passive Mode (|||39799|)\r\n'
 19:28:31.923330 < 8 bytes data, client => server
 19:28:31.923343 'TYPE I\r\n'
 19:28:31.923560 Received DATA (on stdin)
 19:28:31.923571 > 33 bytes data, server => client
 19:28:31.923580 '200 I modify TYPE as you wanted\r\n'
 19:28:31.923643 < 21 bytes data, client => server
 19:28:31.923653 'SIZE verifiedserver\r\n'
 19:28:31.924925 Received DATA (on stdin)
 19:28:31.924938 > 8 bytes data, server => client
 19:28:31.924947 '213 17\r\n'
 19:28:31.925015 < 21 bytes data, client => server
 19:28:31.925025 'RETR verifiedserver\r\n'
 19:28:31.925338 Received DATA (on stdin)
 19:28:31.925350 > 29 bytes data, server => client
 19:28:31.925360 '150 Binary junk (17 bytes).\r\n'
 19:28:31.925850 Received DATA (on stdin)
 19:28:31.925862 > 28 bytes data, server => client
 19:28:31.925872 '226 File transfer complete\r\n'
 19:28:31.971529 < 6 bytes data, client => server
 19:28:31.971554 'QUIT\r\n'
 19:28:31.971777 Received DATA (on stdin)
 19:28:31.971790 > 18 bytes data, server => client
 19:28:31.971800 '221 bye bye baby\r\n'
 19:28:31.972999 ====> Client disconnect
 19:28:31.973193 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.922364 Running IPv4 version
 19:28:31.922479 Listening on port 39799
 19:28:31.922525 Wrote pid 156467 to log/12/server/ftp_sockdata.pid
 19:28:31.922765 Received PING (on stdin)
 19:28:31.922878 Received PORT (on stdin)
 19:28:31.923300 ====> Client connect
 19:28:31.925251 Received DATA (on stdin)
 19:28:31.925263 > 17 bytes data, server => client
 19:28:31.925273 'WE ROOLZ: 85158\r\n'
 19:28:31.925301 Received DISC (on stdin)
 19:28:31.925312 ====> Client forcibly disconnected
 19:28:31.925436 Received QUIT (on stdin)
 19:28:31.925446 quits
 19:28:31.925523 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1389
=== End of file server.cmd
=== Start of file valgrind1389
 ==156498== 
 ==156498== Process terminating with default action of signal 4 (SIGILL)
 ==156498==  Illegal opcode at address 0x492B75F
 ==156498==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156498==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156498==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156498==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156498==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156498==    by 0x49908EB: curl_version_info (version.c:600)
 ==156498==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156498==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156498==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156498==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1389
test 1393 [FTP DL, file with C-D inside, using -o fname -i, without -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1393 ../src/curl -q --trace-ascii log/17/trace1393 --trace-time ftp://127.0.0.1:46137/path/file1393 -o log/17/download1393 -i > log/17/stdout1393 2> log/17/stderr1393

 1393: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1393
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1393 ../src/curl -q --trace-ascii log/17/trace1393 --trace-time ftp://127.0.0.1:46137/path/file1393 -o log/17/download1393 -i > log/17/stdout1393 2> log/17/stderr1393
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.780907 ====> Client connect
 19:28:31.781141 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.781409 < "USER anonymous"
 19:28:31.781443 > "331 We are happy you popped in![CR][LF]"
 19:28:31.781596 < "PASS ftp@example.com"
 19:28:31.781621 > "230 Welcome you silly person[CR][LF]"
 19:28:31.781763 < "PWD"
 19:28:31.781791 > "257 "/" is current directory[CR][LF]"
 19:28:31.781937 < "EPSV"
 19:28:31.781962 ====> Passive DATA channel requested by client
 19:28:31.781976 DATA sockfilt for passive data channel starting...
 19:28:31.792073 DATA sockfilt for passive data channel started (pid 156766)
 19:28:31.793063 DATA sockfilt for passive data channel listens on port 43725
 19:28:31.793122 > "229 Entering Passive Mode (|||43725|)[CR][LF]"
 19:28:31.793143 Client has been notified that upcoming DATA connection is awaited on port 43725
 19:28:31.793471 Client connects to port 43725
 19:28:31.793501 ====> Client established passive DATA connection on port 43725
 19:28:31.793593 < "TYPE I"
 19:28:31.793627 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.793800 < "SIZE verifiedserver"
 19:28:31.793840 > "213 17[CR][LF]"
 19:28:31.794000 < "RETR verifiedserver"
 19:28:31.794033 > "150 BinCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1388 ../src/curl -q --trace-ascii log/23/trace1388 --trace-time ftp://127.0.0.1:35523/path/file1388 -o log/23/download1388 -D - > log/23/stdout1388 2> log/23/stderr1388
ary junk (17 bytes).[CR][LF]"
 19:28:31.794126 =====> Closing passive DATA connection...
 19:28:31.794145 Server disconnects passive DATA connection
 19:28:31.794343 Server disconnected passive DATA connection
 19:28:31.794370 DATA sockfilt for passive data channel quits (pid 156766)
 19:28:31.794699 DATA sockfilt for passive data channel quit (pid 156766)
 19:28:31.794727 =====> Closed passive DATA connection
 19:28:31.794806 > "226 File transfer complete[CR][LF]"
 19:28:31.842291 < "QUIT"
 19:28:31.842349 > "221 bye bye baby[CR][LF]"
 19:28:31.843928 MAIN sockfilt said DISC
 19:28:31.843975 ====> Client disconnected
 19:28:31.844058 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.383529 ====> Client connect
 19:28:31.383901 Received DATA (on stdin)
 19:28:31.383915 > 146 bytes data, server => client
 19:28:31.383925 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.383935 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.383943 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:31.384016 < 16 bytes data, client => server
 19:28:31.384027 'USER anonymous\r\n'
 19:28:31.384193 Received DATA (on stdin)
 19:28:31.384204 > 33 bytes data, server => client
 19:28:31.384214 '331 We are happy you popped in!\r\n'
 19:28:31.384263 < 22 bytes data, client => server
 19:28:31.384273 'PASS ftp@example.com\r\n'
 19:28:31.384368 Received DATA (on stdin)
 19:28:31.384378 > 30 bytes data, server => client
 19:28:31.384387 '230 Welcome you silly person\r\n'
 19:28:31.384436 < 5 bytes data, client => server
 19:28:31.384446 'PWD\r\n'
 19:28:31.384537 Received DATA (on stdin)
 19:28:31.384546 > 30 bytes data, server => client
 19:28:31.384556 '257 "/" is current directory\r\n'
 19:28:31.384611 < 6 bytes data, client => server
 19:28:31.384620 'EPSV\r\n'
 19:28:31.395905 Received DATA (on stdin)
 19:28:31.395922 > 39 bytes data, server => client
 19:28:31.395933 '229 Entering Passive Mode (|||43725|)\r\n'
 19:28:31.396135 < 8 bytes data, client => server
 19:28:31.396150 'TYPE I\r\n'
 19:28:31.396379 Received DATA (on stdin)
 19:28:31.396391 > 33 bytes data, server => client
 19:28:31.396401 '200 I modify TYPE as you wanted\r\n'
 19:28:31.396457 < 21 bytes data, client => server
 19:28:31.396469 'SIZE verifiedserver\r\n'
 19:28:31.396590 Received DATA (on stdin)
 19:28:31.396601 > 8 bytes data, server => client
 19:28:31.396611 '213 17\r\n'
 19:28:31.396663 < 21 bytes data, client => server
 19:28:31.396675 'RETR verifiedserver\r\n'
 19:28:31.396896 Received DATA (on stdin)
 19:28:31.396909 > 29 bytes data, server => client
 19:28:31.396920 '150 Binary junk (17 bytes).\r\n'
 19:28:31.397483 Received DATA (on stdin)
 19:28:31.397495 > 28 bytes data, server => client
 19:28:31.397512 '226 File transfer complete\r\n'
 19:28:31.444856 < 6 bytes data, client => server
 19:28:31.444885 'QUIT\r\n'
 19:28:31.445112 Received DATA (on stdin)
 19:28:31.445128 > 18 bytes data, server => client
 19:28:31.445139 '221 bye bye baby\r\n'
 19:28:31.446348 ====> Client disconnect
 19:28:31.446820 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.388106 Running IPv4 version
 19:28:31.388280 Listening on port 43725
 19:28:31.388323 Wrote pid 156766 to log/17/server/ftp_sockdata.pid
 19:28:31.394731 Received PING (on stdin)
 19:28:31.395701 Received PORT (on stdin)
 19:28:31.396173 ====> Client connect
 19:28:31.396978 Received DATA (on stdin)
 19:28:31.396992 > 17 bytes data, server => client
 19:28:31.397002 'WE ROOLZ: 84749\r\n'
 19:28:31.397031 Received DISC (on stdin)
 19:28:31.397043 ====> Client forcibly disconnected
 19:28:31.397177 Received QUIT (on stdin)
 19:28:31.397191 quits
 19:28:31.397257 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1393
=== End of file server.cmd
=== Start of file valgrind1393
 ==156830== 
 ==156830== Process terminating with default action of signal 4 (SIGILL)
 ==156830==  Illegal opcode at address 0x492B75F
 ==156830==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156830==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156830==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156830==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156830==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156830==    by 0x49908EB: curl_version_info (version.c:600)
 ==156830==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156830==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156830==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1393
test 1388 [FTP DL, file with C-D inside, using -o fname -D stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1388 ../src/curl -q --trace-ascii log/23/trace1388 --trace-time ftp://127.0.0.1:35523/path/file1388 -o log/23/download1388 -D - > log/23/stdout1388 2> log/23/stderr1388

 1388: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1388
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1388 ../src/curl -q --trace-ascii log/23/trace1388 --trace-time ftp://127.0.0.1:35523/path/file1388 -o log/23/download1388 -D - > log/23/stdout1388 2> log/23/stderr1388
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:31.302259 ====> Client connect
 19:28:31.302608 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:31.302912 < "USER anonymous"
 19:28:31.302951 > "331 We are happy you popped in![CR][LF]"
 19:28:31.303125 < "PASS ftp@example.com"
 19:28:31.303156 > "230 Welcome you silly person[CR][LF]"
 19:28:31.303310 < "PWD"
 19:28:31.303344 > "257 "/" is current directory[CR][LF]"
 19:28:31.303512 < "EPSV"
 19:28:31.303538 ====> Passive DATA channel requested by client
 19:28:31.303554 DATA sockfilt for passive data channel starting...
 19:28:31.310322 DATA sockfilt for passive data channel started (pid 156464)
 19:28:31.310472 DATA sockfilt for passive data channel listens on port 45633
 19:28:31.310528 > "229 Entering Passive Mode (|||45633|)[CR][LF]"
 19:28:31.310547 Client has been notified that upcoming DATA connection is awaited on port 45633
 19:28:31.310860 Client connects to port 45633
 19:28:31.310901 ====> Client established passive DATA connection on port 45633
 19:28:31.311031 < "TYPE I"
 19:28:31.311072 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:31.311262 < "SIZE verifiedserver"
 19:28:31.311305 > "213 17[CR][LF]"
 19:28:31.311473 < "RETR verifiedserver"
 19:28:31.311512 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:31.311604 =====> Closing passive DATA connection...
 19:28:31.311622 Server disconnects passive DATA connection
 19:28:31.311865 Server disconnected passive DATA connection
 19:28:31.311897 DATA sockfilt for passive data channel quits (pid 156464)
 19:28:31.312148 DATA sockfilt for passive data channel quit (pid 156464)
 19:28:31.312172 =====> Closed passive DATA connection
 19:28:31.312201 > "226 File transfer complete[CR][LF]"
 19:28:31.362161 < "QUIT"
 19:28:31.362216 > "221 bye bye baby[CR][LF]"
 19:28:31.363558 MAIN sockfilt said DISC
 19:28:31.363602 ====> Client disconnected
 19:28:31.363690 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:31.904903 ====> Client connect
 19:28:31.905398 Received DATA (on stdin)
 19:28:31.905415 > 146 bytes data, server => client
 19:28:31.905426 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:31.905437 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:31.905446 '220    \___|\___/|CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1398 ./libtest/libtests lib1398 - > log/13/stdout1398 2> log/13/stderr1398
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1400 ../src/curl -q --output log/5/curl1400.out  --include --trace-ascii log/5/trace1400 --trace-time http://127.0.0.1:37089/we/want/1400 --libcurl log/5/test1400.c > log/5/stdout1400 2> log/5/stderr1400
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1401 ../src/curl -q --output log/1/curl1401.out  --include --trace-ascii log/1/trace1401 --trace-time http://127.0.0.1:38815/we/want/1401 --libcurl log/1/test1401.c --basic -u fake:user -H "X-Files: Mulder" -H "X-Men: cyclops, iceman" -A MyUA -b chocolate=chip --proto "=http,ftp,file" > log/1/stdout1401 2> log/1/stderr1401
_| \_\_____|\r\n'
 19:28:31.905530 < 16 bytes data, client => server
 19:28:31.905542 'USER anonymous\r\n'
 19:28:31.905719 Received DATA (on stdin)
 19:28:31.905731 > 33 bytes data, server => client
 19:28:31.905741 '331 We are happy you popped in!\r\n'
 19:28:31.905796 < 22 bytes data, client => server
 19:28:31.905807 'PASS ftp@example.com\r\n'
 19:28:31.905922 Received DATA (on stdin)
 19:28:31.905932 > 30 bytes data, server => client
 19:28:31.905942 '230 Welcome you silly person\r\n'
 19:28:31.905992 < 5 bytes data, client => server
 19:28:31.906002 'PWD\r\n'
 19:28:31.906109 Received DATA (on stdin)
 19:28:31.906120 > 30 bytes data, server => client
 19:28:31.906130 '257 "/" is current directory\r\n'
 19:28:31.906190 < 6 bytes data, client => server
 19:28:31.906202 'EPSV\r\n'
 19:28:31.913329 Received DATA (on stdin)
 19:28:31.913346 > 39 bytes data, server => client
 19:28:31.913357 '229 Entering Passive Mode (|||45633|)\r\n'
 19:28:31.913561 < 8 bytes data, client => server
 19:28:31.913575 'TYPE I\r\n'
 19:28:31.913842 Received DATA (on stdin)
 19:28:31.913854 > 33 bytes data, server => client
 19:28:31.913864 '200 I modify TYPE as you wanted\r\n'
 19:28:31.913929 < 21 bytes data, client => server
 19:28:31.913940 'SIZE verifiedserver\r\n'
 19:28:31.914072 Received DATA (on stdin)
 19:28:31.914083 > 8 bytes data, server => client
 19:28:31.914092 '213 17\r\n'
 19:28:31.914151 < 21 bytes data, client => server
 19:28:31.914161 'RETR verifiedserver\r\n'
 19:28:31.914480 Received DATA (on stdin)
 19:28:31.914492 > 29 bytes data, server => client
 19:28:31.914502 '150 Binary junk (17 bytes).\r\n'
 19:28:31.914968 Received DATA (on stdin)
 19:28:31.914979 > 28 bytes data, server => client
 19:28:31.914988 '226 File transfer complete\r\n'
 19:28:31.964762 < 6 bytes data, client => server
 19:28:31.964790 'QUIT\r\n'
 19:28:31.964987 Received DATA (on stdin)
 19:28:31.964999 > 18 bytes data, server => client
 19:28:31.965009 '221 bye bye baby\r\n'
 19:28:31.966262 ====> Client disconnect
 19:28:31.966456 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:31.912725 Running IPv4 version
 19:28:31.912801 Listening on port 45633
 19:28:31.912843 Wrote pid 156464 to log/23/server/ftp_sockdata.pid
 19:28:31.913015 Received PING (on stdin)
 19:28:31.913133 Received PORT (on stdin)
 19:28:31.913524 ====> Client connect
 19:28:31.914391 Received DATA (on stdin)
 19:28:31.914404 > 17 bytes data, server => client
 19:28:31.914413 'WE ROOLZ: 84709\r\n'
 19:28:31.914442 Received DISC (on stdin)
 19:28:31.914454 ====> Client forcibly disconnected
 19:28:31.914675 Received QUIT (on stdin)
 19:28:31.914686 quits
 19:28:31.914769 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1388
=== End of file server.cmd
=== Start of file valgrind1388
 ==156491== 
 ==156491== Process terminating with default action of signal 4 (SIGILL)
 ==156491==  Illegal opcode at address 0x492B75F
 ==156491==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==156491==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==156491==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==156491==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==156491==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==156491==    by 0x49908EB: curl_version_info (version.c:600)
 ==156491==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==156491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==156491==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==156491==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1388
test 1398 [curl_msnprintf tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1398 ./libtest/libtests lib1398 - > log/13/stdout1398 2> log/13/stderr1398

libtests returned 132, when expecting 0
 1398: exit FAILED
== Contents of files in the log/13/ directory after test 1398
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1398 ./libtest/libtests lib1398 - > log/13/stdout1398 2> log/13/stderr1398
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1398
=== End of file server.cmd
=== Start of file valgrind1398
 ==157107== 
 ==157107== Process terminating with default action of signal 4 (SIGILL)
 ==157107==  Illegal opcode at address 0x51CC63F
 ==157107==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==157107==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==157107==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==157107==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1398
test 1400 [--libcurl for simple HTTP GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1400 ../src/curl -q --output log/5/curl1400.out  --include --trace-ascii log/5/trace1400 --trace-time http://127.0.0.1:37089/we/want/1400 --libcurl log/5/test1400.c > log/5/stdout1400 2> log/5/stderr1400

 1400: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1400
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1400 ../src/curl -q --output log/5/curl1400.out  --include --trace-ascii log/5/trace1400 --trace-time http://127.0.0.1:37089/we/want/1400 --libcurl log/5/test1400.c > log/5/stdout1400 2> log/5/stderr1400
=== End of file commands.log
=== Start of file http_server.log
 19:28:32.263119 ====> Client connect
 19:28:32.263154 accept_connection 3 returned 4
 19:28:32.263178 Read 93 bytes
 19:28:32.263187 Process 93 bytes request
 19:28:32.263199 Got request: GET /verifiedserver HTTP/1.1
 19:28:32.263207 Are-we-friendly question received
 19:28:32.263233 Wrote request (93 bytes) input to log/5/server.input
 19:28:32.263248 Identifying ourselves as friends
 19:28:32.263307 Response sent (56 bytes) and written to log/5/server.response
 19:28:32.263316 special request received, no persistency
 19:28:32.263324 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 55578 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1400
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1400
 ==157239== 
 ==157239== Process terminating with default action of signal 4 (SIGILL)
 ==157239==  Illegal opcode at address 0x492B75F
 ==157239==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157239==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157239==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157239==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157239==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157239==    by 0x49908EB: curl_version_info (version.c:600)
 ==157239==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157239==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157239==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157239==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1400
test 1401 [--libcurl for GET with CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1403 ../src/curl -q --output log/21/curl1403.out  --include --trace-ascii log/21/trace1403 --trace-time http://127.0.0.1:39881/we/want/1403 --libcurl log/21/test1403.c -G -d "foo=bar" -d "baz=quux" > log/21/stdout1403 2> log/21/stderr1403
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1413 ../src/curl -q --output log/19/curl1413.out  --include --trace-ascii log/19/trace1413 --trace-time http://127.0.0.1:37077/this/1413 -L > log/19/stdout1413 2> log/19/stderr1413
various options]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1401 ../src/curl -q --output log/1/curl1401.out  --include --trace-ascii log/1/trace1401 --trace-time http://127.0.0.1:38815/we/want/1401 --libcurl log/1/test1401.c --basic -u fake:user -H "X-Files: Mulder" -H "X-Men: cyclops, iceman" -A MyUA -b chocolate=chip --proto "=http,ftp,file" > log/1/stdout1401 2> log/1/stderr1401

 1401: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1401
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1401 ../src/curl -q --output log/1/curl1401.out  --include --trace-ascii log/1/trace1401 --trace-time http://127.0.0.1:38815/we/want/1401 --libcurl log/1/test1401.c --basic -u fake:user -H "X-Files: Mulder" -H "X-Men: cyclops, iceman" -A MyUA -b chocolate=chip --proto "=http,ftp,file" > log/1/stdout1401 2> log/1/stderr1401
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.253748 ====> Client connect
 19:28:33.253783 accept_connection 3 returned 4
 19:28:33.253881 Read 93 bytes
 19:28:33.253892 Process 93 bytes request
 19:28:33.253904 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.253912 Are-we-friendly question received
 19:28:33.253941 Wrote request (93 bytes) input to log/1/server.input
 19:28:33.253957 Identifying ourselves as friends
 19:28:33.254013 Response sent (56 bytes) and written to log/1/server.response
 19:28:33.254021 special request received, no persistency
 19:28:33.254028 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 56658 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1401
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1401
 ==157233== 
 ==157233== Process terminating with default action of signal 4 (SIGILL)
 ==157233==  Illegal opcode at address 0x492B75F
 ==157233==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157233==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157233==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157233==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157233==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157233==    by 0x49908EB: curl_version_info (version.c:600)
 ==157233==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157233==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157233==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157233==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1401
test 1403 [--libcurl for GET with query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1403 ../src/curl -q --output log/21/curl1403.out  --include --trace-ascii log/21/trace1403 --trace-time http://127.0.0.1:39881/we/want/1403 --libcurl log/21/test1403.c -G -d "foo=bar" -d "baz=quux" > log/21/stdout1403 2> log/21/stderr1403

 1403: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1403
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1403 ../src/curl -q --output log/21/curl1403.out  --include --trace-ascii log/21/trace1403 --trace-time http://127.0.0.1:39881/we/want/1403 --libcurl log/21/test1403.c -G -d "foo=bar" -d "baz=quux" > log/21/stdout1403 2> log/21/stderr1403
=== End of file commands.log
=== Start of file http_server.log
 19:28:32.678826 ====> Client connect
 19:28:32.678887 accept_connection 3 returned 4
 19:28:32.679111 Read 93 bytes
 19:28:32.679128 Process 93 bytes request
 19:28:32.679143 Got request: GET /verifiedserver HTTP/1.1
 19:28:32.679152 Are-we-friendly question received
 19:28:32.679188 Wrote request (93 bytes) input to log/21/server.input
 19:28:32.679209 Identifying ourselves as friends
 19:28:32.679285 Response sent (56 bytes) and written to log/21/server.response
 19:28:32.679299 special request received, no persistency
 19:28:32.679309 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 43696 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1403
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1403
 ==157432== 
 ==157432== Process terminating with default action of signal 4 (SIGILL)
 ==157432==  Illegal opcode at address 0x492B75F
 ==157432==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157432==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157432==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157432==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157432==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157432==    by 0x49908EB: curl_version_info (version.c:600)
 ==157432==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157432==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157432==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157432==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1403
test 1413 [HTTP redirect with fragment in new URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1413 ../src/curl -q --output log/19/curl1413.out  --include --trace-ascii log/19/trace1413 --trace-time http://127.0.0.1:37077/this/1413 -L > log/19/stdout1413 2> log/19/stderr1413

 1413: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1413
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1413 ../src/curl -q --output log/19/curl1413.out  --include --trace-ascii log/19/trace1413 --trace-time http://127.0.0.1:37077/this/1413 -L > log/19/stdout1413 2> log/19/stderr1413
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.505092 ====> Client connect
 19:28:33.505123 accept_connection 3 returned 4
 19:28:33.505195 Read 93 bytes
 19:28:33.505205 Process 93 bytes request
 19:28:33.505217 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.505225 Are-we-friendly question received
 19:28:33.505252 Wrote request (93 bytesCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1411 ../src/curl -q --output log/9/curl1411.out  --include --trace-ascii log/9/trace1411 --trace-time http://127.0.0.1:43733/1411 -T log/9/empty1411 > log/9/stdout1411 2> log/9/stderr1411
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1402 ../src/curl -q --output log/6/curl1402.out  --include --trace-ascii log/6/trace1402 --trace-time http://127.0.0.1:33935/we/want/1402 --libcurl log/6/test1402.c -d "foo=bar" -d "baz=quux" > log/6/stdout1402 2> log/6/stderr1402
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1410 ../src/curl -q --output log/24/curl1410.out  --include --trace-ascii log/24/trace1410 --trace-time http://127.0.0.1:47/1410 --max-time -4 > log/24/stdout1410 2> log/24/stderr1410
) input to log/19/server.input
 19:28:33.505268 Identifying ourselves as friends
 19:28:33.505319 Response sent (57 bytes) and written to log/19/server.response
 19:28:33.505326 special request received, no persistency
 19:28:33.505332 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 38984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1413
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1413
 ==158062== 
 ==158062== Process terminating with default action of signal 4 (SIGILL)
 ==158062==  Illegal opcode at address 0x492B75F
 ==158062==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158062==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158062==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158062==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158062==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158062==    by 0x49908EB: curl_version_info (version.c:600)
 ==158062==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158062==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158062==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158062==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1413
test 1411 [HTTP with zero size file PUT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1411 ../src/curl -q --output log/9/curl1411.out  --include --trace-ascii log/9/trace1411 --trace-time http://127.0.0.1:43733/1411 -T log/9/empty1411 > log/9/stdout1411 2> log/9/stderr1411

 1411: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1411
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1411 ../src/curl -q --output log/9/curl1411.out  --include --trace-ascii log/9/trace1411 --trace-time http://127.0.0.1:43733/1411 -T log/9/empty1411 > log/9/stdout1411 2> log/9/stderr1411
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.302256 ====> Client connect
 19:28:33.302292 accept_connection 3 returned 4
 19:28:33.302315 Read 93 bytes
 19:28:33.302326 Process 93 bytes request
 19:28:33.302339 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.302348 Are-we-friendly question received
 19:28:33.302377 Wrote request (93 bytes) input to log/9/server.input
 19:28:33.302393 Identifying ourselves as friends
 19:28:33.302464 Response sent (56 bytes) and written to log/9/server.response
 19:28:33.302473 special request received, no persistency
 19:28:33.302481 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34170 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1411
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1411
 ==157787== 
 ==157787== Process terminating with default action of signal 4 (SIGILL)
 ==157787==  Illegal opcode at address 0x492B75F
 ==157787==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157787==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157787==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157787==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157787==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157787==    by 0x49908EB: curl_version_info (version.c:600)
 ==157787==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157787==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157787==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157787==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1411
test 1402 [--libcurl for simple POST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1402 ../src/curl -q --output log/6/curl1402.out  --include --trace-ascii log/6/trace1402 --trace-time http://127.0.0.1:33935/we/want/1402 --libcurl log/6/test1402.c -d "foo=bar" -d "baz=quux" > log/6/stdout1402 2> log/6/stderr1402

 1402: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1402
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1402 ../src/curl -q --output log/6/curl1402.out  --include --trace-ascii log/6/trace1402 --trace-time http://127.0.0.1:33935/we/want/1402 --libcurl log/6/test1402.c -d "foo=bar" -d "baz=quux" > log/6/stdout1402 2> log/6/stderr1402
=== End of file commands.log
=== Start of file http_server.log
 19:28:32.492381 ====> Client connect
 19:28:32.492420 accept_connection 3 returned 4
 19:28:32.492442 Read 93 bytes
 19:28:32.492452 Process 93 bytes request
 19:28:32.492466 Got request: GET /verifiedserver HTTP/1.1
 19:28:32.492475 Are-we-friendly question received
 19:28:32.492504 Wrote request (93 bytes) input to log/6/server.input
 19:28:32.492522 Identifying ourselves as friends
 19:28:32.492591 Response sent (56 bytes) and written to log/6/server.response
 19:28:32.492603 special request received, no persistency
 19:28:32.492611 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 54648 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1402
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1402
 ==157351== 
 ==157351== Process terminating with default action of signal 4 (SIGILL)
 ==157351==  Illegal opcode at address 0x492B75F
 ==157351==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157351==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157351==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157351==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157351==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157351==    by 0x49908EB: curl_version_info (version.c:600)
 ==157351==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157351==    by 0x4CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1408 ../src/curl -q --output log/10/curl1408.out  --include --trace-ascii log/10/trace1408 --trace-time -c log/10/jar1408 -g http://[::1]:39699/path/14080001 http://[::1]:39699/path/14080002 > log/10/stdout1408 2> log/10/stderr1408
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1407 ../src/curl -q --output log/22/curl1407.out  --include --trace-ascii log/22/trace1407 --trace-time pop3://127.0.0.1:32871/1407 -l -u user:secret --libcurl log/22/test1407.c > log/22/stdout1407 2> log/22/stderr1407
003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157351==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157351==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1402
test 1410 [Pass in negative number to --max-time]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1410 ../src/curl -q --output log/24/curl1410.out  --include --trace-ascii log/24/trace1410 --trace-time http://127.0.0.1:47/1410 --max-time -4 > log/24/stdout1410 2> log/24/stderr1410

curl returned 132, when expecting 2
 1410: exit FAILED
== Contents of files in the log/24/ directory after test 1410
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1410 ../src/curl -q --output log/24/curl1410.out  --include --trace-ascii log/24/trace1410 --trace-time http://127.0.0.1:47/1410 --max-time -4 > log/24/stdout1410 2> log/24/stderr1410
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1410
=== End of file server.cmd
=== Start of file valgrind1410
 ==157619== 
 ==157619== Process terminating with default action of signal 4 (SIGILL)
 ==157619==  Illegal opcode at address 0x492B75F
 ==157619==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157619==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157619==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157619==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157619==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157619==    by 0x49908EB: curl_version_info (version.c:600)
 ==157619==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157619==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157619==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157619==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1410
test 1408 [HTTP receive cookies over IPV6]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1408 ../src/curl -q --output log/10/curl1408.out  --include --trace-ascii log/10/trace1408 --trace-time -c log/10/jar1408 -g http://[::1]:39699/path/14080001 http://[::1]:39699/path/14080002 > log/10/stdout1408 2> log/10/stderr1408

 1408: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1408
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1408 ../src/curl -q --output log/10/curl1408.out  --include --trace-ascii log/10/trace1408 --trace-time -c log/10/jar1408 -g http://[::1]:39699/path/14080001 http://[::1]:39699/path/14080002 > log/10/stdout1408 2> log/10/stderr1408
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:28:33.238080 ====> Client connect
 19:28:33.238119 accept_connection 3 returned 4
 19:28:33.238141 Read 89 bytes
 19:28:33.238151 Process 89 bytes request
 19:28:33.238172 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.238181 Are-we-friendly question received
 19:28:33.238211 Wrote request (89 bytes) input to log/10/server.input
 19:28:33.238230 Identifying ourselves as friends
 19:28:33.238311 Response sent (57 bytes) and written to log/10/server.response
 19:28:33.238321 special request received, no persistency
 19:28:33.238329 ====> Client disconnect 0
=== End of file http_ipv6_server.log
=== Start of file http_ipv6_verify.log
 *   Trying [::1]:39699...
 * Established connection to [::1] (::1 port 39699) from ::1 port 60706 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: [::1]:39699
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host [::1]:39699 left intact
=== End of file http_ipv6_verify.log
=== Start of file http_ipv6_verify.out
 WE ROOLZ: 135779
=== End of file http_ipv6_verify.out
=== Start of file server.cmd
 Testnum 1408
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 135779
=== End of file server.response
=== Start of file valgrind1408
 ==157673== 
 ==157673== Process terminating with default action of signal 4 (SIGILL)
 ==157673==  Illegal opcode at address 0x492B75F
 ==157673==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157673==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157673==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157673==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157673==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157673==    by 0x49908EB: curl_version_info (version.c:600)
 ==157673==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157673==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157673==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157673==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1408
test 1407 [--libcurl for POP3 LIST one message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1407 ../src/curl -q --output log/22/curl1407.out  --include --trace-ascii log/22/trace1407 --trace-time pop3://127.0.0.1:32871/1407 -l -u user:secret --libcurl log/22/test1407.c > log/22/stdout1407 2> log/22/stderr1407

 1407: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1407
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1407 ../src/curl -q --output log/22/curl1407.out  --include --trace-ascii log/22/trace1407 --trace-time pop3://127.0.0.1:32871/1407 -l -u user:secret --libcurl log/22/test1407.c > log/22/stdout1407 2> log/22/stderr1407
=== End of file commands.log
=== Start of file pop3_server.log
 19:28:33.543469 ====> Client connect
 19:28:33.543628 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]"
 19:28:33.543917 < "CAPA"
 19:28:33.543961 > "-ERR Unrecognized command[CR][LF]"
 19:28:33.544163 < "RETR verifiedserver"
 19:28:33.544191 return proof we are we
 19:28:33.544214 > "+OK Mail transfer starts[CR][LF]"
 19:28:33.544235 > "WE ROOLZ: 125142[CR][LF]"
 19:28:33.544252 > ".[CR][LF]"
 19:28:33.587026 < "QUIT"
 19:28:33.587074 > "+OK curl POP3 server signing off[CR][LF]"
 19:28:33.588157 MAIN sockfilt said DISC
 19:28:33.588197 ====> Client disconnected
 19:28:33.588268 Awaiting input
=== End of file pop3_server.log
=== Start of file pop3_sockfilt.log
 19:28:33.146066 ====> Client connect
 19:28:33.146338 Received DATA (on stdin)
 19:28:33.146354 > 164 bytes data, server => client
 19:28:33.146366 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:33.146376 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:33.146385 ' \_\_____|\r\n+OK curl POP3 server ready to serve \r\n'
 19:28:33.146459 < 6 bytes data, client => server
 19:28:33.146472 'CAPA\r\n'
 19:28:33.146659 Received DATA (on stdin)
 19:28:33.146671 > 27 bytes data, server => client
 19:28:33.146681 '-ERR Unrecognized command\r\n'
 19:28:33.146740 < 21 bytes data, client => server
 19:28:33.146753 'RETR verifiedserver\r\n'
 19:28:33.146946 Received DATA (on stdin)
 19:28:33.146958 > 26 bytes data, server => client
 19:28:33.146968 '+OK Mail transfer starts\r\n'
 19:28:33.146991 ReCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1409 ../src/curl -q --output log/2/curl1409.out  --include --trace-ascii log/2/trace1409 --trace-time http://127.0.0.1:47/1409 -C wrong > log/2/stdout1409 2> log/2/stderr1409
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1406 ../src/curl -q --output log/16/curl1406.out  --include --trace-ascii log/16/trace1406 --trace-time smtp://127.0.0.1:33205/1406 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-from sender@example.com -T log/16/test1406.eml --libcurl log/16/test1406.c > log/16/stdout1406 2> log/16/stderr1406
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1405 ../src/curl -q --output log/11/curl1405.out  --include --trace-ascii log/11/trace1405 --trace-time ftp://127.0.0.1:36697/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/11/test1405.c > log/11/stdout1405 2> log/11/stderr1405
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1416 ../src/curl -q --output log/15/curl1416.out  --include --trace-ascii log/15/trace1416 --trace-time http://127.0.0.1:40321/1416 > log/15/stdout1416 2> log/15/stderr1416
ceived DATA (on stdin)
 19:28:33.147000 > 18 bytes data, server => client
 19:28:33.147009 'WE ROOLZ: 125142\r\n'
 19:28:33.147021 Received DATA (on stdin)
 19:28:33.147029 > 3 bytes data, server => client
 19:28:33.147038 '.\r\n'
 19:28:33.189546 < 6 bytes data, client => server
 19:28:33.189568 'QUIT\r\n'
 19:28:33.189765 Received DATA (on stdin)
 19:28:33.189776 > 34 bytes data, server => client
 19:28:33.189786 '+OK curl POP3 server signing off\r\n'
 19:28:33.190787 ====> Client disconnect
 19:28:33.190959 Received ACKD (on stdin)
=== End of file pop3_sockfilt.log
=== Start of file server.cmd
 REPLY LIST +OK 1407 100\r\n.
 Testnum 1407
=== End of file server.cmd
=== Start of file valgrind1407
 ==157596== 
 ==157596== Process terminating with default action of signal 4 (SIGILL)
 ==157596==  Illegal opcode at address 0x492B75F
 ==157596==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157596==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157596==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157596==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157596==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157596==    by 0x49908EB: curl_version_info (version.c:600)
 ==157596==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157596==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157596==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1407
test 1409 [Pass in string to -C]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1409 ../src/curl -q --output log/2/curl1409.out  --include --trace-ascii log/2/trace1409 --trace-time http://127.0.0.1:47/1409 -C wrong > log/2/stdout1409 2> log/2/stderr1409

curl returned 132, when expecting 2
 1409: exit FAILED
== Contents of files in the log/2/ directory after test 1409
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1409 ../src/curl -q --output log/2/curl1409.out  --include --trace-ascii log/2/trace1409 --trace-time http://127.0.0.1:47/1409 -C wrong > log/2/stdout1409 2> log/2/stderr1409
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1409
=== End of file server.cmd
=== Start of file valgrind1409
 ==157618== 
 ==157618== Process terminating with default action of signal 4 (SIGILL)
 ==157618==  Illegal opcode at address 0x492B75F
 ==157618==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157618==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157618==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157618==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157618==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157618==    by 0x49908EB: curl_version_info (version.c:600)
 ==157618==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157618==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157618==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157618==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1409
test 1406 [--libcurl for SMTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1406 ../src/curl -q --output log/16/curl1406.out  --include --trace-ascii log/16/trace1406 --trace-time smtp://127.0.0.1:33205/1406 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-from sender@example.com -T log/16/test1406.eml --libcurl log/16/test1406.c > log/16/stdout1406 2> log/16/stderr1406

 1406: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1406
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1406 ../src/curl -q --output log/16/curl1406.out  --include --trace-ascii log/16/trace1406 --trace-time smtp://127.0.0.1:33205/1406 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-from sender@example.com -T log/16/test1406.eml --libcurl log/16/test1406.c > log/16/stdout1406 2> log/16/stderr1406
=== End of file commands.log
=== Start of file server.cmd
 CAPA SIZE
 Testnum 1406
=== End of file server.cmd
=== Start of file smtp_server.log
 19:28:33.569007 ====> Client connect
 19:28:33.569294 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:33.569644 < "EHLO verifiedserver"
 19:28:33.569692 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:28:33.569873 < "HELP"
 19:28:33.569903 > "214 WE ROOLZ: 127808[CR][LF]"
 19:28:33.569917 return proof we are we
 19:28:33.570122 < "QUIT"
 19:28:33.570152 > "221 curl ESMTP server signing off[CR][LF]"
 19:28:33.571275 MAIN sockfilt said DISC
 19:28:33.571307 ====> Client disconnected
 19:28:33.571381 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:28:34.171566 ====> Client connect
 19:28:34.172004 Received DATA (on stdin)
 19:28:34.172019 > 146 bytes data, server => client
 19:28:34.172031 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:34.172040 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:34.172050 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:34.172164 < 21 bytes data, client => server
 19:28:34.172180 'EHLO verifiedserver\r\n'
 19:28:34.172390 Received DATA (on stdin)
 19:28:34.172402 > 53 bytes data, server => client
 19:28:34.172413 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:28:34.172473 < 6 bytes data, client => server
 19:28:34.172485 'HELP\r\n'
 19:28:34.172605 Received DATA (on stdin)
 19:28:34.172614 > 22 bytes data, server => client
 19:28:34.172624 '214 WE ROOLZ: 127808\r\n'
 19:28:34.172723 < 6 bytes data, client => server
 19:28:34.172736 'QUIT\r\n'
 19:28:34.172842 Received DATA (on stdin)
 19:28:34.172853 > 35 bytes data, server => client
 19:28:34.172863 '221 curl ESMTP server signing off\r\n'
 19:28:34.173913 ====> Client disconnect
 19:28:34.174080 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file test1406.eml
 From: different
 To: another
 body
=== End of file test1406.eml
=== Start of file valgrind1406
 ==157620== 
 ==157620== Process terminating with default action of signal 4 (SIGILL)
 ==157620==  Illegal opcode at address 0x492B75F
 ==157620==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157620==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157620==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157620==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157620==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157620==    by 0x49908EB: curl_version_info (version.c:600)
 ==157620==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157620==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157620==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157620==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1406
test 1416 [HTTP GET with chunked Transfer-Encoding overflowed chunked size]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1416 ../src/curl -q --output log/15/curl1416.out  --include --trace-ascii log/15/trace1416 --trace-time http://127.0.0.1:40321/1416 > log/15/stdout1416 2> log/15/stderr1416

 1416: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1416
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1416 ../src/curl -q --output log/15/curl1416.out  --include --trace-ascii log/15/trace1416 --trace-time http://127.0.0.1:40321/1416 > log/15/stdout1416 2> log/15/stderr1416
=== End of file commands.log
=== Start of file http_server.log
 19:28:34.598069 ====> Client connect
 19:28:34.598116 accept_connection 3 returned 4
 19:28:34.598142 Read 93 bytes
 19:28:34.598151 Process 93 bytes request
 19:28:34.598165 Got request: GET /verifiedserver HTTP/1.1
 19:28:34.598174 Are-we-friendly question received
 19:28:34.598200 Wrote request (93 bytes) input to log/15/server.input
 19:28:34.598222 Identifying ourselves as friends
 19:28:34.598317 Response sent (56 bytes) and written to log/15/server.response
 19:28:34.598327 special request received, no persistency
 19:28:34.598336 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 46330 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1416
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1416
 ==158188== 
 ==158188== Process terminating with default action of signal 4 (SIGILL)
 ==158188==  Illegal opcode at address 0x492B75F
 ==158188==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158188==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158188==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158188==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158188==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158188==    by 0x49908EB: curl_version_info (version.c:600)
 ==158188==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158188==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158188==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158188==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1416
test 1405 [--libcurl for FTP with quote ops]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1405 ../src/curl -q --output log/11/curl1405.out  --include --trace-ascii log/11/trace1405 --trace-time ftp://127.0.0.1:36697/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/11/test1405.c > log/11/stdout1405 2> log/11/stderr1405

 1405: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1405
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1405 ../src/curl -q --output log/11/curl1405.out  --include --trace-ascii log/11/trace1405 --trace-time ftp://127.0.0.1:36697/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/11/test1405.c > log/11/stdout1405 2> log/11/stderr1405
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:33.525469 ====> Client connect
 19:28:33.525726 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:33.526076 < "USER anonymous"
 19:28:33.526119 > "331 We are happy you popped in![CR][LF]"
 19:28:33.526311 < "PASS ftp@example.com"
 19:28:33.526342 > "230 Welcome you silly person[CR][LF]"
 19:28:33.526505 < "PWD"
 19:28:33.526541 > "257 "/" is current directory[CR][LF]"
 19:28:33.526712 < "EPSV"
 19:28:33.526737 ====> Passive DATA channel requested by client
 19:28:33.526751 DATA sockfilt for passive data channel starting...
 19:28:33.538691 DATA sockfilt for passive data channel started (pid 157548)
 19:28:33.540256 DATA sockfilt for passive data channel listens on port 37687
 19:28:33.540320 > "229 Entering Passive Mode (|||37687|)[CR][LF]"
 19:28:33.540341 Client has been notified that upcoming DATA connection is awaited on port 37687
 19:28:33.540969 Client connects to port 37687
 19:28:33.541006 ====> Client established passive DATA connection on port 37687
 19:28:33.541111 < "TYPE I"
 19:28:33.541146 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:33.541332 < "SIZE verifiedserver"
 19:28:33.541375 > "213 18[CR][LF]"
 19:28:33.541547 < "RETR verifiedserver"
 19:28:33.541583 > "150 Binary junk (18 bytes).[CR][LF]"
 19:28:33.541663 =====> Closing passive DATA connection...
 19:28:33.541680 Server disconnects passive DATA connection
 19:28:33.541884 Server disconnected passive DATA connection
 19:28:33.541910 DATA sockfilt for passive data channel quits (pid 157548)
 19:28:33.542236 DATA sockfilt for passive data channel quit (pid 157548)
 19:28:33.542263 =====> Closed passive DATA connection
 19:28:33.542293 > "226 File transfer complete[CR][LF]"
 19:28:33.582415 < "QUIT"
 19:28:33.582467 > "221 bye bye baby[CR][LF]"
 19:28:33.583626 MAIN sockfilt said DISC
 19:28:33.583669 ====> Client disconnected
 19:28:33.583754 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:33.128021 ====> Client connect
 19:28:33.128443 Received DATA (on stdin)
 19:28:33.128461 > 146 bytes data, server => client
 19:28:33.128473 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:33.128483 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:33.128493 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:33.128590 < 16 bytes data, client => server
 19:28:33.128606 'USER anonymous\r\n'
 19:28:33.128819 Received DATA (on stdin)
 19:28:33.128831 > 33 bytes data, server => client
 19:28:33.128841 '331 We are happy you popped in!\r\n'
 19:28:33.128901 < 22 bytes data, client => server
 19:28:33.128913 'PASS ftp@example.com\r\n'
 19:28:33.129034 Received DATA (on stdin)
 19:28:33.129045 > 30 bytes data, server => client
 19:28:33.129055 '230 Welcome you silly person\r\n'
 19:28:33.129108 < 5 bytes data, client => server
 19:28:33.129119 'PWD\r\n'
 19:28:33.129232 Received DATA (on stdin)
 19:28:33.129243 > 30 bytes data, server => client
 19:28:33.129252 '257 "/" is current directory\r\n'
 19:28:33.129317 < 6 bytes data, client => server
 19:28:33.129329 'EPSV\r\n'
 19:28:33.143044 Received DATA (on stdin)
 19:28:33.143062 > 39 bytes data, server => client
 19:28:33.143073 '229 Entering Passive Mode (|||37687|)\r\n'
 19:28:33.143565 < 8 bytes data, client => server
 19:28:33.143582 'TYPE I\r\n'
 19:28:33.143843 Received DATA (on stdin)
 19:28:33.143856 > 33 bytes data, server => client
 19:28:33.143866 '200 I modify TYPE as you wanted\r\n'
 19:28:33.143928 < 21 bytes data, client => server
 19:28:33.143940 'SIZE verifiedserver\r\n'
 19:28:33.144069 Received DATA (on stdin)
 19:28:33.144080 > 8 bytes data, server => client
 19:28:33.144090 '213 18\r\n'
 19:28:33.144145 < 21 bytes data, client => server
 19:28:33.144157 'RETR verifiedserver\r\n'
 19:28:33.144373 Received DATA (on stdin)
 19:28:33.144384 > 29 bytes data, server => client
 19:28:33.144394 '150 Binary junk (18 bytes).\r\n'
 19:28:33.144987 Received DATA (on stdin)
 19:28:33.144999 > 28 bytes data, server => client
 19:28:33.145009 '226 File transfer complete\r\n'
 19:28:33.184934 < 6 bytes data, client => server
 19:28:33.184964 'QUIT\r\n'
 19:28:33.185161 Received DATA (on stdin)
 19:28:33.185173CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1412 ../src/curl -q --output log/14/curl1412.out  --include --trace-ascii log/14/trace1412 --trace-time http://127.0.0.1:45467/1412 -u testuser:testpass --anyauth http://127.0.0.1:45467/14120001 > log/14/stdout1412 2> log/14/stderr1412
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1415 ../src/curl -q --output log/7/curl1415.out  --include --trace-ascii log/7/trace1415 --trace-time http://example.com/we/want/1415 -b none -c log/7/jar1415.txt -x 127.0.0.1:40859 > log/7/stdout1415 2> log/7/stderr1415
 > 18 bytes data, server => client
 19:28:33.185182 '221 bye bye baby\r\n'
 19:28:33.186256 ====> Client disconnect
 19:28:33.186447 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:33.132853 Running IPv4 version
 19:28:33.132933 Listening on port 37687
 19:28:33.132976 Wrote pid 157548 to log/11/server/ftp_sockdata.pid
 19:28:33.138175 Received PING (on stdin)
 19:28:33.142809 Received PORT (on stdin)
 19:28:33.143606 ====> Client connect
 19:28:33.144453 Received DATA (on stdin)
 19:28:33.144469 > 18 bytes data, server => client
 19:28:33.144479 'WE ROOLZ: 154115\r\n'
 19:28:33.144510 Received DISC (on stdin)
 19:28:33.144522 ====> Client forcibly disconnected
 19:28:33.144676 Received QUIT (on stdin)
 19:28:33.144691 quits
 19:28:33.144761 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 REPLY FAIL 500 this might not be a failure
 Testnum 1405
=== End of file server.cmd
=== Start of file valgrind1405
 ==157605== 
 ==157605== Process terminating with default action of signal 4 (SIGILL)
 ==157605==  Illegal opcode at address 0x492B75F
 ==157605==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157605==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157605==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157605==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157605==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157605==    by 0x49908EB: curl_version_info (version.c:600)
 ==157605==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157605==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157605==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157605==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1405
test 1412 [HTTP GET with --anyauth with two URLs (picking Digest)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1412 ../src/curl -q --output log/14/curl1412.out  --include --trace-ascii log/14/trace1412 --trace-time http://127.0.0.1:45467/1412 -u testuser:testpass --anyauth http://127.0.0.1:45467/14120001 > log/14/stdout1412 2> log/14/stderr1412

 1412: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1412
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1412 ../src/curl -q --output log/14/curl1412.out  --include --trace-ascii log/14/trace1412 --trace-time http://127.0.0.1:45467/1412 -u testuser:testpass --anyauth http://127.0.0.1:45467/14120001 > log/14/stdout1412 2> log/14/stderr1412
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.488924 ====> Client connect
 19:28:33.488963 accept_connection 3 returned 4
 19:28:33.488987 Read 93 bytes
 19:28:33.488998 Process 93 bytes request
 19:28:33.489012 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.489021 Are-we-friendly question received
 19:28:33.489051 Wrote request (93 bytes) input to log/14/server.input
 19:28:33.489070 Identifying ourselves as friends
 19:28:33.489138 Response sent (56 bytes) and written to log/14/server.response
 19:28:33.489149 special request received, no persistency
 19:28:33.489158 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56242 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 auth_required
 Testnum 1412
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1412
 ==158060== 
 ==158060== Process terminating with default action of signal 4 (SIGILL)
 ==158060==  Illegal opcode at address 0x492B75F
 ==158060==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158060==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158060==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158060==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158060==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158060==    by 0x49908EB: curl_version_info (version.c:600)
 ==158060==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158060==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1412
setenv TZ = GMT
test 1415 [Delete expired cookies]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1415 ../src/curl -q --output log/7/curl1415.out  --include --trace-ascii log/7/trace1415 --trace-time http://example.com/we/want/1415 -b none -c log/7/jar1415.txt -x 127.0.0.1:40859 > log/7/stdout1415 2> log/7/stderr1415

 1415: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1415
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1415 ../src/curl -q --output log/7/curl1415.out  --include --trace-ascii log/7/trace1415 --trace-time http://example.com/we/want/1415 -b none -c log/7/jar1415.txt -x 127.0.0.1:40859 > log/7/stdout1415 2> log/7/stderr1415
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.564743 ====> Client connect
 19:28:33.564789 accept_connection 3 returned 4
 19:28:33.564816 Read 93 bytes
 19:28:33.564826 Process 93 bytes request
 19:28:33.564840 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.564849 Are-we-friendly question received
 19:28:33.564876 Wrote request (93 bytes) input to log/7/server.input
 19:28:33.564893 Identifying ourselves as friends
 19:28:33.564978 Response sent (56 bytes) and written to log/7/server.response
 19:28:33.564989 special request received, no persistency
 19:28:33.564997 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 48134 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1415
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1415
 ==158157== 
 ==158157== Process terminating with default action of signal 4 (SIGILL)
 ==158157==  Illegal opcode at address 0x492B75F
 ==158157==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158157==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158157==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158157==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158157==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158157==    by 0x49908EB: curCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1404 ../src/curl -q --output log/18/curl1404.out  --include --trace-ascii log/18/trace1404 --trace-time http://127.0.0.1:43739/we/want/1404 -F name=value -F 'file=@log/18/test1404.txt,log/18/test1404.txt;type=magic/content;encoder=8bit,log/18/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/18/test1404.c > log/18/stdout1404 2> log/18/stderr1404
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1414 ../src/curl -q --output log/4/curl1414.out  --include --trace-ascii log/4/trace1414 --trace-time ftp://127.0.0.1:39739/1414 -P - > log/4/stdout1414 2> log/4/stderr1414
l_version_info (version.c:600)
 ==158157==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158157==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158157==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158157==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1415
test 1404 [--libcurl plus -F with 3 files, one with explicit type and encoder]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1404 ../src/curl -q --output log/18/curl1404.out  --include --trace-ascii log/18/trace1404 --trace-time http://127.0.0.1:43739/we/want/1404 -F name=value -F 'file=@log/18/test1404.txt,log/18/test1404.txt;type=magic/content;encoder=8bit,log/18/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/18/test1404.c > log/18/stdout1404 2> log/18/stderr1404

 1404: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1404
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1404 ../src/curl -q --output log/18/curl1404.out  --include --trace-ascii log/18/trace1404 --trace-time http://127.0.0.1:43739/we/want/1404 -F name=value -F 'file=@log/18/test1404.txt,log/18/test1404.txt;type=magic/content;encoder=8bit,log/18/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/18/test1404.c > log/18/stdout1404 2> log/18/stderr1404
=== End of file commands.log
=== Start of file http_server.log
 19:28:34.074727 ====> Client connect
 19:28:34.074767 accept_connection 3 returned 4
 19:28:34.074790 Read 93 bytes
 19:28:34.074799 Process 93 bytes request
 19:28:34.074812 Got request: GET /verifiedserver HTTP/1.1
 19:28:34.074821 Are-we-friendly question received
 19:28:34.074849 Wrote request (93 bytes) input to log/18/server.input
 19:28:34.074867 Identifying ourselves as friends
 19:28:34.074937 Response sent (56 bytes) and written to log/18/server.response
 19:28:34.074947 special request received, no persistency
 19:28:34.074955 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46840 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1404
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file test1404.txt
 dummy data
=== End of file test1404.txt
=== Start of file valgrind1404
 ==157568== 
 ==157568== Process terminating with default action of signal 4 (SIGILL)
 ==157568==  Illegal opcode at address 0x492B75F
 ==157568==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==157568==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==157568==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==157568==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==157568==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==157568==    by 0x49908EB: curl_version_info (version.c:600)
 ==157568==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==157568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==157568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==157568==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1404
test 1414 [FTP PORT without SIZE or EPRT support]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1414 ../src/curl -q --output log/4/curl1414.out  --include --trace-ascii log/4/trace1414 --trace-time ftp://127.0.0.1:39739/1414 -P - > log/4/stdout1414 2> log/4/stderr1414

 1414: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1414
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1414 ../src/curl -q --output log/4/curl1414.out  --include --trace-ascii log/4/trace1414 --trace-time ftp://127.0.0.1:39739/1414 -P - > log/4/stdout1414 2> log/4/stderr1414
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:33.902035 ====> Client connect
 19:28:33.909880 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:33.911491 < "USER anonymous"
 19:28:33.911624 > "331 We are happy you popped in![CR][LF]"
 19:28:33.911782 < "PASS ftp@example.com"
 19:28:33.911815 > "230 Welcome you silly person[CR][LF]"
 19:28:33.912003 < "PWD"
 19:28:33.912036 > "257 "/" is current directory[CR][LF]"
 19:28:33.912203 < "EPSV"
 19:28:33.912230 ====> Passive DATA channel requested by client
 19:28:33.912244 DATA sockfilt for passive data channel starting...
 19:28:33.920086 DATA sockfilt for passive data channel started (pid 158046)
 19:28:33.920248 DATA sockfilt for passive data channel listens on port 36489
 19:28:33.920295 > "229 Entering Passive Mode (|||36489|)[CR][LF]"
 19:28:33.920314 Client has been notified that upcoming DATA connection is awaited on port 36489
 19:28:33.923997 Client connects to port 36489
 19:28:33.924035 ====> Client established passive DATA connection on port 36489
 19:28:33.924149 < "TYPE I"
 19:28:33.924189 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:33.924377 < "SIZE verifiedserver"
 19:28:33.924418 > "213 17[CR][LF]"
 19:28:33.924579 < "RETR verifiedserver"
 19:28:33.924615 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:33.924705 =====> Closing passive DATA connection...
 19:28:33.924723 Server disconnects passive DATA connection
 19:28:33.924953 Server disconnected passive DATA connection
 19:28:33.924981 DATA sockfilt for passive data channel quits (pid 158046)
 19:28:33.925239 DATA sockfilt for passive data channel quit (pid 158046)
 19:28:33.925263 =====> Closed passive DATA connection
 19:28:33.925288 > "226 File transfer complete[CR][LF]"
 19:28:33.972313 < "QUIT"
 19:28:33.972370 > "221 bye bye baby[CR][LF]"
 19:28:33.973647 MAIN sockfilt said DISC
 19:28:33.973678 ====> Client disconnected
 19:28:33.973757 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:33.494674 ====> Client connect
 19:28:33.512582 Received DATA (on stdin)
 19:28:33.513020 > 146 bytes data, server => client
 19:28:33.513039 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:33.513050 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:33.513060 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:33.513993 < 16 bytes data, client => server
 19:28:33.514012 'USER anonymous\r\n'
 19:28:33.514223 Received DATA (on stdin)
 19:28:33.514236 > 33 bytes data, server => client
 19:28:33.514247 '331 We are happy you popped in!\r\n'
 19:28:33.514356 < 22 bytes data, client => server
 19:28:33.514369 'PASS ftp@example.com\r\n'
 19:28:33.514497 Received DATA (on stdin)
 19:28:33.514509 > 30 bytes data, server => client
 19:28:33.514520 '230 Welcome you silly person\r\n'
 19:28:33.514576 < 5 bytes data, client => server
 19:28:33.514587 'PWD\r\n'
 19:28:33.514713 Received DATA (on stdin)
 19:28:33.514724 > 30 bytes data, server => client
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1421 ../src/curl -q --include --trace-ascii log/17/trace1421 --trace-time --proxy http://127.0.0.1:35993 http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990 > log/17/stdout1421 2> log/17/stderr1421
:28:33.514733 '257 "/" is current directory\r\n'
 19:28:33.514798 < 6 bytes data, client => server
 19:28:33.514809 'EPSV\r\n'
 19:28:33.524837 Received DATA (on stdin)
 19:28:33.524858 > 39 bytes data, server => client
 19:28:33.524870 '229 Entering Passive Mode (|||36489|)\r\n'
 19:28:33.526580 < 8 bytes data, client => server
 19:28:33.526600 'TYPE I\r\n'
 19:28:33.526872 Received DATA (on stdin)
 19:28:33.526885 > 33 bytes data, server => client
 19:28:33.526896 '200 I modify TYPE as you wanted\r\n'
 19:28:33.526960 < 21 bytes data, client => server
 19:28:33.526973 'SIZE verifiedserver\r\n'
 19:28:33.527098 Received DATA (on stdin)
 19:28:33.527109 > 8 bytes data, server => client
 19:28:33.527119 '213 17\r\n'
 19:28:33.527173 < 21 bytes data, client => server
 19:28:33.527185 'RETR verifiedserver\r\n'
 19:28:33.527404 Received DATA (on stdin)
 19:28:33.527415 > 29 bytes data, server => client
 19:28:33.527425 '150 Binary junk (17 bytes).\r\n'
 19:28:33.527966 Received DATA (on stdin)
 19:28:33.528066 > 28 bytes data, server => client
 19:28:33.528075 '226 File transfer complete\r\n'
 19:28:33.574768 < 6 bytes data, client => server
 19:28:33.574801 'QUIT\r\n'
 19:28:33.575052 Received DATA (on stdin)
 19:28:33.575063 > 18 bytes data, server => client
 19:28:33.575073 '221 bye bye baby\r\n'
 19:28:33.576273 ====> Client disconnect
 19:28:33.576433 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:33.522216 Running IPv4 version
 19:28:33.522303 Listening on port 36489
 19:28:33.522345 Wrote pid 158046 to log/4/server/ftp_sockdata.pid
 19:28:33.522369 Received PING (on stdin)
 19:28:33.522820 Received PORT (on stdin)
 19:28:33.526623 ====> Client connect
 19:28:33.527452 Received DATA (on stdin)
 19:28:33.527464 > 17 bytes data, server => client
 19:28:33.527474 'WE ROOLZ: 85249\r\n'
 19:28:33.527502 Received DISC (on stdin)
 19:28:33.527514 ====> Client forcibly disconnected
 19:28:33.527668 Received QUIT (on stdin)
 19:28:33.527678 quits
 19:28:33.527740 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY SIZE 502 no such command
 REPLY EPRT 502 no such command
 Testnum 1414
=== End of file server.cmd
=== Start of file valgrind1414
 ==158166== 
 ==158166== Process terminating with default action of signal 4 (SIGILL)
 ==158166==  Illegal opcode at address 0x492B75F
 ==158166==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158166==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158166==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158166==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158166==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158166==    by 0x49908EB: curl_version_info (version.c:600)
 ==158166==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158166==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158166==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1414
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1417 ../src/curl -q --output log/8/curl1417.out  --include --trace-ascii log/8/trace1417 --trace-time http://127.0.0.1:44467/1417 -D log/8/heads1417 > log/8/stdout1417 2> log/8/stderr1417
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1419 ../src/curl -q --output log/20/curl1419.out  --include --trace-ascii log/20/trace1419 --trace-time http://127.0.0.1:33897/1419 --anyauth http://127.0.0.1:33897/14190003 > log/20/stdout1419 2> log/20/stderr1419
test 1421 [Reusing HTTP proxy connection for two different hostnames]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1421 ../src/curl -q --include --trace-ascii log/17/trace1421 --trace-time --proxy http://127.0.0.1:35993 http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990 > log/17/stdout1421 2> log/17/stderr1421

 1421: stdout FAILED:
--- log/17/check-expected	2026-10-15 19:28:36.902600916 +0000
+++ log/17/check-generated	2026-10-15 19:28:36.898928249 +0000
@@ -1,10 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Unknown-header: blrub[LF]
-Content-Length: 6[LF]
-[LF]
--foo-[LF]
-HTTP/1.1 200 OK[LF]
-Unknown-header: blrub[LF]
-Content-Length: 6[LF]
-[LF]
--foo-[LF]
== Contents of files in the log/17/ directory after test 1421
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Unknown-header: blrub[LF]
 Content-Length: 6[LF]
 [LF]
 -foo-[LF]
 HTTP/1.1 200 OK[LF]
 Unknown-header: blrub[LF]
 Content-Length: 6[LF]
 [LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1421 ../src/curl -q --include --trace-ascii log/17/trace1421 --trace-time --proxy http://127.0.0.1:35993 http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990 > log/17/stdout1421 2> log/17/stderr1421
=== End of file commands.log
=== Start of file http_server.log
 19:28:34.808357 ====> Client connect
 19:28:34.808404 accept_connection 3 returned 4
 19:28:34.808427 Read 93 bytes
 19:28:34.808437 Process 93 bytes request
 19:28:34.808450 Got request: GET /verifiedserver HTTP/1.1
 19:28:34.808459 Are-we-friendly question received
 19:28:34.808486 Wrote request (93 bytes) input to log/17/server.input
 19:28:34.808501 Identifying ourselves as friends
 19:28:34.808682 Response sent (56 bytes) and written to log/17/server.response
 19:28:34.808692 special request received, no persistency
 19:28:34.808700 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 40038 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 1421
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1421
 ==158502== 
 ==158502== Process terminating with default action of signal 4 (SIGILL)
 ==158502==  Illegal opcode at address 0x492B75F
 ==158502==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158502==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158502==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158502==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158502==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158502==    by 0x49908EB: curl_version_info (version.c:600)
 ==158502==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158502==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158502==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158502==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1421
test 1417 [HTTP GET with chunked encoding and chunked trailer without CRs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1417 ../src/curl -q --output log/8/curl1417.out  --include --trace-ascii log/8/trace1417 --trace-time http://127.0.0.1:44467/1417 -D log/8/heads1417 > log/8/stdout1417 2> log/8/stderr1417

 1417: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1417
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1417 ../src/curl -q --output log/8/curl1417.out  --include --trace-ascii log/8/trace1417 --trace-time http://127.0.0.1:44467/1417 -D log/8/heads1417 > log/8/stdout1417 2> log/8/stderr1417
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.573287 ====> Client connect
 19:28:33.573321 accept_connection 3 returned 4
 19:28:33.573342 Read 93 bytes
 19:28:33.573352 Process 93 bytes request
 19:28:33.573363 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.573372 Are-we-friendly question received
 19:28:33.573399 Wrote request (93 bytes) input to log/8/server.input
 19:28:33.573414 Identifying ourselves as friends
 19:28:33.573476 Response sent (56 bytes) and written to log/8/server.response
 19:28:33.573486 special request received, no persistency
 19:28:33.573495 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 55328 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1417
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1417
 ==158193== 
 ==158193== Process terminating with default action of signal 4 (SIGILL)
 ==158193==  Illegal opcode at address 0x492B75F
 ==158193==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158193==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158193==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158193==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158193==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158193==    by 0x49908EB: curl_version_info (version.c:600)
 ==158193==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158193==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158193==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1417
test 1419 [HTTP with --anyauth (but no auth!) and connection reuse]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1419 ../src/curl -q --output log/20/curl1419.out  --include --trace-ascii log/20/trace1419 --trace-time http://127.0.0.1:33897/1419 --anyauth http://127.0.0.1:33897/14190003 > log/20/stdout1419 2> log/20/stderr1419

 1419: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1419
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1419 ../src/curl -q --output log/20/curl1419.out  --include --trace-ascii log/20/trace1419 --trace-time http://127.0.0.1:33897/1419 --anyauth http://127.0.0.1:33897/14190003 > log/20/stdout1419 2> log/20/stderr1419
=== End of file commands.log
=== StaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1427 ../src/curl -q --output log/1/curl1427.out  --include --trace-ascii log/1/trace1427 --trace-time http://127.0.0.1:47/1427 -m 184467440737095510 > log/1/stdout1427 2> log/1/stderr1427
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1423 ../src/curl -q --trace-ascii log/13/trace1423 --trace-time http://127.0.0.1:38821/1423 -o log/13/outfile1423 file:///startdir/src/build-curl/tests/log/13/outfile1423 > log/13/stdout1423 2> log/13/stderr1423
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1418 ../src/curl -q --output log/3/curl1418.out  --include --trace-ascii log/3/trace1418 --trace-time http://127.0.0.1:36161/1418 -u testuser:testpass --anyauth http://127.0.0.1:36161/14180003 > log/3/stdout1418 2> log/3/stderr1418
rt of file http_server.log
 19:28:33.737868 ====> Client connect
 19:28:33.737904 accept_connection 3 returned 4
 19:28:33.737928 Read 93 bytes
 19:28:33.737939 Process 93 bytes request
 19:28:33.737953 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.737962 Are-we-friendly question received
 19:28:33.738007 Wrote request (93 bytes) input to log/20/server.input
 19:28:33.738025 Identifying ourselves as friends
 19:28:33.738089 Response sent (56 bytes) and written to log/20/server.response
 19:28:33.738099 special request received, no persistency
 19:28:33.738108 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 57800 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 1419
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1419
 ==158403== 
 ==158403== Process terminating with default action of signal 4 (SIGILL)
 ==158403==  Illegal opcode at address 0x492B75F
 ==158403==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158403==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158403==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158403==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158403==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158403==    by 0x49908EB: curl_version_info (version.c:600)
 ==158403==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158403==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158403==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158403==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1419
test 1427 [too large -m timeout value]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1427 ../src/curl -q --output log/1/curl1427.out  --include --trace-ascii log/1/trace1427 --trace-time http://127.0.0.1:47/1427 -m 184467440737095510 > log/1/stdout1427 2> log/1/stderr1427

curl returned 132, when expecting 2
 1427: exit FAILED
== Contents of files in the log/1/ directory after test 1427
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1427 ../src/curl -q --output log/1/curl1427.out  --include --trace-ascii log/1/trace1427 --trace-time http://127.0.0.1:47/1427 -m 184467440737095510 > log/1/stdout1427 2> log/1/stderr1427
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1427
=== End of file server.cmd
=== Start of file valgrind1427
 ==158874== 
 ==158874== Process terminating with default action of signal 4 (SIGILL)
 ==158874==  Illegal opcode at address 0x492B75F
 ==158874==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158874==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158874==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158874==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158874==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158874==    by 0x49908EB: curl_version_info (version.c:600)
 ==158874==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158874==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158874==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1427
test 1423 [HTTP GET -o fname without Content-Disposition (empty file)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1423 ../src/curl -q --trace-ascii log/13/trace1423 --trace-time http://127.0.0.1:38821/1423 -o log/13/outfile1423 file:///startdir/src/build-curl/tests/log/13/outfile1423 > log/13/stdout1423 2> log/13/stderr1423

 1423: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1423
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1423 ../src/curl -q --trace-ascii log/13/trace1423 --trace-time http://127.0.0.1:38821/1423 -o log/13/outfile1423 file:///startdir/src/build-curl/tests/log/13/outfile1423 > log/13/stdout1423 2> log/13/stderr1423
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.917374 ====> Client connect
 19:28:33.917409 accept_connection 3 returned 4
 19:28:33.917428 Read 93 bytes
 19:28:33.917437 Process 93 bytes request
 19:28:33.917448 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.917456 Are-we-friendly question received
 19:28:33.917480 Wrote request (93 bytes) input to log/13/server.input
 19:28:33.917494 Identifying ourselves as friends
 19:28:33.917548 Response sent (56 bytes) and written to log/13/server.response
 19:28:33.917556 special request received, no persistency
 19:28:33.917563 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 39560 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1423
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1423
 ==158586== 
 ==158586== Process terminating with default action of signal 4 (SIGILL)
 ==158586==  Illegal opcode at address 0x492B75F
 ==158586==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158586==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158586==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158586==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158586==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158586==    by 0x49908EB: curl_version_info (version.c:600)
 ==158586==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158586==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158586==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158586==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1423
test 1418 [HTTP with --anyauth and connection reuse]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1418 ../src/curl -q --output log/3/curl1418.out  --include --trace-ascii log/3/trace1418 --trace-time http://127.0.0.1:36161/1418 -u testuser:testpass --anyauth http://127.0.0.1:36161/14180003 > log/3/stdout1418 2> log/3/stderr1418

 1418: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1418
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1422 ../src/curl -q --trace-ascii log/23/trace1422 --trace-time http://127.0.0.1:44711/1422 -J -O file:///startdir/src/build-curl/tests/log/23/name1422 --output-dir log/23 > log/23/stdout1422 2> log/23/stderr1422
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1420 ../src/curl -q --output log/12/curl1420.out  --include --trace-ascii log/12/trace1420 --trace-time 'imap://127.0.0.1:41651/1420/;MAILINDEX=1' -u user:secret --libcurl log/12/test1420.c > log/12/stdout1420 2> log/12/stderr1420
rind.supp --num-callers=16 --log-file=log/3/valgrind1418 ../src/curl -q --output log/3/curl1418.out  --include --trace-ascii log/3/trace1418 --trace-time http://127.0.0.1:36161/1418 -u testuser:testpass --anyauth http://127.0.0.1:36161/14180003 > log/3/stdout1418 2> log/3/stderr1418
=== End of file commands.log
=== Start of file http_server.log
 19:28:34.721555 ====> Client connect
 19:28:34.721593 accept_connection 3 returned 4
 19:28:34.721616 Read 93 bytes
 19:28:34.721627 Process 93 bytes request
 19:28:34.721639 Got request: GET /verifiedserver HTTP/1.1
 19:28:34.721649 Are-we-friendly question received
 19:28:34.721678 Wrote request (93 bytes) input to log/3/server.input
 19:28:34.721697 Identifying ourselves as friends
 19:28:34.721764 Response sent (56 bytes) and written to log/3/server.response
 19:28:34.721776 special request received, no persistency
 19:28:34.721786 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 59442 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 1418
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1418
 ==158471== 
 ==158471== Process terminating with default action of signal 4 (SIGILL)
 ==158471==  Illegal opcode at address 0x492B75F
 ==158471==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158471==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158471==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158471==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158471==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158471==    by 0x49908EB: curl_version_info (version.c:600)
 ==158471==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158471==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158471==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158471==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1418
test 1422 [HTTP GET with -O -J and Content-Disposition (empty file)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1422 ../src/curl -q --trace-ascii log/23/trace1422 --trace-time http://127.0.0.1:44711/1422 -J -O file:///startdir/src/build-curl/tests/log/23/name1422 --output-dir log/23 > log/23/stdout1422 2> log/23/stderr1422

 1422: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1422
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1422 ../src/curl -q --trace-ascii log/23/trace1422 --trace-time http://127.0.0.1:44711/1422 -J -O file:///startdir/src/build-curl/tests/log/23/name1422 --output-dir log/23 > log/23/stdout1422 2> log/23/stderr1422
=== End of file commands.log
=== Start of file http_server.log
 19:28:33.814722 ====> Client connect
 19:28:33.814766 accept_connection 3 returned 4
 19:28:33.814794 Read 93 bytes
 19:28:33.814804 Process 93 bytes request
 19:28:33.814818 Got request: GET /verifiedserver HTTP/1.1
 19:28:33.814826 Are-we-friendly question received
 19:28:33.814853 Wrote request (93 bytes) input to log/23/server.input
 19:28:33.814870 Identifying ourselves as friends
 19:28:33.814942 Response sent (56 bytes) and written to log/23/server.response
 19:28:33.814952 special request received, no persistency
 19:28:33.814962 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 38122 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1422
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1422
 ==158485== 
 ==158485== Process terminating with default action of signal 4 (SIGILL)
 ==158485==  Illegal opcode at address 0x492B75F
 ==158485==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158485==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158485==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158485==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158485==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158485==    by 0x49908EB: curl_version_info (version.c:600)
 ==158485==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158485==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158485==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1422
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/12/server/imap_server.pid" --logfile "log/12/imap_server.log" --logdir "log/12" --portfile "log/12/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 41651 (log/12/server/imap_server.port)
RUN: IMAP server is PID 158265 port 41651
* pid imap => 158265 158265
test 1420 [--libcurl for IMAP FETCH message]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1420 ../src/curl -q --output log/12/curl1420.out  --include --trace-ascii log/12/trace1420 --trace-time 'imap://127.0.0.1:41651/1420/;MAILINDEX=1' -u user:secret --libcurl log/12/test1420.c > log/12/stdout1420 2> log/12/stderr1420

 1420: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1420
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1420 ../src/curl -q --output log/12/curl1420.out  --include --trace-ascii log/12/trace1420 --trace-time 'imap://127.0.0.1:41651/1420/;MAILINDEX=1' -u user:secret --libcurl log/12/test1420.c > log/12/stdout1420 2> log/12/stderr1420
=== End of file commands.log
=== Start of file imap_server.log
 19:28:34.188824 IMAP server listens on port IPv4/41651
 19:28:34.188982 logged pid 158265 in log/12/server/imap_server.pid
 19:28:34.189043 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:34.785935 Running IPv4 version
 19:28:34.786051 Listening on port 41651
 19:28:34.786106 Wrote pid 158421 to log/12/server/imap_sockfilt.pid
 19:28:34.786144 Wrote port 41651 to log/12/server/imap_server.port
 19:28:34.791327 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 1420
=== End of file server.cmd
=== Start of file valgrind1420
 ==158790== 
 ==158790== Process terminating with default action of signal 4 (SIGILL)
 ==158790==  Illegal opcode at address 0x492CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1428 ../src/curl -q --output log/21/curl1428.out  --include --trace-ascii log/21/trace1428 --trace-time http://test.1428:39881/we/want/that/page/1428 -p -x 127.0.0.1:44633 --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy" --proxy-header " : ignored" > log/21/stdout1428 2> log/21/stderr1428
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1430 ../src/curl -q --output log/9/curl1430.out  --include --trace-ascii log/9/trace1430 --trace-time http://127.0.0.1:43733/1430 > log/9/stdout1430 2> log/9/stderr1430
B75F
 ==158790==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158790==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158790==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158790==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158790==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158790==    by 0x49908EB: curl_version_info (version.c:600)
 ==158790==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158790==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158790==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158790==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1420
test 1428 [HTTP over proxy-tunnel with --proxy-header and --header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1428 ../src/curl -q --output log/21/curl1428.out  --include --trace-ascii log/21/trace1428 --trace-time http://test.1428:39881/we/want/that/page/1428 -p -x 127.0.0.1:44633 --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy" --proxy-header " : ignored" > log/21/stdout1428 2> log/21/stderr1428

 1428: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1428
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1428 ../src/curl -q --output log/21/curl1428.out  --include --trace-ascii log/21/trace1428 --trace-time http://test.1428:39881/we/want/that/page/1428 -p -x 127.0.0.1:44633 --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy" --proxy-header " : ignored" > log/21/stdout1428 2> log/21/stderr1428
=== End of file commands.log
=== Start of file http2_server.log
 19:28:36.146765 ====> Client connect
 19:28:36.146814 accept_connection 3 returned 4
 19:28:36.146836 Read 93 bytes
 19:28:36.146846 Process 93 bytes request
 19:28:36.146870 Got request: GET /verifiedserver HTTP/1.1
 19:28:36.146879 Are-we-friendly question received
 19:28:36.146909 Wrote request (93 bytes) input to log/21/proxy.input
 19:28:36.146930 Identifying ourselves as friends
 19:28:36.147019 Response sent (57 bytes) and written to log/21/proxy.response
 19:28:36.147031 special request received, no persistency
 19:28:36.147039 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:44633...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44633) from 127.0.0.1 port 40308 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44633
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:44633 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 137984
=== End of file http2_verify.out
=== Start of file http_server.log
 19:28:35.114670 ====> Client connect
 19:28:35.114713 accept_connection 3 returned 4
 19:28:35.114735 Read 93 bytes
 19:28:35.114744 Process 93 bytes request
 19:28:35.114758 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.114767 Are-we-friendly question received
 19:28:35.114796 Wrote request (93 bytes) input to log/21/server.input
 19:28:35.114813 Identifying ourselves as friends
 19:28:35.114886 Response sent (56 bytes) and written to log/21/server.response
 19:28:35.114895 special request received, no persistency
 19:28:35.114904 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 43708 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 137984
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1428
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1428
 ==158976== 
 ==158976== Process terminating with default action of signal 4 (SIGILL)
 ==158976==  Illegal opcode at address 0x492B75F
 ==158976==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158976==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158976==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158976==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158976==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158976==    by 0x49908EB: curl_version_info (version.c:600)
 ==158976==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158976==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158976==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158976==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1428
test 1430 [HTTP GET with negative response code]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1430 ../src/curl -q --output log/9/curl1430.out  --include --trace-ascii log/9/trace1430 --trace-time http://127.0.0.1:43733/1430 > log/9/stdout1430 2> log/9/stderr1430

 1430: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1430
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1430 ../src/curl -q --output log/9/curl1430.out  --include --trace-ascii log/9/trace1430 --trace-time http://127.0.0.1:43733/1430 > log/9/stdout1430 2> log/9/stderr1430
=== End of file commands.log
=== Start of file http_server.log
 19:28:35.297391 ====> Client connect
 19:28:35.297430 accept_connection 3 returned 4
 19:28:35.297597 Read 93 bytes
 19:28:35.297612 Process 93 bytes request
 19:28:35.297626 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.297635 Are-we-friendly question received
 19:28:35.297669 Wrote request (93 bytes) input to log/9/server.input
 19:28:35.297687 Identifying ourselves as friends
 19:28:35.297756 Response sent (56 bytes) and written to log/9/server.response
 19:28:35.297767 special request received, no persistency
 19:28:35.297776 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34174 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1430
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1430
 ==159087== 
 ==159087== Process terminating with default action of signal 4 (SIGILL)
 ==159087==  Illegal opcode at address 0x492B75F
 ==159087==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159087==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159087==    by 0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1424 ../src/curl -q --trace-ascii log/5/trace1424 --trace-time http://127.0.0.1:37089/1424 -z "dec 12 11:00:00 1999 GMT" -o log/5/outfile1424 > log/5/stdout1424 2> log/5/stderr1424
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1431 ../src/curl -q --output log/24/curl1431.out  --include --trace-ascii log/24/trace1431 --trace-time http://127.0.0.1:38895/1431 > log/24/stdout1431 2> log/24/stderr1431
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1429 ../src/curl -q --include --trace-ascii log/19/trace1429 --trace-time http://127.0.0.1:37077/1429 --write-out '%{response_code}' > log/19/stdout1429 2> log/19/stderr1429
x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159087==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159087==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159087==    by 0x49908EB: curl_version_info (version.c:600)
 ==159087==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159087==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159087==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159087==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1430
test 1424 [HTTP GET -o fname without Content-Disposition (unmet time condition)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1424 ../src/curl -q --trace-ascii log/5/trace1424 --trace-time http://127.0.0.1:37089/1424 -z "dec 12 11:00:00 1999 GMT" -o log/5/outfile1424 > log/5/stdout1424 2> log/5/stderr1424

 1424: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1424
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1424 ../src/curl -q --trace-ascii log/5/trace1424 --trace-time http://127.0.0.1:37089/1424 -z "dec 12 11:00:00 1999 GMT" -o log/5/outfile1424 > log/5/stdout1424 2> log/5/stderr1424
=== End of file commands.log
=== Start of file http_server.log
 19:28:34.649906 ====> Client connect
 19:28:34.649945 accept_connection 3 returned 4
 19:28:34.649965 Read 93 bytes
 19:28:34.649974 Process 93 bytes request
 19:28:34.649987 Got request: GET /verifiedserver HTTP/1.1
 19:28:34.649995 Are-we-friendly question received
 19:28:34.650022 Wrote request (93 bytes) input to log/5/server.input
 19:28:34.650037 Identifying ourselves as friends
 19:28:34.650263 Response sent (56 bytes) and written to log/5/server.response
 19:28:34.650273 special request received, no persistency
 19:28:34.650282 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 55590 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file outfile1424
 original contents
=== End of file outfile1424
=== Start of file server.cmd
 Testnum 1424
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1424
 ==158781== 
 ==158781== Process terminating with default action of signal 4 (SIGILL)
 ==158781==  Illegal opcode at address 0x492B75F
 ==158781==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==158781==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==158781==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==158781==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==158781==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==158781==    by 0x49908EB: curl_version_info (version.c:600)
 ==158781==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==158781==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==158781==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==158781==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1424
test 1431 [HTTP GET with single-digit response code]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1431 ../src/curl -q --output log/24/curl1431.out  --include --trace-ascii log/24/trace1431 --trace-time http://127.0.0.1:38895/1431 > log/24/stdout1431 2> log/24/stderr1431

 1431: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1431
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1431 ../src/curl -q --output log/24/curl1431.out  --include --trace-ascii log/24/trace1431 --trace-time http://127.0.0.1:38895/1431 > log/24/stdout1431 2> log/24/stderr1431
=== End of file commands.log
=== Start of file http_server.log
 19:28:35.358009 ====> Client connect
 19:28:35.358050 accept_connection 3 returned 4
 19:28:35.358073 Read 93 bytes
 19:28:35.358084 Process 93 bytes request
 19:28:35.358097 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.358106 Are-we-friendly question received
 19:28:35.358136 Wrote request (93 bytes) input to log/24/server.input
 19:28:35.358152 Identifying ourselves as friends
 19:28:35.358230 Response sent (56 bytes) and written to log/24/server.response
 19:28:35.358242 special request received, no persistency
 19:28:35.358251 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43644 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1431
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1431
 ==159151== 
 ==159151== Process terminating with default action of signal 4 (SIGILL)
 ==159151==  Illegal opcode at address 0x492B75F
 ==159151==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159151==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159151==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159151==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159151==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159151==    by 0x49908EB: curl_version_info (version.c:600)
 ==159151==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159151==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159151==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159151==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1431
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1434 ../src/curl -q --output log/22/curl1434.out  --include --trace-ascii log/22/trace1434 --trace-time http://127.0.0.1:35989/1434 -C 100 > log/22/stdout1434 2> log/22/stderr1434
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1432 ../src/curl -q --output log/6/curl1432.out  --include --trace-ascii log/6/trace1432 --trace-time http://127.0.0.1:33935/1432 > log/6/stdout1432 2> log/6/stderr1432
test 1429 [HTTP GET with 999 response code]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1429 ../src/curl -q --include --trace-ascii log/19/trace1429 --trace-time http://127.0.0.1:37077/1429 --write-out '%{response_code}' > log/19/stdout1429 2> log/19/stderr1429

 1429: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:28:38.270471962 +0000
+++ log/19/check-generated	2026-10-15 19:28:38.265631920 +0000
@@ -1,13 +0,0 @@
-HTTP/1.1 999 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
-ETag: "21025-dc7-39462498"[CR][LF]
-Accept-Ranges: bytes[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-[CR][LF]
--foo-[LF]
-999
== Contents of files in the log/19/ directory after test 1429
=== Start of file check-expected
 HTTP/1.1 999 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
 ETag: "21025-dc7-39462498"[CR][LF]
 Accept-Ranges: bytes[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 [CR][LF]
 -foo-[LF]
 999
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1429 ../src/curl -q --include --trace-ascii log/19/trace1429 --trace-time http://127.0.0.1:37077/1429 --write-out '%{response_code}' > log/19/stdout1429 2> log/19/stderr1429
=== End of file commands.log
=== Start of file http_server.log
 19:28:35.267282 ====> Client connect
 19:28:35.267322 accept_connection 3 returned 4
 19:28:35.267347 Read 93 bytes
 19:28:35.267358 Process 93 bytes request
 19:28:35.267372 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.267382 Are-we-friendly question received
 19:28:35.267412 Wrote request (93 bytes) input to log/19/server.input
 19:28:35.267430 Identifying ourselves as friends
 19:28:35.267498 Response sent (57 bytes) and written to log/19/server.response
 19:28:35.267509 special request received, no persistency
 19:28:35.267518 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 39000 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1429
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1429
 ==159060== 
 ==159060== Process terminating with default action of signal 4 (SIGILL)
 ==159060==  Illegal opcode at address 0x492B75F
 ==159060==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159060==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159060==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159060==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159060==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159060==    by 0x49908EB: curl_version_info (version.c:600)
 ==159060==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159060==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1429
test 1434 [HTTP GET resume at exactly the existing file size is fine]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1434 ../src/curl -q --output log/22/curl1434.out  --include --trace-ascii log/22/trace1434 --trace-time http://127.0.0.1:35989/1434 -C 100 > log/22/stdout1434 2> log/22/stderr1434

 1434: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1434
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1434 ../src/curl -q --output log/22/curl1434.out  --include --trace-ascii log/22/trace1434 --trace-time http://127.0.0.1:35989/1434 -C 100 > log/22/stdout1434 2> log/22/stderr1434
=== End of file commands.log
=== Start of file curl1434.out
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file curl1434.out
=== Start of file http_server.log
 19:28:35.561287 ====> Client connect
 19:28:35.561355 accept_connection 3 returned 4
 19:28:35.561519 Read 93 bytes
 19:28:35.561533 Process 93 bytes request
 19:28:35.561547 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.561556 Are-we-friendly question received
 19:28:35.561590 Wrote request (93 bytes) input to log/22/server.input
 19:28:35.561607 Identifying ourselves as friends
 19:28:35.561665 Response sent (56 bytes) and written to log/22/server.response
 19:28:35.561673 special request received, no persistency
 19:28:35.561680 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 39514 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1434
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1434
 ==159333== 
 ==159333== Process terminating with default action of signal 4 (SIGILL)
 ==159333==  Illegal opcode at address 0x492B75F
 ==159333==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159333==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159333==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159333==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159333==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159333==    by 0x49908EB: curl_version_info (version.c:600)
 ==159333==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159333==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159333==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159333==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1434
test 1432 [HTTP GET with 100-digit response code and survive]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1432 ../src/curl -q --output log/6/curl1432.out  --include --trace-ascii log/6/trace1432 --trace-time http://127.0.0.1:33935/1432 > log/6/stdout1432 2> log/6/stderr1432

 1432: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1432
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/stCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1441 ../src/curl -q --include --trace-ascii log/18/trace1441 --trace-time file://localhost//startdir/src/build-curl/tests/log/18/non-existent-file.txt --write-out '%' > log/18/stdout1441 2> log/18/stderr1441
artdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1432 ../src/curl -q --output log/6/curl1432.out  --include --trace-ascii log/6/trace1432 --trace-time http://127.0.0.1:33935/1432 > log/6/stdout1432 2> log/6/stderr1432
=== End of file commands.log
=== Start of file http_server.log
 19:28:35.351348 ====> Client connect
 19:28:35.351395 accept_connection 3 returned 4
 19:28:35.351422 Read 93 bytes
 19:28:35.351431 Process 93 bytes request
 19:28:35.351444 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.351453 Are-we-friendly question received
 19:28:35.351478 Wrote request (93 bytes) input to log/6/server.input
 19:28:35.351494 Identifying ourselves as friends
 19:28:35.351583 Response sent (56 bytes) and written to log/6/server.response
 19:28:35.351594 special request received, no persistency
 19:28:35.351603 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 54660 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1432
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1432
 ==159179== 
 ==159179== Process terminating with default action of signal 4 (SIGILL)
 ==159179==  Illegal opcode at address 0x492B75F
 ==159179==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159179==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159179==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159179==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159179==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159179==    by 0x49908EB: curl_version_info (version.c:600)
 ==159179==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159179==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159179==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159179==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1432
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1438 ../src/curl -q --include --trace-ascii log/11/trace1438 --trace-time http://127.0.0.1:40989/1438 --write-out '%{scheme}' > log/11/stdout1438 2> log/11/stderr1438
test 1441 [Check --write-out with trailing %]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1441 ../src/curl -q --include --trace-ascii log/18/trace1441 --trace-time file://localhost//startdir/src/build-curl/tests/log/18/non-existent-file.txt --write-out '%' > log/18/stdout1441 2> log/18/stderr1441

 1441: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:28:38.649300047 +0000
+++ log/18/check-generated	2026-10-15 19:28:38.645641807 +0000
@@ -1 +0,0 @@
-%
== Contents of files in the log/18/ directory after test 1441
=== Start of file check-expected
 %
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1441 ../src/curl -q --include --trace-ascii log/18/trace1441 --trace-time file://localhost//startdir/src/build-curl/tests/log/18/non-existent-file.txt --write-out '%' > log/18/stdout1441 2> log/18/stderr1441
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1441
=== End of file server.cmd
=== Start of file valgrind1441
 ==159639== 
 ==159639== Process terminating with default action of signal 4 (SIGILL)
 ==159639==  Illegal opcode at address 0x492B75F
 ==159639==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159639==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159639==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159639==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159639==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159639==    by 0x49908EB: curl_version_info (version.c:600)
 ==159639==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159639==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159639==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159639==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1441
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1439 ../src/curl -q --include --trace-ascii log/14/trace1439 --trace-time http://127.0.0.1:45467/1439 --write-out '%{http_version}' > log/14/stdout1439 2> log/14/stderr1439
test 1438 [Check if %{scheme} returns HTTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1438 ../src/curl -q --include --trace-ascii log/11/trace1438 --trace-time http://127.0.0.1:40989/1438 --write-out '%{scheme}' > log/11/stdout1438 2> log/11/stderr1438

 1438: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:28:38.774066631 +0000
+++ log/11/check-generated	2026-10-15 19:28:38.768978348 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Connection: close[LF]
-Content-Type: text/plain[LF]
-[LF]
-testdata[LF]
-http
== Contents of files in the log/11/ directory after test 1438
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Connection: close[LF]
 Content-Type: text/plain[LF]
 [LF]
 testdata[LF]
 http
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1438 ../src/curl -q --include --trace-ascii log/11/trace1438 --trace-time http://127.0.0.1:40989/1438 --write-out '%{scheme}' > log/11/stdout1438 2> log/11/stderr1438
=== End of file commands.log
=== Start of file http_server.log
 19:28:35.923623 ====> Client connect
 19:28:35.923665 accept_connection 3 returned 4
 19:28:35.923690 Read 93 bytes
 19:28:35.923701 Process 93 bytes request
 19:28:35.923714 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.923723 Are-we-friendly question received
 19:28:35.923753 Wrote request (93 bytes) input to log/11/server.input
 19:28:35.923772 Identifying ourselves as friends
 19:28:35.923837 Response sent (56 bytes) and written to log/11/server.response
 19:28:35.923846 special request received, no persistency
 19:28:35.923855 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 51932 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1438
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1438
 ==159469== 
 ==159469== Process terminating with default action of signal 4 (SIGILL)
 ==159469==  Illegal opcode at address 0x492B75F
 ==159469==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159469==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159469==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159469==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159469==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159469==    by 0x49908EB: curl_version_info (version.c:600)
 ==159469==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159469==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1438
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1433 ../src/curl -q --output log/10/curl1433.out  --include --trace-ascii log/10/trace1433 --trace-time http://127.0.0.1:40913/1433 > log/10/stdout1433 2> log/10/stderr1433
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1442 ../src/curl -q --include --trace-ascii log/4/trace1442 --trace-time file://localhost//startdir/src/build-curl/tests/log/4/non-existent-file.txt --write-out='\' > log/4/stdout1442 2> log/4/stderr1442
test 1439 [Check if %{http_version} returns 1.1]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1439 ../src/curl -q --include --trace-ascii log/14/trace1439 --trace-time http://127.0.0.1:45467/1439 --write-out '%{http_version}' > log/14/stdout1439 2> log/14/stderr1439

 1439: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:28:38.813288577 +0000
+++ log/14/check-generated	2026-10-15 19:28:38.808979390 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Connection: close[LF]
-Content-Type: text/plain[LF]
-[LF]
-testdata[LF]
-1.1
== Contents of files in the log/14/ directory after test 1439
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Connection: close[LF]
 Content-Type: text/plain[LF]
 [LF]
 testdata[LF]
 1.1
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1439 ../src/curl -q --include --trace-ascii log/14/trace1439 --trace-time http://127.0.0.1:45467/1439 --write-out '%{http_version}' > log/14/stdout1439 2> log/14/stderr1439
=== End of file commands.log
=== Start of file http_server.log
 19:28:36.041404 ====> Client connect
 19:28:36.041480 accept_connection 3 returned 4
 19:28:36.041509 Read 93 bytes
 19:28:36.041521 Process 93 bytes request
 19:28:36.041534 Got request: GET /verifiedserver HTTP/1.1
 19:28:36.041544 Are-we-friendly question received
 19:28:36.041575 Wrote request (93 bytes) input to log/14/server.input
 19:28:36.041594 Identifying ourselves as friends
 19:28:36.041684 Response sent (56 bytes) and written to log/14/server.response
 19:28:36.041697 special request received, no persistency
 19:28:36.041706 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56246 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1439
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1439
 ==159530== 
 ==159530== Process terminating with default action of signal 4 (SIGILL)
 ==159530==  Illegal opcode at address 0x492B75F
 ==159530==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159530==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159530==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159530==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159530==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159530==    by 0x49908EB: curl_version_info (version.c:600)
 ==159530==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159530==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159530==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159530==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1439
test 1433 [HTTP GET with 100-digit subversion number in response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1433 ../src/curl -q --output log/10/curl1433.out  --include --trace-ascii log/10/trace1433 --trace-time http://127.0.0.1:40913/1433 > log/10/stdout1433 2> log/10/stderr1433

 1433: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1433
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1433 ../src/curl -q --output log/10/curl1433.out  --include --trace-ascii log/10/trace1433 --trace-time http://127.0.0.1:40913/1433 > log/10/stdout1433 2> log/10/stderr1433
=== End of file commands.log
=== Start of file http_server.log
 19:28:35.524300 ====> Client connect
 19:28:35.524343 accept_connection 3 returned 4
 19:28:35.524366 Read 93 bytes
 19:28:35.524376 Process 93 bytes request
 19:28:35.524390 Got request: GET /verifiedserver HTTP/1.1
 19:28:35.524399 Are-we-friendly question received
 19:28:35.524429 Wrote request (93 bytes) input to log/10/server.input
 19:28:35.524445 Identifying ourselves as friends
 19:28:35.524522 Response sent (56 bytes) and written to log/10/server.response
 19:28:35.524533 special request received, no persistency
 19:28:35.524542 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 57314 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1433
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1433
 ==159317== 
 ==159317== Process terminating with default action of signal 4 (SIGILL)
 ==159317==  Illegal opcode at address 0x492B75F
 ==159317==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159317==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159317==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159317==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159317==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159317==    by 0x49908EB: curl_version_info (version.c:600)
 ==159317==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159317==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159317==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159317==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1433
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1435 ../src/curl -q --output log/2/curl1435.out  --include --trace-ascii log/2/trace1435 --trace-time --unix-socket /startdir/src/build-curl/tests/log/2/server/http-uds http://server-interpreted.example.com/1435 > log/2/stdout1435 2> log/2/stderr1435
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1437 ../src/curl -q --output log/15/curl1437.out  --include --trace-ascii log/15/trace1437 --trace-time http://127.0.0.1:40321/1437 -u testuser:testpass --digest > log/15/stdout1437 2> log/15/stderr1437
test 1442 [Check --write-out with trailing \]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1442 ../src/curl -q --include --trace-ascii log/4/trace1442 --trace-time file://localhost//startdir/src/build-curl/tests/log/4/non-existent-file.txt --write-out='\' > log/4/stdout1442 2> log/4/stderr1442

 1442: stdout FAILED:
--- log/4/check-expected	2026-10-15 19:28:38.942662093 +0000
+++ log/4/check-generated	2026-10-15 19:28:38.938982773 +0000
@@ -1 +0,0 @@
-\
== Contents of files in the log/4/ directory after test 1442
=== Start of file check-expected
 \
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1442 ../src/curl -q --include --trace-ascii log/4/trace1442 --trace-time file://localhost//startdir/src/build-curl/tests/log/4/non-existent-file.txt --write-out='\' > log/4/stdout1442 2> log/4/stderr1442
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1442
=== End of file server.cmd
=== Start of file valgrind1442
 ==159709== 
 ==159709== Process terminating with default action of signal 4 (SIGILL)
 ==159709==  Illegal opcode at address 0x492B75F
 ==159709==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159709==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159709==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159709==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159709==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159709==    by 0x49908EB: curl_version_info (version.c:600)
 ==159709==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159709==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159709==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159709==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1442
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/2/server/http_unix_server.pid" --logfile "log/2/http_unix_server.log" --logdir "log/2" --portfile log/2/server/http_unix_server.port --config log/2/server.cmd --unix-socket '/startdir/src/build-curl/tests/log/2/server/http-uds' --srcdir "/startdir/src/curl/tests"
RUN: HTTP-unix server is on PID 159327 port 8999
* pid http-unix => 159327 159327
test 1435 [simple HTTP GET over Unix socket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1435 ../src/curl -q --output log/2/curl1435.out  --include --trace-ascii log/2/trace1435 --trace-time --unix-socket /startdir/src/build-curl/tests/log/2/server/http-uds http://server-interpreted.example.com/1435 > log/2/stdout1435 2> log/2/stderr1435

 1435: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1435
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1435 ../src/curl -q --output log/2/curl1435.out  --include --trace-ascii log/2/trace1435 --trace-time --unix-socket /startdir/src/build-curl/tests/log/2/server/http-uds http://server-interpreted.example.com/1435 > log/2/stdout1435 2> log/2/stderr1435
=== End of file commands.log
=== Start of file http_unix_server.log
 19:28:36.634062 Running HTTP unix version on /startdir/src/build-curl/tests/log/2/server/http-uds
 19:28:36.634159 Wrote pid 159327 to log/2/server/http_unix_server.pid
 19:28:36.634198 Wrote port 8999 to log/2/server/http_unix_server.port
=== End of file http_unix_server.log
=== Start of file server.cmd
 Testnum 1435
=== End of file server.cmd
=== Start of file valgrind1435
 ==159834== 
 ==159834== Process terminating with default action of signal 4 (SIGILL)
 ==159834==  Illegal opcode at address 0x492B75F
 ==159834==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159834==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159834==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159834==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159834==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159834==    by 0x49908EB: curl_version_info (version.c:600)
 ==159834==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159834==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159834==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159834==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1435
test 1437 [HTTP with duplicated WWW-Authenticate parameters]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1437 ../src/curl -q --output log/15/curl1437.out  --include --trace-ascii log/15/trace1437 --trace-time http://127.0.0.1:40321/1437 -u testuser:testpass --digest > log/15/stdout1437 2> log/15/stderr1437

 1437: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1437
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1437 ../src/curl -q --output log/15/curl1437.out  --include --trace-ascii log/15/trace1437 --trace-time http://127.0.0.1:40321/1437 -u testuser:testpass --digest > log/15/stdout1437 2> log/15/stderr1437
=== End of file commands.log
=== Start of file http_server.log
 19:28:36.928183 ====> Client connect
 19:28:36.928219 accept_connection 3 returned 4
 19:28:36.928239 Read 93 bytes
 19:28:36.928249 Process 93 bytes request
 19:28:36.928260 Got request: GET /verifiedserver HTTP/1.1
 19:28:36.928269 Are-we-friendly question received
 19:28:36.928293 Wrote request (93 bytes) input to log/15/server.input
 19:28:36.928310 Identifying ourselves as friends
 19:28:36.928365 Response sent (56 bytes) and written to log/15/server.response
 19:28:36.928374 special request received, no persistency
 19:28:36.928382 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 46342 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1437
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1437
 ==159479== 
 ==159479== Process terminating with default action of signal 4 (SIGILL)
 ==159479==  Illegal opcode at address 0x492B75F
 ==159479==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159479==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159479==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159479==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159479==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159479==    by 0x49908EB: curl_version_info (version.c:600)
 ==159479==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159479==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159479==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159479==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1436 ../src/curl -q --include --trace-ascii log/16/trace1436 --trace-time --unix-socket /startdir/src/build-curl/tests/log/16/server/http-uds http://one.example.com/14360001 http://two.example.com/14360002 http://one.example.com/14360003 > log/16/stdout1436 2> log/16/stderr1436
ind1437
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1440 ../src/curl -q --include --trace-ascii log/7/trace1440 --trace-time file://localhost//startdir/src/build-curl/tests/log/7/non-existent-file.txt --write-out '%{' > log/7/stdout1440 2> log/7/stderr1440
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/16/server/http_unix_server.pid" --logfile "log/16/http_unix_server.log" --logdir "log/16" --portfile log/16/server/http_unix_server.port --config log/16/server.cmd --unix-socket '/startdir/src/build-curl/tests/log/16/server/http-uds' --srcdir "/startdir/src/curl/tests"
RUN: HTTP-unix server is on PID 159360 port 8999
* pid http-unix => 159360 159360
test 1436 [HTTP requests with multiple connections over Unix socket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1436 ../src/curl -q --include --trace-ascii log/16/trace1436 --trace-time --unix-socket /startdir/src/build-curl/tests/log/16/server/http-uds http://one.example.com/14360001 http://two.example.com/14360002 http://one.example.com/14360003 > log/16/stdout1436 2> log/16/stderr1436

 1436: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:28:39.188806321 +0000
+++ log/16/check-generated	2026-10-15 19:28:39.185655645 +0000
@@ -1,15 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Mon, 17 Nov 2014 13:42:47 GMT[LF]
-Content-Length: 6[LF]
-[LF]
-First[LF]
-HTTP/1.1 200 OK[LF]
-Date: Mon, 17 Nov 2014 13:42:48 GMT[LF]
-Content-Length: 7[LF]
-[LF]
-Second[LF]
-HTTP/1.1 200 OK[LF]
-Date: Mon, 17 Nov 2014 13:42:49 GMT[LF]
-Content-Length: 6[LF]
-[LF]
-Third[LF]
== Contents of files in the log/16/ directory after test 1436
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Mon, 17 Nov 2014 13:42:47 GMT[LF]
 Content-Length: 6[LF]
 [LF]
 First[LF]
 HTTP/1.1 200 OK[LF]
 Date: Mon, 17 Nov 2014 13:42:48 GMT[LF]
 Content-Length: 7[LF]
 [LF]
 Second[LF]
 HTTP/1.1 200 OK[LF]
 Date: Mon, 17 Nov 2014 13:42:49 GMT[LF]
 Content-Length: 6[LF]
 [LF]
 Third[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1436 ../src/curl -q --include --trace-ascii log/16/trace1436 --trace-time --unix-socket /startdir/src/build-curl/tests/log/16/server/http-uds http://one.example.com/14360001 http://two.example.com/14360002 http://one.example.com/14360003 > log/16/stdout1436 2> log/16/stderr1436
=== End of file commands.log
=== Start of file http_unix_server.log
 19:28:36.728537 Running HTTP unix version on /startdir/src/build-curl/tests/log/16/server/http-uds
 19:28:36.728624 Wrote pid 159360 to log/16/server/http_unix_server.pid
 19:28:36.728658 Wrote port 8999 to log/16/server/http_unix_server.port
=== End of file http_unix_server.log
=== Start of file server.cmd
 Testnum 1436
=== End of file server.cmd
=== Start of file valgrind1436
 ==159869== 
 ==159869== Process terminating with default action of signal 4 (SIGILL)
 ==159869==  Illegal opcode at address 0x492B75F
 ==159869==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159869==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159869==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159869==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159869==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159869==    by 0x49908EB: curl_version_info (version.c:600)
 ==159869==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159869==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159869==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159869==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1436
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1447 ../src/curl -q --output log/1/curl1447.out  --include --trace-ascii log/1/trace1447 --trace-time --proxy "http://a:b@/x" http://127.0.0.1:47 > log/1/stdout1447 2> log/1/stderr1447
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1443 ../src/curl -q --trace-ascii log/17/trace1443 --trace-time http://127.0.0.1:35993/1443 -O --remote-time --output-dir log/17 > log/17/stdout1443 2> log/17/stderr1443
CMD (256): /usr/bin/perl -e 'exit((stat("log/17/1443"))[9] != 960898200)'
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1445 ../src/curl -q --output log/20/curl1445.out  --include --trace-ascii log/20/trace1445 --trace-time file://localhost/startdir/src/build-curl/tests/log/20/test1445.dir/plainfile.txt --remote-time > log/20/stdout1445 2> log/20/stderr1445
Use of uninitialized value $mtime in numeric ne (!=) at /startdir/src/curl/tests/libtest/test613.pl line 103.
CMD (256): /usr/bin/perl /startdir/src/curl/tests/libtest/test613.pl postprocess /startdir/src/build-curl/tests/log/20/test1445.dir log/20/curl1445.out 946728000
test 1440 [Check --write-out with trailing %{]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1440 ../src/curl -q --include --trace-ascii log/7/trace1440 --trace-time file://localhost//startdir/src/build-curl/tests/log/7/non-existent-file.txt --write-out '%{' > log/7/stdout1440 2> log/7/stderr1440

 1440: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:28:39.306580607 +0000
+++ log/7/check-generated	2026-10-15 19:28:39.302325207 +0000
@@ -1 +0,0 @@
-%{
== Contents of files in the log/7/ directory after test 1440
=== Start of file check-expected
 %{
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1440 ../src/curl -q --include --trace-ascii log/7/trace1440 --trace-time file://localhost//startdir/src/build-curl/tests/log/7/non-existent-file.txt --write-out '%{' > log/7/stdout1440 2> log/7/stderr1440
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1440
=== End of file server.cmd
=== Start of file valgrind1440
 ==159630== 
 ==159630== Process terminating with default action of signal 4 (SIGILL)
 ==159630==  Illegal opcode at address 0x492B75F
 ==159630==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159630==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159630==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159630==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159630==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159630==    by 0x49908EB: curl_version_info (version.c:600)
 ==159630==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159630==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159630==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159630==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1440
test 1447 [Provide illegal proxy name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1447 ../src/curl -q --output log/1/curl1447.out  --include --trace-ascii log/1/trace1447 --trace-time --proxy "http://a:b@/x" http://127.0.0.1:47 > log/1/stdout1447 2> log/1/stderr1447

curl returned 132, when expecting 5
 1447: exit FAILED
== Contents of files in the log/1/ directory after test 1447
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1447 ../src/curl -q --output log/1/curl1447.out  --include --trace-ascii log/1/trace1447 --trace-time --proxy "http://a:b@/x" http://127.0.0.1:47 > log/1/stdout1447 2> log/1/stderr1447
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1447
=== End of file server.cmd
=== Start of file valgrind1447
 ==159888== 
 ==159888== Process terminating with default action of signal 4 (SIGILL)
 ==159888==  Illegal opcode at address 0x492B75F
 ==159888==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159888==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159888==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159888==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159888==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159888==    by 0x49908EB: curl_version_info (version.c:600)
 ==159888==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159888==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159888==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159888==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1447
test 1443 [HTTP GET with -O and --remote-time]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1443 ../src/curl -q --trace-ascii log/17/trace1443 --trace-time http://127.0.0.1:35993/1443 -O --remote-time --output-dir log/17 > log/17/stdout1443 2> log/17/stderr1443
postcheck /usr/bin/perl -e 'exit((stat("log/17/1443"))[9] != 960898200)'
 1443: postcheck FAILED
== Contents of files in the log/17/ directory after test 1443
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1443 ../src/curl -q --trace-ascii log/17/trace1443 --trace-time http://127.0.0.1:35993/1443 -O --remote-time --output-dir log/17 > log/17/stdout1443 2> log/17/stderr1443
=== End of file commands.log
=== Start of file http_server.log
 19:28:37.582353 ====> Client connect
 19:28:37.582389 accept_connection 3 returned 4
 19:28:37.582491 Read 93 bytes
 19:28:37.582504 Process 93 bytes request
 19:28:37.582518 Got request: GET /verifiedserver HTTP/1.1
 19:28:37.582527 Are-we-friendly question received
 19:28:37.582558 Wrote request (93 bytes) input to log/17/server.input
 19:28:37.582575 Identifying ourselves as friends
 19:28:37.582635 Response sent (56 bytes) and written to log/17/server.response
 19:28:37.582644 special request received, no persistency
 19:28:37.582653 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 40048 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1443
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1443
 ==159824== 
 ==159824== Process terminating with default action of signal 4 (SIGILL)
 ==159824==  Illegal opcode at address 0x492B75F
 ==159824==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159824==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159824==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159824==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159824==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159824==    by 0x49908EB: curl_version_info (version.c:600)
 ==159824==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159824==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159824==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159824==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1443
prechecked /usr/bin/perl /startdir/src/curl/tests/libtest/test613.pl prepare /startdir/src/build-curl/tests/log/20/test1445.dir
test 1445 [file:// with --remote-time]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1445 ../src/curl -q --output log/20/curl1445.out  --include --trace-ascii log/20/trace1445 --trace-time file://localhost/startdir/src/build-curl/tests/log/20/test1445.dir/plainfile.txt --remote-time > log/20/stdout1445 2> log/20/stderr1445
postcheck /usr/bin/perl /startdir/src/curl/tests/libtest/test613.pl postprocess /startdir/src/build-curl/tests/log/20/test1445.dir log/20/curl1445.out 946728000
 1445: postcheck FAILED
== Contents of files in the log/20/ directory after test 1445
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1445 ../src/curl -q --output log/20/curl1445.out  --include --tCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1444 ../src/curl -q --output log/8/curl1444.out  --include --trace-ascii log/8/trace1444 --trace-time ftp://127.0.0.1:41879/1444 --remote-time > log/8/stdout1444 2> log/8/stderr1444
CMD (256): /usr/bin/perl -e 'exit((stat("log/8/curl1444.out"))[9] != 1234567890)'
race-ascii log/20/trace1445 --trace-time file://localhost/startdir/src/build-curl/tests/log/20/test1445.dir/plainfile.txt --remote-time > log/20/stdout1445 2> log/20/stderr1445
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1445
=== End of file server.cmd
=== Start of file valgrind1445
 ==159903== 
 ==159903== Process terminating with default action of signal 4 (SIGILL)
 ==159903==  Illegal opcode at address 0x492B75F
 ==159903==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159903==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159903==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159903==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159903==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159903==    by 0x49908EB: curl_version_info (version.c:600)
 ==159903==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159903==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159903==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159903==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1445
test 1444 [FTP with --remote-time]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1444 ../src/curl -q --output log/8/curl1444.out  --include --trace-ascii log/8/trace1444 --trace-time ftp://127.0.0.1:41879/1444 --remote-time > log/8/stdout1444 2> log/8/stderr1444
postcheck /usr/bin/perl -e 'exit((stat("log/8/curl1444.out"))[9] != 1234567890)'
 1444: postcheck FAILED
== Contents of files in the log/8/ directory after test 1444
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1444 ../src/curl -q --output log/8/curl1444.out  --include --trace-ascii log/8/trace1444 --trace-time ftp://127.0.0.1:41879/1444 --remote-time > log/8/stdout1444 2> log/8/stderr1444
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:37.005469 ====> Client connect
 19:28:37.005680 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:37.005979 < "USER anonymous"
 19:28:37.006015 > "331 We are happy you popped in![CR][LF]"
 19:28:37.006184 < "PASS ftp@example.com"
 19:28:37.006213 > "230 Welcome you silly person[CR][LF]"
 19:28:37.006368 < "PWD"
 19:28:37.006400 > "257 "/" is current directory[CR][LF]"
 19:28:37.006566 < "EPSV"
 19:28:37.006593 ====> Passive DATA channel requested by client
 19:28:37.006607 DATA sockfilt for passive data channel starting...
 19:28:37.022046 DATA sockfilt for passive data channel started (pid 159825)
 19:28:37.024057 DATA sockfilt for passive data channel listens on port 40705
 19:28:37.024124 > "229 Entering Passive Mode (|||40705|)[CR][LF]"
 19:28:37.024150 Client has been notified that upcoming DATA connection is awaited on port 40705
 19:28:37.025679 Client connects to port 40705
 19:28:37.025742 ====> Client established passive DATA connection on port 40705
 19:28:37.025907 < "TYPE I"
 19:28:37.025951 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:37.026129 < "SIZE verifiedserver"
 19:28:37.026171 > "213 17[CR][LF]"
 19:28:37.026328 < "RETR verifiedserver"
 19:28:37.026366 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:37.026463 =====> Closing passive DATA connection...
 19:28:37.026481 Server disconnects passive DATA connection
 19:28:37.026607 Server disconnected passive DATA connection
 19:28:37.026629 DATA sockfilt for passive data channel quits (pid 159825)
 19:28:37.026949 DATA sockfilt for passive data channel quit (pid 159825)
 19:28:37.026974 =====> Closed passive DATA connection
 19:28:37.027003 > "226 File transfer complete[CR][LF]"
 19:28:37.072300 < "QUIT"
 19:28:37.072358 > "221 bye bye baby[CR][LF]"
 19:28:37.073655 MAIN sockfilt said DISC
 19:28:37.073698 ====> Client disconnected
 19:28:37.073791 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:36.607918 ====> Client connect
 19:28:36.608280 Received DATA (on stdin)
 19:28:36.608294 > 146 bytes data, server => client
 19:28:36.608306 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:36.608316 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:36.608325 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:36.608418 < 16 bytes data, client => server
 19:28:36.608430 'USER anonymous\r\n'
 19:28:36.608605 Received DATA (on stdin)
 19:28:36.608617 > 33 bytes data, server => client
 19:28:36.608627 '331 We are happy you popped in!\r\n'
 19:28:36.608681 < 22 bytes data, client => server
 19:28:36.608692 'PASS ftp@example.com\r\n'
 19:28:36.608799 Received DATA (on stdin)
 19:28:36.608810 > 30 bytes data, server => client
 19:28:36.608820 '230 Welcome you silly person\r\n'
 19:28:36.608870 < 5 bytes data, client => server
 19:28:36.608881 'PWD\r\n'
 19:28:36.608986 Received DATA (on stdin)
 19:28:36.608997 > 30 bytes data, server => client
 19:28:36.609008 '257 "/" is current directory\r\n'
 19:28:36.609071 < 6 bytes data, client => server
 19:28:36.609081 'EPSV\r\n'
 19:28:36.627921 Received DATA (on stdin)
 19:28:36.627959 > 39 bytes data, server => client
 19:28:36.627971 '229 Entering Passive Mode (|||40705|)\r\n'
 19:28:36.628360 < 8 bytes data, client => server
 19:28:36.628374 'TYPE I\r\n'
 19:28:36.628540 Received DATA (on stdin)
 19:28:36.628551 > 33 bytes data, server => client
 19:28:36.628562 '200 I modify TYPE as you wanted\r\n'
 19:28:36.628624 < 21 bytes data, client => server
 19:28:36.628634 'SIZE verifiedserver\r\n'
 19:28:36.628757 Received DATA (on stdin)
 19:28:36.628768 > 8 bytes data, server => client
 19:28:36.628778 '213 17\r\n'
 19:28:36.628831 < 21 bytes data, client => server
 19:28:36.628841 'RETR verifiedserver\r\n'
 19:28:36.629592 Received DATA (on stdin)
 19:28:36.629605 > 29 bytes data, server => client
 19:28:36.629615 '150 Binary junk (17 bytes).\r\n'
 19:28:36.629638 Received DATA (on stdin)
 19:28:36.629647 > 28 bytes data, server => client
 19:28:36.629657 '226 File transfer complete\r\n'
 19:28:36.674697 < 6 bytes data, client => server
 19:28:36.674729 'QUIT\r\n'
 19:28:36.674968 Received DATA (on stdin)
 19:28:36.674981 > 18 bytes data, server => client
 19:28:36.674991 '221 bye bye baby\r\n'
 19:28:36.676180 ====> Client disconnect
 19:28:36.676378 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:37.615476 Running IPv4 version
 19:28:37.615567 Listening on port 40705
 19:28:37.618398 Wrote pid 159825 to log/8/server/ftp_sockdata.pid
 19:28:37.618427 Received PING (on stdin)
 19:28:37.626509 Received PORT (on stdin)
 19:28:37.628194 ====> Client connect
 19:28:37.629073 Received DATA (on stdin)
 19:28:37.629089 > 17 bytes data, server => client
 19:28:37.629099 'WE ROOLZ: 84824\r\n'
 19:28:37.629129 Received DISC (on stdin)
 19:28:37.629141 ====> Client forcibly disconnected
 19:28:37.629225 Received QUIT (on stdin)
 19:28:37.629235 quits
 19:28:37.629311 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1444
=== End of file server.cmd
=== Start of file valgrind1444
 ==159879== 
 ==159879== Process terminating with default action of signal 4 (SIGILL)
 ==159879==  Illegal opcode at address 0x492B75F
 ==159879==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==159879==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==159879==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==159879==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==159879==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==159879==    by 0x49908EB: curl_version_info (version.c:600)
 ==159879==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==159879==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==159879==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==159879==    by 0x4003269: main (tool_main.c:195)
=== End of file valgriCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1448 ../src/curl -q --include --trace-ascii log/13/trace1448 --trace-time http://åäö.se:38821/1448 --resolve xn--4cab6c.se:38821:127.0.0.1 -L --connect-to 127.0.0.1:38821:127.0.0.1:38821 > log/13/stdout1448 2> log/13/stderr1448
nd1444
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1453 ../src/curl -q --output log/21/curl1453.out  --include --trace-ascii log/21/trace1453 --trace-time tftp://127.0.0.1:47/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz > log/21/stdout1453 2> log/21/stderr1453
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1477.pl /startdir/src/curl/tests/.. /startdir/src/build-curl/tests/.. > log/13/stdout1477 2> log/13/stderr1477
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/managen -d /startdir/src/curl/tests/../docs/cmdline-opts -I /startdir/src/curl/tests/../include listhelp /startdir/src/curl/tests/../docs/cmdline-opts/*.md > log/21/stdout1478 2> log/21/stderr1478
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1449 ../src/curl -q --output log/3/curl1449.out  --include --trace-ascii log/3/trace1449 --trace-time ftp://127.0.0.1:42249/1449 -r 36893488147419103232- > log/3/stdout1449 2> log/3/stderr1449
setenv LC_ALL = C.UTF-8
test 1448 [Redirect following to UTF-8 IDN hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1448 ../src/curl -q --include --trace-ascii log/13/trace1448 --trace-time http://åäö.se:38821/1448 --resolve xn--4cab6c.se:38821:127.0.0.1 -L --connect-to 127.0.0.1:38821:127.0.0.1:38821 > log/13/stdout1448 2> log/13/stderr1448

 1448: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:28:39.933390291 +0000
+++ log/13/check-generated	2026-10-15 19:28:39.929007441 +0000
@@ -1,12 +0,0 @@
-HTTP/1.1 302 OK swsbounce[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Content-Type: text/plain[LF]
-Location: http://%c3%a5%c3%a4%c3%b6.se:38821/14480001[LF]
-[LF]
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 3[LF]
-Content-Type: text/plain; charset=us-ascii[LF]
-[LF]
-OK[LF]
== Contents of files in the log/13/ directory after test 1448
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Content-Type: text/plain[LF]
 Location: http://%c3%a5%c3%a4%c3%b6.se:38821/14480001[LF]
 [LF]
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 3[LF]
 Content-Type: text/plain; charset=us-ascii[LF]
 [LF]
 OK[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1448 ../src/curl -q --include --trace-ascii log/13/trace1448 --trace-time http://åäö.se:38821/1448 --resolve xn--4cab6c.se:38821:127.0.0.1 -L --connect-to 127.0.0.1:38821:127.0.0.1:38821 > log/13/stdout1448 2> log/13/stderr1448
=== End of file commands.log
=== Start of file http_server.log
 19:28:36.877999 ====> Client connect
 19:28:36.878044 accept_connection 3 returned 4
 19:28:36.878069 Read 93 bytes
 19:28:36.878079 Process 93 bytes request
 19:28:36.878092 Got request: GET /verifiedserver HTTP/1.1
 19:28:36.878100 Are-we-friendly question received
 19:28:36.878126 Wrote request (93 bytes) input to log/13/server.input
 19:28:36.878142 Identifying ourselves as friends
 19:28:36.878230 Response sent (56 bytes) and written to log/13/server.response
 19:28:36.878239 special request received, no persistency
 19:28:36.878247 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 39562 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1448
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1448
 ==160148== 
 ==160148== Process terminating with default action of signal 4 (SIGILL)
 ==160148==  Illegal opcode at address 0x492B75F
 ==160148==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160148==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160148==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160148==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160148==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160148==    by 0x49908EB: curl_version_info (version.c:600)
 ==160148==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160148==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160148==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160148==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1448
test 1453 [Too long tftp filename]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1453 ../src/curl -q --output log/21/curl1453.out  --include --trace-ascii log/21/trace1453 --trace-time tftp://127.0.0.1:47/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz > log/21/stdout1453 2> log/21/stderr1453

curl returned 132, when expecting 71
 1453: exit FAILED
== Contents of files in the log/21/ directory after test 1453
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1453 ../src/curl -q --output log/21/curl1453.out  --include --trace-ascii log/21/trace1453 --trace-time tftp://127.0.0.1:47/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz > log/21/stdout1453 2> log/21/stderr1453
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1453
=== End of file server.cmd
=== Start of file valgrind1453
 ==160270== 
 ==160270== Process terminating with default action of signal 4 (SIGILL)
 ==160270==  Illegal opcode at address 0x492B75F
 ==160270==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160270==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160270==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160270==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160270==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160270==    by 0x49908EB: curl_version_info (version.c:600)
 ==160270==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160270==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160270==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160270==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1453
test 1477 [Verify that error codes in headers and libcurl-errors.3 are in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1477.pl /startdir/src/curl/tests/.. /startdir/src/build-curl/tests/.. > log/13/stdout1477 2> log/13/stderr1477
 valgrind SKIPPED
s------e--- OK (1362 out of 1890, remaining: 01:03, took 0.039s, duration: 02:43)
test 1478 [src/tool_listhelp.c is in sync with docs/cmdline-opts]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/managen -d /startdir/src/curl/tests/../docs/cmdline-opts -I /startdir/src/curl/tests/../include listhelp /startdir/src/curl/tests/../docs/cmdline-opts/*.md > log/21/stdout1478 2> log/21/stderr1478
 valgrind SKIPPED
s------e--- OK (1363 out of 1890, remaining: 01:03, took 0.167s, duration: 02:43)
test 1449 [FTP download range with integer overflow]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1449 ../src/curl -q --output log/3/curl1449.out  --include --trace-ascii log/3/trace1449 --trace-time ftp://127.0.0.1:42249/1449 -r 36893488147419103232- > log/3/stdout1449 2> log/3/stderr1449

 1449: protocol FACMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1457 ../src/curl -q --include --trace-ascii log/24/trace1457 --trace-time http://127.0.0.1:38895/1457 --silent --write-out 'line1%{stderr}line2%{stdout}line3' > log/24/stdout1457 2> log/24/stderr1457
ILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1449
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1449 ../src/curl -q --output log/3/curl1449.out  --include --trace-ascii log/3/trace1449 --trace-time ftp://127.0.0.1:42249/1449 -r 36893488147419103232- > log/3/stdout1449 2> log/3/stderr1449
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:37.377318 ====> Client connect
 19:28:37.377522 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:37.377784 < "USER anonymous"
 19:28:37.377817 > "331 We are happy you popped in![CR][LF]"
 19:28:37.377977 < "PASS ftp@example.com"
 19:28:37.378001 > "230 Welcome you silly person[CR][LF]"
 19:28:37.378146 < "PWD"
 19:28:37.378178 > "257 "/" is current directory[CR][LF]"
 19:28:37.378320 < "EPSV"
 19:28:37.378343 ====> Passive DATA channel requested by client
 19:28:37.378357 DATA sockfilt for passive data channel starting...
 19:28:37.392016 DATA sockfilt for passive data channel started (pid 160176)
 19:28:37.392205 DATA sockfilt for passive data channel listens on port 34127
 19:28:37.392262 > "229 Entering Passive Mode (|||34127|)[CR][LF]"
 19:28:37.392289 Client has been notified that upcoming DATA connection is awaited on port 34127
 19:28:37.395370 Client connects to port 34127
 19:28:37.395407 ====> Client established passive DATA connection on port 34127
 19:28:37.395513 < "TYPE I"
 19:28:37.395555 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:37.402074 < "SIZE verifiedserver"
 19:28:37.402123 > "213 17[CR][LF]"
 19:28:37.402293 < "RETR verifiedserver"
 19:28:37.402328 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:37.402426 =====> Closing passive DATA connection...
 19:28:37.402444 Server disconnects passive DATA connection
 19:28:37.405465 Server disconnected passive DATA connection
 19:28:37.405498 DATA sockfilt for passive data channel quits (pid 160176)
 19:28:37.405812 DATA sockfilt for passive data channel quit (pid 160176)
 19:28:37.405840 =====> Closed passive DATA connection
 19:28:37.405874 > "226 File transfer complete[CR][LF]"
 19:28:37.449039 < "QUIT"
 19:28:37.449093 > "221 bye bye baby[CR][LF]"
 19:28:37.450296 MAIN sockfilt said DISC
 19:28:37.450335 ====> Client disconnected
 19:28:37.450419 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:37.979765 ====> Client connect
 19:28:37.980109 Received DATA (on stdin)
 19:28:37.980123 > 146 bytes data, server => client
 19:28:37.980134 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:37.980145 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:37.980154 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:37.980225 < 16 bytes data, client => server
 19:28:37.980236 'USER anonymous\r\n'
 19:28:37.980397 Received DATA (on stdin)
 19:28:37.980408 > 33 bytes data, server => client
 19:28:37.980418 '331 We are happy you popped in!\r\n'
 19:28:37.980469 < 22 bytes data, client => server
 19:28:37.980479 'PASS ftp@example.com\r\n'
 19:28:37.980576 Received DATA (on stdin)
 19:28:37.980586 > 30 bytes data, server => client
 19:28:37.980595 '230 Welcome you silly person\r\n'
 19:28:37.980644 < 5 bytes data, client => server
 19:28:37.980654 'PWD\r\n'
 19:28:37.980752 Received DATA (on stdin)
 19:28:37.980762 > 30 bytes data, server => client
 19:28:37.980772 '257 "/" is current directory\r\n'
 19:28:37.980820 < 6 bytes data, client => server
 19:28:37.980829 'EPSV\r\n'
 19:28:37.995800 Received DATA (on stdin)
 19:28:37.995823 > 39 bytes data, server => client
 19:28:37.995834 '229 Entering Passive Mode (|||34127|)\r\n'
 19:28:37.996104 < 8 bytes data, client => server
 19:28:37.996119 'TYPE I\r\n'
 19:28:37.998740 Received DATA (on stdin)
 19:28:37.998757 > 33 bytes data, server => client
 19:28:37.998768 '200 I modify TYPE as you wanted\r\n'
 19:28:37.998826 < 21 bytes data, client => server
 19:28:37.998836 'SIZE verifiedserver\r\n'
 19:28:38.004701 Received DATA (on stdin)
 19:28:38.004714 > 8 bytes data, server => client
 19:28:38.004724 '213 17\r\n'
 19:28:38.004785 < 21 bytes data, client => server
 19:28:38.004795 'RETR verifiedserver\r\n'
 19:28:38.005023 Received DATA (on stdin)
 19:28:38.005034 > 29 bytes data, server => client
 19:28:38.005044 '150 Binary junk (17 bytes).\r\n'
 19:28:38.008430 Received DATA (on stdin)
 19:28:38.008444 > 28 bytes data, server => client
 19:28:38.008453 '226 File transfer complete\r\n'
 19:28:38.051429 < 6 bytes data, client => server
 19:28:38.051464 'QUIT\r\n'
 19:28:38.051671 Received DATA (on stdin)
 19:28:38.051682 > 18 bytes data, server => client
 19:28:38.051692 '221 bye bye baby\r\n'
 19:28:38.052809 ====> Client disconnect
 19:28:38.052993 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:37.989251 Running IPv4 version
 19:28:37.989364 Listening on port 34127
 19:28:37.989416 Wrote pid 160176 to log/3/server/ftp_sockdata.pid
 19:28:37.989444 Received PING (on stdin)
 19:28:37.994665 Received PORT (on stdin)
 19:28:37.997890 ====> Client connect
 19:28:38.007888 Received DATA (on stdin)
 19:28:38.007910 > 17 bytes data, server => client
 19:28:38.007922 'WE ROOLZ: 84710\r\n'
 19:28:38.007965 Received DISC (on stdin)
 19:28:38.007983 ====> Client forcibly disconnected
 19:28:38.008089 Received QUIT (on stdin)
 19:28:38.008102 quits
 19:28:38.008188 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1449
=== End of file server.cmd
=== Start of file valgrind1449
 ==160199== 
 ==160199== Process terminating with default action of signal 4 (SIGILL)
 ==160199==  Illegal opcode at address 0x492B75F
 ==160199==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160199==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160199==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160199==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160199==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160199==    by 0x49908EB: curl_version_info (version.c:600)
 ==160199==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160199==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160199==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160199==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1449
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1458 ../src/curl -q --output log/19/curl1458.out  --include --trace-ascii log/19/trace1458 --trace-time --resolve *:37077:127.0.0.1 http://example.com:37077/1458 > log/19/stdout1458 2> log/19/stderr1458
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1455 ../src/curl -q --output log/9/curl1455.out  --include --trace-ascii log/9/trace1455 --trace-time http://127.0.0.1:43733/1455 --haproxy-protocol -H "Testno: 1455" > log/9/stdout1455 2> log/9/stderr1455
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1464 ../src/curl -q --include --trace-ascii log/11/trace1464 --trace-time --help fIlE > log/11/stdout1464 2> log/11/stderr1464
test 1457 [Check if %{stderr} and %{stdout} switch between stdout and stderr.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1457 ../src/curl -q --include --trace-ascii log/24/trace1457 --trace-time http://127.0.0.1:38895/1457 --silent --write-out 'line1%{stderr}line2%{stdout}line3' > log/24/stdout1457 2> log/24/stderr1457

 1457: stdout FAILED:
--- log/24/check-expected	2026-10-15 19:28:40.385962162 +0000
+++ log/24/check-generated	2026-10-15 19:28:40.382351592 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Connection: close[LF]
-Content-Type: text/plain[LF]
-[LF]
-testdata[LF]
-line1line3
== Contents of files in the log/24/ directory after test 1457
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Connection: close[LF]
 Content-Type: text/plain[LF]
 [LF]
 testdata[LF]
 line1line3
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1457 ../src/curl -q --include --trace-ascii log/24/trace1457 --trace-time http://127.0.0.1:38895/1457 --silent --write-out 'line1%{stderr}line2%{stdout}line3' > log/24/stdout1457 2> log/24/stderr1457
=== End of file commands.log
=== Start of file http_server.log
 19:28:37.745011 ====> Client connect
 19:28:37.745051 accept_connection 3 returned 4
 19:28:37.745075 Read 93 bytes
 19:28:37.745084 Process 93 bytes request
 19:28:37.745097 Got request: GET /verifiedserver HTTP/1.1
 19:28:37.745105 Are-we-friendly question received
 19:28:37.745131 Wrote request (93 bytes) input to log/24/server.input
 19:28:37.745148 Identifying ourselves as friends
 19:28:37.745207 Response sent (56 bytes) and written to log/24/server.response
 19:28:37.745216 special request received, no persistency
 19:28:37.745224 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43652 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1457
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1457
 ==160394== 
 ==160394== Process terminating with default action of signal 4 (SIGILL)
 ==160394==  Illegal opcode at address 0x492B75F
 ==160394==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160394==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160394==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160394==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160394==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160394==    by 0x49908EB: curl_version_info (version.c:600)
 ==160394==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160394==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160394==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160394==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1457
test 1458 [HTTP with wildcard --resolve]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1458 ../src/curl -q --output log/19/curl1458.out  --include --trace-ascii log/19/trace1458 --trace-time --resolve *:37077:127.0.0.1 http://example.com:37077/1458 > log/19/stdout1458 2> log/19/stderr1458

 1458: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1458
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1458 ../src/curl -q --output log/19/curl1458.out  --include --trace-ascii log/19/trace1458 --trace-time --resolve *:37077:127.0.0.1 http://example.com:37077/1458 > log/19/stdout1458 2> log/19/stderr1458
=== End of file commands.log
=== Start of file http_server.log
 19:28:37.933091 ====> Client connect
 19:28:37.933133 accept_connection 3 returned 4
 19:28:37.933248 Read 93 bytes
 19:28:37.933263 Process 93 bytes request
 19:28:37.933276 Got request: GET /verifiedserver HTTP/1.1
 19:28:37.933285 Are-we-friendly question received
 19:28:37.933319 Wrote request (93 bytes) input to log/19/server.input
 19:28:37.933337 Identifying ourselves as friends
 19:28:37.933403 Response sent (57 bytes) and written to log/19/server.response
 19:28:37.933415 special request received, no persistency
 19:28:37.933424 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 39006 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1458
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1458
 ==160508== 
 ==160508== Process terminating with default action of signal 4 (SIGILL)
 ==160508==  Illegal opcode at address 0x492B75F
 ==160508==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160508==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160508==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160508==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160508==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160508==    by 0x49908EB: curl_version_info (version.c:600)
 ==160508==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160508==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160508==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160508==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1458
test 1455 [HTTP GET when PROXY Protocol enabled]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1455 ../src/curl -q --output log/9/curl1455.out  --include --trace-ascii log/9/trace1455 --trace-time http://127.0.0.1:43733/1455 --haproxy-protocol -H "Testno: 1455" > log/9/stdout1455 2> log/9/stderr1455

 1455: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1455
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1455 ../src/curl -q --output log/9/curl1455.out  --include --trace-ascii log/9/trace1455 --trace-time http://127.0.0.1:43733/1455 --haproxy-protocol -H "Testno: 1455" > log/9/stdout1455 2> log/9/stderr1455
=== End of file commands.log
=== Start of file http_server.log
 19:28:37.667927 ====> Client connect
 19:28:37.667967 accept_connection 3 returned 4
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1463 ../src/curl -q --include --trace-ascii log/18/trace1463 --trace-time --help file > log/18/stdout1463 2> log/18/stderr1463
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1462 ../src/curl -q --include --trace-ascii log/6/trace1462 --trace-time --help sdfafdsfadsfsd > log/6/stdout1462 2> log/6/stderr1462
 19:28:37.667991 Read 93 bytes
 19:28:37.668000 Process 93 bytes request
 19:28:37.668016 Got request: GET /verifiedserver HTTP/1.1
 19:28:37.668027 Are-we-friendly question received
 19:28:37.668056 Wrote request (93 bytes) input to log/9/server.input
 19:28:37.668074 Identifying ourselves as friends
 19:28:37.668147 Response sent (56 bytes) and written to log/9/server.response
 19:28:37.668159 special request received, no persistency
 19:28:37.668168 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34190 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1455
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1455
 ==160360== 
 ==160360== Process terminating with default action of signal 4 (SIGILL)
 ==160360==  Illegal opcode at address 0x492B75F
 ==160360==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160360==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160360==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160360==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160360==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160360==    by 0x49908EB: curl_version_info (version.c:600)
 ==160360==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160360==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160360==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160360==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1455
test 1462 [curl invalid category --help]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1462 ../src/curl -q --include --trace-ascii log/6/trace1462 --trace-time --help sdfafdsfadsfsd > log/6/stdout1462 2> log/6/stderr1462

 1462: stdout FAILED:
--- log/6/check-expected	2026-10-15 19:28:40.863744927 +0000
+++ log/6/check-generated	2026-10-15 19:28:40.859029539 +0000
@@ -1,28 +0,0 @@
-Unknown category provided, here is a list of all categories:[CR][LF]
-[CR][LF]
- auth        Authentication methods[CR][LF]
- connection  Manage connections[CR][LF]
- curl        The command line tool itself[CR][LF]
- deprecated  Legacy[CR][LF]
- dns         Names and resolving[CR][LF]
- file        FILE protocol[CR][LF]
- ftp         FTP protocol[CR][LF]
- global      Global options[CR][LF]
- http        HTTP and HTTPS protocol[CR][LF]
- imap        IMAP protocol[CR][LF]
- ldap        LDAP protocol[CR][LF]
- mqtt        MQTT protocol[CR][LF]
- output      File system output[CR][LF]
- pop3        POP3 protocol[CR][LF]
- post        HTTP POST specific[CR][LF]
- proxy       Options for proxies[CR][LF]
- scp         SCP protocol[CR][LF]
- sftp        SFTP protocol[CR][LF]
- smtp        SMTP protocol[CR][LF]
- ssh         SSH protocol[CR][LF]
- telnet      TELNET protocol[CR][LF]
- tftp        TFTP protocol[CR][LF]
- timeout     Timeouts and delays[CR][LF]
- tls         TLS/SSL related[CR][LF]
- upload      Upload, sending data[CR][LF]
- verbose     Tracing, logging etc[CR][LF]
== Contents of files in the log/6/ directory after test 1462
=== Start of file check-expected
 Unknown category provided, here is a list of all categories:[CR][LF]
 [CR][LF]
  auth        Authentication methods[CR][LF]
  connection  Manage connections[CR][LF]
  curl        The command line tool itself[CR][LF]
  deprecated  Legacy[CR][LF]
  dns         Names and resolving[CR][LF]
  file        FILE protocol[CR][LF]
  ftp         FTP protocol[CR][LF]
  global      Global options[CR][LF]
  http        HTTP and HTTPS protocol[CR][LF]
  imap        IMAP protocol[CR][LF]
  ldap        LDAP protocol[CR][LF]
  mqtt        MQTT protocol[CR][LF]
  output      File system output[CR][LF]
  pop3        POP3 protocol[CR][LF]
  post        HTTP POST specific[CR][LF]
  proxy       Options for proxies[CR][LF]
  scp         SCP protocol[CR][LF]
  sftp        SFTP protocol[CR][LF]
  smtp        SMTP protocol[CR][LF]
  ssh         SSH protocol[CR][LF]
  telnet      TELNET protocol[CR][LF]
  tftp        TFTP protocol[CR][LF]
  timeout     Timeouts and delays[CR][LF]
  tls         TLS/SSL related[CR][LF]
  upload      Upload, sending data[CR][LF]
  verbose     Tracing, logging etc[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1462 ../src/curl -q --include --trace-ascii log/6/trace1462 --trace-time --help sdfafdsfadsfsd > log/6/stdout1462 2> log/6/stderr1462
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1462
=== End of file server.cmd
=== Start of file valgrind1462
 ==160659== 
 ==160659== Process terminating with default action of signal 4 (SIGILL)
 ==160659==  Illegal opcode at address 0x492B75F
 ==160659==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160659==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160659==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160659==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160659==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160659==    by 0x49908EB: curl_version_info (version.c:600)
 ==160659==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160659==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160659==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1462
test 1464 [curl file category --help with lower/upper mix]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1464 ../src/curl -q --include --trace-ascii log/11/trace1464 --trace-time --help fIlE > log/11/stdout1464 2> log/11/stderr1464

 1464: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:28:40.890196363 +0000
+++ log/11/check-generated	2026-10-15 19:28:40.885696837 +0000
@@ -1,5 +0,0 @@
-file: FILE protocol[CR][LF]
-     --create-file-mode <mode>  File mode for created files[CR][LF]
- -I, --head                     Show document info only[CR][LF]
- -l, --list-only                List only mode[CR][LF]
- -r, --range <range>            Retrieve only the bytes within RANGE[CR][LF]
== Contents of files in the log/11/ directory after test 1464
=== Start of file check-expected
 file: FILE protocol[CR][LF]
      --create-file-mode <mode>  File mode for created files[CR][LF]
  -I, --head                     Show document info only[CR][LF]
  -l, --list-only                List only mode[CR][LF]
  -r, --range <range>            Retrieve only the bytes within RANGE[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1464 ../src/curl -q --include --trace-ascii log/11/trace1464 --trace-time --help fIlE > log/11/stdout1464 2> log/11/stderr1464
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1464
=== End of file server.cmd
=== Start of file valgrind1464
 ==160799== 
 ==160799== Process terminating with default action of signal 4 (SIGILL)
 ==160799==  Illegal opcode at address 0x492B75F
 ==160799==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160799==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160799==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160799==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160799==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160799==    by 0x49908EB: curl_version_info (version.c:600)
 ==160799==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160799==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160799==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160799==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1464
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1450 ../src/curl -q --output log/23/curl1450.out  --include --trace-ascii log/23/trace1450 --trace-time dict://127.0.0.1:35221/d:basic > log/23/stdout1450 2> log/23/stderr1450
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1486.pl /startdir/src/curl/tests > log/11/stdout1486 2> log/11/stderr1486
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1488.pl /startdir/src/curl/tests/.. ../include/curl /startdir/src/curl/tests/../docs/VERSIONS.md > log/6/stdout1488 2> log/6/stderr1488
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1452 ../src/curl -q --include --trace-ascii log/12/trace1452 --trace-time telnet://127.0.0.1:39529 --upload-file - <log/12/stdin-for-1452 > log/12/stdout1452 2> log/12/stderr1452
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1456 ../src/curl -q --output log/5/curl1456.out  --include --trace-ascii log/5/trace1456 --trace-time -g "http://[::1]:34433/1456" --haproxy-protocol > log/5/stdout1456 2> log/5/stderr1456
test 1463 [curl file category --help]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1463 ../src/curl -q --include --trace-ascii log/18/trace1463 --trace-time --help file > log/18/stdout1463 2> log/18/stderr1463

 1463: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:28:40.903707790 +0000
+++ log/18/check-generated	2026-10-15 19:28:40.899030486 +0000
@@ -1,5 +0,0 @@
-file: FILE protocol[CR][LF]
-     --create-file-mode <mode>  File mode for created files[CR][LF]
- -I, --head                     Show document info only[CR][LF]
- -l, --list-only                List only mode[CR][LF]
- -r, --range <range>            Retrieve only the bytes within RANGE[CR][LF]
== Contents of files in the log/18/ directory after test 1463
=== Start of file check-expected
 file: FILE protocol[CR][LF]
      --create-file-mode <mode>  File mode for created files[CR][LF]
  -I, --head                     Show document info only[CR][LF]
  -l, --list-only                List only mode[CR][LF]
  -r, --range <range>            Retrieve only the bytes within RANGE[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1463 ../src/curl -q --include --trace-ascii log/18/trace1463 --trace-time --help file > log/18/stdout1463 2> log/18/stderr1463
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1463
=== End of file server.cmd
=== Start of file valgrind1463
 ==160741== 
 ==160741== Process terminating with default action of signal 4 (SIGILL)
 ==160741==  Illegal opcode at address 0x492B75F
 ==160741==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160741==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160741==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160741==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160741==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160741==    by 0x49908EB: curl_version_info (version.c:600)
 ==160741==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160741==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160741==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160741==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1463
startnew: /startdir/src/curl/tests/dictserver.py --port 35221 --pidfile "log/23/server/dict_server.pid" --logfile "log/23/dict_server.log" --srcdir "/startdir/src/curl/tests" --host 127.0.0.1
RUN: DICT server PID 160156 port 35221
* pid DICT => 160156 160156
test 1450 [Basic DICT lookup]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1450 ../src/curl -q --output log/23/curl1450.out  --include --trace-ascii log/23/trace1450 --trace-time dict://127.0.0.1:35221/d:basic > log/23/stdout1450 2> log/23/stderr1450

curl returned 132, when expecting 0
 1450: exit FAILED
== Contents of files in the log/23/ directory after test 1450
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1450 ../src/curl -q --output log/23/curl1450.out  --include --trace-ascii log/23/trace1450 --trace-time dict://127.0.0.1:35221/d:basic > log/23/stdout1450 2> log/23/stderr1450
=== End of file commands.log
=== Start of file dict_server.log
 2026-10-15 19:28:37,690 INFO  [DICT] Listening on ('127.0.0.1', 35221)
=== End of file dict_server.log
=== Start of file server.cmd
 Testnum 1450
=== End of file server.cmd
=== Start of file valgrind1450
 ==160507== 
 ==160507== Process terminating with default action of signal 4 (SIGILL)
 ==160507==  Illegal opcode at address 0x492B75F
 ==160507==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160507==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160507==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160507==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160507==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160507==    by 0x49908EB: curl_version_info (version.c:600)
 ==160507==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160507==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160507==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160507==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1450
test 1486 [Verify that write-out.md and tool_writeout.c are in sync]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1486.pl /startdir/src/curl/tests > log/11/stdout1486 2> log/11/stderr1486
 valgrind SKIPPED
s------e--- OK (1371 out of 1890, remaining: 01:02, took 0.028s, duration: 02:44)
test 1488 [symbols-in-versions and man pages agree on added-in versions]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1488.pl /startdir/src/curl/tests/.. ../include/curl /startdir/src/curl/tests/../docs/VERSIONS.md > log/6/stdout1488 2> log/6/stderr1488
 valgrind SKIPPED
s------e--- OK (1373 out of 1890, remaining: 01:01, took 0.083s, duration: 02:44)
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/5/server/http_ipv6_server.pid" --logfile "log/5/http_ipv6_server.log" --logdir "log/5" --portfile log/5/server/http_ipv6_server.port --config log/5/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 160335 port 34433
* pid http-ipv6 => 160335 160335
test 1456 [HTTP-IPv6 GET with PROXY protocol]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1456 ../src/curl -q --output log/5/curl1456.out  --include --trace-ascii log/5/trace1456 --trace-time -g "http://[::1]:34433/1456" --haproxy-protocol > log/5/stdout1456 2> log/5/stderr1456

 1456: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1456
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1456 ../src/curl -q --output log/5/curl1456.out  --include --trace-ascii log/5/trace1456 --trace-time -g "http://[::1]:34433/1456" --haproxy-protocol > log/5/stdout1456 2> log/5/stderr1456
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:28:38.640097 Running HTTP IPv6 version on port 34433
 19:28:38.640234 Wrote pid 160335 to log/5/server/http_ipv6_server.pid
 19:28:38.640273 Wrote port 34433 to log/5/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 1456
=== End of file server.cmd
=== Start of file valgrind1456
 ==160950== 
 ==160950== Process terminating with default action of signal 4 (SIGILL)
 ==160950==  Illegal opcode at address 0x492B75F
 ==160950==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160950==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160950==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160950==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160950==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160950==    by 0x49908EB: curl_version_info (version.c:600)
 ==160950==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160950==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160950==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160950==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1456
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1466 ../src/curl -q --output log/10/curl1466.out  --include --trace-ascii log/10/trace1466 --trace-time http://127.0.0.1:40913/1466 > log/10/stdout1466 2> log/10/stderr1466
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1460 ../src/curl -q --trace-ascii log/22/trace1460 --trace-time http://127.0.0.1:35989/1460 -Ji -O --output-dir log/22 > log/22/stdout1460 2> log/22/stderr1460
startnew: /startdir/src/curl/tests/negtelnetserver.py --port 39529 --pidfile "log/12/server/telnet_server.pid" --logfile "log/12/telnet_server.log" --srcdir "/startdir/src/curl/tests"
RUN: TELNET server PID 160188 port 39529
* pid neg TELNET => 160188 160188
test 1452 [Basic TELNET negotiation]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1452 ../src/curl -q --include --trace-ascii log/12/trace1452 --trace-time telnet://127.0.0.1:39529 --upload-file - <log/12/stdin-for-1452 > log/12/stdout1452 2> log/12/stderr1452

 1452: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:41.060052461 +0000
+++ log/12/check-generated	2026-10-15 19:28:41.059390975 +0000
@@ -1 +0,0 @@
-test1452
== Contents of files in the log/12/ directory after test 1452
=== Start of file check-expected
 test1452
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1452 ../src/curl -q --include --trace-ascii log/12/trace1452 --trace-time telnet://127.0.0.1:39529 --upload-file - <log/12/stdin-for-1452 > log/12/stdout1452 2> log/12/stderr1452
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1452
=== End of file server.cmd
=== Start of file stdin-for-1452
 test1452
=== End of file stdin-for-1452
=== Start of file telnet_server.log
 2026-10-15 19:28:37,693 INFO  [NTEL] Listening on ('localhost', 39529)
=== End of file telnet_server.log
=== Start of file valgrind1452
 ==160598== 
 ==160598== Process terminating with default action of signal 4 (SIGILL)
 ==160598==  Illegal opcode at address 0x492B75F
 ==160598==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160598==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160598==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160598==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160598==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160598==    by 0x49908EB: curl_version_info (version.c:600)
 ==160598==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160598==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160598==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160598==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1452
test 1466 [HTTP GET with 3-digit response and only digits in reason]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1466 ../src/curl -q --output log/10/curl1466.out  --include --trace-ascii log/10/trace1466 --trace-time http://127.0.0.1:40913/1466 > log/10/stdout1466 2> log/10/stderr1466

 1466: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1466
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1466 ../src/curl -q --output log/10/curl1466.out  --include --trace-ascii log/10/trace1466 --trace-time http://127.0.0.1:40913/1466 > log/10/stdout1466 2> log/10/stderr1466
=== End of file commands.log
=== Start of file http_server.log
 19:28:38.524598 ====> Client connect
 19:28:38.524654 accept_connection 3 returned 4
 19:28:38.524685 Read 93 bytes
 19:28:38.524701 Process 93 bytes request
 19:28:38.524718 Got request: GET /verifiedserver HTTP/1.1
 19:28:38.524727 Are-we-friendly question received
 19:28:38.524764 Wrote request (93 bytes) input to log/10/server.input
 19:28:38.524783 Identifying ourselves as friends
 19:28:38.524879 Response sent (56 bytes) and written to log/10/server.response
 19:28:38.524890 special request received, no persistency
 19:28:38.524898 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 57322 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1466
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1466
 ==160887== 
 ==160887== Process terminating with default action of signal 4 (SIGILL)
 ==160887==  Illegal opcode at address 0x492B75F
 ==160887==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160887==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160887==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160887==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160887==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160887==    by 0x49908EB: curl_version_info (version.c:600)
 ==160887==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160887==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160887==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160887==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1466
test 1460 [HTTP GET with -Ji and Content-Disposition with existing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1460 ../src/curl -q --trace-ascii log/22/trace1460 --trace-time http://127.0.0.1:35989/1460 -Ji -O --output-dir log/22 > log/22/stdout1460 2> log/22/stderr1460

curl returned 132, when expecting 23
 1460: exit FAILED
== Contents of files in the log/22/ directory after test 1460
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1460 ../src/curl -q --trace-ascii log/22/trace1460 --trace-time http://127.0.0.1:35989/1460 -Ji -O --output-dir log/22 > log/22/stdout1460 2> log/22/stderr1460
=== End of file commands.log
=== Start of file http_server.log
 19:28:37.983897 ====> Client connect
 19:28:37.983933 accept_connection 3 returned 4
 19:28:37.983955 Read 93 bytes
 19:28:37.983964 Process 93 bytes request
 19:28:37.983977 Got request: GET /verifiedserver HTTP/1.1
 19:28:37.983986 Are-we-friendly question received
 19:28:37.984012 Wrote request (93 bytes) input to log/22/server.input
 19:28:37.984028 Identifying ourselves as friends
 19:28:37.984087 Response sent (56 bytes) and written to log/22/server.response
 19:28:37.984097 special request received, no persistency
 19:28:37.984106 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 39526 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file name1460
 initial content
=== End of file name1460
=== Start of file server.cmd
 Testnum 1460
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1460
 ==160536== 
 ==160536== Process terminating with default aCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1465 ../src/curl -q --output log/14/curl1465.out  --include --trace-ascii log/14/trace1465 --trace-time http://127.0.0.1:45467/we/want/1465 --libcurl log/14/test1465.c --data-binary @log/14/1465-upload > log/14/stdout1465 2> log/14/stderr1465
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1471 ../src/curl -q --output log/16/curl1471.out  --include --trace-ascii log/16/trace1471 --trace-time red.onion > log/16/stdout1471 2> log/16/stderr1471
ction of signal 4 (SIGILL)
 ==160536==  Illegal opcode at address 0x492B75F
 ==160536==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160536==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160536==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160536==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160536==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160536==    by 0x49908EB: curl_version_info (version.c:600)
 ==160536==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160536==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1460
test 1465 [--libcurl for POST with binary content]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1465 ../src/curl -q --output log/14/curl1465.out  --include --trace-ascii log/14/trace1465 --trace-time http://127.0.0.1:45467/we/want/1465 --libcurl log/14/test1465.c --data-binary @log/14/1465-upload > log/14/stdout1465 2> log/14/stderr1465

 1465: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1465
=== Start of file 1465-upload
 abcd e\"?
 	fghi
 jklm
=== End of file 1465-upload
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1465 ../src/curl -q --output log/14/curl1465.out  --include --trace-ascii log/14/trace1465 --trace-time http://127.0.0.1:45467/we/want/1465 --libcurl log/14/test1465.c --data-binary @log/14/1465-upload > log/14/stdout1465 2> log/14/stderr1465
=== End of file commands.log
=== Start of file http_server.log
 19:28:38.527923 ====> Client connect
 19:28:38.527990 accept_connection 3 returned 4
 19:28:38.528013 Read 93 bytes
 19:28:38.528022 Process 93 bytes request
 19:28:38.528034 Got request: GET /verifiedserver HTTP/1.1
 19:28:38.528042 Are-we-friendly question received
 19:28:38.528067 Wrote request (93 bytes) input to log/14/server.input
 19:28:38.528082 Identifying ourselves as friends
 19:28:38.529300 Response sent (56 bytes) and written to log/14/server.response
 19:28:38.529314 special request received, no persistency
 19:28:38.529323 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56252 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1465
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1465
 ==160906== 
 ==160906== Process terminating with default action of signal 4 (SIGILL)
 ==160906==  Illegal opcode at address 0x492B75F
 ==160906==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==160906==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==160906==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==160906==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==160906==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==160906==    by 0x49908EB: curl_version_info (version.c:600)
 ==160906==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==160906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==160906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==160906==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1465
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1469 ../src/curl -q --output log/15/curl1469.out  --include --trace-ascii log/15/trace1469 --trace-time "ftp://127.0.0.1:47/1469%/with space/" -T log/15/irrelevant-file > log/15/stdout1469 2> log/15/stderr1469
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1473 ../src/curl -q --output log/1/curl1473.out  --include --trace-ascii log/1/trace1473 --trace-time http://127.0.0.1:38815/1473 > log/1/stdout1473 2> log/1/stderr1473
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1472 ../src/curl -q --output log/7/curl1472.out  --include --trace-ascii log/7/trace1472 --trace-time tasty.onion. > log/7/stdout1472 2> log/7/stderr1472
test 1471 [Fail to resolve .onion TLD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1471 ../src/curl -q --output log/16/curl1471.out  --include --trace-ascii log/16/trace1471 --trace-time red.onion > log/16/stdout1471 2> log/16/stderr1471

 1471: stderr FAILED:
--- log/16/check-expected	2026-10-15 19:28:41.424906448 +0000
+++ log/16/check-generated	2026-10-15 19:28:41.424042398 +0000
@@ -1 +0,0 @@
-curl: (6) Not resolving .onion address (RFC 7686)[CR][LF]
== Contents of files in the log/16/ directory after test 1471
=== Start of file check-expected
 curl: (6) Not resolving .onion address (RFC 7686)[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1471 ../src/curl -q --output log/16/curl1471.out  --include --trace-ascii log/16/trace1471 --trace-time red.onion > log/16/stdout1471 2> log/16/stderr1471
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1471
=== End of file server.cmd
=== Start of file valgrind1471
 ==161105== 
 ==161105== Process terminating with default action of signal 4 (SIGILL)
 ==161105==  Illegal opcode at address 0x492B75F
 ==161105==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161105==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161105==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161105==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161105==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161105==    by 0x49908EB: curl_version_info (version.c:600)
 ==161105==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161105==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161105==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161105==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1471
test 1469 [Space in FTP upload URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1469 ../src/curl -q --output log/15/curl1469.out  --include --trace-ascii log/15/trace1469 --trace-time "ftp://127.0.0.1:47/1469%/with space/" -T log/15/irrelevant-file > log/15/stdout1469 2> log/15/stderr1469

curl returned 132, when expecting 3
 1469: exit FAILED
== Contents of files in the log/15/ directory after test 1469
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1469 ../src/curl -q --output log/15/curl1469.out  --include --trace-ascii log/15/trace1469 --trace-time "ftp://127.0.0.1:47/1469%/with space/" -T log/15/irrelevant-file > log/15/stdout1469 2> log/15/stderr1469
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1469
=== End of file server.cmd
=== Start of file valgrind1469
 ==161078== 
 ==161078== Process terminating with default action of signal 4 (SIGILL)
 ==161078==  Illegal opcode at address 0x492B75F
 ==161078==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161078==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161078==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161078==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161078==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161078==    by 0x49908EB: curl_version_info (version.c:600)
 ==161078==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161078==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161078==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161078==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1469
test 1473 [first HTTP header starts with white space]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1473 ../src/curl -q --output log/1/curl1473.out  --include --trace-ascii log/1/trace1473 --trace-time http://127.0.0.1:38815/1473 > log/1/stdout1473 2> log/1/stderr1473

 1473: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1473
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1473 ../src/curl -q --output log/1/curl1473.out  --include --trace-ascii log/1/trace1473 --trace-time http://127.0.0.1:38815/1473 > log/1/stdout1473 2> log/1/stderr1473
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.180303 ====> Client connect
 19:28:40.180340 accept_connection 3 returned 4
 19:28:40.180363 Read 93 bytes
 19:28:40.180373 Process 93 bytes request
 19:28:40.180387 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.180396 Are-we-friendly question received
 19:28:40.180424 Wrote request (93 bytes) input to log/1/server.input
 19:28:40.180441 Identifying ourselves as friends
 19:28:40.180506 Response sent (56 bytes) and written to log/1/server.response
 19:28:40.180516 special request received, no persistency
 19:28:40.180524 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 56672 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1473
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1473
 ==161292== 
 ==161292== Process terminating with default action of signal 4 (SIGILL)
 ==161292==  Illegal opcode at address 0x492B75F
 ==161292==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161292==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161292==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161292==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161292==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161292==    by 0x49908EB: curl_version_info (version.c:600)
 ==161292==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161292==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161292==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161292==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1473
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1476 ../src/curl -q --output log/8/curl1476.out  --include --trace-ascii log/8/trace1476 --trace-time -x http://127.0.0.1:44467/1476 http://curl.co.UK -c log/8/cookies1476.txt > log/8/stdout1476 2> log/8/stderr1476
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1475 ../src/curl -q --output log/20/curl1475.out  --include --trace-ascii log/20/trace1475 --trace-time http://127.0.0.1:33897/1475 -C - -f > log/20/stdout1475 2> log/20/stderr1475
RUN: Process with pid 78986 signalled to die
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1479 ../src/curl -q --output log/13/curl1479.out  --include --trace-ascii log/13/trace1479 --trace-time http://127.0.0.1:38821/1479 http://127.0.0.1:38821/14790002 > log/13/stdout1479 2> log/13/stderr1479
RUN: Process with pid 78986 gracefully died
test 1472 [Fail to resolve .onion. TLD]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1472 ../src/curl -q --output log/7/curl1472.out  --include --trace-ascii log/7/trace1472 --trace-time tasty.onion. > log/7/stdout1472 2> log/7/stderr1472

 1472: stderr FAILED:
--- log/7/check-expected	2026-10-15 19:28:42.019928049 +0000
+++ log/7/check-generated	2026-10-15 19:28:42.015722392 +0000
@@ -1 +0,0 @@
-curl: (6) Not resolving .onion address (RFC 7686)[CR][LF]
== Contents of files in the log/7/ directory after test 1472
=== Start of file check-expected
 curl: (6) Not resolving .onion address (RFC 7686)[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1472 ../src/curl -q --output log/7/curl1472.out  --include --trace-ascii log/7/trace1472 --trace-time tasty.onion. > log/7/stdout1472 2> log/7/stderr1472
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1472
=== End of file server.cmd
=== Start of file valgrind1472
 ==161172== 
 ==161172== Process terminating with default action of signal 4 (SIGILL)
 ==161172==  Illegal opcode at address 0x492B75F
 ==161172==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161172==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161172==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161172==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161172==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161172==    by 0x49908EB: curl_version_info (version.c:600)
 ==161172==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161172==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161172==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161172==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1472
test 1476 [PSL violating cookie with mixed case domain and cookie domain property]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1476 ../src/curl -q --output log/8/curl1476.out  --include --trace-ascii log/8/trace1476 --trace-time -x http://127.0.0.1:44467/1476 http://curl.co.UK -c log/8/cookies1476.txt > log/8/stdout1476 2> log/8/stderr1476

 1476: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1476
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1476 ../src/curl -q --output log/8/curl1476.out  --include --trace-ascii log/8/trace1476 --trace-time -x http://127.0.0.1:44467/1476 http://curl.co.UK -c log/8/cookies1476.txt > log/8/stdout1476 2> log/8/stderr1476
=== End of file commands.log
=== Start of file http_server.log
 19:28:39.413736 ====> Client connect
 19:28:39.413779 accept_connection 3 returned 4
 19:28:39.413799 Read 93 bytes
 19:28:39.413808 Process 93 bytes request
 19:28:39.413820 Got request: GET /verifiedserver HTTP/1.1
 19:28:39.413828 Are-we-friendly question received
 19:28:39.413853 Wrote request (93 bytes) input to log/8/server.input
 19:28:39.413869 Identifying ourselves as friends
 19:28:39.413926 Response sent (56 bytes) and written to log/8/server.response
 19:28:39.413934 special request received, no persistency
 19:28:39.413942 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 55338 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1476
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1476
 ==161448== 
 ==161448== Process terminating with default action of signal 4 (SIGILL)
 ==161448==  Illegal opcode at address 0x492B75F
 ==161448==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161448==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161448==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161448==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161448==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161448==    by 0x49908EB: curl_version_info (version.c:600)
 ==161448==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161448==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161448==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161448==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1476
test 1479 [HTTP/1.1 response followed by HTTP/0.9 response over same connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1479 ../src/curl -q --output log/13/curl1479.out  --include --trace-ascii log/13/trace1479 --trace-time http://127.0.0.1:38821/1479 http://127.0.0.1:38821/14790002 > log/13/stdout1479 2> log/13/stderr1479

 1479: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1479
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1479 ../src/curl -q --output log/13/curl1479.out  --include --trace-ascii log/13/trace1479 --trace-time http://127.0.0.1:38821/1479 http://127.0.0.1:38821/14790002 > log/13/stdout1479 2> log/13/stderr1479
=== End of file commands.log
=== Start of file http_server.log
 19:28:39.688127 ====> Client connect
 19:28:39.688164 accept_connection 3 returned 4
 19:28:39.688188 Read 93 bytes
 19:28:39.688197 Process 93 bytes request
 19:28:39.688210 Got request: GET /verifiedserver HTTP/1.1
 19:28:39.688218 Are-we-friendly question received
 19:28:39.688245 Wrote request (93 bytes) input to log/13/server.input
 19:28:39.688260 Identifying ourselves as friends
 19:28:39.688328 Response sent (56 bytes) and written to log/13/server.response
 19:28:39.688338 special request received, no persistency
 19:28:39.688345 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 39578 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1479
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1479
 ==161563== 
 ==161563== Process terminating with default action of signal 4 (SIGILL)
 ==161563==  Illegal opcode at address 0x492B75F
 ==161563==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161563==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161563==    by 0x492BCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1474 ../src/curl -q --output log/17/curl1474.out  --include --trace-ascii log/17/trace1474 --trace-time --proto -all http://127.0.0.1:47/1474 > log/17/stdout1474 2> log/17/stderr1474
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1485 ./libtest/libtests lib1485 http://127.0.0.1:43739/1485 > log/18/stdout1485 2> log/18/stderr1485
67B: curl_msnprintf (mprintf.c:1277)
 ==161563==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161563==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161563==    by 0x49908EB: curl_version_info (version.c:600)
 ==161563==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161563==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161563==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161563==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1479
test 1475 [-f and 416 with Content-Range: */size]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1475 ../src/curl -q --output log/20/curl1475.out  --include --trace-ascii log/20/trace1475 --trace-time http://127.0.0.1:33897/1475 -C - -f > log/20/stdout1475 2> log/20/stderr1475

 1475: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1475
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1475 ../src/curl -q --output log/20/curl1475.out  --include --trace-ascii log/20/trace1475 --trace-time http://127.0.0.1:33897/1475 -C - -f > log/20/stdout1475 2> log/20/stderr1475
=== End of file commands.log
=== Start of file curl1475.out
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
 012345678
=== End of file curl1475.out
=== Start of file http_server.log
 19:28:39.261241 ====> Client connect
 19:28:39.261282 accept_connection 3 returned 4
 19:28:39.261308 Read 93 bytes
 19:28:39.261318 Process 93 bytes request
 19:28:39.261331 Got request: GET /verifiedserver HTTP/1.1
 19:28:39.261339 Are-we-friendly question received
 19:28:39.261370 Wrote request (93 bytes) input to log/20/server.input
 19:28:39.261387 Identifying ourselves as friends
 19:28:39.261470 Response sent (56 bytes) and written to log/20/server.response
 19:28:39.261479 special request received, no persistency
 19:28:39.261487 ====> Client disconnect 0
 19:28:42.151158 signalled to die
 19:28:42.151287 ========> exit message: exit_signal_handler(): triggered
 19:28:42.151301 ========> IPv4 sws (port 33897 pid: 78986) exits with signal (15)
 19:28:42.151315 ========> sws quits
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33897...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33897) from 127.0.0.1 port 57802 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33897
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33897 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78986
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1475
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78986
=== End of file server.response
=== Start of file valgrind1475
 ==161350== 
 ==161350== Process terminating with default action of signal 4 (SIGILL)
 ==161350==  Illegal opcode at address 0x492B75F
 ==161350==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161350==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161350==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161350==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161350==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161350==    by 0x49908EB: curl_version_info (version.c:600)
 ==161350==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161350==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161350==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161350==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1475
test 1474 [--proto -all disables all protocols]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1474 ../src/curl -q --output log/17/curl1474.out  --include --trace-ascii log/17/trace1474 --trace-time --proto -all http://127.0.0.1:47/1474 > log/17/stdout1474 2> log/17/stderr1474

curl returned 132, when expecting 2
 1474: exit FAILED
== Contents of files in the log/17/ directory after test 1474
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1474 ../src/curl -q --output log/17/curl1474.out  --include --trace-ascii log/17/trace1474 --trace-time --proto -all http://127.0.0.1:47/1474 > log/17/stdout1474 2> log/17/stderr1474
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1474
=== End of file server.cmd
=== Start of file valgrind1474
 ==161243== 
 ==161243== Process terminating with default action of signal 4 (SIGILL)
 ==161243==  Illegal opcode at address 0x492B75F
 ==161243==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161243==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161243==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161243==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161243==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161243==    by 0x49908EB: curl_version_info (version.c:600)
 ==161243==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161243==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161243==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161243==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1474
test 1485 [get curlinfo on last header in callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1485 ./libtest/libtests lib1485 http://127.0.0.1:43739/1485 > log/18/stdout1485 2> log/18/stderr1485

 1485: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1485
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1485 ./libtest/libtests lib1485 http://127.0.0.1:43739/1485 > log/18/stdout1485 2> log/18/stderr1485
=== End of file commands.log
=== Start of file http_server.log
 19:28:41.600823 ====> Client connect
 19:28:41.600896 accept_connection 3 returned 4
 19:28:41.600921 Read 93 bytes
 19:28:41.600932 Process 93 bytes request
 19:28:41.600944 Got request: GET /verifiedserver HTTP/1.1
 19:28:41.600953 Are-we-friendly question received
 19:28:41.600984 Wrote request (93 bytes) input to log/18/server.input
 19:28:41.601003 Identifying ourselves as friends
 19:28:41.601069 Response sent (56 bytes) and written to log/18/server.response
 19:28:41.601080 special request received, no persistency
 19:28:41.601089 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46848 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1485
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1482 ../src/curl -q --output log/24/curl1482.out  --include --trace-ascii log/24/trace1482 --trace-time http://127.0.0.1:38895/1482 -D log/24/heads1482 > log/24/stdout1482 2> log/24/stderr1482
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1467 ../src/curl -q --output log/4/curl1467.out  --include --trace-ascii log/4/trace1467 --trace-time --socks5 localhost/startdir/src/build-curl/tests/log/4/server/socks-uds http://127.0.0.1:35735/1467 > log/4/stdout1467 2> log/4/stderr1467
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1480 ../src/curl -q --output log/21/curl1480.out  --include --trace-ascii log/21/trace1480 --trace-time http://127.0.0.1:39881/1480 > log/21/stdout1480 2> log/21/stderr1480
: 78988
=== End of file server.response
=== Start of file valgrind1485
 ==162063== 
 ==162063== Process terminating with default action of signal 4 (SIGILL)
 ==162063==  Illegal opcode at address 0x51CC63F
 ==162063==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==162063==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==162063==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==162063==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1485
test 1482 [HTTP GET with double chunked in TE header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1482 ../src/curl -q --output log/24/curl1482.out  --include --trace-ascii log/24/trace1482 --trace-time http://127.0.0.1:38895/1482 -D log/24/heads1482 > log/24/stdout1482 2> log/24/stderr1482

 1482: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1482
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1482 ../src/curl -q --output log/24/curl1482.out  --include --trace-ascii log/24/trace1482 --trace-time http://127.0.0.1:38895/1482 -D log/24/heads1482 > log/24/stdout1482 2> log/24/stderr1482
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.071240 ====> Client connect
 19:28:40.071292 accept_connection 3 returned 4
 19:28:40.071324 Read 93 bytes
 19:28:40.071335 Process 93 bytes request
 19:28:40.071349 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.071358 Are-we-friendly question received
 19:28:40.071390 Wrote request (93 bytes) input to log/24/server.input
 19:28:40.071409 Identifying ourselves as friends
 19:28:40.071511 Response sent (56 bytes) and written to log/24/server.response
 19:28:40.071525 special request received, no persistency
 19:28:40.071535 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43658 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 1482
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1482
 ==161835== 
 ==161835== Process terminating with default action of signal 4 (SIGILL)
 ==161835==  Illegal opcode at address 0x492B75F
 ==161835==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161835==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161835==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161835==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161835==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161835==    by 0x49908EB: curl_version_info (version.c:600)
 ==161835==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161835==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161835==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1482
startnew: ./server/servers socksd --pidfile log/4/server/socks2_server.pid --reqfile log/4/socksd-request.log --logfile log/4/socks2_server.log --unix-socket /startdir/src/build-curl/tests/log/4/server/socks-uds --backend 127.0.0.1 --config log/4/server.cmd
RUN: SOCKS2 server is now running PID 160969
* pid socks5unix => 160969 160969
test 1467 [HTTP GET via SOCKS5 proxy via Unix sockets]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1467 ../src/curl -q --output log/4/curl1467.out  --include --trace-ascii log/4/trace1467 --trace-time --socks5 localhost/startdir/src/build-curl/tests/log/4/server/socks-uds http://127.0.0.1:35735/1467 > log/4/stdout1467 2> log/4/stderr1467

 1467: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1467
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1467 ../src/curl -q --output log/4/curl1467.out  --include --trace-ascii log/4/trace1467 --trace-time --socks5 localhost/startdir/src/build-curl/tests/log/4/server/socks-uds http://127.0.0.1:35735/1467 > log/4/stdout1467 2> log/4/stderr1467
=== End of file commands.log
=== Start of file http_server.log
 19:28:39.637862 ====> Client connect
 19:28:39.637927 accept_connection 3 returned 4
 19:28:39.637956 Read 93 bytes
 19:28:39.637966 Process 93 bytes request
 19:28:39.637978 Got request: GET /verifiedserver HTTP/1.1
 19:28:39.637986 Are-we-friendly question received
 19:28:39.638014 Wrote request (93 bytes) input to log/4/server.input
 19:28:39.638031 Identifying ourselves as friends
 19:28:39.638124 Response sent (56 bytes) and written to log/4/server.response
 19:28:39.638135 special request received, no persistency
 19:28:39.638143 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 47062 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1467
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file socks2_server.log
 19:28:39.652967 Running unix version
 19:28:39.653151 Listening on Unix socket /startdir/src/build-curl/tests/log/4/server/socks-uds
 19:28:39.653191 Wrote pid 160969 to log/4/server/socks2_server.pid
=== End of file socks2_server.log
=== Start of file valgrind1467
 ==161533== 
 ==161533== Process terminating with default action of signal 4 (SIGILL)
 ==161533==  Illegal opcode at address 0x492B75F
 ==161533==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161533==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161533==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161533==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161533==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161533==    by 0x49908EB: curl_version_info (version.c:600)
 ==161533==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161533==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161533==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161533==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1467
test 1480 [HTTP Continue response without final response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1480 ../src/curl -q --output log/21/curl1480.out  --include --trace-ascii log/21/trace1480 --trace-time http://127.0.0.1:39881/1480 > log/21/stdout1480 2> log/21/stderr1480

 1480: protocol FAILED!
 There was no content at all in the file log/21/server.iCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1487 ../src/curl -q --trace-ascii log/23/trace1487 --trace-time http://127.0.0.1:44711/1487 -J -O --output-dir log/23 > log/23/stdout1487 2> log/23/stderr1487
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1468 ../src/curl -q --output log/2/curl1468.out  --include --trace-ascii log/2/trace1468 --trace-time http://this.is.a.host.name:34531/1468 --proxy socks5h://localhost/startdir/src/build-curl/tests/log/2/server/socks-uds > log/2/stdout1468 2> log/2/stderr1468
nput.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1480
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1480 ../src/curl -q --output log/21/curl1480.out  --include --trace-ascii log/21/trace1480 --trace-time http://127.0.0.1:39881/1480 > log/21/stdout1480 2> log/21/stderr1480
=== End of file commands.log
=== Start of file http_server.log
 19:28:39.830462 ====> Client connect
 19:28:39.830517 accept_connection 3 returned 4
 19:28:39.830628 Read 93 bytes
 19:28:39.830649 Process 93 bytes request
 19:28:39.830663 Got request: GET /verifiedserver HTTP/1.1
 19:28:39.830673 Are-we-friendly question received
 19:28:39.830710 Wrote request (93 bytes) input to log/21/server.input
 19:28:39.830730 Identifying ourselves as friends
 19:28:39.830836 Response sent (56 bytes) and written to log/21/server.response
 19:28:39.830849 special request received, no persistency
 19:28:39.830859 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 43712 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1480
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1480
 ==161633== 
 ==161633== Process terminating with default action of signal 4 (SIGILL)
 ==161633==  Illegal opcode at address 0x492B75F
 ==161633==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161633==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161633==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161633==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161633==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161633==    by 0x49908EB: curl_version_info (version.c:600)
 ==161633==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161633==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161633==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1480
test 1487 [HTTP GET with -J and Content-Disposition on 301]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1487 ../src/curl -q --trace-ascii log/23/trace1487 --trace-time http://127.0.0.1:44711/1487 -J -O --output-dir log/23 > log/23/stdout1487 2> log/23/stderr1487

 1487: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1487
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1487 ../src/curl -q --trace-ascii log/23/trace1487 --trace-time http://127.0.0.1:44711/1487 -J -O --output-dir log/23 > log/23/stdout1487 2> log/23/stderr1487
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.597882 ====> Client connect
 19:28:40.597922 accept_connection 3 returned 4
 19:28:40.597946 Read 93 bytes
 19:28:40.597957 Process 93 bytes request
 19:28:40.597970 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.597978 Are-we-friendly question received
 19:28:40.598006 Wrote request (93 bytes) input to log/23/server.input
 19:28:40.598024 Identifying ourselves as friends
 19:28:40.598140 Response sent (56 bytes) and written to log/23/server.response
 19:28:40.598152 special request received, no persistency
 19:28:40.598160 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 38138 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1487
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1487
 ==162065== 
 ==162065== Process terminating with default action of signal 4 (SIGILL)
 ==162065==  Illegal opcode at address 0x492B75F
 ==162065==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162065==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162065==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162065==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162065==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162065==    by 0x49908EB: curl_version_info (version.c:600)
 ==162065==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162065==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162065==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162065==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1487
startnew: ./server/servers socksd --pidfile log/2/server/socks2_server.pid --reqfile log/2/socksd-request.log --logfile log/2/socks2_server.log --unix-socket /startdir/src/build-curl/tests/log/2/server/socks-uds --backend 127.0.0.1 --config log/2/server.cmd
RUN: SOCKS2 server is now running PID 161068
* pid socks5unix => 161068 161068
test 1468 [HTTP GET with hostname using SOCKS5h via Unix sockets]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1468 ../src/curl -q --output log/2/curl1468.out  --include --trace-ascii log/2/trace1468 --trace-time http://this.is.a.host.name:34531/1468 --proxy socks5h://localhost/startdir/src/build-curl/tests/log/2/server/socks-uds > log/2/stdout1468 2> log/2/stderr1468

 1468: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1468
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1468 ../src/curl -q --output log/2/curl1468.out  --include --trace-ascii log/2/trace1468 --trace-time http://this.is.a.host.name:34531/1468 --proxy socks5h://localhost/startdir/src/build-curl/tests/log/2/server/socks-uds > log/2/stdout1468 2> log/2/stderr1468
=== End of file commands.log
=== Start of file http_server.log
 19:28:39.766879 ====> Client connect
 19:28:39.766916 accept_connection 3 returned 4
 19:28:39.766938 Read 93 bytes
 19:28:39.766948 Process 93 bytes request
 19:28:39.766959 Got request: GET /verifiedserver HTTP/1.1
 19:28:39.766968 Are-we-friendly question received
 19:28:39.766995 Wrote request (93 bytes) input to log/2/server.input
 19:28:39.767012 Identifying ourselves as friends
 19:28:39.767075 Response sent (56 bytes) and written to log/2/server.response
 19:28:39.767085 special request received, no persistency
 19:28:39.767093 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1484 ../src/curl -q --output log/9/curl1484.out  --include --trace-ascii log/9/trace1484 --trace-time -I http://127.0.0.1:43733/1484 --http1.1 > log/9/stdout1484 2> log/9/stderr1484
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1489 ../src/curl -q --output log/11/curl1489.out  --trace-ascii log/11/trace1489 --trace-time http://127.0.0.1:40989/1489 -D % -s > log/11/stdout1489 2> log/11/stderr1489
127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 35926 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1468
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file socks2_server.log
 19:28:39.775353 Running unix version
 19:28:39.775672 Listening on Unix socket /startdir/src/build-curl/tests/log/2/server/socks-uds
 19:28:39.775712 Wrote pid 161068 to log/2/server/socks2_server.pid
=== End of file socks2_server.log
=== Start of file valgrind1468
 ==161586== 
 ==161586== Process terminating with default action of signal 4 (SIGILL)
 ==161586==  Illegal opcode at address 0x492B75F
 ==161586==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161586==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161586==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161586==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161586==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161586==    by 0x49908EB: curl_version_info (version.c:600)
 ==161586==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161586==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161586==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161586==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1468
test 1484 [HTTP HEAD with response body to ignore]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1484 ../src/curl -q --output log/9/curl1484.out  --include --trace-ascii log/9/trace1484 --trace-time -I http://127.0.0.1:43733/1484 --http1.1 > log/9/stdout1484 2> log/9/stderr1484

 1484: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1484
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1484 ../src/curl -q --output log/9/curl1484.out  --include --trace-ascii log/9/trace1484 --trace-time -I http://127.0.0.1:43733/1484 --http1.1 > log/9/stdout1484 2> log/9/stderr1484
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.523912 ====> Client connect
 19:28:40.523948 accept_connection 3 returned 4
 19:28:40.523969 Read 93 bytes
 19:28:40.523979 Process 93 bytes request
 19:28:40.523991 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.523999 Are-we-friendly question received
 19:28:40.524028 Wrote request (93 bytes) input to log/9/server.input
 19:28:40.524048 Identifying ourselves as friends
 19:28:40.524109 Response sent (56 bytes) and written to log/9/server.response
 19:28:40.524119 special request received, no persistency
 19:28:40.524126 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 34196 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1484
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1484
 ==161998== 
 ==161998== Process terminating with default action of signal 4 (SIGILL)
 ==161998==  Illegal opcode at address 0x492B75F
 ==161998==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161998==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161998==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161998==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161998==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161998==    by 0x49908EB: curl_version_info (version.c:600)
 ==161998==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161998==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161998==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161998==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1484
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1483 ../src/curl -q --output log/19/curl1483.out  --include --trace-ascii log/19/trace1483 --trace-time http://127.0.0.1:37077/1483 -D log/19/heads1483 > log/19/stdout1483 2> log/19/stderr1483
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1500 ./libtest/libtests lib1500 http://127.0.0.1:44467/1500 > log/8/stdout1500 2> log/8/stderr1500
test 1489 [-D sent to stderr]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1489 ../src/curl -q --output log/11/curl1489.out  --trace-ascii log/11/trace1489 --trace-time http://127.0.0.1:40989/1489 -D % -s > log/11/stdout1489 2> log/11/stderr1489

 1489: stderr FAILED:
--- log/11/check-expected	2026-10-15 19:28:43.250881199 +0000
+++ log/11/check-generated	2026-10-15 19:28:43.247215048 +0000
@@ -1,11 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
-ETag: "21025-dc7-39462498"[CR][LF]
-Accept-Ranges: bytes[CR][LF]
-Content-Length: 6[CR][LF]
-Connection: close[CR][LF]
-Content-Type: text/html[CR][LF]
-Funny-head: yesyes[CR][LF]
-[CR][LF]
== Contents of files in the log/11/ directory after test 1489
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
 ETag: "21025-dc7-39462498"[CR][LF]
 Accept-Ranges: bytes[CR][LF]
 Content-Length: 6[CR][LF]
 Connection: close[CR][LF]
 Content-Type: text/html[CR][LF]
 Funny-head: yesyes[CR][LF]
 [CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1489 ../src/curl -q --output log/11/curl1489.out  --trace-ascii log/11/trace1489 --trace-time http://127.0.0.1:40989/1489 -D % -s > log/11/stdout1489 2> log/11/stderr1489
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.661811 ====> Client connect
 19:28:40.661847 accept_connection 3 returned 4
 19:28:40.666930 Read 93 bytes
 19:28:40.666950 Process 93 bytes request
 19:28:40.666964 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.666973 Are-we-friendly question received
 19:28:40.667024 Wrote request (93 bytes) input to log/11/server.input
 19:28:40.667042 Identifying ourselves as friends
 19:28:40.667105 Response sent (56 bytes) and written to log/11/server.response
 19:28:40.667115 special request received, no persistency
 19:28:40.667124 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 51942 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1489
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1489
 ==162132== 
 ==162132== Process terminating with default action of signal 4 (SIGILL)
 ==162132==  Illegal opcode at address 0x492B75F
 ==162132==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162132==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162132==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162132==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162132==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162132==    by 0x49908EB: curl_version_info (version.c:600)
 ==162132==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162132==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162132==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162132==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1489
test 1483 [HTTP GET with two Transfer-Encoding: chunked headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1483 ../src/curl -q --output log/19/curl1483.out  --include --trace-ascii log/19/trace1483 --trace-time http://127.0.0.1:37077/1483 -D log/19/heads1483 > log/19/stdout1483 2> log/19/stderr1483

 1483: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1483
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1483 ../src/curl -q --output log/19/curl1483.out  --include --trace-ascii log/19/trace1483 --trace-time http://127.0.0.1:37077/1483 -D log/19/heads1483 > log/19/stdout1483 2> log/19/stderr1483
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.240583 ====> Client connect
 19:28:40.240620 accept_connection 3 returned 4
 19:28:40.240783 Read 93 bytes
 19:28:40.240798 Process 93 bytes request
 19:28:40.240811 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.240820 Are-we-friendly question received
 19:28:40.240852 Wrote request (93 bytes) input to log/19/server.input
 19:28:40.240870 Identifying ourselves as friends
 19:28:40.240934 Response sent (57 bytes) and written to log/19/server.response
 19:28:40.240944 special request received, no persistency
 19:28:40.240953 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 39014 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 1483
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1483
 ==161906== 
 ==161906== Process terminating with default action of signal 4 (SIGILL)
 ==161906==  Illegal opcode at address 0x492B75F
 ==161906==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161906==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161906==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161906==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161906==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161906==    by 0x49908EB: curl_version_info (version.c:600)
 ==161906==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161906==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1483
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1481 ../src/curl -q --output log/3/curl1481.out  --include --trace-ascii log/3/trace1481 --trace-time http://moo/ --libcurl log/3/test1481.c --tls-max 1.3 --proxy-tlsv1 -x http://127.0.0.1:36161 --socks5-gssapi-service sockd > log/3/stdout1481 2> log/3/stderr1481
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1496 ../src/curl -q --output log/16/curl1496.out  --include --trace-ascii log/16/trace1496 --trace-time http://127.0.0.1:35903/1496 -D log/16/heads1496 > log/16/stdout1496 2> log/16/stderr1496
test 1500 [curl_multi_wait]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1500 ./libtest/libtests lib1500 http://127.0.0.1:44467/1500 > log/8/stdout1500 2> log/8/stderr1500

 1500: data FAILED:
--- log/8/check-expected	2026-10-15 19:28:43.429363590 +0000
+++ log/8/check-generated	2026-10-15 19:28:43.425752015 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 all good![CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Content-Type: text/html[CR][LF]
-Content-Length: 12[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-Hello World[LF]
== Contents of files in the log/8/ directory after test 1500
=== Start of file check-expected
 HTTP/1.1 200 all good![CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Content-Type: text/html[CR][LF]
 Content-Length: 12[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 Hello World[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1500 ./libtest/libtests lib1500 http://127.0.0.1:44467/1500 > log/8/stdout1500 2> log/8/stderr1500
=== End of file commands.log
=== Start of file http_server.log
 19:28:41.830268 ====> Client connect
 19:28:41.830311 accept_connection 3 returned 4
 19:28:41.830421 Read 93 bytes
 19:28:41.830435 Process 93 bytes request
 19:28:41.830448 Got request: GET /verifiedserver HTTP/1.1
 19:28:41.830457 Are-we-friendly question received
 19:28:41.830489 Wrote request (93 bytes) input to log/8/server.input
 19:28:41.830506 Identifying ourselves as friends
 19:28:41.830568 Response sent (56 bytes) and written to log/8/server.response
 19:28:41.830577 special request received, no persistency
 19:28:41.830585 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 45218 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1500
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1500
 ==162884== 
 ==162884== Process terminating with default action of signal 4 (SIGILL)
 ==162884==  Illegal opcode at address 0x51CC63F
 ==162884==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==162884==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==162884==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==162884==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1500
test 1481 [--libcurl with TLS version options]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1481 ../src/curl -q --output log/3/curl1481.out  --include --trace-ascii log/3/trace1481 --trace-time http://moo/ --libcurl log/3/test1481.c --tls-max 1.3 --proxy-tlsv1 -x http://127.0.0.1:36161 --socks5-gssapi-service sockd > log/3/stdout1481 2> log/3/stderr1481

 1481: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1481
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1481 ../src/curl -q --output log/3/curl1481.out  --include --trace-ascii log/3/trace1481 --trace-time http://moo/ --libcurl log/3/test1481.c --tls-max 1.3 --proxy-tlsv1 -x http://127.0.0.1:36161 --socks5-gssapi-service sockd > log/3/stdout1481 2> log/3/stderr1481
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.851169 ====> Client connect
 19:28:40.851317 accept_connection 3 returned 4
 19:28:40.854585 Read 93 bytes
 19:28:40.854605 Process 93 bytes request
 19:28:40.854618 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.854627 Are-we-friendly question received
 19:28:40.854664 Wrote request (93 bytes) input to log/3/server.input
 19:28:40.854682 Identifying ourselves as friends
 19:28:40.854747 Response sent (56 bytes) and written to log/3/server.response
 19:28:40.854757 special request received, no persistency
 19:28:40.854765 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 59458 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1481
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1481
 ==161673== 
 ==161673== Process terminating with default action of signal 4 (SIGILL)
 ==161673==  Illegal opcode at address 0x492B75F
 ==161673==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==161673==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==161673==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==161673==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==161673==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==161673==    by 0x49908EB: curl_version_info (version.c:600)
 ==161673==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==161673==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==161673==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==161673==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1481
test 1496 [HTTP GET with gzip + chunked transfer-encoding without being asked]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1496 ../src/curl -q --output log/16/curl1496.out  --include --trace-ascii log/16/trace1496 --trace-time http://127.0.0.1:35903/1496 -D log/16/heads1496 > log/16/stdout1496 2> log/16/stderr1496

 1496: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1496
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1496 ../src/curl -q --output log/16/curl1496.out  --include --trace-ascii log/16/trace1496 --trace-time http://127.0.0.1:35903/1496 -D log/16/heads1496 > log/16/stdout1496 2> log/16/stderr1496
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.123934 ====> Client connect
 19:28:42.123963 accept_connection 3 returned 4
 19:28:42.123982 Read 93 bytes
 19:28:42.123991 Process 93 bytes request
 19:28:42.124003 Got request: GET /verifiedserver HTTP/1.1
 19:28:42.124012 Are-we-friendly question received
 19:28:42.124131 Wrote request (93 bytes) input to log/16/server.input
 19:28:42.124148 Identifying ourselves as friends
 19:28:42.124206 Response sent (56 bytes) and written to log/16/server.response
 19:28:42.124214 special request reCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1490 ../src/curl -q --output log/6/curl1490.out  --trace-ascii log/6/trace1490 --trace-time file://localhost/startdir/src/build-curl/tests/log/6/result1490.txt -T log/6/upload1490.txt > log/6/stdout1490 2> log/6/stderr1490
ceived, no persistency
 19:28:42.124223 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 49562 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1496
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1496
 ==162575== 
 ==162575== Process terminating with default action of signal 4 (SIGILL)
 ==162575==  Illegal opcode at address 0x492B75F
 ==162575==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162575==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162575==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162575==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162575==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162575==    by 0x49908EB: curl_version_info (version.c:600)
 ==162575==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162575==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162575==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162575==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1496
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1494 ../src/curl -q --output log/22/curl1494.out  --include --trace-ascii log/22/trace1494 --trace-time http://127.0.0.1:35989/1494 -D log/22/heads1494 > log/22/stdout1494 2> log/22/stderr1494
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1492 ../src/curl -q --trace-ascii log/5/trace1492 --trace-time http://127.0.0.1:37089/junk1492 -J -O --show-headers --output-dir log/5 > log/5/stdout1492 2> log/5/stderr1492
test 1490 ["upload" with file:// overwriting existing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1490 ../src/curl -q --output log/6/curl1490.out  --trace-ascii log/6/trace1490 --trace-time file://localhost/startdir/src/build-curl/tests/log/6/result1490.txt -T log/6/upload1490.txt > log/6/stdout1490 2> log/6/stderr1490

 1490: output (log/6/result1490.txt) FAILED:
--- log/6/check-expected	2026-10-15 19:28:43.639511292 +0000
+++ log/6/check-generated	2026-10-15 19:28:43.639470625 +0000
@@ -1,5 +1 @@
-data[LF]
-in[LF]
-file[LF]
-to[LF]
-write[LF]
+already existing[LF]
== Contents of files in the log/6/ directory after test 1490
=== Start of file check-expected
 data[LF]
 in[LF]
 file[LF]
 to[LF]
 write[LF]
=== End of file check-expected
=== Start of file check-generated
 already existing[LF]
=== End of file check-generated
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1490 ../src/curl -q --output log/6/curl1490.out  --trace-ascii log/6/trace1490 --trace-time file://localhost/startdir/src/build-curl/tests/log/6/result1490.txt -T log/6/upload1490.txt > log/6/stdout1490 2> log/6/stderr1490
=== End of file commands.log
=== Start of file result1490.txt
 already existing
=== End of file result1490.txt
=== Start of file server.cmd
 Testnum 1490
=== End of file server.cmd
=== Start of file upload1490.txt
 data
 in
 file
 to
 write
=== End of file upload1490.txt
=== Start of file valgrind1490
 ==162113== 
 ==162113== Process terminating with default action of signal 4 (SIGILL)
 ==162113==  Illegal opcode at address 0x492B75F
 ==162113==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162113==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162113==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162113==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162113==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162113==    by 0x49908EB: curl_version_info (version.c:600)
 ==162113==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162113==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162113==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162113==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1490
test 1494 [HTTP GET with identity twice in TE header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1494 ../src/curl -q --output log/22/curl1494.out  --include --trace-ascii log/22/trace1494 --trace-time http://127.0.0.1:35989/1494 -D log/22/heads1494 > log/22/stdout1494 2> log/22/stderr1494

 1494: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1494
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1494 ../src/curl -q --output log/22/curl1494.out  --include --trace-ascii log/22/trace1494 --trace-time http://127.0.0.1:35989/1494 -D log/22/heads1494 > log/22/stdout1494 2> log/22/stderr1494
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.987588 ====> Client connect
 19:28:40.987638 accept_connection 3 returned 4
 19:28:40.987668 Read 93 bytes
 19:28:40.987680 Process 93 bytes request
 19:28:40.987693 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.987703 Are-we-friendly question received
 19:28:40.987923 Wrote request (93 bytes) input to log/22/server.input
 19:28:40.987945 Identifying ourselves as friends
 19:28:40.988042 Response sent (56 bytes) and written to log/22/server.response
 19:28:40.988055 special request received, no persistency
 19:28:40.988065 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 39536 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1494
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1494
 ==162483== 
 ==162483== Process terminating with default action of signal 4 (SIGILL)
 ==162483==  Illegal opcode at address 0x492B75F
 ==162483==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162483==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162483==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162483==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162483==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162483==    by 0x49908EB: curl_version_info (version.c:600)
 ==162483==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162483==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162483==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162483==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1494
test 1492 [HTTP GET with -J + --show-headers but no Content-Disposition:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1492 ../src/curl -q --trace-ascii log/5/trace1492 --trace-time http://127.0.0.1:37089/junk1492 -J -O --show-headers --output-dir log/5 > log/5/stdout1492 2> log/5/stderr1492

 1492: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1492
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1492 ../src/curl -q --trace-ascii log/5/trace1492 --trace-time http://127.0.0.1:37089/junk1492 -J -O --show-headers --output-dir log/5 > log/5/stdout1492 2> log/5/stderr1492
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.770427 ====> Client connect
 19:28:40.770467 accept_connection 3 returned 4
 19:28:40.770488 Read 93 bytes
 19:28:40.770498 Process 93 bytes request
 19:28:40.770512 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.770520 Are-we-friendly question received
 19:28:40.770547 Wrote request (93 bytes) input to log/5/server.input
 19:28:40.770563 Identifying ourselves as friends
 19:28:40.770624 Response sent (56 bytes) and written to log/5/server.response
 19:28:40.770633 special request received, no persistency
 19:28:40.770641 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 55602 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1492
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrinCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1495 ../src/curl -q --output log/14/curl1495.out  --include --trace-ascii log/14/trace1495 --trace-time http://127.0.0.1:45467/1495 -D log/14/heads1495 > log/14/stdout1495 2> log/14/stderr1495
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1491 ../src/curl -q --include --trace-ascii log/12/trace1491 --trace-time file://localhost/startdir/src/build-curl/tests/log/12/test1491.txt -o log/12/test1491.txt --skip-existing > log/12/stdout1491 2> log/12/stderr1491
d1492
 ==162304== 
 ==162304== Process terminating with default action of signal 4 (SIGILL)
 ==162304==  Illegal opcode at address 0x492B75F
 ==162304==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162304==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162304==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162304==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162304==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162304==    by 0x49908EB: curl_version_info (version.c:600)
 ==162304==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162304==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162304==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162304==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1492
test 1495 [HTTP GET with chunked + identity in TE header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1495 ../src/curl -q --output log/14/curl1495.out  --include --trace-ascii log/14/trace1495 --trace-time http://127.0.0.1:45467/1495 -D log/14/heads1495 > log/14/stdout1495 2> log/14/stderr1495

 1495: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1495
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1495 ../src/curl -q --output log/14/curl1495.out  --include --trace-ascii log/14/trace1495 --trace-time http://127.0.0.1:45467/1495 -D log/14/heads1495 > log/14/stdout1495 2> log/14/stderr1495
=== End of file commands.log
=== Start of file http_server.log
 19:28:41.104519 ====> Client connect
 19:28:41.104557 accept_connection 3 returned 4
 19:28:41.104578 Read 93 bytes
 19:28:41.104588 Process 93 bytes request
 19:28:41.104598 Got request: GET /verifiedserver HTTP/1.1
 19:28:41.104608 Are-we-friendly question received
 19:28:41.104632 Wrote request (93 bytes) input to log/14/server.input
 19:28:41.104646 Identifying ourselves as friends
 19:28:41.104714 Response sent (56 bytes) and written to log/14/server.response
 19:28:41.104722 special request received, no persistency
 19:28:41.104730 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56254 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1495
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1495
 ==162537== 
 ==162537== Process terminating with default action of signal 4 (SIGILL)
 ==162537==  Illegal opcode at address 0x492B75F
 ==162537==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162537==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162537==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162537==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162537==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162537==    by 0x49908EB: curl_version_info (version.c:600)
 ==162537==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162537==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162537==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162537==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1495
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1493 ../src/curl -q --output log/10/curl1493.out  --include --trace-ascii log/10/trace1493 --trace-time http://127.0.0.1:40913/1493 -D log/10/heads1493 > log/10/stdout1493 2> log/10/stderr1493
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1506 ./libtest/libtests lib1506 - 127.0.0.1 35735 > log/4/stdout1506 2> log/4/stderr1506
test 1491 [file:// do not overwrite self with --skip-existing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1491 ../src/curl -q --include --trace-ascii log/12/trace1491 --trace-time file://localhost/startdir/src/build-curl/tests/log/12/test1491.txt -o log/12/test1491.txt --skip-existing > log/12/stdout1491 2> log/12/stderr1491

 1491: stderr FAILED:
--- log/12/check-expected	2026-10-15 19:28:44.060529273 +0000
+++ log/12/check-generated	2026-10-15 19:28:44.055764687 +0000
@@ -1 +0,0 @@
-Note: skips transfer, "log/12/test1491.txt" exists locally[CR][LF]
== Contents of files in the log/12/ directory after test 1491
=== Start of file check-expected
 Note: skips transfer, "log/12/test1491.txt" exists locally[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1491 ../src/curl -q --include --trace-ascii log/12/trace1491 --trace-time file://localhost/startdir/src/build-curl/tests/log/12/test1491.txt -o log/12/test1491.txt --skip-existing > log/12/stdout1491 2> log/12/stderr1491
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1491
=== End of file server.cmd
=== Start of file test1491.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test1491.txt
=== Start of file valgrind1491
 ==162137== 
 ==162137== Process terminating with default action of signal 4 (SIGILL)
 ==162137==  Illegal opcode at address 0x492B75F
 ==162137==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162137==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162137==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162137==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162137==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162137==    by 0x49908EB: curl_version_info (version.c:600)
 ==162137==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162137==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162137==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162137==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1491
test 1493 [HTTP GET with identity + chunked in TE header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1493 ../src/curl -q --output log/10/curl1493.out  --include --trace-ascii log/10/trace1493 --trace-time http://127.0.0.1:40913/1493 -D log/10/heads1493 > log/10/stdout1493 2> log/10/stderr1493

 1493: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1493
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1493 ../src/curl -q --output log/10/curl1493.out  --include --trace-ascii log/10/trace1493 --trace-time http://127.0.0.1:40913/1493 -D log/10/heads1493 > log/10/stdout1493 2> log/10/stderr1493
=== End of file commands.log
=== Start of file http_server.log
 19:28:40.954535 ====> Client connect
 19:28:40.954582 accept_connection 3 returned 4
 19:28:40.954607 Read 93 bytes
 19:28:40.954618 Process 93 bytes request
 19:28:40.954632 Got request: GET /verifiedserver HTTP/1.1
 19:28:40.954641 Are-we-friendly question received
 19:28:40.954672 Wrote request (93 bytes) input to log/10/server.input
 19:28:40.954688 Identifying ourselves as friends
 19:28:40.954767 Response sent (56 bytes) and written to log/10/server.response
 19:28:40.954779 special request received, no persistency
 19:28:40.954788 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 57332 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1493
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1493
 ==162430== 
 ==162430== Process terminating with default action of signal 4 (SIGILL)
 ==162430==  Illegal opcode at address 0x492B75F
 ==162430==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162430==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162430==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162430==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162430==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162430==    by 0x49908EB: curl_version_info (version.c:600)
 ==162430==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162430==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162430==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1493
test 1506 [HTTP GET connection cache limit (CURLMOPT_MAXCONNECTS)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1506 ./libtest/libtests lib1506 - 127.0.0.1 35735 > log/4/stdout1506 2> log/4/stderr1506

 1506: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1506
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1506 ./libtest/libtests lib1506 - 127.0.0.1 35735 > log/4/stdout1506 2> log/4/stderr1506
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.534505 ====> Client connect
 19:28:43.534556 accept_connection 3 returned 4
 19:28:43.534585 Read 93 bytes
 19:28:43.534595 Process 93 bytes request
 19:28:43.534609 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.534618 Are-we-friendly question received
 19:28:43.534651 Wrote request (93 bytes) input to log/4/server.input
 19:28:43.534670 Identifying ourselves as friends
 19:28:43.534758 Response sent (56 bytes) and written to log/4/server.response
 19:28:43.534770 special request received, no persistency
 19:28:43.534779 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 58058 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1506
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1506
 ==163229== 
 ==163229== Process terminating with default action of signal 4 (SIGILL)
 ==163229==  Illegal opcode at address 0x51CC63F
 ==163229==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163229==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163229==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163229CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1501 ./libtest/libtests lib1501 ftp://127.0.0.1:33695/1501/ > log/13/stdout1501 2> log/13/stderr1501
* kill pid for ftp-ctrl => 93294
RUN: Process with pid 93286 signalled to die
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1503 ./libtest/libtests lib1502 http://google.com:35993/1503 35993 127.0.0.1 > log/17/stdout1503 2> log/17/stderr1503
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1508 ./libtest/libtests lib1508 - > log/23/stdout1508 2> log/23/stderr1508
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1498 ../src/curl -q --output log/1/curl1498.out  --include --trace-ascii log/1/trace1498 --trace-time http://127.0.0.1:38815/bzz/1498 -T . <log/1/stdin-for-1498 > log/1/stdout1498 2> log/1/stderr1498
RUN: Process with pid 93286 gracefully died
==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1506
test 1503 [HTTP multi with CURLOPT_RESOLVE, cleanup sequence PA]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1503 ./libtest/libtests lib1502 http://google.com:35993/1503 35993 127.0.0.1 > log/17/stdout1503 2> log/17/stderr1503

 1503: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1503
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1503 ./libtest/libtests lib1502 http://google.com:35993/1503 35993 127.0.0.1 > log/17/stdout1503 2> log/17/stderr1503
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.341141 ====> Client connect
 19:28:43.341179 accept_connection 3 returned 4
 19:28:43.341201 Read 93 bytes
 19:28:43.341210 Process 93 bytes request
 19:28:43.341223 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.341231 Are-we-friendly question received
 19:28:43.341258 Wrote request (93 bytes) input to log/17/server.input
 19:28:43.341275 Identifying ourselves as friends
 19:28:43.341345 Response sent (56 bytes) and written to log/17/server.response
 19:28:43.341357 special request received, no persistency
 19:28:43.341365 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 42270 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1503
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1503
 ==163023== 
 ==163023== Process terminating with default action of signal 4 (SIGILL)
 ==163023==  Illegal opcode at address 0x51CC63F
 ==163023==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163023==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163023==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163023==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1503
test 1498 [HTTP PUT from stdin using period]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1498 ../src/curl -q --output log/1/curl1498.out  --include --trace-ascii log/1/trace1498 --trace-time http://127.0.0.1:38815/bzz/1498 -T . <log/1/stdin-for-1498 > log/1/stdout1498 2> log/1/stderr1498

 1498: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1498
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1498 ../src/curl -q --output log/1/curl1498.out  --include --trace-ascii log/1/trace1498 --trace-time http://127.0.0.1:38815/bzz/1498 -T . <log/1/stdin-for-1498 > log/1/stdout1498 2> log/1/stderr1498
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.491699 ====> Client connect
 19:28:42.491738 accept_connection 3 returned 4
 19:28:42.491760 Read 93 bytes
 19:28:42.491769 Process 93 bytes request
 19:28:42.491781 Got request: GET /verifiedserver HTTP/1.1
 19:28:42.491789 Are-we-friendly question received
 19:28:42.491815 Wrote request (93 bytes) input to log/1/server.input
 19:28:42.491829 Identifying ourselves as friends
 19:28:42.491890 Response sent (56 bytes) and written to log/1/server.response
 19:28:42.491898 special request received, no persistency
 19:28:42.491906 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 33024 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1498
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file stdin-for-1498
 hejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhejhej
=== End of file stdin-for-1498
=== Start of file valgrind1498
 ==162772== 
 ==162772== Process terminating with default action of signal 4 (SIGILL)
 ==162772==  Illegal opcode at address 0x492B75F
 ==162772==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162772==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162772==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162772==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162772==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162772==    by 0x49908EB: curl_version_info (version.c:600)
 ==162772==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162772==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162772==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162772==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1498
test 1501 [FTP with multi interface and slow LIST response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1501 ./libtest/libtests lib1501 ftp://127.0.0.1:33695/1501/ > log/13/stdout1501 2> log/13/stderr1501

 1501: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1501
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1501 ./libtest/libtests lib1501 ftp://127.0.0.1:33695/1501/ > log/13/stdout1501 2> log/13/stderr1501
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:42.746723 ====> Client connect
 19:28:42.746911 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:42.747224 < "USER anonymous"
 19:28:42.747268 > "331 We are happy you popped in![CR][LF]"
 19:28:42.747452 < "PASS ftp@example.com"
 19:28:42.747485 > "230 Welcome you silly person[CR][LF]"
 19:28:42.747646 < "PWD"
 19:28:42.747680 > "257 "/" is current directory[CR][LF]"
 19:28:42.747843 < "EPSV"
 19:28:42.747868 ====> Passive DATA channel requested by client
 19:28:42.747882 DATA sockfilt for passive data channel starting...
 19:28:42.759818 DATA sockfilt for passive data channel started (pid 163015)
 19:28:42.759955 DATA sockfilt for passive data channel listens on port 35071
 19:28:42.760003 > "229 Entering Passive Mode (|||35071|)[CR][LF]"
 19:28:42.760020 Client has been notified that upcoming DATA connection is awaited on port 35071
 19:28:42.760313 Client connects to port 35071
 19:28:42.760347 ====> Client established passive DATA connection on port 35071
 19:28:42.760483 < "TYPE I"
 19:28:42.760517 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:42.760676 < "SIZE verifiedserver"
 19:28:42.760710 > "213 17[CR][LF]"
 19:28:42.760863 < "RETR verifiedserver"
 19:28:42.760896 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:42.760986 =====> Closing passive DATA connection...
 19:28:42.761003 Server disconnects passive DATA connection
 19:28:42.761226 Server disconnected passive DATA connection
 19:28:42.761254 DATA sockfilt for passive data channel quits (pid 163015)
 19:28:42.761479 DATA sockfilt for passive data channel quit (pid 163015)
 19:28:42.761505 =====> Closed passive DATA connection
 19:28:42.761533 > "226 File transfer complete[CR][LF]"
 19:28:42.802557 < "QUIT"
 19:28:42.802613 > "221 bye bye baby[CR][LF]"
 19:28:42.806612 MAIN sockfilt said DISC
 19:28:42.806656 ====> Client disconnected
 19:28:42.806743 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:42.347771 ====> Client connect
 19:28:42.349376 Received DATA (on stdin)
 19:28:42.349392 > 146 bytes data, server => client
 19:28:42.349403 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:42.349412 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:42.349420 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:42.349513 < 16 bytes data, client => server
 19:28:42.349526 'USER anonymous\r\n'
 19:28:42.349718 Received DATA (on stdin)
 19:28:42.349730 > 33 bytes data, server => client
 19:28:42.349740 '331 We are happy you popped in!\r\n'
 19:28:42.349796 < 22 bytes data, client => server
 19:28:42.349806 'PASS ftp@example.com\r\n'
 19:28:42.349930 Received DATA (on stdin)
 19:28:42.349941 > 30 bytes data, server => client
 19:28:42.349951 '230 Welcome you silly person\r\n'
 19:28:42.350003 < 5 bytes data, client => server
 19:28:42.350013 'PWD\r\n'
 19:28:42.350124 Received DATA (on stdin)
 19:28:42.350134 > 30 bytes data, server => client
 19:28:42.350143 '257 "/" is current directory\r\n'
 19:28:42.350202 < 6 bytes data, client => server
 19:28:42.350213 'EPSV\r\n'
 19:28:42.362476 Received DATA (on stdin)
 19:28:42.362495 > 39 bytes data, server => client
 19:28:42.362508 '229 Entering Passive Mode (|||35071|)\r\n'
 19:28:42.362814 < 8 bytes data, client => server
 19:28:42.362825 'TYPE I\r\n'
 19:28:42.362964 Received DATA (on stdin)
 19:28:42.362975 > 33 bytes data, server => client
 19:28:42.362985 '200 I modify TYPE as you wanted\r\n'
 19:28:42.363040 < 21 bytes data, client => server
 19:28:42.363051 'SIZE verifiedserver\r\n'
 19:28:42.363154 Received DATA (on stdin)
 19:28:42.363164 > 8 bytes data, server => client
 19:28:42.363174 '213 17\r\n'
 19:28:42.363225 < 21 bytes data, client => server
 19:28:42.363236 'RETR verifiedserver\r\n'
 19:28:42.363450 Received DATA (on stdin)
 19:28:42.363461 > 29 bytes data, server => client
 19:28:42.363470 '150 Binary junk (17 bytes).\r\n'
 19:28:42.363979 Received DATA (on stdin)
 19:28:42.363990 > 28 bytes data, server => client
 19:28:42.364001 '226 File transfer complete\r\n'
 19:28:42.404812 < 6 bytes data, client => server
 19:28:42.404841 'QUIT\r\n'
 19:28:42.407760 Received DATA (on stdin)
 19:28:42.407780 > 18 bytes data, server => client
 19:28:42.407790 '221 bye bye baby\r\n'
 19:28:42.408999 ====> Client disconnect
 19:28:42.409189 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:42.361904 Running IPv4 version
 19:28:42.362000 Listening on port 35071
 19:28:42.362036 Wrote pid 163015 to log/13/server/ftp_sockdata.pid
 19:28:42.362206 Received PING (on stdin)
 19:28:42.362299 Received PORT (on stdin)
 19:28:42.362709 ====> Client connect
 19:28:42.363496 Received DATA (on stdin)
 19:28:42.363507 > 17 bytes data, server => client
 19:28:42.363517 'WE ROOLZ: 93286\r\n'
 19:28:42.363542 Received DISC (on stdin)
 19:28:42.363552 ====> Client forcibly disconnected
 19:28:42.363707 Received QUIT (on stdin)
 19:28:42.363717 quits
 19:28:42.363776 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 DELAY LIST 2
 DELAY TYPE 2
 Testnum 1501
=== End of file server.cmd
=== Start of file valgrind1501
 ==163053== 
 ==163053== Process terminating with default action of signal 4 (SIGILL)
 ==163053==  Illegal opcode at address 0x51CC63F
 ==163053==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163053==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163053==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163053==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1501
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1505 ./libtest/libtests lib1502 http://google.com:38895/1505 38895 127.0.0.1 > log/24/stdout1505 2> log/24/stderr1505
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1507 ./libtest/libtests lib1507 smtp://127.0.0.1:36859/1507 <log/21/stdin-for-1507 > log/21/stdout1507 2> log/21/stderr1507
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1504 ./libtest/libtests lib1502 http://google.com:43739/1504 43739 127.0.0.1 > log/18/stdout1504 2> log/18/stderr1504
test 1508 [Close a multi handle without using it]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1508 ./libtest/libtests lib1508 - > log/23/stdout1508 2> log/23/stderr1508

 1508: output (log/23/stdout1508) FAILED:
--- log/23/check-expected	2026-10-15 19:28:44.401225282 +0000
+++ log/23/check-generated	2026-10-15 19:28:44.395771172 +0000
@@ -1 +0,0 @@
-We are done[LF]
== Contents of files in the log/23/ directory after test 1508
=== Start of file check-expected
 We are done[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1508 ./libtest/libtests lib1508 - > log/23/stdout1508 2> log/23/stderr1508
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1508
=== End of file server.cmd
=== Start of file valgrind1508
 ==163166== 
 ==163166== Process terminating with default action of signal 4 (SIGILL)
 ==163166==  Illegal opcode at address 0x51CC63F
 ==163166==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163166==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163166==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163166==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1508
test 1505 [HTTP multi with CURLOPT_RESOLVE, cleanup sequence PB]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1505 ./libtest/libtests lib1502 http://google.com:38895/1505 38895 127.0.0.1 > log/24/stdout1505 2> log/24/stderr1505

 1505: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1505
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1505 ./libtest/libtests lib1502 http://google.com:38895/1505 38895 127.0.0.1 > log/24/stdout1505 2> log/24/stderr1505
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.503646 ====> Client connect
 19:28:42.503679 accept_connection 3 returned 4
 19:28:42.503793 Read 93 bytes
 19:28:42.503809 Process 93 bytes request
 19:28:42.503824 Got request: GET /verifiedserver HTTP/1.1
 19:28:42.503833 Are-we-friendly question received
 19:28:42.503864 Wrote request (93 bytes) input to log/24/server.input
 19:28:42.503884 Identifying ourselves as friends
 19:28:42.503951 Response sent (56 bytes) and written to log/24/server.response
 19:28:42.503962 special request received, no persistency
 19:28:42.503971 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43970 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1505
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1505
 ==163182== 
 ==163182== Process terminating with default action of signal 4 (SIGILL)
 ==163182==  Illegal opcode at address 0x51CC63F
 ==163182==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163182==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163182==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163182==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1505
test 1507 [SMTP with multi interface and CURLE_ABORTED_BY_CALLBACK]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1507 ./libtest/libtests lib1507 smtp://127.0.0.1:36859/1507 <log/21/stdin-for-1507 > log/21/stdout1507 2> log/21/stderr1507

 1507: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1507
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1507 ./libtest/libtests lib1507 smtp://127.0.0.1:36859/1507 <log/21/stdin-for-1507 > log/21/stdout1507 2> log/21/stderr1507
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1507
=== End of file server.cmd
=== Start of file smtp_server.log
 19:28:42.938284 ====> Client connect
 19:28:42.938522 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:42.940483 < "EHLO verifiedserver"
 19:28:42.940542 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:28:42.940765 < "HELP"
 19:28:42.940807 > "214 WE ROOLZ: 127888[CR][LF]"
 19:28:42.940826 return proof we are we
 19:28:42.941086 < "QUIT"
 19:28:42.941122 > "221 curl ESMTP server signing off[CR][LF]"
 19:28:42.944151 MAIN sockfilt said DISC
 19:28:42.944193 ====> Client disconnected
 19:28:42.944269 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:28:42.540000 ====> Client connect
 19:28:42.540992 Received DATA (on stdin)
 19:28:42.541014 > 146 bytes data, server => client
 19:28:42.541028 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:42.541039 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:42.541048 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:42.542733 < 21 bytes data, client => server
 19:28:42.542754 'EHLO verifiedserver\r\n'
 19:28:42.542996 Received DATA (on stdin)
 19:28:42.543011 > 53 bytes data, server => client
 19:28:42.543022 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:28:42.543091 < 6 bytes data, client => server
 19:28:42.543106 'HELP\r\n'
 19:28:42.543270 Received DATA (on stdin)
 19:28:42.543283 > 22 bytes data, server => client
 19:28:42.543293 '214 WE ROOLZ: 127888\r\n'
 19:28:42.543403 < 6 bytes data, client => server
 19:28:42.543419 'QUIT\r\n'
 19:28:42.543569 Received DATA (on stdin)
 19:28:42.543581 > 35 bytes data, server => client
 19:28:42.543592 '221 curl ESMTP server signing off\r\n'
 19:28:42.544771 ====> Client disconnect
 19:28:42.546720 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-1507
 From: different
 To: another
 body
=== End of file stdin-for-1507
=== Start of file valgrind1507
 ==163266== 
 ==163266== Process terminating with default action of signal 4 (SIGILL)
 ==163266==  Illegal opcode at address 0x51CC63F
 ==163266==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163266==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163266==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163266==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1507
test 1504 [HTTP multi with CURLOPT_RESOLVE, cleanup sequence UB]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1504 ./libtest/libtests lib1502 http://google.com:43739/1504 43739 127.0.0.1 > log/18/stdout1504 2> log/18/stderr1504

 1504: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1499 ../src/curl -q --output log/7/curl1499.out  --include --trace-ascii log/7/trace1499 --trace-time http://127.0.0.1:40859/1499 http://127.0.0.1:40859/1499 -D log/7/heads1499 > log/7/stdout1499 2> log/7/stderr1499
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1510 ./libtest/libtests lib1510 - 127.0.0.1 43733 > log/9/stdout1510 2> log/9/stderr1510
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1497 ../src/curl -q --output log/15/curl1497.out  --include --trace-ascii log/15/trace1497 --trace-time http://127.0.0.1:40321/1497 --retry 3 -o /dev/null > log/15/stdout1497 2> log/15/stderr1497
of files in the log/18/ directory after test 1504
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1504 ./libtest/libtests lib1502 http://google.com:43739/1504 43739 127.0.0.1 > log/18/stdout1504 2> log/18/stderr1504
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.448152 ====> Client connect
 19:28:43.448193 accept_connection 3 returned 4
 19:28:43.448216 Read 93 bytes
 19:28:43.448226 Process 93 bytes request
 19:28:43.448241 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.448250 Are-we-friendly question received
 19:28:43.448280 Wrote request (93 bytes) input to log/18/server.input
 19:28:43.448302 Identifying ourselves as friends
 19:28:43.448410 Response sent (56 bytes) and written to log/18/server.response
 19:28:43.448421 special request received, no persistency
 19:28:43.448429 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46672 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1504
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1504
 ==163103== 
 ==163103== Process terminating with default action of signal 4 (SIGILL)
 ==163103==  Illegal opcode at address 0x51CC63F
 ==163103==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163103==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163103==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163103==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1504
test 1499 [HTTP chunked encoding and chunked trailer, twice]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1499 ../src/curl -q --output log/7/curl1499.out  --include --trace-ascii log/7/trace1499 --trace-time http://127.0.0.1:40859/1499 http://127.0.0.1:40859/1499 -D log/7/heads1499 > log/7/stdout1499 2> log/7/stderr1499

 1499: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1499
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1499 ../src/curl -q --output log/7/curl1499.out  --include --trace-ascii log/7/trace1499 --trace-time http://127.0.0.1:40859/1499 http://127.0.0.1:40859/1499 -D log/7/heads1499 > log/7/stdout1499 2> log/7/stderr1499
=== End of file commands.log
=== Start of file http_server.log
 19:28:41.753389 ====> Client connect
 19:28:41.753429 accept_connection 3 returned 4
 19:28:41.753453 Read 93 bytes
 19:28:41.753464 Process 93 bytes request
 19:28:41.753478 Got request: GET /verifiedserver HTTP/1.1
 19:28:41.753487 Are-we-friendly question received
 19:28:41.753516 Wrote request (93 bytes) input to log/7/server.input
 19:28:41.753533 Identifying ourselves as friends
 19:28:41.753600 Response sent (56 bytes) and written to log/7/server.response
 19:28:41.753610 special request received, no persistency
 19:28:41.753620 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 57166 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 1499
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1499
 ==162858== 
 ==162858== Process terminating with default action of signal 4 (SIGILL)
 ==162858==  Illegal opcode at address 0x492B75F
 ==162858==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162858==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162858==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162858==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162858==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162858==    by 0x49908EB: curl_version_info (version.c:600)
 ==162858==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162858==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162858==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162858==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1499
test 1510 [HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1510 ./libtest/libtests lib1510 - 127.0.0.1 43733 > log/9/stdout1510 2> log/9/stderr1510

 1510: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1510
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1510 ./libtest/libtests lib1510 - 127.0.0.1 43733 > log/9/stdout1510 2> log/9/stderr1510
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.881154 ====> Client connect
 19:28:42.881204 accept_connection 3 returned 4
 19:28:42.881232 Read 93 bytes
 19:28:42.881243 Process 93 bytes request
 19:28:42.881256 Got request: GET /verifiedserver HTTP/1.1
 19:28:42.881265 Are-we-friendly question received
 19:28:42.881297 Wrote request (93 bytes) input to log/9/server.input
 19:28:42.881315 Identifying ourselves as friends
 19:28:42.881412 Response sent (56 bytes) and written to log/9/server.response
 19:28:42.881424 special request received, no persistency
 19:28:42.881433 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35212 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1510
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1510
 ==163517== 
 ==163517== Process terminating with default action of signal 4 (SIGILL)
 ==163517==  Illegal opcode at address 0x51CC63F
 ==163517==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163517==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163517==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163517==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1510
test 1497 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1509 ./libtest/libtests lib1509 http://the.old.moo.1509:34531/1509 127.0.0.1:37607 > log/2/stdout1509 2> log/2/stderr1509
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1514 ./libtest/libtests lib1514 http://127.0.0.1:44467/1514 > log/8/stdout1514 2> log/8/stderr1514
[HTTP GET --retry on 503 error with output to /dev/null]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1497 ../src/curl -q --output log/15/curl1497.out  --include --trace-ascii log/15/trace1497 --trace-time http://127.0.0.1:40321/1497 --retry 3 -o /dev/null > log/15/stdout1497 2> log/15/stderr1497

 1497: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1497
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1497 ../src/curl -q --output log/15/curl1497.out  --include --trace-ascii log/15/trace1497 --trace-time http://127.0.0.1:40321/1497 --retry 3 -o /dev/null > log/15/stdout1497 2> log/15/stderr1497
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.243462 ====> Client connect
 19:28:42.243500 accept_connection 3 returned 4
 19:28:42.243618 Read 93 bytes
 19:28:42.243635 Process 93 bytes request
 19:28:42.243650 Got request: GET /verifiedserver HTTP/1.1
 19:28:42.243659 Are-we-friendly question received
 19:28:42.243692 Wrote request (93 bytes) input to log/15/server.input
 19:28:42.243712 Identifying ourselves as friends
 19:28:42.243775 Response sent (56 bytes) and written to log/15/server.response
 19:28:42.243786 special request received, no persistency
 19:28:42.243795 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 46344 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1497
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1497
 ==162667== 
 ==162667== Process terminating with default action of signal 4 (SIGILL)
 ==162667==  Illegal opcode at address 0x492B75F
 ==162667==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==162667==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==162667==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==162667==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==162667==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==162667==    by 0x49908EB: curl_version_info (version.c:600)
 ==162667==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==162667==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==162667==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==162667==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1497
test 1509 [http:// through proxytunnel]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1509 ./libtest/libtests lib1509 http://the.old.moo.1509:34531/1509 127.0.0.1:37607 > log/2/stdout1509 2> log/2/stderr1509

 1509: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1509
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1509 ./libtest/libtests lib1509 http://the.old.moo.1509:34531/1509 127.0.0.1:37607 > log/2/stdout1509 2> log/2/stderr1509
=== End of file commands.log
=== Start of file http2_server.log
 19:28:43.782532 ====> Client connect
 19:28:43.782567 accept_connection 3 returned 4
 19:28:43.782714 Read 93 bytes
 19:28:43.782725 Process 93 bytes request
 19:28:43.782745 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.782753 Are-we-friendly question received
 19:28:43.782783 Wrote request (93 bytes) input to log/2/proxy.input
 19:28:43.782804 Identifying ourselves as friends
 19:28:43.782869 Response sent (57 bytes) and written to log/2/proxy.response
 19:28:43.782879 special request received, no persistency
 19:28:43.782887 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:37607...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37607) from 127.0.0.1 port 43486 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37607
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37607 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 150157
=== End of file http2_verify.out
=== Start of file http_server.log
 19:28:43.694522 ====> Client connect
 19:28:43.694561 accept_connection 3 returned 4
 19:28:43.694583 Read 93 bytes
 19:28:43.694593 Process 93 bytes request
 19:28:43.694606 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.694614 Are-we-friendly question received
 19:28:43.694639 Wrote request (93 bytes) input to log/2/server.input
 19:28:43.694654 Identifying ourselves as friends
 19:28:43.694725 Response sent (56 bytes) and written to log/2/server.response
 19:28:43.694735 special request received, no persistency
 19:28:43.694743 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 53574 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 150157
=== End of file proxy.response
=== Start of file server.cmd
 connection-monitor
 Testnum 1509
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file test1509.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test1509.txt
=== Start of file valgrind1509
 ==163447== 
 ==163447== Process terminating with default action of signal 4 (SIGILL)
 ==163447==  Illegal opcode at address 0x51CC63F
 ==163447==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163447==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163447==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163447==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1509
test 1514 [HTTP POST with read callback and unknown data size]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1514 ./libtest/libtests lib1514 http://127.0.0.1:44467/1514 > log/8/stdout1514 2> log/8/stderr1514

 1514: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1514
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1514 ./libtest/libtests lib1514 http://127.0.0.1:44467/1514 > log/8/sCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1511 ./libtest/libtests lib1511 http://127.0.0.1:40989/1511 > log/11/stdout1511 2> log/11/stderr1511
tdout1514 2> log/8/stderr1514
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.090148 ====> Client connect
 19:28:43.090184 accept_connection 3 returned 4
 19:28:43.090206 Read 93 bytes
 19:28:43.090216 Process 93 bytes request
 19:28:43.090229 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.090238 Are-we-friendly question received
 19:28:43.090266 Wrote request (93 bytes) input to log/8/server.input
 19:28:43.090283 Identifying ourselves as friends
 19:28:43.090349 Response sent (56 bytes) and written to log/8/server.response
 19:28:43.090359 special request received, no persistency
 19:28:43.090367 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 45226 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1514
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1514
 ==163719== 
 ==163719== Process terminating with default action of signal 4 (SIGILL)
 ==163719==  Illegal opcode at address 0x51CC63F
 ==163719==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163719==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163719==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163719==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1514
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1502 ./libtest/libtests lib1502 http://google.com:41689/1502 41689 127.0.0.1 > log/20/stdout1502 2> log/20/stderr1502
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1513 ./libtest/libtests lib1513 http://127.0.0.1:37077/1513 > log/19/stdout1513 2> log/19/stderr1513
test 1511 [HTTP GET time conditions in repeated requests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1511 ./libtest/libtests lib1511 http://127.0.0.1:40989/1511 > log/11/stdout1511 2> log/11/stderr1511

 1511: data FAILED:
--- log/11/check-expected	2026-10-15 19:28:44.976459644 +0000
+++ log/11/check-generated	2026-10-15 19:28:44.972448834 +0000
@@ -1,17 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fakem[CR][LF]
-Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT[CR][LF]
-Content-Type: text/html[CR][LF]
-Content-Length: 12[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-HTTP/1.1 200 OK[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fakem[CR][LF]
-Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT[CR][LF]
-Content-Type: text/html[CR][LF]
-Content-Length: 12[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-Hello World[LF]
== Contents of files in the log/11/ directory after test 1511
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fakem[CR][LF]
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT[CR][LF]
 Content-Type: text/html[CR][LF]
 Content-Length: 12[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 HTTP/1.1 200 OK[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fakem[CR][LF]
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT[CR][LF]
 Content-Type: text/html[CR][LF]
 Content-Length: 12[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 Hello World[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1511 ./libtest/libtests lib1511 http://127.0.0.1:40989/1511 > log/11/stdout1511 2> log/11/stderr1511
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.938200 ====> Client connect
 19:28:42.938238 accept_connection 3 returned 4
 19:28:42.938259 Read 93 bytes
 19:28:42.938268 Process 93 bytes request
 19:28:42.938281 Got request: GET /verifiedserver HTTP/1.1
 19:28:42.938289 Are-we-friendly question received
 19:28:42.938316 Wrote request (93 bytes) input to log/11/server.input
 19:28:42.938333 Identifying ourselves as friends
 19:28:42.938397 Response sent (56 bytes) and written to log/11/server.response
 19:28:42.938406 special request received, no persistency
 19:28:42.938414 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 53280 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1511
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1511
 ==163571== 
 ==163571== Process terminating with default action of signal 4 (SIGILL)
 ==163571==  Illegal opcode at address 0x51CC63F
 ==163571==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163571==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163571==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163571==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1511
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/20/server/http_server.pid" --logfile "log/20/http_server.log" --logdir "log/20" --portfile log/20/server/http_server.port --config log/20/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 162978 port 41689
* pid http => 162978 162978
test 1502 [HTTP multi with CURLOPT_RESOLVE, cleanup sequence UA]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1502 ./libtest/libtests lib1502 http://google.com:41689/1502 41689 127.0.0.1 > log/20/stdout1502 2> log/20/stderr1502

 1502: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1502
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1502 ./libtest/libtests lib1502 http://google.com:41689/1502 41689 127.0.0.1 > log/20/stdout1502 2> log/20/stderr1502
=== End of file commands.log
=== Start of file http_server.log
 19:28:42.302924 Running HTTP IPv4 version on port 41689
 19:28:42.303023 Wrote pid 162978 to log/20/server/http_server.pid
 19:28:42.303055 Wrote port 41689 to log/20/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 1502
=== End of file server.cmd
=== Start of file valgrind1502
 ==163864== 
 ==163864== Process terminating with default action of signal 4 (SIGILL)
 ==163864==  Illegal opcode at address 0x51CC63F
 ==163864==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163864==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163864==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163864==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1502
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1518 ./libtest/libtests lib1518 http://127.0.0.1:35989/1518 > log/22/stdout1518 2> log/22/stderr1518
test 1513 [return failure immediately from progress callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1513 ./libtest/libtests lib1513 http://127.0.0.1:37077/1513 > log/19/stdout1513 2> log/19/stderr1513

 1513: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:28:45.107330756 +0000
+++ log/19/check-generated	2026-10-15 19:28:45.102459531 +0000
@@ -1 +0,0 @@
-PROGRESSFUNCTION called[LF]
== Contents of files in the log/19/ directory after test 1513
=== Start of file check-expected
 PROGRESSFUNCTION called[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1513 ./libtest/libtests lib1513 http://127.0.0.1:37077/1513 > log/19/stdout1513 2> log/19/stderr1513
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.023065 ====> Client connect
 19:28:43.023105 accept_connection 3 returned 4
 19:28:43.023129 Read 93 bytes
 19:28:43.023140 Process 93 bytes request
 19:28:43.023155 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.023164 Are-we-friendly question received
 19:28:43.023195 Wrote request (93 bytes) input to log/19/server.input
 19:28:43.023213 Identifying ourselves as friends
 19:28:43.023287 Response sent (57 bytes) and written to log/19/server.response
 19:28:43.023300 special request received, no persistency
 19:28:43.023309 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 57982 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1513
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1513
 ==163630== 
 ==163630== Process terminating with default action of signal 4 (SIGILL)
 ==163630==  Illegal opcode at address 0x51CC63F
 ==163630==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163630==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163630==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163630==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1513
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1516 ./libtest/libtests lib1515 path/1516 127.0.0.1 35903 > log/16/stdout1516 2> log/16/stderr1516
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1519 ./libtest/libtests lib1518 http://127.0.0.1:37089/1519 > log/5/stdout1519 2> log/5/stderr1519
test 1518 [Extract Location: with broken URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1518 ./libtest/libtests lib1518 http://127.0.0.1:35989/1518 > log/22/stdout1518 2> log/22/stderr1518

 1518: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:28:45.251264995 +0000
+++ log/22/check-generated	2026-10-15 19:28:45.245787111 +0000
@@ -1,5 +0,0 @@
-result 0[LF]
-status 302[LF]
-redirects 0[LF]
-effectiveurl http://127.0.0.1:35989/1518[LF]
-redirecturl http://1.2 .4.5/test[LF]
== Contents of files in the log/22/ directory after test 1518
=== Start of file check-expected
 result 0[LF]
 status 302[LF]
 redirects 0[LF]
 effectiveurl http://127.0.0.1:35989/1518[LF]
 redirecturl http://1.2 .4.5/test[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1518 ./libtest/libtests lib1518 http://127.0.0.1:35989/1518 > log/22/stdout1518 2> log/22/stderr1518
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.363257 ====> Client connect
 19:28:43.363290 accept_connection 3 returned 4
 19:28:43.363431 Read 93 bytes
 19:28:43.363444 Process 93 bytes request
 19:28:43.363456 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.363465 Are-we-friendly question received
 19:28:43.363522 Wrote request (93 bytes) input to log/22/server.input
 19:28:43.363539 Identifying ourselves as friends
 19:28:43.363595 Response sent (56 bytes) and written to log/22/server.response
 19:28:43.363604 special request received, no persistency
 19:28:43.363612 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 38026 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1518
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1518
 ==163951== 
 ==163951== Process terminating with default action of signal 4 (SIGILL)
 ==163951==  Illegal opcode at address 0x51CC63F
 ==163951==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163951==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163951==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163951==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1518
test 1516 [caching of manual libcurl DNS entries after dead connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1516 ./libtest/libtests lib1515 path/1516 127.0.0.1 35903 > log/16/stdout1516 2> log/16/stderr1516

libtests returned 132, when expecting 0
 1516: exit FAILED
== Contents of files in the log/16/ directory after test 1516
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1516 ./libtest/libtests lib1515 path/1516 127.0.0.1 35903 > log/16/stdout1516 2> log/16/stderr1516
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.173705 ====> Client connect
 19:28:44.173739 accept_connection 3 returned 4
 19:28:44.173759 Read 93 bytes
 19:28:44.173769 Process 93 bytes request
 19:28:44.173782 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.173790 Are-we-friendly question received
 19:28:44.173816 Wrote request (93 bytes) input to log/16/server.input
 19:28:44.173832 Identifying ourselves as friends
 19:28:44.173895 Response sent (56 bytes) and written to log/16/server.response
 19:28:44.173905 special request received, no persistency
 19:28:44.173913 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58328 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1516
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1516
 ==163760== 
 ==163760== Process terminating with default action of signal 4 (SIGILL)
 ==163760==  Illegal opcode at address 0x51CC63F
 ==163760==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163760==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163760==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163760==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1516
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1515 ./libtest/libtests lib1515 path/1515 127.0.0.1 36161 > log/3/stdout1515 2> log/3/stderr1515
test 1519 [Extract Location: with broken absolute URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1519 ./libtest/libtests lib1518 http://127.0.0.1:37089/1519 > log/5/stdout1519 2> log/5/stderr1519

 1519: stdout FAILED:
--- log/5/check-expected	2026-10-15 19:28:45.267648803 +0000
+++ log/5/check-generated	2026-10-15 19:28:45.262454075 +0000
@@ -1,5 +0,0 @@
-result 0[LF]
-status 302[LF]
-redirects 0[LF]
-effectiveurl http://127.0.0.1:37089/1519[LF]
-redirecturl http://127.0.0.1:37089/h%20ttp://1.2.4.5/test[LF]
== Contents of files in the log/5/ directory after test 1519
=== Start of file check-expected
 result 0[LF]
 status 302[LF]
 redirects 0[LF]
 effectiveurl http://127.0.0.1:37089/1519[LF]
 redirecturl http://127.0.0.1:37089/h%20ttp://1.2.4.5/test[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1519 ./libtest/libtests lib1518 http://127.0.0.1:37089/1519 > log/5/stdout1519 2> log/5/stderr1519
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.434477 ====> Client connect
 19:28:43.434521 accept_connection 3 returned 4
 19:28:43.434550 Read 93 bytes
 19:28:43.434562 Process 93 bytes request
 19:28:43.434575 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.434584 Are-we-friendly question received
 19:28:43.434613 Wrote request (93 bytes) input to log/5/server.input
 19:28:43.434629 Identifying ourselves as friends
 19:28:43.434710 Response sent (56 bytes) and written to log/5/server.response
 19:28:43.434719 special request received, no persistency
 19:28:43.434727 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 54810 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1519
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1519
 ==164029== 
 ==164029== Process terminating with default action of signal 4 (SIGILL)
 ==164029==  Illegal opcode at address 0x51CC63F
 ==164029==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164029==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164029==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164029==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1519
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1520 ./libtest/libtests lib1520 smtp://127.0.0.1:44025/1520 <log/14/stdin-for-1520 > log/14/stdout1520 2> log/14/stderr1520
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1517 ./libtest/libtests lib1517 http://127.0.0.1:33935/1517 > log/6/stdout1517 2> log/6/stderr1517
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1521 ./libtest/libtests lib1521 - > log/12/stdout1521 2> log/12/stderr1521
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1522 ./libtest/libtests lib1522 http://127.0.0.1:40913/1522 > log/10/stdout1522 2> log/10/stderr1522
test 1515 [caching of manual libcurl DNS entries after DNS cache timeout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1515 ./libtest/libtests lib1515 path/1515 127.0.0.1 36161 > log/3/stdout1515 2> log/3/stderr1515

 1515: data FAILED:
--- log/3/check-expected	2026-10-15 19:28:45.284157739 +0000
+++ log/3/check-generated	2026-10-15 19:28:45.279121041 +0000
@@ -1,2 +0,0 @@
-hello[LF]
-hello[LF]
== Contents of files in the log/3/ directory after test 1515
=== Start of file check-expected
 hello[LF]
 hello[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1515 ./libtest/libtests lib1515 path/1515 127.0.0.1 36161 > log/3/stdout1515 2> log/3/stderr1515
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.130307 ====> Client connect
 19:28:44.130343 accept_connection 3 returned 4
 19:28:44.130364 Read 93 bytes
 19:28:44.130374 Process 93 bytes request
 19:28:44.130388 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.130396 Are-we-friendly question received
 19:28:44.130422 Wrote request (93 bytes) input to log/3/server.input
 19:28:44.130438 Identifying ourselves as friends
 19:28:44.130500 Response sent (56 bytes) and written to log/3/server.response
 19:28:44.130510 special request received, no persistency
 19:28:44.130518 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 39880 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1515
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1515
 ==163746== 
 ==163746== Process terminating with default action of signal 4 (SIGILL)
 ==163746==  Illegal opcode at address 0x51CC63F
 ==163746==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163746==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163746==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163746==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1515
test 1520 [SMTP with CRLF-dot-CRLF in upload payload]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1520 ./libtest/libtests lib1520 smtp://127.0.0.1:44025/1520 <log/14/stdin-for-1520 > log/14/stdout1520 2> log/14/stderr1520

 1520: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1520
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1520 ./libtest/libtests lib1520 smtp://127.0.0.1:44025/1520 <log/14/stdin-for-1520 > log/14/stdout1520 2> log/14/stderr1520
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1520
=== End of file server.cmd
=== Start of file smtp_server.log
 19:28:44.142135 ====> Client connect
 19:28:44.142338 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:44.142675 < "EHLO verifiedserver"
 19:28:44.142722 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:28:44.142914 < "HELP"
 19:28:44.142950 > "214 WE ROOLZ: 113204[CR][LF]"
 19:28:44.142968 return proof we are we
 19:28:44.143197 < "QUIT"
 19:28:44.143228 > "221 curl ESMTP server signing off[CR][LF]"
 19:28:44.144442 MAIN sockfilt said DISC
 19:28:44.144475 ====> Client disconnected
 19:28:44.144553 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:28:43.744410 ====> Client connect
 19:28:43.744775 Received DATA (on stdin)
 19:28:43.744790 > 146 bytes data, server => client
 19:28:43.744802 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:43.744812 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:43.744821 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:43.744922 < 21 bytes data, client => server
 19:28:43.744939 'EHLO verifiedserver\r\n'
 19:28:43.745146 Received DATA (on stdin)
 19:28:43.745159 > 53 bytes data, server => client
 19:28:43.745169 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:28:43.745232 < 6 bytes data, client => server
 19:28:43.745247 'HELP\r\n'
 19:28:43.745388 Received DATA (on stdin)
 19:28:43.745400 > 22 bytes data, server => client
 19:28:43.745410 '214 WE ROOLZ: 113204\r\n'
 19:28:43.745517 < 6 bytes data, client => server
 19:28:43.745533 'QUIT\r\n'
 19:28:43.745649 Received DATA (on stdin)
 19:28:43.745660 > 35 bytes data, server => client
 19:28:43.745671 '221 curl ESMTP server signing off\r\n'
 19:28:43.746806 ====> Client disconnect
 19:28:43.746981 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-1520
 From: different
 To: another
 .
 .
 .
 body
=== End of file stdin-for-1520
=== Start of file valgrind1520
 ==164188== 
 ==164188== Process terminating with default action of signal 4 (SIGILL)
 ==164188==  Illegal opcode at address 0x51CC63F
 ==164188==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164188==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164188==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164188==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1520
test 1517 [HTTP POST, server responds before completed send]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1517 ./libtest/libtests lib1517 http://127.0.0.1:33935/1517 > log/6/stdout1517 2> log/6/stderr1517

 1517: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1517
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1517 ./libtest/libtests lib1517 http://127.0.0.1:33935/1517 > log/6/stdout1517 2> log/6/stderr1517
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.348317 ====> Client connect
 19:28:43.349025 accept_connection 3 returned 4
 19:28:43.349137 Read 93 bytes
 19:28:43.349148 Process 93 bytes request
 19:28:43.349163 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.349172 Are-we-friendly question received
 19:28:43.349201 Wrote request (93 bytes) input to log/6/server.input
 19:28:43.349216 Identifying ourselves as friends
 19:28:43.349909 Response sent (56 bytes) and written to log/6/server.response
 19:28:43.349931 special request received, no persistency
 19:28:43.349940 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 51286 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 skip: 45
 Testnum 1517
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1517
 ==163967== 
 ==163967== Process terminating with default action of signal 4 (SIGILL)
 ==163967==  Illegal opcode at address 0x51CC63F
 ==163967==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==163967==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==163967==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==163967==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1517
test 1522 [CURLINFO_SIZE_UPLOAD with small SO_SNDBUF]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1522 ./libtest/libtests lib1522 http://127.0.0.1:40913/1522 > log/10/stdout1522 2> log/10/stderr1522

 1522: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:28:45.517780013 +0000
+++ log/10/check-generated	2026-10-15 19:28:45.512458562 +0000
@@ -1,3 +0,0 @@
--foo-[LF]
-uploadSize = 40960[LF]
-!!!!!!!!!! PASS[LF]
== Contents of files in the log/10/ directory after test 1522
=== Start of file check-expected
 -foo-[LF]
 uploadSize = 40960[LF]
 !!!!!!!!!! PASS[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1522 ./libtest/libtests lib1522 http://127.0.0.1:40913/1522 > log/10/stdout1522 2> log/10/stderr1522
=== End of file commands.log
=== Start of file http_server.log
 19:28:43.771120 ====> Client connect
 19:28:43.771161 accept_connection 3 returned 4
 19:28:43.771186 Read 93 bytes
 19:28:43.771201 Process 93 bytes request
 19:28:43.771214 Got request: GET /verifiedserver HTTP/1.1
 19:28:43.771223 Are-we-friendly question received
 19:28:43.771251 Wrote request (93 bytes) input to log/10/server.input
 19:28:43.771267 Identifying ourselves as friends
 19:28:43.771357 Response sent (56 bytes) and written to log/10/server.response
 19:28:43.771366 special request received, no persistency
 19:28:43.771374 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 39660 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1522
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1522
 ==164210== 
 ==164210== Process terminating with default action of signal 4 (SIGILL)
 ==164210==  Illegal opcode at address 0x51CC63F
 ==164210==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164210==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164210==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164210==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1522
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1544.pl /startdir/src/curl/tests/.. > log/6/stdout1544 2> log/6/stderr1544
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1523 ./libtest/libtests lib1523 http://127.0.0.1:35735/1523 > log/4/stdout1523 2> log/4/stderr1523
RUN: Process with pid 79264 signalled to die
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1533 ./libtest/libtests lib1533 http://127.0.0.1:40321/1533 > log/15/stdout1533 2> log/15/stderr1533
RUN: Process with pid 79264 gracefully died
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1526 ./libtest/libtests lib1526 http://the.old.moo.1526:38821/1526 127.0.0.1:38663 > log/13/stdout1526 2> log/13/stderr1526
test 1521 [Test all curl_easy_setopt and curl_easy_getinfo options]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1521 ./libtest/libtests lib1521 - > log/12/stdout1521 2> log/12/stderr1521

 1521: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:45.546951299 +0000
+++ log/12/check-generated	2026-10-15 19:28:45.542459100 +0000
@@ -1 +0,0 @@
-ok[LF]
== Contents of files in the log/12/ directory after test 1521
=== Start of file check-expected
 ok[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1521 ./libtest/libtests lib1521 - > log/12/stdout1521 2> log/12/stderr1521
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1521
=== End of file server.cmd
=== Start of file valgrind1521
 ==164156== 
 ==164156== Process terminating with default action of signal 4 (SIGILL)
 ==164156==  Illegal opcode at address 0x51CC63F
 ==164156==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164156==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164156==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164156==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1521
test 1544 [Verify all string options are translated by OS/400 wrapper]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/test1544.pl /startdir/src/curl/tests/.. > log/6/stdout1544 2> log/6/stderr1544
 valgrind SKIPPED
-------e--- OK (1428 out of 1890, remaining: 00:54, took 0.133s, duration: 02:48)
test 1533 [HTTP with CURLOPT_KEEP_SENDING_ON_ERROR and an early error response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1533 ./libtest/libtests lib1533 http://127.0.0.1:40321/1533 > log/15/stdout1533 2> log/15/stderr1533

 1533: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1533
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1533 ./libtest/libtests lib1533 http://127.0.0.1:40321/1533 > log/15/stdout1533 2> log/15/stderr1533
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.338504 ====> Client connect
 19:28:45.338543 accept_connection 3 returned 4
 19:28:45.338564 Read 93 bytes
 19:28:45.338573 Process 93 bytes request
 19:28:45.338585 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.338594 Are-we-friendly question received
 19:28:45.338619 Wrote request (93 bytes) input to log/15/server.input
 19:28:45.338635 Identifying ourselves as friends
 19:28:45.338693 Response sent (56 bytes) and written to log/15/server.response
 19:28:45.338702 special request received, no persistency
 19:28:45.338710 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 59554 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 auth_required
 Testnum 1533
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1533
 ==164668== 
 ==164668== Process terminating with default action of signal 4 (SIGILL)
 ==164668==  Illegal opcode at address 0x51CC63F
 ==164668==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164668==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164668==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164668==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1533
test 1523 [CURLINFO_LOW_SPEED_LIMIT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1523 ./libtest/libtests lib1523 http://127.0.0.1:35735/1523 > log/4/stdout1523 2> log/4/stderr1523

libtests returned 132, when expecting 0
 1523: exit FAILED
== Contents of files in the log/4/ directory after test 1523
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1523 ./libtest/libtests lib1523 http://127.0.0.1:35735/1523 > log/4/stdout1523 2> log/4/stderr1523
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.940408 ====> Client connect
 19:28:44.940452 accept_connection 3 returned 4
 19:28:44.940574 Read 93 bytes
 19:28:44.940591 Process 93 bytes request
 19:28:44.940604 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.940613 Are-we-friendly question received
 19:28:44.940647 Wrote request (93 bytes) input to log/4/server.input
 19:28:44.940664 Identifying ourselves as friends
 19:28:44.940725 Response sent (56 bytes) and written to log/4/server.response
 19:28:44.940735 special request received, no persistency
 19:28:44.940743 ====> Client disconnect 0
 19:28:46.454440 signalled to die
 19:28:46.454595 ========> exit message: exit_signal_handler(): triggered
 19:28:46.454608 ========> IPv4 sws (port 35735 pid: 79264) exits with signal (15)
 19:28:46.454622 ========> sws quits
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35735...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35735) from 127.0.0.1 port 58066 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35735
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35735 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79264
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 1000
 Testnum 1523
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79264
=== End of file server.response
=== Start of file valgrind1523
 ==164337== 
 ==164337== Process terminating with default action of signal 4 (SIGILL)
 ==164337==  Illegal opcode at address 0x51CC63F
 ==164337==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164337==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164337==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164337==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1523
test 1526 [CURLOPT_PROXYHEADER: separate host/proxy headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1526 ./libtest/libtests lib1526 http://the.old.moo.1526:38821/1526 127.0.0.1:38663 > log/13/stdout1526 2> log/13/stderr1526

 1526: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1526
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1526 ./libtest/libtests lib1526 http://the.old.moo.1526:38821/1526 127.0.0.1:38663 > log/13/stdout1526 2> log/1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1528 ./libtest/libtests lib1528 http://the.old.moo:39881/1528 127.0.0.1:44633 > log/21/stdout1528 2> log/21/stderr1528
3/stderr1526
=== End of file commands.log
=== Start of file http2_server.log
 19:28:44.248042 ====> Client connect
 19:28:44.248086 accept_connection 3 returned 4
 19:28:44.248111 Read 93 bytes
 19:28:44.248122 Process 93 bytes request
 19:28:44.248148 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.248158 Are-we-friendly question received
 19:28:44.248189 Wrote request (93 bytes) input to log/13/proxy.input
 19:28:44.248211 Identifying ourselves as friends
 19:28:44.248299 Response sent (57 bytes) and written to log/13/proxy.response
 19:28:44.248312 special request received, no persistency
 19:28:44.248320 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:38663...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38663) from 127.0.0.1 port 33700 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38663
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:38663 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 146612
=== End of file http2_verify.out
=== Start of file http_server.log
 19:28:44.147786 ====> Client connect
 19:28:44.147829 accept_connection 3 returned 4
 19:28:44.147855 Read 93 bytes
 19:28:44.147864 Process 93 bytes request
 19:28:44.147879 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.147888 Are-we-friendly question received
 19:28:44.147914 Wrote request (93 bytes) input to log/13/server.input
 19:28:44.147933 Identifying ourselves as friends
 19:28:44.148015 Response sent (56 bytes) and written to log/13/server.response
 19:28:44.148024 special request received, no persistency
 19:28:44.148031 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54544 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 146612
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1526
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1526
 ==164547== 
 ==164547== Process terminating with default action of signal 4 (SIGILL)
 ==164547==  Illegal opcode at address 0x51CC63F
 ==164547==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164547==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164547==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164547==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1526
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1530 ./libtest/libtests lib1530 - > log/7/stdout1530 2> log/7/stderr1530
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1536 ./libtest/libtests lib1536 http://127.0.0.1:40989/1536 > log/11/stdout1536 2> log/11/stderr1536
test 1528 [Separately specified proxy/server headers sent in a proxy GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1528 ./libtest/libtests lib1528 http://the.old.moo:39881/1528 127.0.0.1:44633 > log/21/stdout1528 2> log/21/stderr1528

 1528: data FAILED:
--- log/21/check-expected	2026-10-15 19:28:46.280474061 +0000
+++ log/21/check-generated	2026-10-15 19:28:46.275805290 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK swsclose[CR][LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
-Server: test-server/fake[CR][LF]
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
-ETag: "21025-dc7-39462498"[CR][LF]
-Content-Length: 5[CR][LF]
-[CR][LF]
-stop[LF]
== Contents of files in the log/21/ directory after test 1528
=== Start of file check-expected
 HTTP/1.1 200 OK swsclose[CR][LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
 Server: test-server/fake[CR][LF]
 Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF]
 ETag: "21025-dc7-39462498"[CR][LF]
 Content-Length: 5[CR][LF]
 [CR][LF]
 stop[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1528 ./libtest/libtests lib1528 http://the.old.moo:39881/1528 127.0.0.1:44633 > log/21/stdout1528 2> log/21/stderr1528
=== End of file commands.log
=== Start of file http2_server.log
 19:28:45.296689 ====> Client connect
 19:28:45.296730 accept_connection 3 returned 4
 19:28:45.296752 Read 93 bytes
 19:28:45.296762 Process 93 bytes request
 19:28:45.296775 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.296784 Are-we-friendly question received
 19:28:45.296812 Wrote request (93 bytes) input to log/21/proxy.input
 19:28:45.296828 Identifying ourselves as friends
 19:28:45.296890 Response sent (57 bytes) and written to log/21/proxy.response
 19:28:45.296899 special request received, no persistency
 19:28:45.296908 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:44633...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44633) from 127.0.0.1 port 40324 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44633
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:44633 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 137984
=== End of file http2_verify.out
=== Start of file http_server.log
 19:28:44.234461 ====> Client connect
 19:28:44.234506 accept_connection 3 returned 4
 19:28:44.234532 Read 93 bytes
 19:28:44.234542 Process 93 bytes request
 19:28:44.234554 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.234563 Are-we-friendly question received
 19:28:44.234596 Wrote request (93 bytes) input to log/21/server.input
 19:28:44.234612 Identifying ourselves as friends
 19:28:44.234691 Response sent (56 bytes) and written to log/21/server.response
 19:28:44.234701 special request received, no persistency
 19:28:44.234714 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 40338 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 137984
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1528
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1528
 ==164617== 
 ==164617== Process terminating with default action of signal 4 (SIGILL)
 ==164617==  Illegal opcode at address 0x51CC63F
 ==164617==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164617==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164617==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164617==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1528
test 1530 [CURLOPT_OPENSOCKETFUNCTION returns bad socket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1530 ./libtest/libtests lib1530 - > log/7/stdout1530 2> log/7/stderr1530

libtests returned 132, when expecting 7
 1530: exit FAILED
== Contents of files in the log/7/ directory after test 1530
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1530 ./libtest/libtests lib1530 - > log/7/stdout1530 2> log/7/stderr1530
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1530
=== End of file server.cmd
=== Start of file valgrind1530
 ==164571== 
 ==164571== Process terminating with default action of signal 4 (SIGILL)
 ==164571==  Illegal opcode at address 0x51CC63F
 ==164571==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164571==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164571==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164571==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1530
test 1536 [Test CURLINFO_RESPONSE_CODE CURLINFO_SCHEME]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1536 ./libtest/libtests lib1536 http://127.0.0.1:40989/1536 > log/11/stdout1536 2> log/11/stderr1536

 1536: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1536
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1536 ./libtest/libtests lib1536 http://127.0.0.1:40989/1536 > log/11/stdout1536 2> log/11/stderr1536
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.711107 ====> Client connect
 19:28:44.711143 accept_connection 3 returned 4
 19:28:44.711168 Read 93 bytes
 19:28:44.711178 Process 93 bytes request
 19:28:44.711191 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.711200 Are-we-friendly question received
 19:28:44.711226 Wrote request (93 bytes) input to log/11/server.input
 19:28:44.711243 Identifying ourselves as friends
 19:28:44.711327 Response sent (56 bytes) and written to log/11/server.response
 19:28:44.711337 special request received, no persistency
 19:28:44.711345 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 53284 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1536
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1536
 ==165010== 
 ==165010== Process terminating wiCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1538 ./libtest/libtests lib1538 - > log/19/stdout1538 2> log/19/stderr1538
th default action of signal 4 (SIGILL)
 ==165010==  Illegal opcode at address 0x51CC63F
 ==165010==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165010==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165010==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165010==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1536
test 1538 [libcurl strerror API call tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1538 ./libtest/libtests lib1538 - > log/19/stdout1538 2> log/19/stderr1538

 1538: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:28:46.450887087 +0000
+++ log/19/check-generated	2026-10-15 19:28:46.450540511 +0000
@@ -1,159 +0,0 @@
-e0: No error[LF]
-e1: Unsupported protocol[LF]
-e2: Failed initialization[LF]
-e3: URL using bad/illegal format or missing URL[LF]
-e4: A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision.[LF]
-e5: Could not resolve proxy name[LF]
-e6: Could not resolve hostname[LF]
-e7: Could not connect to server[LF]
-e8: Weird server reply[LF]
-e9: Access denied to remote resource[LF]
-e10: FTP: The server failed to connect to data port[LF]
-e11: FTP: unknown PASS reply[LF]
-e12: FTP: Accepting server connect has timed out[LF]
-e13: FTP: unknown PASV reply[LF]
-e14: FTP: unknown 227 response format[LF]
-e15: FTP: cannot figure out the host in the PASV response[LF]
-e16: Error in the HTTP2 framing layer[LF]
-e17: FTP: could not set file type[LF]
-e18: Transferred a partial file[LF]
-e19: FTP: could not retrieve (RETR failed) the specified file[LF]
-e20: Unknown error[LF]
-e21: Quote command returned error[LF]
-e22: HTTP response code said error[LF]
-e23: Failed writing received data to disk/application[LF]
-e24: Unknown error[LF]
-e25: Upload failed (at start/before it took off)[LF]
-e26: Failed to open/read local data from file/application[LF]
-e27: Out of memory[LF]
-e28: Timeout was reached[LF]
-e29: Unknown error[LF]
-e30: FTP: command PORT failed[LF]
-e31: FTP: command REST failed[LF]
-e32: Unknown error[LF]
-e33: Requested range was not delivered by the server[LF]
-e34: Unknown error[LF]
-e35: SSL connect error[LF]
-e36: Could not resume download[LF]
-e37: Could not read a file:// file[LF]
-e38: LDAP: cannot bind[LF]
-e39: LDAP: search failed[LF]
-e40: Unknown error[LF]
-e41: Unknown error[LF]
-e42: Operation was aborted by an application callback[LF]
-e43: A libcurl function was given a bad argument[LF]
-e44: Unknown error[LF]
-e45: Failed binding local connection end[LF]
-e46: Unknown error[LF]
-e47: Number of redirects hit maximum amount[LF]
-e48: An unknown option was passed in to libcurl[LF]
-e49: Malformed option provided in a setopt[LF]
-e50: Unknown error[LF]
-e51: Unknown error[LF]
-e52: Server returned nothing (no headers, no data)[LF]
-e53: SSL crypto engine not found[LF]
-e54: Can not set SSL crypto engine as default[LF]
-e55: Failed sending data to the peer[LF]
-e56: Failure when receiving data from the peer[LF]
-e57: Unknown error[LF]
-e58: Problem with the local SSL certificate[LF]
-e59: Could not use specified SSL cipher[LF]
-e60: SSL peer certificate or SSH remote key was not OK[LF]
-e61: Unrecognized or bad HTTP Content or Transfer-Encoding[LF]
-e62: Unknown error[LF]
-e63: Maximum file size exceeded[LF]
-e64: Requested SSL level failed[LF]
-e65: Send failed since rewinding of the data stream failed[LF]
-e66: Failed to initialize SSL crypto engine[LF]
-e67: Login denied[LF]
-e68: TFTP: File Not Found[LF]
-e69: TFTP: Access Violation[LF]
-e70: Disk full or allocation exceeded[LF]
-e71: TFTP: Illegal operation[LF]
-e72: TFTP: Unknown transfer ID[LF]
-e73: Remote file already exists[LF]
-e74: TFTP: No such user[LF]
-e75: Unknown error[LF]
-e76: Unknown error[LF]
-e77: Problem with the SSL CA cert (path? access rights?)[LF]
-e78: Remote file not found[LF]
-e79: Error in the SSH layer[LF]
-e80: Failed to shut down the SSL connection[LF]
-e81: Socket not ready for send/recv[LF]
-e82: Failed to load CRL file (path? access rights?, format?)[LF]
-e83: Issuer check against peer certificate failed[LF]
-e84: FTP: The server did not accept the PRET command.[LF]
-e85: RTSP CSeq mismatch or invalid CSeq[LF]
-e86: RTSP session error[LF]
-e87: Unable to parse FTP file list[LF]
-e88: Chunk callback failed[LF]
-e89: The max connection limit is reached[LF]
-e90: SSL public key does not match pinned public key[LF]
-e91: SSL server certificate status verification FAILED[LF]
-e92: Stream error in the HTTP/2 framing layer[LF]
-e93: API function called from within callback[LF]
-e94: An authentication function returned an error[LF]
-e95: HTTP/3 error[LF]
-e96: QUIC connection error[LF]
-e97: proxy handshake error[LF]
-e98: SSL Client Certificate required[LF]
-e99: Unrecoverable error in select/poll[LF]
-e100: A value or data field grew larger than allowed[LF]
-e101: ECH attempted but failed[LF]
-e102: Unknown error[LF]
-m-1: Please call curl_multi_perform() soon[LF]
-m0: No error[LF]
-m1: Invalid multi handle[LF]
-m2: Invalid easy handle[LF]
-m3: Out of memory[LF]
-m4: Internal error[LF]
-m5: Invalid socket argument[LF]
-m6: Unknown option[LF]
-m7: The easy handle is already added to a multi handle[LF]
-m8: API function called from within callback[LF]
-m9: Wakeup is unavailable or failed[LF]
-m10: A libcurl function was given a bad argument[LF]
-m11: Operation was aborted by an application callback[LF]
-m12: Unrecoverable error in select/poll[LF]
-m13: Unknown error[LF]
-s0: No error[LF]
-s1: Unknown share option[LF]
-s2: Share currently in use[LF]
-s3: Invalid share handle[LF]
-s4: Out of memory[LF]
-s5: Feature not enabled in this library[LF]
-s6: CURLSHcode unknown[LF]
-u0: No error[LF]
-u1: An invalid CURLU pointer was passed as argument[LF]
-u2: An invalid 'part' argument was passed as argument[LF]
-u3: Malformed input to a URL function[LF]
-u4: Port number was not a decimal number between 0 and 65535[LF]
-u5: Unsupported URL scheme[LF]
-u6: URL decode error, most likely because of rubbish in the input[LF]
-u7: A memory function failed[LF]
-u8: Credentials was passed in the URL when prohibited[LF]
-u9: An unknown part ID was passed to a URL API function[LF]
-u10: No scheme present[LF]
-u11: No user present[LF]
-u12: No password present[LF]
-u13: No options present[LF]
-u14: No host present[LF]
-u15: No port number present[LF]
-u16: No query present[LF]
-u17: No fragment present[LF]
-u18: No zoneid present[LF]
-u19: Bad file:// URL[LF]
-u20: Bad fragment[LF]
-u21: Bad hostname[LF]
-u22: Bad IPv6 address[LF]
-u23: Bad login[LF]
-u24: Bad password[LF]
-u25: Bad path[LF]
-u26: Bad query[LF]
-u27: Bad scheme[LF]
-u28: Unsupported number of slashes following scheme[LF]
-u29: Bad user[LF]
-u30: libcurl lacks IDN support[LF]
-u31: A value or data field is larger than allowed[LF]
-u32: Found a backslash where a forward slash was expected[LF]
-u33: CURLUcode unknown[LF]
== Contents of files in the log/19/ directory after test 1538
=== Start of file check-expected
 e0: No error[LF]
 e1: Unsupported protocol[LF]
 e2: Failed initialization[LF]
 e3: URL using bad/illegal format or missing URL[LF]
 e4: A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision.[LF]
 e5: Could not resolve proxy name[LF]
 e6: Could not resolve hostname[LF]
 e7: Could not connect to server[LF]
 e8: Weird server reply[LF]
 e9: Access denied to remote resource[LF]
 e10: FTP: The server failed to connect to data port[LF]
 e11: FTP: unknown PASS reply[LF]
 e12: FTP: Accepting server connect has timed out[LF]
 e13: FTP: unknown PASV reply[LF]
 e14: FTP: unknown 227 response format[LF]
 e15: FTP: cannot figure out the host in the PASV response[LF]
 e16: Error in the HTTP2 framing layer[LF]
 e17: FTP: could not set file type[LF]
 e18: Transferred a partial file[LF]
 e19: FTP: could not retrieve (RETR failed) the specified file[LF]
 e20: Unknown error[LF]
 e21: Quote command returned error[LF]
 e22: HTTP response code said error[LF]
 e23: Failed writing received data to disk/application[LF]
 e24: Unknown error[LF]
 e25: Upload failed (at start/before it took off)[LF]
 e26: Failed to open/read local data from file/application[LF]
 e27: Out of memory[LF]
 e28: Timeout was reached[LF]
 e29: Unknown error[LF]
 e30: FTP: command PORT failed[LF]
 e31: FTP: command REST failed[LF]
 e32: Unknown error[LF]
 e33: Requested range was not dCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1540 ./libtest/libtests lib1540 http://127.0.0.1:35903/1540 > log/16/stdout1540 2> log/16/stderr1540
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1531 ./libtest/libtests lib1531 127.0.0.1:38815/1531 > log/1/stdout1531 2> log/1/stderr1531
elivered by the server[LF]
 e34: Unknown error[LF]
 e35: SSL connect error[LF]
 e36: Could not resume download[LF]
 e37: Could not read a file:// file[LF]
 e38: LDAP: cannot bind[LF]
 e39: LDAP: search failed[LF]
 e40: Unknown error[LF]
 e41: Unknown error[LF]
 e42: Operation was aborted by an application callback[LF]
 e43: A libcurl function was given a bad argument[LF]
 e44: Unknown error[LF]
 e45: Failed binding local connection end[LF]
 e46: Unknown error[LF]
 e47: Number of redirects hit maximum amount[LF]
 e48: An unknown option was passed in to libcurl[LF]
 e49: Malformed option provided in a setopt[LF]
 e50: Unknown error[LF]
 e51: Unknown error[LF]
 e52: Server returned nothing (no headers, no data)[LF]
 e53: SSL crypto engine not found[LF]
 e54: Can not set SSL crypto engine as default[LF]
 e55: Failed sending data to the peer[LF]
 e56: Failure when receiving data from the peer[LF]
 e57: Unknown error[LF]
 e58: Problem with the local SSL certificate[LF]
 e59: Could not use specified SSL cipher[LF]
 e60: SSL peer certificate or SSH remote key was not OK[LF]
 e61: Unrecognized or bad HTTP Content or Transfer-Encoding[LF]
 e62: Unknown error[LF]
 e63: Maximum file size exceeded[LF]
 e64: Requested SSL level failed[LF]
 e65: Send failed since rewinding of the data stream failed[LF]
 e66: Failed to initialize SSL crypto engine[LF]
 e67: Login denied[LF]
 e68: TFTP: File Not Found[LF]
 e69: TFTP: Access Violation[LF]
 e70: Disk full or allocation exceeded[LF]
 e71: TFTP: Illegal operation[LF]
 e72: TFTP: Unknown transfer ID[LF]
 e73: Remote file already exists[LF]
 e74: TFTP: No such user[LF]
 e75: Unknown error[LF]
 e76: Unknown error[LF]
 e77: Problem with the SSL CA cert (path? access rights?)[LF]
 e78: Remote file not found[LF]
 e79: Error in the SSH layer[LF]
 e80: Failed to shut down the SSL connection[LF]
 e81: Socket not ready for send/recv[LF]
 e82: Failed to load CRL file (path? access rights?, format?)[LF]
 e83: Issuer check against peer certificate failed[LF]
 e84: FTP: The server did not accept the PRET command.[LF]
 e85: RTSP CSeq mismatch or invalid CSeq[LF]
 e86: RTSP session error[LF]
 e87: Unable to parse FTP file list[LF]
 e88: Chunk callback failed[LF]
 e89: The max connection limit is reached[LF]
 e90: SSL public key does not match pinned public key[LF]
 e91: SSL server certificate status verification FAILED[LF]
 e92: Stream error in the HTTP/2 framing layer[LF]
 e93: API function called from within callback[LF]
 e94: An authentication function returned an error[LF]
 e95: HTTP/3 error[LF]
 e96: QUIC connection error[LF]
 e97: proxy handshake error[LF]
 e98: SSL Client Certificate required[LF]
 e99: Unrecoverable error in select/poll[LF]
 e100: A value or data field grew larger than allowed[LF]
 e101: ECH attempted but failed[LF]
 e102: Unknown error[LF]
 m-1: Please call curl_multi_perform() soon[LF]
 m0: No error[LF]
 m1: Invalid multi handle[LF]
 m2: Invalid easy handle[LF]
 m3: Out of memory[LF]
 m4: Internal error[LF]
 m5: Invalid socket argument[LF]
 m6: Unknown option[LF]
 m7: The easy handle is already added to a multi handle[LF]
 m8: API function called from within callback[LF]
 m9: Wakeup is unavailable or failed[LF]
 m10: A libcurl function was given a bad argument[LF]
 m11: Operation was aborted by an application callback[LF]
 m12: Unrecoverable error in select/poll[LF]
 m13: Unknown error[LF]
 s0: No error[LF]
 s1: Unknown share option[LF]
 s2: Share currently in use[LF]
 s3: Invalid share handle[LF]
 s4: Out of memory[LF]
 s5: Feature not enabled in this library[LF]
 s6: CURLSHcode unknown[LF]
 u0: No error[LF]
 u1: An invalid CURLU pointer was passed as argument[LF]
 u2: An invalid 'part' argument was passed as argument[LF]
 u3: Malformed input to a URL function[LF]
 u4: Port number was not a decimal number between 0 and 65535[LF]
 u5: Unsupported URL scheme[LF]
 u6: URL decode error, most likely because of rubbish in the input[LF]
 u7: A memory function failed[LF]
 u8: Credentials was passed in the URL when prohibited[LF]
 u9: An unknown part ID was passed to a URL API function[LF]
 u10: No scheme present[LF]
 u11: No user present[LF]
 u12: No password present[LF]
 u13: No options present[LF]
 u14: No host present[LF]
 u15: No port number present[LF]
 u16: No query present[LF]
 u17: No fragment present[LF]
 u18: No zoneid present[LF]
 u19: Bad file:// URL[LF]
 u20: Bad fragment[LF]
 u21: Bad hostname[LF]
 u22: Bad IPv6 address[LF]
 u23: Bad login[LF]
 u24: Bad password[LF]
 u25: Bad path[LF]
 u26: Bad query[LF]
 u27: Bad scheme[LF]
 u28: Unsupported number of slashes following scheme[LF]
 u29: Bad user[LF]
 u30: libcurl lacks IDN support[LF]
 u31: A value or data field is larger than allowed[LF]
 u32: Found a backslash where a forward slash was expected[LF]
 u33: CURLUcode unknown[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1538 ./libtest/libtests lib1538 - > log/19/stdout1538 2> log/19/stderr1538
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1538
=== End of file server.cmd
=== Start of file valgrind1538
 ==165051== 
 ==165051== Process terminating with default action of signal 4 (SIGILL)
 ==165051==  Illegal opcode at address 0x51CC63F
 ==165051==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165051==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165051==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165051==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1538
test 1531 [CURLOPT_POSTFIELDS with binary data set after multi_add_handle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1531 ./libtest/libtests lib1531 127.0.0.1:38815/1531 > log/1/stdout1531 2> log/1/stderr1531

 1531: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1531
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1531 ./libtest/libtests lib1531 127.0.0.1:38815/1531 > log/1/stdout1531 2> log/1/stderr1531
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.387781 ====> Client connect
 19:28:45.387821 accept_connection 3 returned 4
 19:28:45.387844 Read 93 bytes
 19:28:45.387854 Process 93 bytes request
 19:28:45.387867 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.387875 Are-we-friendly question received
 19:28:45.387903 Wrote request (93 bytes) input to log/1/server.input
 19:28:45.387920 Identifying ourselves as friends
 19:28:45.388132 Response sent (56 bytes) and written to log/1/server.response
 19:28:45.388146 special request received, no persistency
 19:28:45.388155 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 33036 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1531
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1531
 ==164709== 
 ==164709== Process terminating with default action of signal 4 (SIGILL)
 ==164709==  Illegal opcode at address 0x51CC63F
 ==164709==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164709==    by 0x51D058B: curl_mvfprintf (mprintf.c:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1532 ./libtest/libtests lib1532 http://127.0.0.1:43733/1532 > log/9/stdout1532 2> log/9/stderr1532
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1524 ../src/curl -q --output log/17/curl1524.out  --include --trace-ascii log/17/trace1524 --trace-time http://127.0.0.1:35993/blah/1524 -L -T log/17/upload1524.txt > log/17/stdout1524 2> log/17/stderr1524
1482)
 ==164709==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164709==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1531
test 1540 [chunked with trailers and pausing the receive]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1540 ./libtest/libtests lib1540 http://127.0.0.1:35903/1540 > log/16/stdout1540 2> log/16/stderr1540

 1540: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1540
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1540 ./libtest/libtests lib1540 http://127.0.0.1:35903/1540 > log/16/stdout1540 2> log/16/stderr1540
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.964489 ====> Client connect
 19:28:45.964533 accept_connection 3 returned 4
 19:28:45.964558 Read 93 bytes
 19:28:45.964567 Process 93 bytes request
 19:28:45.964579 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.964587 Are-we-friendly question received
 19:28:45.964612 Wrote request (93 bytes) input to log/16/server.input
 19:28:45.964628 Identifying ourselves as friends
 19:28:45.964693 Response sent (56 bytes) and written to log/16/server.response
 19:28:45.964702 special request received, no persistency
 19:28:45.964710 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58334 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 1540
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1540
 ==165271== 
 ==165271== Process terminating with default action of signal 4 (SIGILL)
 ==165271==  Illegal opcode at address 0x51CC63F
 ==165271==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165271==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165271==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165271==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1540
test 1532 [Test CURLINFO_RESPONSE_CODE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1532 ./libtest/libtests lib1532 http://127.0.0.1:43733/1532 > log/9/stdout1532 2> log/9/stderr1532

 1532: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1532
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1532 ./libtest/libtests lib1532 http://127.0.0.1:43733/1532 > log/9/stdout1532 2> log/9/stderr1532
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.390726 ====> Client connect
 19:28:44.390759 accept_connection 3 returned 4
 19:28:44.394663 Read 93 bytes
 19:28:44.394684 Process 93 bytes request
 19:28:44.394697 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.394705 Are-we-friendly question received
 19:28:44.394747 Wrote request (93 bytes) input to log/9/server.input
 19:28:44.394766 Identifying ourselves as friends
 19:28:44.394831 Response sent (56 bytes) and written to log/9/server.response
 19:28:44.394842 special request received, no persistency
 19:28:44.394850 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35224 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1532
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1532
 ==164708== 
 ==164708== Process terminating with default action of signal 4 (SIGILL)
 ==164708==  Illegal opcode at address 0x51CC63F
 ==164708==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164708==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164708==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164708==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1532
test 1524 [HTTP PUT with 303 redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1524 ../src/curl -q --output log/17/curl1524.out  --include --trace-ascii log/17/trace1524 --trace-time http://127.0.0.1:35993/blah/1524 -L -T log/17/upload1524.txt > log/17/stdout1524 2> log/17/stderr1524

 1524: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1524
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1524 ../src/curl -q --output log/17/curl1524.out  --include --trace-ascii log/17/trace1524 --trace-time http://127.0.0.1:35993/blah/1524 -L -T log/17/upload1524.txt > log/17/stdout1524 2> log/17/stderr1524
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.031122 ====> Client connect
 19:28:45.031161 accept_connection 3 returned 4
 19:28:45.031183 Read 93 bytes
 19:28:45.031192 Process 93 bytes request
 19:28:45.031205 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.031213 Are-we-friendly question received
 19:28:45.031240 Wrote request (93 bytes) input to log/17/server.input
 19:28:45.031256 Identifying ourselves as friends
 19:28:45.031328 Response sent (56 bytes) and written to log/17/server.response
 19:28:45.031337 special request received, no persistency
 19:28:45.031345 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 42278 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1524
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file upload1524.txt
 moo
=== End of file upload1524.txt
=== Start of file valgrind1524
 ==164386== 
 ==164386== Process terminating with default action of signal 4 (SIGILL)
 ==164386==  Illegal opcode at address 0x492B75F
 ==164386==    at 0x492B75F:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1535 ./libtest/libtests lib1535 http://127.0.0.1:44467/1535 > log/8/stdout1535 2> log/8/stderr1535
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1534 ./libtest/libtests lib1534 http://127.0.0.1:34531/1534 > log/2/stdout1534 2> log/2/stderr1534
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1541 ./libtest/libtests lib1541 http://127.0.0.1:37089/1541 > log/5/stdout1541 2> log/5/stderr1541
 formatf.constprop.2 (mprintf.c:1115)
 ==164386==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==164386==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==164386==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==164386==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==164386==    by 0x49908EB: curl_version_info (version.c:600)
 ==164386==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==164386==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==164386==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==164386==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1524
test 1535 [Test CURLINFO_RESPONSE_CODE CURLINFO_PROTOCOL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1535 ./libtest/libtests lib1535 http://127.0.0.1:44467/1535 > log/8/stdout1535 2> log/8/stderr1535

 1535: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1535
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1535 ./libtest/libtests lib1535 http://127.0.0.1:44467/1535 > log/8/stdout1535 2> log/8/stderr1535
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.670723 ====> Client connect
 19:28:44.670760 accept_connection 3 returned 4
 19:28:44.670781 Read 93 bytes
 19:28:44.670791 Process 93 bytes request
 19:28:44.670804 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.670813 Are-we-friendly question received
 19:28:44.670841 Wrote request (93 bytes) input to log/8/server.input
 19:28:44.670858 Identifying ourselves as friends
 19:28:44.670920 Response sent (56 bytes) and written to log/8/server.response
 19:28:44.670973 special request received, no persistency
 19:28:44.670982 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 45240 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1535
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1535
 ==164981== 
 ==164981== Process terminating with default action of signal 4 (SIGILL)
 ==164981==  Illegal opcode at address 0x51CC63F
 ==164981==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164981==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164981==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164981==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1535
test 1534 [CURLINFO_FILETIME init and reset]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1534 ./libtest/libtests lib1534 http://127.0.0.1:34531/1534 > log/2/stdout1534 2> log/2/stderr1534

 1534: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1534
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1534 ./libtest/libtests lib1534 http://127.0.0.1:34531/1534 > log/2/stdout1534 2> log/2/stderr1534
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.557791 ====> Client connect
 19:28:45.557830 accept_connection 3 returned 4
 19:28:45.557853 Read 93 bytes
 19:28:45.557863 Process 93 bytes request
 19:28:45.557875 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.557885 Are-we-friendly question received
 19:28:45.557913 Wrote request (93 bytes) input to log/2/server.input
 19:28:45.557930 Identifying ourselves as friends
 19:28:45.558005 Response sent (56 bytes) and written to log/2/server.response
 19:28:45.558016 special request received, no persistency
 19:28:45.558024 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 53582 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1534
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1534
 ==164910== 
 ==164910== Process terminating with default action of signal 4 (SIGILL)
 ==164910==  Illegal opcode at address 0x51CC63F
 ==164910==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164910==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164910==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164910==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1534
test 1541 [CURLINFO timer check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1541 ./libtest/libtests lib1541 http://127.0.0.1:37089/1541 > log/5/stdout1541 2> log/5/stderr1541

 1541: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1541
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1541 ./libtest/libtests lib1541 http://127.0.0.1:37089/1541 > log/5/stdout1541 2> log/5/stderr1541
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.961110 ====> Client connect
 19:28:44.961153 accept_connection 3 returned 4
 19:28:44.961178 Read 93 bytes
 19:28:44.961188 Process 93 bytes request
 19:28:44.961202 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.961211 Are-we-friendly question received
 19:28:44.961238 Wrote request (93 bytes) input to log/5/server.input
 19:28:44.961254 Identifying ourselves as friends
 19:28:44.961338 Response sent (56 bytes) and written to log/5/server.response
 19:28:44.961347 special request received, no persistency
 19:28:44.961355 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 54820 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 10
 Testnum 1541
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1537 ./libtest/libtests lib1537 - > log/20/stdout1537 2> log/20/stderr1537
Start of file valgrind1541
 ==165257== 
 ==165257== Process terminating with default action of signal 4 (SIGILL)
 ==165257==  Illegal opcode at address 0x51CC63F
 ==165257==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165257==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165257==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165257==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1541
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1542 ./libtest/libtests lib1542 http://127.0.0.1:36161/1542 > log/3/stdout1542 2> log/3/stderr1542
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1539 ./libtest/libtests lib1514 http://127.0.0.1:35989/1539 > log/22/stdout1539 2> log/22/stderr1539
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1543 ./libtest/libtests lib1518 "http://127.0.0.1:45467/ /with/ space/ /file" > log/14/stdout1543 2> log/14/stderr1543
test 1537 [libcurl URL escape/unescape tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1537 ./libtest/libtests lib1537 - > log/20/stdout1537 2> log/20/stderr1537

 1537: stdout FAILED:
--- log/20/check-expected	2026-10-15 19:28:46.683935815 +0000
+++ log/20/check-generated	2026-10-15 19:28:46.682502352 +0000
@@ -1,8 +0,0 @@
-%2F%3A%3B%3C%3D%3E%3F%91%A2%B3%C4%D5%E6%F7[LF]
-%2F%3A%3B%3C%3D%3E%3F%91%A2%B3%C4%D5%E6%F7[LF]
-outlen == 14[LF]
-unescape == original? YES[LF]
-[old] outlen == 14[LF]
-[old] unescape == original? YES[LF]
-escape -1 length: (nil)[LF]
-unescape -1 length: (nil) 2017[LF]
== Contents of files in the log/20/ directory after test 1537
=== Start of file check-expected
 %2F%3A%3B%3C%3D%3E%3F%91%A2%B3%C4%D5%E6%F7[LF]
 %2F%3A%3B%3C%3D%3E%3F%91%A2%B3%C4%D5%E6%F7[LF]
 outlen == 14[LF]
 unescape == original? YES[LF]
 [old] outlen == 14[LF]
 [old] unescape == original? YES[LF]
 escape -1 length: (nil)[LF]
 unescape -1 length: (nil) 2017[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1537 ./libtest/libtests lib1537 - > log/20/stdout1537 2> log/20/stderr1537
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1537
=== End of file server.cmd
=== Start of file valgrind1537
 ==164980== 
 ==164980== Process terminating with default action of signal 4 (SIGILL)
 ==164980==  Illegal opcode at address 0x51CC63F
 ==164980==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==164980==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==164980==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==164980==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1537
test 1542 [connection reuse with CURLOPT_MAXLIFETIME_CONN]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1542 ./libtest/libtests lib1542 http://127.0.0.1:36161/1542 > log/3/stdout1542 2> log/3/stderr1542

 1542: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1542
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1542 ./libtest/libtests lib1542 http://127.0.0.1:36161/1542 > log/3/stdout1542 2> log/3/stderr1542
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.012548 ====> Client connect
 19:28:46.012590 accept_connection 3 returned 4
 19:28:46.012614 Read 93 bytes
 19:28:46.012624 Process 93 bytes request
 19:28:46.012637 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.012646 Are-we-friendly question received
 19:28:46.012675 Wrote request (93 bytes) input to log/3/server.input
 19:28:46.012693 Identifying ourselves as friends
 19:28:46.012769 Response sent (56 bytes) and written to log/3/server.response
 19:28:46.012781 special request received, no persistency
 19:28:46.012791 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 39886 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1542
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1542
 ==165313== 
 ==165313== Process terminating with default action of signal 4 (SIGILL)
 ==165313==  Illegal opcode at address 0x51CC63F
 ==165313==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165313==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165313==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165313==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1542
test 1539 [HTTP 1.0 POST with read callback and unknown data size]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1539 ./libtest/libtests lib1514 http://127.0.0.1:35989/1539 > log/22/stdout1539 2> log/22/stderr1539

libtests returned 132, when expecting 25
 1539: exit FAILED
== Contents of files in the log/22/ directory after test 1539
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1539 ./libtest/libtests lib1514 http://127.0.0.1:35989/1539 > log/22/stdout1539 2> log/22/stderr1539
=== End of file commands.log
=== Start of file http_server.log
 19:28:44.947704 ====> Client connect
 19:28:44.947747 accept_connection 3 returned 4
 19:28:44.947769 Read 93 bytes
 19:28:44.947777 Process 93 bytes request
 19:28:44.947788 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.947796 Are-we-friendly question received
 19:28:44.947818 Wrote request (93 bytes) input to log/22/server.input
 19:28:44.947834 Identifying ourselves as friends
 19:28:44.947892 Response sent (56 bytes) and written to log/22/server.response
 19:28:44.947900 special request received, no persistency
 19:28:44.947908 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 38028 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1539
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1539
 ==165244== 
 ==165244== Process terminating with default action of signal 4 (SIGILL)
 ==165244==  Illegal opcode at address 0x51CC63F
 ==165244==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165244==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165244==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165244==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1539
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1529 ./libtest/libtests lib1529 "http://the.old.moo:43739/1529" 127.0.0.1:38183 > log/18/stdout1529 2> log/18/stderr1529
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1545 ./libtest/libtests lib1545 http://127.0.0.1:40921/1545 > log/12/stdout1545 2> log/12/stderr1545
test 1543 [CURLOPT_CURLU, URL with space and CURLINFO_EFFECTIVE_URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1543 ./libtest/libtests lib1518 "http://127.0.0.1:45467/ /with/ space/ /file" > log/14/stdout1543 2> log/14/stderr1543

 1543: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:28:46.865476142 +0000
+++ log/14/check-generated	2026-10-15 19:28:46.862481826 +0000
@@ -1,5 +0,0 @@
-result 0[LF]
-status 200[LF]
-redirects 1[LF]
-effectiveurl http://127.0.0.1:45467/%20/with/%20space/15430002[LF]
-redirecturl blank[LF]
== Contents of files in the log/14/ directory after test 1543
=== Start of file check-expected
 result 0[LF]
 status 200[LF]
 redirects 1[LF]
 effectiveurl http://127.0.0.1:45467/%20/with/%20space/15430002[LF]
 redirecturl blank[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1543 ./libtest/libtests lib1518 "http://127.0.0.1:45467/ /with/ space/ /file" > log/14/stdout1543 2> log/14/stderr1543
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.059766 ====> Client connect
 19:28:45.059800 accept_connection 3 returned 4
 19:28:45.059822 Read 93 bytes
 19:28:45.059831 Process 93 bytes request
 19:28:45.059843 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.059851 Are-we-friendly question received
 19:28:45.059905 Wrote request (93 bytes) input to log/14/server.input
 19:28:45.059921 Identifying ourselves as friends
 19:28:45.067814 Response sent (56 bytes) and written to log/14/server.response
 19:28:45.067835 special request received, no persistency
 19:28:45.067844 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56706 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1543
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1543
 ==165398== 
 ==165398== Process terminating with default action of signal 4 (SIGILL)
 ==165398==  Illegal opcode at address 0x51CC63F
 ==165398==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165398==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165398==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165398==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1543
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/18/server/http2_server.pid" --logfile "log/18/http2_server.log" --logdir "log/18" --portfile log/18/server/http2_server.port --config log/18/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 164586 port 38183
* pid http-proxy => 164586 164586
test 1529 [HTTP request-injection in URL sent over proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1529 ./libtest/libtests lib1529 "http://the.old.moo:43739/1529" 127.0.0.1:38183 > log/18/stdout1529 2> log/18/stderr1529

libtests returned 132, when expecting 3
 1529: exit FAILED
== Contents of files in the log/18/ directory after test 1529
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1529 ./libtest/libtests lib1529 "http://the.old.moo:43739/1529" 127.0.0.1:38183 > log/18/stdout1529 2> log/18/stderr1529
=== End of file commands.log
=== Start of file http2_server.log
 19:28:44.338705 Run as proxy, CONNECT to host 127.0.0.1
 19:28:44.338823 Running HTTP IPv4 version on port 38183
 19:28:44.338864 Wrote pid 164586 to log/18/server/http2_server.pid
 19:28:44.338897 Wrote port 38183 to log/18/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:28:45.311111 ====> Client connect
 19:28:45.311153 accept_connection 3 returned 4
 19:28:45.311178 Read 93 bytes
 19:28:45.311187 Process 93 bytes request
 19:28:45.311200 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.311209 Are-we-friendly question received
 19:28:45.311239 Wrote request (93 bytes) input to log/18/server.input
 19:28:45.311255 Identifying ourselves as friends
 19:28:45.311343 Response sent (56 bytes) and written to log/18/server.response
 19:28:45.311354 special request received, no persistency
 19:28:45.311362 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46678 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1529
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1529
 ==165674== 
 ==165674== Process terminating with default action of signal 4 (SIGILL)
 ==165674==  Illegal opcode at address 0x51CC63F
 ==165674==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165674==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165674==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165674==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1529
test 1545 [use curl_formadd() data twice with unreadable file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1545 ./libtest/libtests lib1545 http://127.0.0.1:40921/1545 > log/12/stdout1545 2> log/12/stderr1545

libtests returned 132, when expecting 0
 1545: exit FAILED
== Contents of files in the log/12/ directory after test 1545
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1545 ./libtest/libtests lib1545 http://127.0.0.1:40921/1545 > log/12/stdout1545 2> log/12/stderr1545
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.231447 ====> Client connect
 19:28:45.231487 accept_connection 3 returned 4
 19:28:45.231510 Read 93 bytes
 19:28:45.231521 Process 93 bytes request
 19:28:45.231533 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.231542 Are-we-friendly question received
 19:28:45.231574 Wrote request (93 bytes) input to log/12/server.input
 19:28:45.231592 Identifying ourselves as friends
 19:28:45.231664 Response sent (56 bytes) and written to log/12/server.response
 19:28:45.231676 special request received, no persistency
 19:28:45.231684 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 37590 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1527 ./libtest/libtests lib1527 http://the.old.moo.1527:38895/1527 127.0.0.1:43727 > log/24/stdout1527 2> log/24/stderr1527
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1525 ./libtest/libtests lib1525 http://the.old.moo.1525:44711/1525 127.0.0.1:34921 > log/23/stdout1525 2> log/23/stderr1525
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1550 ./libtest/libtests lib1550 - > log/13/stdout1550 2> log/13/stderr1550
.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1545
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1545
 ==165587== 
 ==165587== Process terminating with default action of signal 4 (SIGILL)
 ==165587==  Illegal opcode at address 0x51CC63F
 ==165587==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165587==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165587==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165587==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1545
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/24/server/http2_server.pid" --logfile "log/24/http2_server.log" --logdir "log/24" --portfile log/24/server/http2_server.port --config log/24/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 164475 port 43727
* pid http-proxy => 164475 164475
test 1527 [Same headers with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1527 ./libtest/libtests lib1527 http://the.old.moo.1527:38895/1527 127.0.0.1:43727 > log/24/stdout1527 2> log/24/stderr1527

 1527: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1527
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1527 ./libtest/libtests lib1527 http://the.old.moo.1527:38895/1527 127.0.0.1:43727 > log/24/stdout1527 2> log/24/stderr1527
=== End of file commands.log
=== Start of file http2_server.log
 19:28:44.254985 Run as proxy, CONNECT to host 127.0.0.1
 19:28:44.255096 Running HTTP IPv4 version on port 43727
 19:28:44.255147 Wrote pid 164475 to log/24/server/http2_server.pid
 19:28:44.255181 Wrote port 43727 to log/24/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:28:44.171133 ====> Client connect
 19:28:44.171177 accept_connection 3 returned 4
 19:28:44.171204 Read 93 bytes
 19:28:44.171214 Process 93 bytes request
 19:28:44.171229 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.171237 Are-we-friendly question received
 19:28:44.171261 Wrote request (93 bytes) input to log/24/server.input
 19:28:44.171277 Identifying ourselves as friends
 19:28:44.171371 Response sent (56 bytes) and written to log/24/server.response
 19:28:44.171380 special request received, no persistency
 19:28:44.171388 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43972 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1527
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1527
 ==165486== 
 ==165486== Process terminating with default action of signal 4 (SIGILL)
 ==165486==  Illegal opcode at address 0x51CC63F
 ==165486==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165486==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165486==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165486==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1527
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/23/server/http2_server.pid" --logfile "log/23/http2_server.log" --logdir "log/23" --portfile log/23/server/http2_server.port --config log/23/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 164412 port 34921
* pid http-proxy => 164412 164412
test 1525 [CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1525 ./libtest/libtests lib1525 http://the.old.moo.1525:44711/1525 127.0.0.1:34921 > log/23/stdout1525 2> log/23/stderr1525

 1525: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1525
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1525 ./libtest/libtests lib1525 http://the.old.moo.1525:44711/1525 127.0.0.1:34921 > log/23/stdout1525 2> log/23/stderr1525
=== End of file commands.log
=== Start of file http2_server.log
 19:28:44.136903 Run as proxy, CONNECT to host 127.0.0.1
 19:28:44.137037 Running HTTP IPv4 version on port 34921
 19:28:44.137092 Wrote pid 164412 to log/23/server/http2_server.pid
 19:28:44.137127 Wrote port 34921 to log/23/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:28:44.086729 ====> Client connect
 19:28:44.086764 accept_connection 3 returned 4
 19:28:44.086785 Read 93 bytes
 19:28:44.086795 Process 93 bytes request
 19:28:44.086808 Got request: GET /verifiedserver HTTP/1.1
 19:28:44.086816 Are-we-friendly question received
 19:28:44.086842 Wrote request (93 bytes) input to log/23/server.input
 19:28:44.086858 Identifying ourselves as friends
 19:28:44.086920 Response sent (56 bytes) and written to log/23/server.response
 19:28:44.086930 special request received, no persistency
 19:28:44.086938 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48912 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1525
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1525
 ==165450== 
 ==165450== Process terminating with default action of signal 4 (SIGILL)
 ==165450==  Illegal opcode at address 0x51CC63F
 ==165450==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165450==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165450==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165450==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1525
test 1550 [verify setting pipelining blocklisting options]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1550 ./libtest/libtests lib1550 - > log/13/stdout1550 2> log/13/stderrCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1559 ./libtest/libtests lib1559 - > log/8/stdout1559 2> log/8/stderr1559
1550

libtests returned 132, when expecting 0
 1550: exit FAILED
== Contents of files in the log/13/ directory after test 1550
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1550 ./libtest/libtests lib1550 - > log/13/stdout1550 2> log/13/stderr1550
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1550
=== End of file server.cmd
=== Start of file valgrind1550
 ==165876== 
 ==165876== Process terminating with default action of signal 4 (SIGILL)
 ==165876==  Illegal opcode at address 0x51CC63F
 ==165876==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==165876==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==165876==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==165876==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1550
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1551 ./libtest/libtests lib1551 http://127.0.0.1:39881/1551 > log/21/stdout1551 2> log/21/stderr1551
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1558 ./libtest/libtests lib1558 file:///startdir/src/build-curl/tests/log/1/data1558 > log/1/stdout1558 2> log/1/stderr1558
test 1559 [Set excessive URL lengths]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1559 ./libtest/libtests lib1559 - > log/8/stdout1559 2> log/8/stderr1559

 1559: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:28:47.873291333 +0000
+++ log/8/check-generated	2026-10-15 19:28:47.869164472 +0000
@@ -1,5 +0,0 @@
-CURLOPT_URL 10000000 bytes URL == 43[LF]
-CURLOPT_POSTFIELDS 10000000 bytes data == 0[LF]
-CURLUPART_URL 10000000 bytes URL == 3 (Malformed input to a URL function)[LF]
-CURLUPART_SCHEME 10000000 bytes scheme == 3 (Malformed input to a URL function)[LF]
-CURLUPART_USER 10000000 bytes user == 3 (Malformed input to a URL function)[LF]
== Contents of files in the log/8/ directory after test 1559
=== Start of file check-expected
 CURLOPT_URL 10000000 bytes URL == 43[LF]
 CURLOPT_POSTFIELDS 10000000 bytes data == 0[LF]
 CURLUPART_URL 10000000 bytes URL == 3 (Malformed input to a URL function)[LF]
 CURLUPART_SCHEME 10000000 bytes scheme == 3 (Malformed input to a URL function)[LF]
 CURLUPART_USER 10000000 bytes user == 3 (Malformed input to a URL function)[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1559 ./libtest/libtests lib1559 - > log/8/stdout1559 2> log/8/stderr1559
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1559
=== End of file server.cmd
=== Start of file valgrind1559
 ==166159== 
 ==166159== Process terminating with default action of signal 4 (SIGILL)
 ==166159==  Illegal opcode at address 0x51CC63F
 ==166159==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166159==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166159==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166159==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1559
test 1551 [re-run redirected transfer without setting URL again]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1551 ./libtest/libtests lib1551 http://127.0.0.1:39881/1551 > log/21/stdout1551 2> log/21/stderr1551

 1551: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1551
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1551 ./libtest/libtests lib1551 http://127.0.0.1:39881/1551 > log/21/stdout1551 2> log/21/stderr1551
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.013290 ====> Client connect
 19:28:46.013328 accept_connection 3 returned 4
 19:28:46.013543 Read 93 bytes
 19:28:46.013554 Process 93 bytes request
 19:28:46.013567 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.013575 Are-we-friendly question received
 19:28:46.013605 Wrote request (93 bytes) input to log/21/server.input
 19:28:46.013622 Identifying ourselves as friends
 19:28:46.013816 Response sent (56 bytes) and written to log/21/server.response
 19:28:46.013826 special request received, no persistency
 19:28:46.013834 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 40344 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1551
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1551
 ==166008== 
 ==166008== Process terminating with default action of signal 4 (SIGILL)
 ==166008==  Illegal opcode at address 0x51CC63F
 ==166008==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166008==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166008==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166008==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1551
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1557 ./libtest/libtests lib1557 hostname.invalid > log/17/stdout1557 2> log/17/stderr1557
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1564 ./libtest/libtests lib1564 - > log/5/stdout1564 2> log/5/stderr1564
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1546 ../src/curl -q --output log/10/curl1546.out  --include --trace-ascii log/10/trace1546 --trace-time http://127.0.0.1:40913/1546 --tr-encoding > log/10/stdout1546 2> log/10/stderr1546
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1555 ./libtest/libtests lib1555 http://127.0.0.1:35903/1555 > log/16/stdout1555 2> log/16/stderr1555
test 1558 [CURLINFO_PROTOCOL for file:// transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1558 ./libtest/libtests lib1558 file:///startdir/src/build-curl/tests/log/1/data1558 > log/1/stdout1558 2> log/1/stderr1558

 1558: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:28:47.948370665 +0000
+++ log/1/check-generated	2026-10-15 19:28:47.942498958 +0000
@@ -1,2 +0,0 @@
-hello[LF]
-Protocol: 400[LF]
== Contents of files in the log/1/ directory after test 1558
=== Start of file check-expected
 hello[LF]
 Protocol: 400[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1558 ./libtest/libtests lib1558 file:///startdir/src/build-curl/tests/log/1/data1558 > log/1/stdout1558 2> log/1/stderr1558
=== End of file commands.log
=== Start of file data1558
 hello
=== End of file data1558
=== Start of file server.cmd
 Testnum 1558
=== End of file server.cmd
=== Start of file valgrind1558
 ==166161== 
 ==166161== Process terminating with default action of signal 4 (SIGILL)
 ==166161==  Illegal opcode at address 0x51CC63F
 ==166161==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166161==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166161==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166161==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1558
test 1557 [Remove easy handle in pending connections, no dangling entry]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1557 ./libtest/libtests lib1557 hostname.invalid > log/17/stdout1557 2> log/17/stderr1557

libtests returned 132, when expecting 0
 1557: exit FAILED
== Contents of files in the log/17/ directory after test 1557
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1557 ./libtest/libtests lib1557 hostname.invalid > log/17/stdout1557 2> log/17/stderr1557
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1557
=== End of file server.cmd
=== Start of file valgrind1557
 ==166147== 
 ==166147== Process terminating with default action of signal 4 (SIGILL)
 ==166147==  Illegal opcode at address 0x51CC63F
 ==166147==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166147==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166147==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166147==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1557
test 1564 [wakeup before poll with no easy handles]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1564 ./libtest/libtests lib1564 - > log/5/stdout1564 2> log/5/stderr1564

libtests returned 132, when expecting 0
 1564: exit FAILED
== Contents of files in the log/5/ directory after test 1564
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1564 ./libtest/libtests lib1564 - > log/5/stdout1564 2> log/5/stderr1564
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1564
=== End of file server.cmd
=== Start of file valgrind1564
 ==166474== 
 ==166474== Process terminating with default action of signal 4 (SIGILL)
 ==166474==  Illegal opcode at address 0x51CC63F
 ==166474==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166474==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166474==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166474==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1564
test 1546 [HTTP transfer-encoding wrong order]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1546 ../src/curl -q --output log/10/curl1546.out  --include --trace-ascii log/10/trace1546 --trace-time http://127.0.0.1:40913/1546 --tr-encoding > log/10/stdout1546 2> log/10/stderr1546

 1546: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1546
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1546 ../src/curl -q --output log/10/curl1546.out  --include --trace-ascii log/10/trace1546 --trace-time http://127.0.0.1:40913/1546 --tr-encoding > log/10/stdout1546 2> log/10/stderr1546
=== End of file commands.log
=== Start of file http_server.log
 19:28:45.244871 ====> Client connect
 19:28:45.244917 accept_connection 3 returned 4
 19:28:45.244948 Read 93 bytes
 19:28:45.244959 Process 93 bytes request
 19:28:45.244974 Got request: GET /verifiedserver HTTP/1.1
 19:28:45.244983 Are-we-friendly question received
 19:28:45.245017 Wrote request (93 bytes) input to log/10/server.input
 19:28:45.245036 Identifying ourselves as friends
 19:28:45.245136 Response sent (56 bytes) and written to log/10/server.response
 19:28:45.245149 special request received, no persistency
 19:28:45.245159 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 39670 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1546
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1546
 ==165595== 
 ==165595== Process terminating with default action of signal 4 (SIGILL)
 ==165595==  Illegal opcode at address 0x492B75F
 ==165595==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==165595==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==165595==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==165595==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==165595==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==165595==    by 0x49908EB: curl_version_info (version.c:600)
 ==165595==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==165595==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==165595==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==165595==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1546
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1549 ./libtest/libtests lib1549 http://127.0.0.1:32943/1549 > log/4/stdout1549 2> log/4/stderr1549
test 1555 [verify api is protected against calls from callbacks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1555 ./libtest/libtests lib1555 http://127.0.0.1:35903/1555 > log/16/stdout1555 2> log/16/stderr1555

 1555: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:28:48.187581522 +0000
+++ log/16/check-generated	2026-10-15 19:28:48.184572543 +0000
@@ -1,2 +0,0 @@
-curl_easy_recv returned 93[LF]
-curl_easy_send returned 93[LF]
== Contents of files in the log/16/ directory after test 1555
=== Start of file check-expected
 curl_easy_recv returned 93[LF]
 curl_easy_send returned 93[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1555 ./libtest/libtests lib1555 http://127.0.0.1:35903/1555 > log/16/stdout1555 2> log/16/stderr1555
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.238269 ====> Client connect
 19:28:47.238304 accept_connection 3 returned 4
 19:28:47.238328 Read 93 bytes
 19:28:47.238338 Process 93 bytes request
 19:28:47.238351 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.238359 Are-we-friendly question received
 19:28:47.238384 Wrote request (93 bytes) input to log/16/server.input
 19:28:47.238400 Identifying ourselves as friends
 19:28:47.238472 Response sent (56 bytes) and written to log/16/server.response
 19:28:47.238481 special request received, no persistency
 19:28:47.238489 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58338 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1555
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1555
 ==166150== 
 ==166150== Process terminating with default action of signal 4 (SIGILL)
 ==166150==  Illegal opcode at address 0x51CC63F
 ==166150==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166150==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166150==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166150==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1555
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1567 ./libtest/libtests lib1567 http://127.0.0.1:45467/1567 > log/14/stdout1567 2> log/14/stderr1567
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1554 ./libtest/libtests lib1554 http://127.0.0.1:37077/1554 > log/19/stdout1554 2> log/19/stderr1554
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/4/server/http_server.pid" --logfile "log/4/http_server.log" --logdir "log/4" --portfile log/4/server/http_server.port --config log/4/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP server is on PID 165851 port 32943
* pid http => 165851 165851
test 1549 [Receive expired cookies and CURLINFO_COOKIELIST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1549 ./libtest/libtests lib1549 http://127.0.0.1:32943/1549 > log/4/stdout1549 2> log/4/stderr1549

 1549: stderr FAILED:
--- log/4/check-expected	2026-10-15 19:28:48.210241000 +0000
+++ log/4/check-generated	2026-10-15 19:28:48.205836211 +0000
@@ -1,3 +0,0 @@
-URL: http://127.0.0.1:32943/1549[CR][LF]
-0 cookies[CR][LF]
-Test ended with result 0[CR][LF]
== Contents of files in the log/4/ directory after test 1549
=== Start of file check-expected
 URL: http://127.0.0.1:32943/1549[CR][LF]
 0 cookies[CR][LF]
 Test ended with result 0[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1549 ./libtest/libtests lib1549 http://127.0.0.1:32943/1549 > log/4/stdout1549 2> log/4/stderr1549
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.625113 Running HTTP IPv4 version on port 32943
 19:28:46.625270 Wrote pid 165851 to log/4/server/http_server.pid
 19:28:46.625310 Wrote port 32943 to log/4/server/http_server.port
=== End of file http_server.log
=== Start of file server.cmd
 Testnum 1549
=== End of file server.cmd
=== Start of file valgrind1549
 ==166675== 
 ==166675== Process terminating with default action of signal 4 (SIGILL)
 ==166675==  Illegal opcode at address 0x51CC63F
 ==166675==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166675==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166675==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166675==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1549
test 1567 [re-run redirected transfer without setting CURLU URL again]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1567 ./libtest/libtests lib1567 http://127.0.0.1:45467/1567 > log/14/stdout1567 2> log/14/stderr1567

 1567: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1567
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1567 ./libtest/libtests lib1567 http://127.0.0.1:45467/1567 > log/14/stdout1567 2> log/14/stderr1567
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.567598 ====> Client connect
 19:28:46.567658 accept_connection 3 returned 4
 19:28:46.567697 Read 93 bytes
 19:28:46.567707 Process 93 bytes request
 19:28:46.567720 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.567728 Are-we-friendly question received
 19:28:46.567756 Wrote request (93 bytes) input to log/14/server.input
 19:28:46.567773 Identifying ourselves as friends
 19:28:46.567853 Response sent (56 bytes) and written to log/14/server.response
 19:28:46.567865 special request received, no persistency
 19:28:46.567873 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56712 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1567
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1567
 ==166700== 
 ==166700== Process terminating with default action of signal 4 (SIGILL)
 ==166700==  Illegal opcode at address 0x51CC63F
 ==166700==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166700==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166700==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166700==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1567
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1556 ./libtest/libtests lib1556 http://127.0.0.1:43733/1556 > log/9/stdout1556 2> log/9/stderr1556
test 1554 [HTTP with shared connection cache]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1554 ./libtest/libtests lib1554 http://127.0.0.1:37077/1554 > log/19/stdout1554 2> log/19/stderr1554

 1554: data FAILED:
--- log/19/check-expected	2026-10-15 19:28:48.253531321 +0000
+++ log/19/check-generated	2026-10-15 19:28:48.249170176 +0000
@@ -1,39 +0,0 @@
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
-run 1: foobar and so on fun![LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
-run 1: foobar and so on fun![LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
-run 1: foobar and so on fun![LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock SHARE[LF]
-[- Mutex unlock SHARE[LF]
--] Mutex lock CONNECT[LF]
-[- Mutex unlock CONNECT[LF]
== Contents of files in the log/19/ directory after test 1554
=== Start of file check-expected
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 run 1: foobar and so on fun![LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 run 1: foobar and so on fun![LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 run 1: foobar and so on fun![LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock SHARE[LF]
 [- Mutex unlock SHARE[LF]
 -] Mutex lock CONNECT[LF]
 [- Mutex unlock CONNECT[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1554 ./libtest/libtests lib1554 http://127.0.0.1:37077/1554 > log/19/stdout1554 2> log/19/stderr1554
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.104934 ====> Client connect
 19:28:46.104971 accept_connection 3 returned 4
 19:28:46.104994 Read 93 bytes
 19:28:46.105005 Process 93 bytes request
 19:28:46.105018 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.105028 Are-we-friendly question received
 19:28:46.105057 Wrote request (93 bytes) input to log/19/server.input
 19:28:46.105075 Identifying ourselves as friends
 19:28:46.105142 Response sent (57 bytes) and written to log/19/server.response
 19:28:46.105153 special request received, no persistency
 19:28:46.105162 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 57992 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1554
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1554
 ==166064== 
 ==166064== Process terminating with default action of signal 4 (SIGILL)
 ==166064==  Illegal opcode at address 0x51CC63F
 ==166064==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166064==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166064==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166064==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1554
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1548 ../src/curl -q --output log/15/curl1548.out  --include --trace-ascii log/15/trace1548 --trace-time -m 1 telnet://127.0.0.1:40321 <log/15/stdin-for-1548 > log/15/stdout1548 2> log/15/stderr1548
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1560 ./libtest/libtests lib1560 - > log/2/stdout1560 2> log/2/stderr1560
test 1556 [send long HTTP headers to header callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1556 ./libtest/libtests lib1556 http://127.0.0.1:43733/1556 > log/9/stdout1556 2> log/9/stderr1556

 1556: stdout FAILED:
--- log/9/check-expected	2026-10-15 19:28:48.272721480 +0000
+++ log/9/check-generated	2026-10-15 19:28:48.272089295 +0000
@@ -1,2 +0,0 @@
--foo-[LF]
-Max = 100009[LF]
== Contents of files in the log/9/ directory after test 1556
=== Start of file check-expected
 -foo-[LF]
 Max = 100009[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1556 ./libtest/libtests lib1556 http://127.0.0.1:43733/1556 > log/9/stdout1556 2> log/9/stderr1556
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.261092 ====> Client connect
 19:28:46.261130 accept_connection 3 returned 4
 19:28:46.261290 Read 93 bytes
 19:28:46.261303 Process 93 bytes request
 19:28:46.261315 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.261324 Are-we-friendly question received
 19:28:46.261357 Wrote request (93 bytes) input to log/9/server.input
 19:28:46.261373 Identifying ourselves as friends
 19:28:46.261433 Response sent (56 bytes) and written to log/9/server.response
 19:28:46.261442 special request received, no persistency
 19:28:46.261450 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35226 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1556
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1556
 ==166179== 
 ==166179== Process terminating with default action of signal 4 (SIGILL)
 ==166179==  Illegal opcode at address 0x51CC63F
 ==166179==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166179==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166179==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166179==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1556
test 1548 [TELNET read stdin without upload file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1548 ../src/curl -q --output log/15/curl1548.out  --include --trace-ascii log/15/trace1548 --trace-time -m 1 telnet://127.0.0.1:40321 <log/15/stdin-for-1548 > log/15/stdout1548 2> log/15/stderr1548

curl returned 132, when expecting 28
 1548: exit FAILED
== Contents of files in the log/15/ directory after test 1548
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1548 ../src/curl -q --output log/15/curl1548.out  --include --trace-ascii log/15/trace1548 --trace-time -m 1 telnet://127.0.0.1:40321 <log/15/stdin-for-1548 > log/15/stdout1548 2> log/15/stderr1548
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.631108 ====> Client connect
 19:28:46.631164 accept_connection 3 returned 4
 19:28:46.631197 Read 93 bytes
 19:28:46.631209 Process 93 bytes request
 19:28:46.631223 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.631233 Are-we-friendly question received
 19:28:46.631266 Wrote request (93 bytes) input to log/15/server.input
 19:28:46.631286 Identifying ourselves as friends
 19:28:46.631390 Response sent (56 bytes) and written to log/15/server.response
 19:28:46.631403 special request received, no persistency
 19:28:46.631412 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 59564 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1548
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file stdin-for-1548
 GET /we/want/1548 HTTP/1.0
=== End of file stdin-for-1548
=== Start of file valgrind1548
 ==165861== 
 ==165861== Process terminating with default action of signal 4 (SIGILL)
 ==165861==  Illegal opcode at address 0x492B75F
 ==165861==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==165861==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==165861==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==165861==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==165861==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==165861==    by 0x49908EB: curl_version_info (version.c:600)
 ==165861==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==165861==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==165861==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==165861==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1548
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1547 ../src/curl -q --output log/6/curl1547.out  --include --trace-ascii log/6/trace1547 --trace-time ftp://127.0.0.1:33989/test-1547/ -P 127.0.0.1 --ftp-pasv > log/6/stdout1547 2> log/6/stderr1547
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1552 ./libtest/libtests lib1552 'imap://127.0.0.1:42601/1552/;MAILINDEX=1' > log/7/stdout1552 2> log/7/stderr1552
setenv LC_ALL = C.UTF-8
test 1560 [URL API]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1560 ./libtest/libtests lib1560 - > log/2/stdout1560 2> log/2/stderr1560

 1560: stdout FAILED:
--- log/2/check-expected	2026-10-15 19:28:48.394623319 +0000
+++ log/2/check-generated	2026-10-15 19:28:48.392396309 +0000
@@ -1 +0,0 @@
-success[LF]
== Contents of files in the log/2/ directory after test 1560
=== Start of file check-expected
 success[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1560 ./libtest/libtests lib1560 - > log/2/stdout1560 2> log/2/stderr1560
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1560
=== End of file server.cmd
=== Start of file valgrind1560
 ==166214== 
 ==166214== Process terminating with default action of signal 4 (SIGILL)
 ==166214==  Illegal opcode at address 0x51CC63F
 ==166214==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166214==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166214==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166214==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1560
test 1547 [FTP dir list PASV overriding PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1547 ../src/curl -q --output log/6/curl1547.out  --include --trace-ascii log/6/trace1547 --trace-time ftp://127.0.0.1:33989/test-1547/ -P 127.0.0.1 --ftp-pasv > log/6/stdout1547 2> log/6/stderr1547

 1547: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1547
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1547 ../src/curl -q --output log/6/curl1547.out  --include --trace-ascii log/6/trace1547 --trace-time ftp://127.0.0.1:33989/test-1547/ -P 127.0.0.1 --ftp-pasv > log/6/stdout1547 2> log/6/stderr1547
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:45.734726 ====> Client connect
 19:28:45.734917 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:45.735188 < "USER anonymous"
 19:28:45.735223 > "331 We are happy you popped in![CR][LF]"
 19:28:45.735397 < "PASS ftp@example.com"
 19:28:45.735427 > "230 Welcome you silly person[CR][LF]"
 19:28:45.735579 < "PWD"
 19:28:45.735612 > "257 "/" is current directory[CR][LF]"
 19:28:45.740042 < "EPSV"
 19:28:45.740085 ====> Passive DATA channel requested by client
 19:28:45.740102 DATA sockfilt for passive data channel starting...
 19:28:45.742791 DATA sockfilt for passive data channel started (pid 165676)
 19:28:45.742910 DATA sockfilt for passive data channel listens on port 37615
 19:28:45.742953 > "229 Entering Passive Mode (|||37615|)[CR][LF]"
 19:28:45.742971 Client has been notified that upcoming DATA connection is awaited on port 37615
 19:28:45.743235 Client connects to port 37615
 19:28:45.743265 ====> Client established passive DATA connection on port 37615
 19:28:45.743342 < "TYPE I"
 19:28:45.743372 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:45.743536 < "SIZE verifiedserver"
 19:28:45.743577 > "213 17[CR][LF]"
 19:28:45.743729 < "RETR verifiedserver"
 19:28:45.743765 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:45.743854 =====> Closing passive DATA connection...
 19:28:45.743871 Server disconnects passive DATA connection
 19:28:45.745126 Server disconnected passive DATA connection
 19:28:45.745159 DATA sockfilt for passive data channel quits (pid 165676)
 19:28:45.745411 DATA sockfilt for passive data channel quit (pid 165676)
 19:28:45.745439 =====> Closed passive DATA connection
 19:28:45.745470 > "226 File transfer complete[CR][LF]"
 19:28:45.786390 < "QUIT"
 19:28:45.786451 > "221 bye bye baby[CR][LF]"
 19:28:45.787867 MAIN sockfilt said DISC
 19:28:45.787917 ====> Client disconnected
 19:28:45.788006 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:46.336988 ====> Client connect
 19:28:46.337315 Received DATA (on stdin)
 19:28:46.337330 > 146 bytes data, server => client
 19:28:46.337341 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:46.337351 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:46.337359 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:46.337436 < 16 bytes data, client => server
 19:28:46.337446 'USER anonymous\r\n'
 19:28:46.337611 Received DATA (on stdin)
 19:28:46.337622 > 33 bytes data, server => client
 19:28:46.337631 '331 We are happy you popped in!\r\n'
 19:28:46.337680 < 22 bytes data, client => server
 19:28:46.337698 'PASS ftp@example.com\r\n'
 19:28:46.337813 Received DATA (on stdin)
 19:28:46.337824 > 30 bytes data, server => client
 19:28:46.337833 '230 Welcome you silly person\r\n'
 19:28:46.337882 < 5 bytes data, client => server
 19:28:46.337892 'PWD\r\n'
 19:28:46.341108 Received DATA (on stdin)
 19:28:46.341130 > 30 bytes data, server => client
 19:28:46.341140 '257 "/" is current directory\r\n'
 19:28:46.342286 < 6 bytes data, client => server
 19:28:46.342305 'EPSV\r\n'
 19:28:46.345366 Received DATA (on stdin)
 19:28:46.345380 > 39 bytes data, server => client
 19:28:46.345390 '229 Entering Passive Mode (|||37615|)\r\n'
 19:28:46.345546 < 8 bytes data, client => server
 19:28:46.345559 'TYPE I\r\n'
 19:28:46.345761 Received DATA (on stdin)
 19:28:46.345772 > 33 bytes data, server => client
 19:28:46.345782 '200 I modify TYPE as you wanted\r\n'
 19:28:46.345836 < 21 bytes data, client => server
 19:28:46.345848 'SIZE verifiedserver\r\n'
 19:28:46.345964 Received DATA (on stdin)
 19:28:46.345975 > 8 bytes data, server => client
 19:28:46.345984 '213 17\r\n'
 19:28:46.346034 < 21 bytes data, client => server
 19:28:46.346045 'RETR verifiedserver\r\n'
 19:28:46.346258 Received DATA (on stdin)
 19:28:46.346269 > 29 bytes data, server => client
 19:28:46.346279 '150 Binary junk (17 bytes).\r\n'
 19:28:46.347860 Received DATA (on stdin)
 19:28:46.347872 > 28 bytes data, server => client
 19:28:46.347882 '226 File transfer complete\r\n'
 19:28:46.388582 < 6 bytes data, client => server
 19:28:46.388613 'QUIT\r\n'
 19:28:46.388846 Received DATA (on stdin)
 19:28:46.388860 > 18 bytes data, server => client
 19:28:46.388870 '221 bye bye baby\r\n'
 19:28:46.390189 ====> Client disconnect
 19:28:46.390405 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:45.344119 Running IPv4 version
 19:28:45.344208 Listening on port 37615
 19:28:45.344251 Wrote pid 165676 to log/6/server/ftp_sockdata.pid
 19:28:45.345119 Received PING (on stdin)
 19:28:45.345208 Received PORT (on stdin)
 19:28:45.345578 ====> Client connect
 19:28:45.346305 Received DATA (on stdin)
 19:28:45.346316 > 17 bytes data, server => client
 19:28:45.346326 'WE ROOLZ: 85558\r\n'
 19:28:45.346349 Received DISC (on stdin)
 19:28:45.346359 ====> Client forcibly disconnected
 19:28:45.347561 Received QUIT (on stdin)
 19:28:45.347573 quits
 19:28:45.347639 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1547
=== End of file server.cmd
=== Start of file valgrind1547
 ==165743== 
 ==165743== Process terminating with default action of signal 4 (SIGILL)
 ==165743==  Illegal opcode at address 0x492B75F
 ==165743==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==165743==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==165743==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==165743==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==165CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1565 ./libtest/libtests lib1565 http://127.0.0.1:41689/1565 > log/20/stdout1565 2> log/20/stderr1565
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1568 ./libtest/libtests lib1568 http://127.0.0.1/1568 43739 > log/18/stdout1568 2> log/18/stderr1568
743==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==165743==    by 0x49908EB: curl_version_info (version.c:600)
 ==165743==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==165743==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==165743==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==165743==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1547
test 1552 [IMAP multi transfer error without curl_multi_remove_handle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1552 ./libtest/libtests lib1552 'imap://127.0.0.1:42601/1552/;MAILINDEX=1' > log/7/stdout1552 2> log/7/stderr1552

libtests returned 132, when expecting 0
 1552: exit FAILED
== Contents of files in the log/7/ directory after test 1552
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1552 ./libtest/libtests lib1552 'imap://127.0.0.1:42601/1552/;MAILINDEX=1' > log/7/stdout1552 2> log/7/stderr1552
=== End of file commands.log
=== Start of file imap_server.log
 19:28:46.467920 ====> Client connect
 19:28:46.468066 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:28:46.468364 < "A001 CAPABILITY"
 19:28:46.468395 > "A001 BAD Command[CR][LF]"
 19:28:46.468552 < "A002 LIST "verifiedserver" *"
 19:28:46.468576 LIST_imap got "verifiedserver" *
 19:28:46.468599 > "* LIST () "/" "WE ROOLZ: 122008"[CR][LF]"
 19:28:46.468616 > "A002 OK LIST Completed[CR][LF]"
 19:28:46.468630 return proof we are we
 19:28:46.512614 < "A003 LOGOUT"
 19:28:46.512667 > "* BYE curl IMAP server signing off[CR][LF]"
 19:28:46.512687 > "A003 OK LOGOUT completed[CR][LF]"
 19:28:46.516986 MAIN sockfilt said DISC
 19:28:46.517035 ====> Client disconnected
 19:28:46.517123 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:47.070192 ====> Client connect
 19:28:47.070450 Received DATA (on stdin)
 19:28:47.070463 > 164 bytes data, server => client
 19:28:47.070474 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:47.070484 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:47.070493 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:28:47.070605 < 17 bytes data, client => server
 19:28:47.070615 'A001 CAPABILITY\r\n'
 19:28:47.070771 Received DATA (on stdin)
 19:28:47.070782 > 18 bytes data, server => client
 19:28:47.070791 'A001 BAD Command\r\n'
 19:28:47.070846 < 30 bytes data, client => server
 19:28:47.070857 'A002 LIST "verifiedserver" *\r\n'
 19:28:47.071004 Received DATA (on stdin)
 19:28:47.071021 > 34 bytes data, server => client
 19:28:47.071031 '* LIST () "/" "WE ROOLZ: 122008"\r\n'
 19:28:47.071051 Received DATA (on stdin)
 19:28:47.071060 > 24 bytes data, server => client
 19:28:47.071070 'A002 OK LIST Completed\r\n'
 19:28:47.114802 < 13 bytes data, client => server
 19:28:47.114838 'A003 LOGOUT\r\n'
 19:28:47.115087 Received DATA (on stdin)
 19:28:47.115099 > 36 bytes data, server => client
 19:28:47.115110 '* BYE curl IMAP server signing off\r\n'
 19:28:47.115134 Received DATA (on stdin)
 19:28:47.115144 > 26 bytes data, server => client
 19:28:47.115154 'A003 OK LOGOUT completed\r\n'
 19:28:47.119287 ====> Client disconnect
 19:28:47.119499 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 1552
=== End of file server.cmd
=== Start of file valgrind1552
 ==166055== 
 ==166055== Process terminating with default action of signal 4 (SIGILL)
 ==166055==  Illegal opcode at address 0x51CC63F
 ==166055==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166055==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166055==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166055==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1552
test 1565 [wakeup from another thread]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1565 ./libtest/libtests lib1565 http://127.0.0.1:41689/1565 > log/20/stdout1565 2> log/20/stderr1565

libtests returned 132, when expecting 0
 1565: exit FAILED
== Contents of files in the log/20/ directory after test 1565
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1565 ./libtest/libtests lib1565 http://127.0.0.1:41689/1565 > log/20/stdout1565 2> log/20/stderr1565
=== End of file commands.log
=== Start of file http_server.log
 19:28:46.484658 ====> Client connect
 19:28:46.484695 accept_connection 3 returned 4
 19:28:46.484719 Read 93 bytes
 19:28:46.484728 Process 93 bytes request
 19:28:46.484740 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.484749 Are-we-friendly question received
 19:28:46.484778 Wrote request (93 bytes) input to log/20/server.input
 19:28:46.484793 Identifying ourselves as friends
 19:28:46.484870 Response sent (57 bytes) and written to log/20/server.response
 19:28:46.484879 special request received, no persistency
 19:28:46.484886 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 51058 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1565
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind1565
 ==166585== 
 ==166585== Process terminating with default action of signal 4 (SIGILL)
 ==166585==  Illegal opcode at address 0x51CC63F
 ==166585==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166585==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166585==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166585==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1565
test 1568 [HTTP with Digest authorization on custom CURLOPT_PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1568 ./libtest/libtests lib1568 http://127.0.0.1/1568 43739 > log/18/stdout1568 2> log/18/stderr1568

 1568: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1568
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1568 ./libtest/libtests lib1568 http://127.0.0.1/1568 43739 > log/18/stdout1568 2> log/18/stderr1568
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.666305 ====> Client connect
 19:28:47.666342 accept_connection 3 returned 4
 19:28:47.666365 Read 93 bytes
 19:28:47.666374 Process 93 bytes request
 19:28:47.666386 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.666394 Are-we-friendly question received
 19:28:47.666417 Wrote request (93 bytes) input to log/18/server.input
 19:28:47.666432 Identifying ourselves as friends
 19:28:47.666498 Response sent (56 bytes) and written to log/18/server.response
 19:28:47.666507 speciaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1571 ./libtest/libtests lib1571 http://127.0.0.1:44711/1571 > log/23/stdout1571 2> log/23/stderr1571
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1570 ./libtest/libtests lib1569 "ftp://127.0.0.1:37215/1570;type=D" ftp://127.0.0.1:37215/1570 > log/24/stdout1570 2> log/24/stderr1570
l request received, no persistency
 19:28:47.666516 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46694 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1568
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1568
 ==166832== 
 ==166832== Process terminating with default action of signal 4 (SIGILL)
 ==166832==  Illegal opcode at address 0x51CC63F
 ==166832==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166832==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166832==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166832==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1568
test 1571 [CURLFOLLOW_OBEYCODE with custom POST method, 302 => GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1571 ./libtest/libtests lib1571 http://127.0.0.1:44711/1571 > log/23/stdout1571 2> log/23/stderr1571

 1571: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1571
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1571 ./libtest/libtests lib1571 http://127.0.0.1:44711/1571 > log/23/stdout1571 2> log/23/stderr1571
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.051062 ====> Client connect
 19:28:47.051103 accept_connection 3 returned 4
 19:28:47.051124 Read 93 bytes
 19:28:47.051134 Process 93 bytes request
 19:28:47.051146 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.051155 Are-we-friendly question received
 19:28:47.051179 Wrote request (93 bytes) input to log/23/server.input
 19:28:47.051193 Identifying ourselves as friends
 19:28:47.051252 Response sent (56 bytes) and written to log/23/server.response
 19:28:47.051260 special request received, no persistency
 19:28:47.051267 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48922 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1571
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1571
 ==167068== 
 ==167068== Process terminating with default action of signal 4 (SIGILL)
 ==167068==  Illegal opcode at address 0x51CC63F
 ==167068==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167068==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167068==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167068==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1571
test 1570 [FTP first type=D then regular URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1570 ./libtest/libtests lib1569 "ftp://127.0.0.1:37215/1570;type=D" ftp://127.0.0.1:37215/1570 > log/24/stdout1570 2> log/24/stderr1570

 1570: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1570
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1570 ./libtest/libtests lib1569 "ftp://127.0.0.1:37215/1570;type=D" ftp://127.0.0.1:37215/1570 > log/24/stdout1570 2> log/24/stderr1570
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:47.296845 ====> Client connect
 19:28:47.297067 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:47.297346 < "USER anonymous"
 19:28:47.297385 > "331 We are happy you popped in![CR][LF]"
 19:28:47.297575 < "PASS ftp@example.com"
 19:28:47.297606 > "230 Welcome you silly person[CR][LF]"
 19:28:47.297778 < "PWD"
 19:28:47.297815 > "257 "/" is current directory[CR][LF]"
 19:28:47.298002 < "EPSV"
 19:28:47.298028 ====> Passive DATA channel requested by client
 19:28:47.298044 DATA sockfilt for passive data channel starting...
 19:28:47.300525 DATA sockfilt for passive data channel started (pid 166970)
 19:28:47.302160 DATA sockfilt for passive data channel listens on port 35937
 19:28:47.302227 > "229 Entering Passive Mode (|||35937|)[CR][LF]"
 19:28:47.302245 Client has been notified that upcoming DATA connection is awaited on port 35937
 19:28:47.302568 Client connects to port 35937
 19:28:47.302599 ====> Client established passive DATA connection on port 35937
 19:28:47.302695 < "TYPE I"
 19:28:47.302725 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:47.302882 < "SIZE verifiedserver"
 19:28:47.302918 > "213 17[CR][LF]"
 19:28:47.303059 < "RETR verifiedserver"
 19:28:47.303094 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:47.303179 =====> Closing passive DATA connection...
 19:28:47.303194 Server disconnects passive DATA connection
 19:28:47.303404 Server disconnected passive DATA connection
 19:28:47.303431 DATA sockfilt for passive data channel quits (pid 166970)
 19:28:47.303679 DATA sockfilt for passive data channel quit (pid 166970)
 19:28:47.303702 =====> Closed passive DATA connection
 19:28:47.303730 > "226 File transfer complete[CR][LF]"
 19:28:47.346838 < "QUIT"
 19:28:47.346898 > "221 bye bye baby[CR][LF]"
 19:28:47.348198 MAIN sockfilt said DISC
 19:28:47.348230 ====> Client disconnected
 19:28:47.348316 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:47.899067 ====> Client connect
 19:28:47.899446 Received DATA (on stdin)
 19:28:47.899459 > 146 bytes data, server => client
 19:28:47.899470 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:47.899479 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:47.899488 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:47.899563 < 16 bytes data, client => server
 19:28:47.899575 'USER anonymous\r\n'
 19:28:47.899754 Received DATA (on stdin)
 19:28:47.899767 > 33 bytes data, server => client
 19:28:47.899778 '331 We are happy you popped in!\r\n'
 19:28:47.899836 < 22 bytes data, client => server
 19:28:47.899851 'PASS ftp@example.com\r\n'
 19:28:47.899970 Received DATA (on stdin)
 19:28:47.899982 > 30 bytes data, server => client
 19:28:47.899992 '230 Welcome you silly person\r\n'
 19:28:47.900048 < 5 bytes data, client => server
 19:28:47.900061 'PWD\r\n'
 19:28:47.900181 Received DATA (on stdin)
 19:28:47.900194 > 30 bytes data, server => client
 19:28:47.900204 '257 "/" is current directory\r\n'
 19:28:47.900270 < 6 bytes data, client => server
 19:28:47.900284 'EPSV\r\n'
 19:28:47.904619 Received DATA (on stdin)
 19:28:47.90463CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1569 ./libtest/libtests lib1569 "ftp://127.0.0.1:40417/1569;type=A" ftp://127.0.0.1:40417/1569 > log/12/stdout1569 2> log/12/stderr1569
6 > 39 bytes data, server => client
 19:28:47.904647 '229 Entering Passive Mode (|||35937|)\r\n'
 19:28:47.904847 < 8 bytes data, client => server
 19:28:47.904861 'TYPE I\r\n'
 19:28:47.905088 Received DATA (on stdin)
 19:28:47.905099 > 33 bytes data, server => client
 19:28:47.905109 '200 I modify TYPE as you wanted\r\n'
 19:28:47.905160 < 21 bytes data, client => server
 19:28:47.905170 'SIZE verifiedserver\r\n'
 19:28:47.905278 Received DATA (on stdin)
 19:28:47.905288 > 8 bytes data, server => client
 19:28:47.905297 '213 17\r\n'
 19:28:47.905344 < 21 bytes data, client => server
 19:28:47.905353 'RETR verifiedserver\r\n'
 19:28:47.905556 Received DATA (on stdin)
 19:28:47.905567 > 29 bytes data, server => client
 19:28:47.905577 '150 Binary junk (17 bytes).\r\n'
 19:28:47.906092 Received DATA (on stdin)
 19:28:47.906103 > 28 bytes data, server => client
 19:28:47.906113 '226 File transfer complete\r\n'
 19:28:47.949007 < 6 bytes data, client => server
 19:28:47.949032 'QUIT\r\n'
 19:28:47.949264 Received DATA (on stdin)
 19:28:47.949275 > 18 bytes data, server => client
 19:28:47.949286 '221 bye bye baby\r\n'
 19:28:47.950509 ====> Client disconnect
 19:28:47.950677 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:47.902195 Running IPv4 version
 19:28:47.902701 Listening on port 35937
 19:28:47.902755 Wrote pid 166970 to log/24/server/ftp_sockdata.pid
 19:28:47.902783 Received PING (on stdin)
 19:28:47.904393 Received PORT (on stdin)
 19:28:47.904883 ====> Client connect
 19:28:47.905601 Received DATA (on stdin)
 19:28:47.905613 > 17 bytes data, server => client
 19:28:47.905622 'WE ROOLZ: 85113\r\n'
 19:28:47.905645 Received DISC (on stdin)
 19:28:47.905655 ====> Client forcibly disconnected
 19:28:47.905800 Received QUIT (on stdin)
 19:28:47.905810 quits
 19:28:47.905879 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 1570
=== End of file server.cmd
=== Start of file valgrind1570
 ==166990== 
 ==166990== Process terminating with default action of signal 4 (SIGILL)
 ==166990==  Illegal opcode at address 0x51CC63F
 ==166990==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166990==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166990==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166990==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1570
test 1569 [FTP first type=A then regular URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1569 ./libtest/libtests lib1569 "ftp://127.0.0.1:40417/1569;type=A" ftp://127.0.0.1:40417/1569 > log/12/stdout1569 2> log/12/stderr1569

 1569: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1569
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1569 ./libtest/libtests lib1569 "ftp://127.0.0.1:40417/1569;type=A" ftp://127.0.0.1:40417/1569 > log/12/stdout1569 2> log/12/stderr1569
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:47.092122 ====> Client connect
 19:28:47.092380 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:47.098902 < "USER anonymous"
 19:28:47.098965 > "331 We are happy you popped in![CR][LF]"
 19:28:47.099209 < "PASS ftp@example.com"
 19:28:47.099248 > "230 Welcome you silly person[CR][LF]"
 19:28:47.099447 < "PWD"
 19:28:47.099488 > "257 "/" is current directory[CR][LF]"
 19:28:47.099669 < "EPSV"
 19:28:47.099695 ====> Passive DATA channel requested by client
 19:28:47.099709 DATA sockfilt for passive data channel starting...
 19:28:47.114233 DATA sockfilt for passive data channel started (pid 166820)
 19:28:47.114384 DATA sockfilt for passive data channel listens on port 46029
 19:28:47.114435 > "229 Entering Passive Mode (|||46029|)[CR][LF]"
 19:28:47.114454 Client has been notified that upcoming DATA connection is awaited on port 46029
 19:28:47.114790 Client connects to port 46029
 19:28:47.114823 ====> Client established passive DATA connection on port 46029
 19:28:47.114919 < "TYPE I"
 19:28:47.114954 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:47.115125 < "SIZE verifiedserver"
 19:28:47.115164 > "213 17[CR][LF]"
 19:28:47.115344 < "RETR verifiedserver"
 19:28:47.115622 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:47.115724 =====> Closing passive DATA connection...
 19:28:47.115744 Server disconnects passive DATA connection
 19:28:47.115979 Server disconnected passive DATA connection
 19:28:47.116006 DATA sockfilt for passive data channel quits (pid 166820)
 19:28:47.116234 DATA sockfilt for passive data channel quit (pid 166820)
 19:28:47.116262 =====> Closed passive DATA connection
 19:28:47.116290 > "226 File transfer complete[CR][LF]"
 19:28:47.165649 < "QUIT"
 19:28:47.165706 > "221 bye bye baby[CR][LF]"
 19:28:47.166898 MAIN sockfilt said DISC
 19:28:47.166932 ====> Client disconnected
 19:28:47.167019 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:47.694358 ====> Client connect
 19:28:47.694772 Received DATA (on stdin)
 19:28:47.694791 > 146 bytes data, server => client
 19:28:47.694801 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:47.694810 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:47.694819 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:47.701027 < 16 bytes data, client => server
 19:28:47.701057 'USER anonymous\r\n'
 19:28:47.701345 Received DATA (on stdin)
 19:28:47.701361 > 33 bytes data, server => client
 19:28:47.701371 '331 We are happy you popped in!\r\n'
 19:28:47.701455 < 22 bytes data, client => server
 19:28:47.701470 'PASS ftp@example.com\r\n'
 19:28:47.701618 Received DATA (on stdin)
 19:28:47.701631 > 30 bytes data, server => client
 19:28:47.701642 '230 Welcome you silly person\r\n'
 19:28:47.701710 < 5 bytes data, client => server
 19:28:47.701724 'PWD\r\n'
 19:28:47.701855 Received DATA (on stdin)
 19:28:47.701867 > 30 bytes data, server => client
 19:28:47.701877 '257 "/" is current directory\r\n'
 19:28:47.701945 < 6 bytes data, client => server
 19:28:47.701956 'EPSV\r\n'
 19:28:47.716830 Received DATA (on stdin)
 19:28:47.716851 > 39 bytes data, server => client
 19:28:47.716861 '229 Entering Passive Mode (|||46029|)\r\n'
 19:28:47.717101 < 8 bytes data, client => server
 19:28:47.717112 'TYPE I\r\n'
 19:28:47.717321 Received DATA (on stdin)
 19:28:47.717333 > 33 bytes data, server => client
 19:28:47.717343 '200 I modify TYPE as you wanted\r\n'
 19:28:47.717400 < 21 bytes data, client => server
 19:28:47.717413 'SIZE verifiedserver\r\n'
 19:28:47.717530 Received DATA (on stdin)
 19:28:47.717541 > 8 bytes data, server => client
 19:28:47.717551 '213 17\r\n'
 19:28:47.717603 < 21 bytes data, client => server
 19:28:47.717614 'RETR verifiedserver\r\n'
 19:28:47.718203 Received DATA (on stdin)
 19:28:47.718215 > 29 bytes data, server => client
 19:28:47.718225 '150 Binary junk (17 bytes).\r\n'
 19:28:47.718657 Received DATA (on stdin)
 19:28:47.718669 > 28 bytes data, server => client
 19:28:47.718679 '226 File transfer complete\r\n'
 19:28:47.767808 < 6 bytes data, client => server
 19:28:47.767843 'QUIT\r\n'
 19:28:47.768073 Received DATA (on stdin)
 19:28:47.768083 > 18 bytes data, server => client
 19:28:47.768092 '221 bye bye baby\r\n'
 19:28:47.769210 ====> Client disconnect
 19:28:47.774350 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:47.715189 Running IPv4 version
 19:28:47.715289 Listening on port 46029
 19:28:47.715334 Wrote pid 166820 to log/12/server/ftp_sockdata.pid
 19:28:47.716528 Received PING (on stdin)
 19:28:47.716645 Received PORT (oCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1572 ./libtest/libtests lib1571 http://127.0.0.1:38821/1572 > log/13/stdout1572 2> log/13/stderr1572
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1574 ./libtest/libtests lib1571 http://127.0.0.1:39881/1574 > log/21/stdout1574 2> log/21/stderr1574
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1576 ./libtest/libtests lib1576 http://127.0.0.1:35993/1576 > log/17/stdout1576 2> log/17/stderr1576
n stdin)
 19:28:47.717072 ====> Client connect
 19:28:47.718112 Received DATA (on stdin)
 19:28:47.718124 > 17 bytes data, server => client
 19:28:47.718134 'WE ROOLZ: 85158\r\n'
 19:28:47.718163 Received DISC (on stdin)
 19:28:47.718176 ====> Client forcibly disconnected
 19:28:47.718381 Received QUIT (on stdin)
 19:28:47.718392 quits
 19:28:47.718456 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY EPSV 500 no such command
 Testnum 1569
=== End of file server.cmd
=== Start of file valgrind1569
 ==166928== 
 ==166928== Process terminating with default action of signal 4 (SIGILL)
 ==166928==  Illegal opcode at address 0x51CC63F
 ==166928==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==166928==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==166928==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==166928==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1569
test 1572 [CURLFOLLOW_OBEYCODE with custom POST method, 308 => custom]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1572 ./libtest/libtests lib1571 http://127.0.0.1:38821/1572 > log/13/stdout1572 2> log/13/stderr1572

 1572: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1572
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1572 ./libtest/libtests lib1571 http://127.0.0.1:38821/1572 > log/13/stdout1572 2> log/13/stderr1572
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.104433 ====> Client connect
 19:28:47.104477 accept_connection 3 returned 4
 19:28:47.104503 Read 93 bytes
 19:28:47.104513 Process 93 bytes request
 19:28:47.104526 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.104535 Are-we-friendly question received
 19:28:47.104563 Wrote request (93 bytes) input to log/13/server.input
 19:28:47.104579 Identifying ourselves as friends
 19:28:47.104661 Response sent (56 bytes) and written to log/13/server.response
 19:28:47.104670 special request received, no persistency
 19:28:47.104678 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54550 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1572
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1572
 ==167134== 
 ==167134== Process terminating with default action of signal 4 (SIGILL)
 ==167134==  Illegal opcode at address 0x51CC63F
 ==167134==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167134==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167134==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167134==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1572
test 1574 [CURLFOLLOW_FIRSTONLY with custom GET method, 301 => GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1574 ./libtest/libtests lib1571 http://127.0.0.1:39881/1574 > log/21/stdout1574 2> log/21/stderr1574

 1574: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1574
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1574 ./libtest/libtests lib1571 http://127.0.0.1:39881/1574 > log/21/stdout1574 2> log/21/stderr1574
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.620286 ====> Client connect
 19:28:47.620324 accept_connection 3 returned 4
 19:28:47.620347 Read 93 bytes
 19:28:47.620356 Process 93 bytes request
 19:28:47.620369 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.620377 Are-we-friendly question received
 19:28:47.620407 Wrote request (93 bytes) input to log/21/server.input
 19:28:47.620423 Identifying ourselves as friends
 19:28:47.620488 Response sent (56 bytes) and written to log/21/server.response
 19:28:47.620498 special request received, no persistency
 19:28:47.620506 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 40360 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1574
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1574
 ==167303== 
 ==167303== Process terminating with default action of signal 4 (SIGILL)
 ==167303==  Illegal opcode at address 0x51CC63F
 ==167303==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167303==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167303==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167303==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1574
test 1576 [CURLFOLLOW_OBEYCODE with custom PUT method, 302 => custom]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1576 ./libtest/libtests lib1576 http://127.0.0.1:35993/1576 > log/17/stdout1576 2> log/17/stderr1576

 1576: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1576
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1576 ./libtest/libtests lib1576 http://127.0.0.1:35993/1576 > log/17/stdout1576 2> log/17/stderr1576
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.805564 ====> Client connect
 19:28:48.805602 accept_connection 3 returned 4
 19:28:48.805623 Read 93 bytes
 19:28:48.805632 Process 93 bytes request
 19:28:48.805645 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.805653 Are-we-friendly question received
 19:28:48.805679 Wrote request (93 bytes) input to log/17/server.input
 19:28:48.805694 Identifying ourselves as friends
 19:28:48.805766 Response sent (56 bytes) and written to log/17/server.response
 19:28:48.805776 special request received, no persistency
 19:28:48.805784 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 42284 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < ConteCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1553 ./libtest/libtests lib1553 imap://non-existing-host.haxx.se:36099/1553 > log/11/stdout1553 2> log/11/stderr1553
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1575 ./libtest/libtests lib1571 http://127.0.0.1:38815/1575 > log/1/stdout1575 2> log/1/stderr1575
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1573 ./libtest/libtests lib1571 http://127.0.0.1:44467/1573 > log/8/stdout1573 2> log/8/stderr1573
nt-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1576
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1576
 ==167512== 
 ==167512== Process terminating with default action of signal 4 (SIGILL)
 ==167512==  Illegal opcode at address 0x51CC63F
 ==167512==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167512==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167512==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167512==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1576
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/11/server/imap_server.pid" --logfile "log/11/imap_server.log" --logdir "log/11" --portfile "log/11/server/imap_server.port" --srcdir "/startdir/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 36099 (log/11/server/imap_server.port)
RUN: IMAP server is PID 165995 port 36099
* pid imap => 165995 165995
test 1553 [IMAP cleanup with non-existing hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1553 ./libtest/libtests lib1553 imap://non-existing-host.haxx.se:36099/1553 > log/11/stdout1553 2> log/11/stderr1553

libtests returned 132, when expecting 0
 1553: exit FAILED
== Contents of files in the log/11/ directory after test 1553
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1553 ./libtest/libtests lib1553 imap://non-existing-host.haxx.se:36099/1553 > log/11/stdout1553 2> log/11/stderr1553
=== End of file commands.log
=== Start of file imap_server.log
 19:28:46.524798 IMAP server listens on port IPv4/36099
 19:28:46.525081 logged pid 165995 in log/11/server/imap_server.pid
 19:28:46.532009 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:46.125724 Running IPv4 version
 19:28:46.125824 Listening on port 36099
 19:28:46.125880 Wrote pid 166048 to log/11/server/imap_sockfilt.pid
 19:28:46.125922 Wrote port 36099 to log/11/server/imap_server.port
 19:28:46.126699 Received PING (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 1553
=== End of file server.cmd
=== Start of file valgrind1553
 ==167049== 
 ==167049== Process terminating with default action of signal 4 (SIGILL)
 ==167049==  Illegal opcode at address 0x51CC63F
 ==167049==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167049==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167049==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167049==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1553
test 1575 [CURLFOLLOW_FIRSTONLY with custom POST method, 308 => POST]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1575 ./libtest/libtests lib1571 http://127.0.0.1:38815/1575 > log/1/stdout1575 2> log/1/stderr1575

 1575: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1575
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1575 ./libtest/libtests lib1571 http://127.0.0.1:38815/1575 > log/1/stdout1575 2> log/1/stderr1575
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.661820 ====> Client connect
 19:28:48.661856 accept_connection 3 returned 4
 19:28:48.661953 Read 93 bytes
 19:28:48.661965 Process 93 bytes request
 19:28:48.661979 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.661988 Are-we-friendly question received
 19:28:48.662019 Wrote request (93 bytes) input to log/1/server.input
 19:28:48.662035 Identifying ourselves as friends
 19:28:48.662092 Response sent (56 bytes) and written to log/1/server.response
 19:28:48.662101 special request received, no persistency
 19:28:48.662110 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 33040 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1575
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1575
 ==167331== 
 ==167331== Process terminating with default action of signal 4 (SIGILL)
 ==167331==  Illegal opcode at address 0x51CC63F
 ==167331==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167331==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167331==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167331==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1575
test 1573 [CURLFOLLOW_OBEYCODE with custom GET method, 301 => custom]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1573 ./libtest/libtests lib1571 http://127.0.0.1:44467/1573 > log/8/stdout1573 2> log/8/stderr1573

 1573: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1573
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1573 ./libtest/libtests lib1571 http://127.0.0.1:44467/1573 > log/8/stdout1573 2> log/8/stderr1573
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.591551 ====> Client connect
 19:28:47.591590 accept_connection 3 returned 4
 19:28:47.591613 Read 93 bytes
 19:28:47.591623 Process 93 bytes request
 19:28:47.591637 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.591646 Are-we-friendly question received
 19:28:47.591675 Wrote request (93 bytes) input to log/8/server.input
 19:28:47.591693 Identifying ourselves as friends
 19:28:47.591762 Response sent (56 bytes) and written to log/8/server.response
 19:28:47.591772 special request received, no persistency
 19:28:47.591781 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 45256 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1573
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1573
 ==167291== 
 ==167291== Process terminating with default action of signalCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1581 ./libtest/libtests lib1571 http://127.0.0.1:45467/1581 > log/14/stdout1581 2> log/14/stderr1581
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1579 ./libtest/libtests lib1576 http://127.0.0.1:35903/1579 1579 > log/16/stdout1579 2> log/16/stderr1579
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1563 ../src/curl -q --output log/3/curl1563.out  --include --trace-ascii log/3/trace1563 --trace-time http://127.0.0.1:36161/15630001 -L -H "Host: www.example.com" > log/3/stdout1563 2> log/3/stderr1563
 4 (SIGILL)
 ==167291==  Illegal opcode at address 0x51CC63F
 ==167291==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167291==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167291==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167291==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1573
test 1581 [CURLFOLLOW_OBEYCODE with custom POST301 method, 301 => custom]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1581 ./libtest/libtests lib1571 http://127.0.0.1:45467/1581 > log/14/stdout1581 2> log/14/stderr1581

 1581: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1581
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1581 ./libtest/libtests lib1571 http://127.0.0.1:45467/1581 > log/14/stdout1581 2> log/14/stderr1581
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.927784 ====> Client connect
 19:28:47.927858 accept_connection 3 returned 4
 19:28:47.927895 Read 93 bytes
 19:28:47.927906 Process 93 bytes request
 19:28:47.927919 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.927927 Are-we-friendly question received
 19:28:47.927955 Wrote request (93 bytes) input to log/14/server.input
 19:28:47.927971 Identifying ourselves as friends
 19:28:47.928044 Response sent (56 bytes) and written to log/14/server.response
 19:28:47.928053 special request received, no persistency
 19:28:47.928061 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56716 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1581
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1581
 ==167601== 
 ==167601== Process terminating with default action of signal 4 (SIGILL)
 ==167601==  Illegal opcode at address 0x51CC63F
 ==167601==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167601==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167601==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167601==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1581
test 1579 [CURLFOLLOW_OBEYCODE with custom PUT method, 303 => GET]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1579 ./libtest/libtests lib1576 http://127.0.0.1:35903/1579 1579 > log/16/stdout1579 2> log/16/stderr1579

 1579: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1579
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1579 ./libtest/libtests lib1576 http://127.0.0.1:35903/1579 1579 > log/16/stdout1579 2> log/16/stderr1579
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.874207 ====> Client connect
 19:28:48.874240 accept_connection 3 returned 4
 19:28:48.874259 Read 93 bytes
 19:28:48.874267 Process 93 bytes request
 19:28:48.874277 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.874284 Are-we-friendly question received
 19:28:48.874318 Wrote request (93 bytes) input to log/16/server.input
 19:28:48.874333 Identifying ourselves as friends
 19:28:48.874394 Response sent (56 bytes) and written to log/16/server.response
 19:28:48.874402 special request received, no persistency
 19:28:48.874409 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58340 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1579
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1579
 ==167552== 
 ==167552== Process terminating with default action of signal 4 (SIGILL)
 ==167552==  Illegal opcode at address 0x51CC63F
 ==167552==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167552==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167552==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167552==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1579
test 1563 [Make sure redirects to CURLPROTO_GOPHER are forbidden by default]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1563 ../src/curl -q --output log/3/curl1563.out  --include --trace-ascii log/3/trace1563 --trace-time http://127.0.0.1:36161/15630001 -L -H "Host: www.example.com" > log/3/stdout1563 2> log/3/stderr1563

 1563: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1563
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1563 ../src/curl -q --output log/3/curl1563.out  --include --trace-ascii log/3/trace1563 --trace-time http://127.0.0.1:36161/15630001 -L -H "Host: www.example.com" > log/3/stdout1563 2> log/3/stderr1563
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.420265 ====> Client connect
 19:28:47.420303 accept_connection 3 returned 4
 19:28:47.420327 Read 93 bytes
 19:28:47.420337 Process 93 bytes request
 19:28:47.420350 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.420359 Are-we-friendly question received
 19:28:47.420389 Wrote request (93 bytes) input to log/3/server.input
 19:28:47.420405 Identifying ourselves as friends
 19:28:47.420472 Response sent (56 bytes) and written to log/3/server.response
 19:28:47.420484 special request received, no persistency
 19:28:47.420492 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 39890 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1563
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== StarCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1566 ../src/curl -q --trace-ascii log/22/trace1566 --trace-time http://127.0.0.1:35989/1566 -o log/22/output1566 --etag-compare log/22/etag1566 > log/22/stdout1566 2> log/22/stderr1566
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1578 ./libtest/libtests lib1576 http://127.0.0.1:40913/1578 > log/10/stdout1578 2> log/10/stderr1578
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1591 ./libtest/libtests lib1591 http://127.0.0.1:33935/bzz/1591 <log/6/stdin-for-1591 > log/6/stdout1591 2> log/6/stderr1591
t of file valgrind1563
 ==166553== 
 ==166553== Process terminating with default action of signal 4 (SIGILL)
 ==166553==  Illegal opcode at address 0x492B75F
 ==166553==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==166553==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==166553==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==166553==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==166553==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==166553==    by 0x49908EB: curl_version_info (version.c:600)
 ==166553==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==166553==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==166553==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==166553==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1563
test 1566 [--etag-compare that gets a 304 back should not overwrite the file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1566 ../src/curl -q --trace-ascii log/22/trace1566 --trace-time http://127.0.0.1:35989/1566 -o log/22/output1566 --etag-compare log/22/etag1566 > log/22/stdout1566 2> log/22/stderr1566

 1566: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1566
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1566 ../src/curl -q --trace-ascii log/22/trace1566 --trace-time http://127.0.0.1:35989/1566 -o log/22/output1566 --etag-compare log/22/etag1566 > log/22/stdout1566 2> log/22/stderr1566
=== End of file commands.log
=== Start of file etag1566
 "123456"
=== End of file etag1566
=== Start of file http_server.log
 19:28:46.539619 ====> Client connect
 19:28:46.539659 accept_connection 3 returned 4
 19:28:46.539684 Read 93 bytes
 19:28:46.539695 Process 93 bytes request
 19:28:46.539709 Got request: GET /verifiedserver HTTP/1.1
 19:28:46.539719 Are-we-friendly question received
 19:28:46.539750 Wrote request (93 bytes) input to log/22/server.input
 19:28:46.539770 Identifying ourselves as friends
 19:28:46.539842 Response sent (56 bytes) and written to log/22/server.response
 19:28:46.539856 special request received, no persistency
 19:28:46.539865 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 38030 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file output1566
 downloaded already
=== End of file output1566
=== Start of file server.cmd
 Testnum 1566
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1566
 ==166664== 
 ==166664== Process terminating with default action of signal 4 (SIGILL)
 ==166664==  Illegal opcode at address 0x492B75F
 ==166664==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==166664==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==166664==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==166664==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==166664==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==166664==    by 0x49908EB: curl_version_info (version.c:600)
 ==166664==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==166664==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==166664==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==166664==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1566
test 1578 [CURLFOLLOW_FIRSTONLY with custom PUT method, 302 => PUT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1578 ./libtest/libtests lib1576 http://127.0.0.1:40913/1578 > log/10/stdout1578 2> log/10/stderr1578

 1578: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1578
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1578 ./libtest/libtests lib1576 http://127.0.0.1:40913/1578 > log/10/stdout1578 2> log/10/stderr1578
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.873564 ====> Client connect
 19:28:47.873599 accept_connection 3 returned 4
 19:28:47.873721 Read 93 bytes
 19:28:47.873734 Process 93 bytes request
 19:28:47.873746 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.873755 Are-we-friendly question received
 19:28:47.873786 Wrote request (93 bytes) input to log/10/server.input
 19:28:47.873802 Identifying ourselves as friends
 19:28:47.873862 Response sent (56 bytes) and written to log/10/server.response
 19:28:47.873871 special request received, no persistency
 19:28:47.873879 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 39686 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1578
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1578
 ==167604== 
 ==167604== Process terminating with default action of signal 4 (SIGILL)
 ==167604==  Illegal opcode at address 0x51CC63F
 ==167604==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167604==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167604==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167604==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1578
test 1591 [HTTP PUT with trailers at the end]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1591 ./libtest/libtests lib1591 http://127.0.0.1:33935/bzz/1591 <log/6/stdin-for-1591 > log/6/stdout1591 2> log/6/stderr1591

 1591: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1591
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1591 ./libtest/libtests lib1591 http://127.0.0.1:33935/bzz/1591 <log/6/stdin-for-1591 > log/6/stdout1591 2> log/6/stderr1591
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.254784 ====> Client connect
 19:28:48.254830 accept_connection 3 returned 4
 19:28:48.254856 Read 93 bytes
 19:28:48.254868 Process 93 bytes request
 19:28:48.254880 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.254889 Are-we-friendly question received
 19:28:48.271029 Wrote request (93 bytes) input to log/6/serverCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1580 ./libtest/libtests lib1576 http://127.0.0.1:32943/1580 1578 > log/4/stdout1580 2> log/4/stderr1580
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1590 ./libtest/libtests lib1553 imap://localhost:42601/1590 > log/7/stdout1590 2> log/7/stderr1590
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1577 ./libtest/libtests lib1576 http://127.0.0.1:37089/1577 1577 > log/5/stdout1577 2> log/5/stderr1577
.input
 19:28:48.271742 Identifying ourselves as friends
 19:28:48.271853 Response sent (56 bytes) and written to log/6/server.response
 19:28:48.271866 special request received, no persistency
 19:28:48.271876 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 51298 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1591
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file stdin-for-1591
 more than one byte
=== End of file stdin-for-1591
=== Start of file valgrind1591
 ==168115== 
 ==168115== Process terminating with default action of signal 4 (SIGILL)
 ==168115==  Illegal opcode at address 0x51CC63F
 ==168115==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168115==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168115==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168115==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1591
test 1580 [CURLFOLLOW_FIRSTONLY with custom PUT method, 308 => PUT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1580 ./libtest/libtests lib1576 http://127.0.0.1:32943/1580 1578 > log/4/stdout1580 2> log/4/stderr1580

 1580: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1580
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1580 ./libtest/libtests lib1576 http://127.0.0.1:32943/1580 1578 > log/4/stdout1580 2> log/4/stderr1580
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.894812 ====> Client connect
 19:28:48.894848 accept_connection 3 returned 4
 19:28:48.894870 Read 93 bytes
 19:28:48.894880 Process 93 bytes request
 19:28:48.894904 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.894912 Are-we-friendly question received
 19:28:48.894940 Wrote request (93 bytes) input to log/4/server.input
 19:28:48.894963 Identifying ourselves as friends
 19:28:48.895032 Response sent (57 bytes) and written to log/4/server.response
 19:28:48.895043 special request received, no persistency
 19:28:48.895052 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:32943...
 * Established connection to 127.0.0.1 (127.0.0.1 port 32943) from 127.0.0.1 port 37480 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:32943
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:32943 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 165851
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1580
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 165851
=== End of file server.response
=== Start of file valgrind1580
 ==167589== 
 ==167589== Process terminating with default action of signal 4 (SIGILL)
 ==167589==  Illegal opcode at address 0x51CC63F
 ==167589==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167589==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167589==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167589==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1580
test 1590 [IMAP cleanup before a connection was created]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1590 ./libtest/libtests lib1553 imap://localhost:42601/1590 > log/7/stdout1590 2> log/7/stderr1590

libtests returned 132, when expecting 0
 1590: exit FAILED
== Contents of files in the log/7/ directory after test 1590
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1590 ./libtest/libtests lib1553 imap://localhost:42601/1590 > log/7/stdout1590 2> log/7/stderr1590
=== End of file commands.log
=== Start of file imap_server.log
 19:28:48.613755 ====> Client connect
 19:28:48.613943 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:28:48.614259 < "A001 CAPABILITY"
 19:28:48.614304 > "A001 BAD Command[CR][LF]"
 19:28:48.614481 < "A002 LIST "verifiedserver" *"
 19:28:48.614508 LIST_imap got "verifiedserver" *
 19:28:48.614532 > "* LIST () "/" "WE ROOLZ: 122008"[CR][LF]"
 19:28:48.614548 > "A002 OK LIST Completed[CR][LF]"
 19:28:48.614562 return proof we are we
 19:28:48.656735 < "A003 LOGOUT"
 19:28:48.656807 > "* BYE curl IMAP server signing off[CR][LF]"
 19:28:48.656826 > "A003 OK LOGOUT completed[CR][LF]"
 19:28:48.658249 MAIN sockfilt said DISC
 19:28:48.658294 ====> Client disconnected
 19:28:48.665428 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:49.215969 ====> Client connect
 19:28:49.216301 Received DATA (on stdin)
 19:28:49.216315 > 164 bytes data, server => client
 19:28:49.216326 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:49.216336 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:49.216344 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:28:49.216430 < 17 bytes data, client => server
 19:28:49.216442 'A001 CAPABILITY\r\n'
 19:28:49.216647 Received DATA (on stdin)
 19:28:49.216657 > 18 bytes data, server => client
 19:28:49.216667 'A001 BAD Command\r\n'
 19:28:49.216726 < 30 bytes data, client => server
 19:28:49.216736 'A002 LIST "verifiedserver" *\r\n'
 19:28:49.216900 Received DATA (on stdin)
 19:28:49.216910 > 34 bytes data, server => client
 19:28:49.216919 '* LIST () "/" "WE ROOLZ: 122008"\r\n'
 19:28:49.216939 Received DATA (on stdin)
 19:28:49.216947 > 24 bytes data, server => client
 19:28:49.216956 'A002 OK LIST Completed\r\n'
 19:28:49.258864 < 13 bytes data, client => server
 19:28:49.258894 'A003 LOGOUT\r\n'
 19:28:49.259172 Received DATA (on stdin)
 19:28:49.259184 > 36 bytes data, server => client
 19:28:49.259194 '* BYE curl IMAP server signing off\r\n'
 19:28:49.259221 Received DATA (on stdin)
 19:28:49.259229 > 26 bytes data, server => client
 19:28:49.259238 'A003 OK LOGOUT completed\r\n'
 19:28:49.260529 ====> Client disconnect
 19:28:49.260648 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 1590
=== End of file server.cmd
=== Start of file valgrind1590
 ==168095== 
 ==168095== Process terminating with default action of signal 4 (SIGILL)
 ==168095==  Illegal opcode at address 0x51CC63F
 ==168095==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168095==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168095==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168095==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1590
test 1577 [CURLFOLLOW_OBEYCODE with custom PUT method, 308 => custom]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1588 ./libtest/libtests lib1588 http://test.remote.example.com/path/1588 127.0.0.1 40321 silly:person custom.set.host.name > log/15/stdout1588 2> log/15/stderr1588
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1592 ./libtest/libtests lib1592 http://a-site-never-accessed.example.org/1592 > log/20/stdout1592 2> log/20/stderr1592
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1589 ./libtest/libtests lib1589 http://test.remote.example.com/path/1589 127.0.0.1 34531 37607 silly:person > log/2/stdout1589 2> log/2/stderr1589
ind1577 ./libtest/libtests lib1576 http://127.0.0.1:37089/1577 1577 > log/5/stdout1577 2> log/5/stderr1577

 1577: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1577
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1577 ./libtest/libtests lib1576 http://127.0.0.1:37089/1577 1577 > log/5/stdout1577 2> log/5/stderr1577
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.921058 ====> Client connect
 19:28:47.921098 accept_connection 3 returned 4
 19:28:47.921123 Read 93 bytes
 19:28:47.921134 Process 93 bytes request
 19:28:47.921149 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.921159 Are-we-friendly question received
 19:28:47.921188 Wrote request (93 bytes) input to log/5/server.input
 19:28:47.921206 Identifying ourselves as friends
 19:28:47.921282 Response sent (56 bytes) and written to log/5/server.response
 19:28:47.921294 special request received, no persistency
 19:28:47.921302 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 54844 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1577
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1577
 ==167670== 
 ==167670== Process terminating with default action of signal 4 (SIGILL)
 ==167670==  Illegal opcode at address 0x51CC63F
 ==167670==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==167670==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==167670==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==167670==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1577
test 1588 [HTTP proxy auth Digest, then change proxy and do it again]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1588 ./libtest/libtests lib1588 http://test.remote.example.com/path/1588 127.0.0.1 40321 silly:person custom.set.host.name > log/15/stdout1588 2> log/15/stderr1588

 1588: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1588
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1588 ./libtest/libtests lib1588 http://test.remote.example.com/path/1588 127.0.0.1 40321 silly:person custom.set.host.name > log/15/stdout1588 2> log/15/stderr1588
=== End of file commands.log
=== Start of file http_server.log
 19:28:49.160267 ====> Client connect
 19:28:49.160304 accept_connection 3 returned 4
 19:28:49.160327 Read 93 bytes
 19:28:49.160338 Process 93 bytes request
 19:28:49.160350 Got request: GET /verifiedserver HTTP/1.1
 19:28:49.160359 Are-we-friendly question received
 19:28:49.160386 Wrote request (93 bytes) input to log/15/server.input
 19:28:49.160403 Identifying ourselves as friends
 19:28:49.160471 Response sent (56 bytes) and written to log/15/server.response
 19:28:49.160484 special request received, no persistency
 19:28:49.160493 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 59576 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1588
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1588
 ==168018== 
 ==168018== Process terminating with default action of signal 4 (SIGILL)
 ==168018==  Illegal opcode at address 0x51CC63F
 ==168018==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168018==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168018==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168018==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1588
test 1592 [HTTP request, remove handle while resolving, do not block]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1592 ./libtest/libtests lib1592 http://a-site-never-accessed.example.org/1592 > log/20/stdout1592 2> log/20/stderr1592

libtests returned 132, when expecting 0
 1592: exit FAILED
== Contents of files in the log/20/ directory after test 1592
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1592 ./libtest/libtests lib1592 http://a-site-never-accessed.example.org/1592 > log/20/stdout1592 2> log/20/stderr1592
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1592
=== End of file server.cmd
=== Start of file valgrind1592
 ==168110== 
 ==168110== Process terminating with default action of signal 4 (SIGILL)
 ==168110==  Illegal opcode at address 0x51CC63F
 ==168110==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168110==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168110==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168110==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1592
test 1589 [HTTP proxy auth Digest, then change proxy port and do it again]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1589 ./libtest/libtests lib1589 http://test.remote.example.com/path/1589 127.0.0.1 34531 37607 silly:person > log/2/stdout1589 2> log/2/stderr1589

 1589: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1589
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1589 ./libtest/libtests lib1589 http://test.remote.example.com/path/1589 127.0.0.1 34531 37607 silly:person > log/2/stdout1589 2> log/2/stderr1589
=== End of file commands.log
=== Start of file http2_server.log
 19:28:49.271056 ====> Client connect
 19:28:49.271099 accept_connection 3 returned 4
 19:28:49.271127 Read 93 bytes
 19:28:49.271138 Process 93 bytes request
 19:28:49.271152 Got request: GET /verifiedserver HTTP/1.1
 19:28:49.271161 Are-we-friendly question received
 19:28:49.271193 Wrote request (93 bytes) input to log/2/proxy.input
 19:28:49.271212 Identifying ourselves as friends
 19:28:49.271321 Response sent (57 bytes) and written to log/2/proxy.response
 19:28:49.271335 special request received, no persistency
 19:28:49.271344 ====> ClientCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1594 ./libtest/libtests lib1594 http://127.0.0.1:44711/1594 > log/23/stdout1594 2> log/23/stderr1594
 disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:37607...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37607) from 127.0.0.1 port 43500 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37607
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37607 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 150157
=== End of file http2_verify.out
=== Start of file http_server.log
 19:28:49.189604 ====> Client connect
 19:28:49.189633 accept_connection 3 returned 4
 19:28:49.189650 Read 93 bytes
 19:28:49.189657 Process 93 bytes request
 19:28:49.189668 Got request: GET /verifiedserver HTTP/1.1
 19:28:49.189674 Are-we-friendly question received
 19:28:49.189711 Wrote request (93 bytes) input to log/2/server.input
 19:28:49.189724 Identifying ourselves as friends
 19:28:49.189774 Response sent (56 bytes) and written to log/2/server.response
 19:28:49.189781 special request received, no persistency
 19:28:49.189787 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 53596 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 150157
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1589
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1589
 ==168101== 
 ==168101== Process terminating with default action of signal 4 (SIGILL)
 ==168101==  Illegal opcode at address 0x51CC63F
 ==168101==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168101==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168101==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168101==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1589
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1596 ./libtest/libtests lib1594 http://127.0.0.1:40921/1596 > log/12/stdout1596 2> log/12/stderr1596
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1595 ./libtest/libtests lib1594 http://127.0.0.1:38895/1595 > log/24/stdout1595 2> log/24/stderr1595
test 1594 [HTTP Retry-After header parsing and extraction]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1594 ./libtest/libtests lib1594 http://127.0.0.1:44711/1594 > log/23/stdout1594 2> log/23/stderr1594

 1594: stdout FAILED:
--- log/23/check-expected	2026-10-15 19:28:50.472589490 +0000
+++ log/23/check-generated	2026-10-15 19:28:50.469200524 +0000
@@ -1 +0,0 @@
-Retry-After 22[LF]
== Contents of files in the log/23/ directory after test 1594
=== Start of file check-expected
 Retry-After 22[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1594 ./libtest/libtests lib1594 http://127.0.0.1:44711/1594 > log/23/stdout1594 2> log/23/stderr1594
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.487708 ====> Client connect
 19:28:48.487744 accept_connection 3 returned 4
 19:28:48.487765 Read 93 bytes
 19:28:48.487775 Process 93 bytes request
 19:28:48.487786 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.487794 Are-we-friendly question received
 19:28:48.487819 Wrote request (93 bytes) input to log/23/server.input
 19:28:48.487835 Identifying ourselves as friends
 19:28:48.487906 Response sent (56 bytes) and written to log/23/server.response
 19:28:48.487914 special request received, no persistency
 19:28:48.487922 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48936 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1594
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1594
 ==168370== 
 ==168370== Process terminating with default action of signal 4 (SIGILL)
 ==168370==  Illegal opcode at address 0x51CC63F
 ==168370==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168370==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168370==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168370==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1594
test 1596 [HTTP Retry-After header parsing using a date]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1596 ./libtest/libtests lib1594 http://127.0.0.1:40921/1596 > log/12/stdout1596 2> log/12/stderr1596

 1596: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:50.572769826 +0000
+++ log/12/check-generated	2026-10-15 19:28:50.569201767 +0000
@@ -1 +0,0 @@
-Retry-After 21600[LF]
== Contents of files in the log/12/ directory after test 1596
=== Start of file check-expected
 Retry-After 21600[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1596 ./libtest/libtests lib1594 http://127.0.0.1:40921/1596 > log/12/stdout1596 2> log/12/stderr1596
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.764174 ====> Client connect
 19:28:48.764222 accept_connection 3 returned 4
 19:28:48.764247 Read 93 bytes
 19:28:48.764257 Process 93 bytes request
 19:28:48.764269 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.764278 Are-we-friendly question received
 19:28:48.764319 Wrote request (93 bytes) input to log/12/server.input
 19:28:48.764338 Identifying ourselves as friends
 19:28:48.764419 Response sent (56 bytes) and written to log/12/server.response
 19:28:48.764432 special request received, no persistency
 19:28:48.764441 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 37596 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1596
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1596
 ==168526== 
 ==168526== Process terminating with default action of signal 4 (SIGILL)
 ==168526==  Illegal opcode at address 0x51CC63F
 ==168526==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168526==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168526==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168526==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1596
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1593 ./libtest/libtests lib1593 http://127.0.0.1:43739/1593 > log/18/stdout1593 2> log/18/stderr1593
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1597 ./libtest/libtests lib1597 - > log/13/stdout1597 2> log/13/stderr1597
test 1595 [HTTP Retry-After header extraction (without header)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1595 ./libtest/libtests lib1594 http://127.0.0.1:38895/1595 > log/24/stdout1595 2> log/24/stderr1595

 1595: stdout FAILED:
--- log/24/check-expected	2026-10-15 19:28:50.594725987 +0000
+++ log/24/check-generated	2026-10-15 19:28:50.589202015 +0000
@@ -1 +0,0 @@
-Retry-After 0[LF]
== Contents of files in the log/24/ directory after test 1595
=== Start of file check-expected
 Retry-After 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1595 ./libtest/libtests lib1594 http://127.0.0.1:38895/1595 > log/24/stdout1595 2> log/24/stderr1595
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.514390 ====> Client connect
 19:28:48.514437 accept_connection 3 returned 4
 19:28:48.517879 Read 93 bytes
 19:28:48.517899 Process 93 bytes request
 19:28:48.517913 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.517923 Are-we-friendly question received
 19:28:48.517959 Wrote request (93 bytes) input to log/24/server.input
 19:28:48.517979 Identifying ourselves as friends
 19:28:48.518045 Response sent (56 bytes) and written to log/24/server.response
 19:28:48.518055 special request received, no persistency
 19:28:48.518064 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1595
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1595
 ==168390== 
 ==168390== Process terminating with default action of signal 4 (SIGILL)
 ==168390==  Illegal opcode at address 0x51CC63F
 ==168390==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168390==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168390==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168390==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1595
test 1593 [HTTP custom header overrides CURLOPT_TIMECONDITION]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1593 ./libtest/libtests lib1593 http://127.0.0.1:43739/1593 > log/18/stdout1593 2> log/18/stderr1593

 1593: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1593
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1593 ./libtest/libtests lib1593 http://127.0.0.1:43739/1593 > log/18/stdout1593 2> log/18/stderr1593
=== End of file commands.log
=== Start of file http_server.log
 19:28:49.467719 ====> Client connect
 19:28:49.467763 accept_connection 3 returned 4
 19:28:49.467788 Read 93 bytes
 19:28:49.467797 Process 93 bytes request
 19:28:49.467809 Got request: GET /verifiedserver HTTP/1.1
 19:28:49.467818 Are-we-friendly question received
 19:28:49.467844 Wrote request (93 bytes) input to log/18/server.input
 19:28:49.467860 Identifying ourselves as friends
 19:28:49.468043 Response sent (56 bytes) and written to log/18/server.response
 19:28:49.468052 special request received, no persistency
 19:28:49.468061 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46702 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1593
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1593
 ==168366== 
 ==168366== Process terminating with default action of signal 4 (SIGILL)
 ==168366==  Illegal opcode at address 0x51CC63F
 ==168366==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168366==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168366==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168366==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1593
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1584 ../src/curl -q --trace-ascii log/9/trace1584 --trace-time http://127.0.0.1:43733/1584 -J -O --output-dir log/9 > log/9/stdout1584 2> log/9/stderr1584
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1585 ../src/curl -q --trace-ascii log/19/trace1585 --trace-time http://127.0.0.1:37077/1585 -J -O --output-dir log/19 > log/19/stdout1585 2> log/19/stderr1585
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1602 ./unit/units unit1602 - > log/1/stdout1602 2> log/1/stderr1602
test 1597 [CURLOPT_PROTOCOLS_STR]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1597 ./libtest/libtests lib1597 - > log/13/stdout1597 2> log/13/stderr1597

 1597: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:28:50.676743785 +0000
+++ log/13/check-generated	2026-10-15 19:28:50.672536385 +0000
@@ -1 +0,0 @@
-Tested 15 strings[LF]
== Contents of files in the log/13/ directory after test 1597
=== Start of file check-expected
 Tested 15 strings[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1597 ./libtest/libtests lib1597 - > log/13/stdout1597 2> log/13/stderr1597
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1597
=== End of file server.cmd
=== Start of file valgrind1597
 ==168543== 
 ==168543== Process terminating with default action of signal 4 (SIGILL)
 ==168543==  Illegal opcode at address 0x51CC63F
 ==168543==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168543==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168543==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168543==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1597
test 1584 [HTTP GET with -J and Content-Disposition including path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1584 ../src/curl -q --trace-ascii log/9/trace1584 --trace-time http://127.0.0.1:43733/1584 -J -O --output-dir log/9 > log/9/stdout1584 2> log/9/stderr1584

 1584: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1584
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1584 ../src/curl -q --trace-ascii log/9/trace1584 --trace-time http://127.0.0.1:43733/1584 -J -O --output-dir log/9 > log/9/stdout1584 2> log/9/stderr1584
=== End of file commands.log
=== Start of file http_server.log
 19:28:47.957356 ====> Client connect
 19:28:47.957392 accept_connection 3 returned 4
 19:28:47.957414 Read 93 bytes
 19:28:47.957423 Process 93 bytes request
 19:28:47.957436 Got request: GET /verifiedserver HTTP/1.1
 19:28:47.957445 Are-we-friendly question received
 19:28:47.957474 Wrote request (93 bytes) input to log/9/server.input
 19:28:47.957491 Identifying ourselves as friends
 19:28:47.957560 Response sent (56 bytes) and written to log/9/server.response
 19:28:47.957571 special request received, no persistency
 19:28:47.957580 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35242 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1584
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1584
 ==167668== 
 ==167668== Process terminating with default action of signal 4 (SIGILL)
 ==167668==  Illegal opcode at address 0x492B75F
 ==167668==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==167668==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==167668==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==167668==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==167668==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==167668==    by 0x49908EB: curl_version_info (version.c:600)
 ==167668==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==167668==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==167668==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==167668==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1584
test 1585 [HTTP GET with -J and Content-Disposition including DOS path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1585 ../src/curl -q --trace-ascii log/19/trace1585 --trace-time http://127.0.0.1:37077/1585 -J -O --output-dir log/19 > log/19/stdout1585 2> log/19/stderr1585

 1585: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1585
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1585 ../src/curl -q --trace-ascii log/19/trace1585 --trace-time http://127.0.0.1:37077/1585 -J -O --output-dir log/19 > log/19/stdout1585 2> log/19/stderr1585
=== End of file commands.log
=== Start of file http_server.log
 19:28:48.052778 ====> Client connect
 19:28:48.052814 accept_connection 3 returned 4
 19:28:48.052833 Read 93 bytes
 19:28:48.052841 Process 93 bytes request
 19:28:48.052852 Got request: GET /verifiedserver HTTP/1.1
 19:28:48.052859 Are-we-friendly question received
 19:28:48.052881 Wrote request (93 bytes) input to log/19/server.input
 19:28:48.052895 Identifying ourselves as friends
 19:28:48.054049 Response sent (57 bytes) and written to log/19/server.response
 19:28:48.054064 special request received, no persistency
 19:28:48.054072 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 58010 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1585
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1585
 ==167839== 
 ==167839== Process terminating with default action of signal 4 (SIGILL)
 ==167839==  Illegal opcode at address 0x492B75F
 ==167839==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==167839==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==167839==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==167839==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==167839==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==167839==    by 0x49908EB: curl_version_info (version.c:600)
 ==167839==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==167839==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==167839==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==167839==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1585
test 1602 [Internal hash create/add/destroy testing, exercising clean functions]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1602 ./unit/units unit1602 - > log/1/stdout1602 2> log/1/stderr1602

units returned 132, wheCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1599 ./libtest/libtests lib1599 ftp://127.0.0.1:46137/1599 log/17/netrc1599 > log/17/stdout1599 2> log/17/stderr1599
n expecting 0
 1602: exit FAILED
== Contents of files in the log/1/ directory after test 1602
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1602 ./unit/units unit1602 - > log/1/stdout1602 2> log/1/stderr1602
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1602
=== End of file server.cmd
=== Start of file valgrind1602
 ==168733== 
 ==168733== Process terminating with default action of signal 4 (SIGILL)
 ==168733==  Illegal opcode at address 0x4091F7F
 ==168733==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==168733==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==168733==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==168733==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1602
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1601 ./unit/units unit1601 - > log/11/stdout1601 2> log/11/stderr1601
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1598 ./libtest/libtests lib1598 http://127.0.0.1:39881/bzz/1598 <log/21/stdin-for-1598 > log/21/stdout1598 2> log/21/stderr1598
test 1599 [FTP with netrc using no user but control code in password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1599 ./libtest/libtests lib1599 ftp://127.0.0.1:46137/1599 log/17/netrc1599 > log/17/stdout1599 2> log/17/stderr1599

 1599: data FAILED:
--- log/17/check-expected	2026-10-15 19:28:50.860799989 +0000
+++ log/17/check-generated	2026-10-15 19:28:50.855872000 +0000
@@ -1 +0,0 @@
--foo-[LF]
== Contents of files in the log/17/ directory after test 1599
=== Start of file check-expected
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1599 ./libtest/libtests lib1599 ftp://127.0.0.1:46137/1599 log/17/netrc1599 > log/17/stdout1599 2> log/17/stderr1599
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:49.490783 ====> Client connect
 19:28:49.491023 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:49.491325 < "USER anonymous"
 19:28:49.491359 > "331 We are happy you popped in![CR][LF]"
 19:28:49.491507 < "PASS ftp@example.com"
 19:28:49.491559 > "230 Welcome you silly person[CR][LF]"
 19:28:49.491681 < "PWD"
 19:28:49.491757 > "257 "/" is current directory[CR][LF]"
 19:28:49.491863 < "EPSV"
 19:28:49.491887 ====> Passive DATA channel requested by client
 19:28:49.491901 DATA sockfilt for passive data channel starting...
 19:28:49.520219 DATA sockfilt for passive data channel started (pid 168672)
 19:28:49.520354 DATA sockfilt for passive data channel listens on port 40421
 19:28:49.520401 > "229 Entering Passive Mode (|||40421|)[CR][LF]"
 19:28:49.520417 Client has been notified that upcoming DATA connection is awaited on port 40421
 19:28:49.521694 Client connects to port 40421
 19:28:49.521728 ====> Client established passive DATA connection on port 40421
 19:28:49.521824 < "TYPE I"
 19:28:49.521856 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:49.522016 < "SIZE verifiedserver"
 19:28:49.522052 > "213 17[CR][LF]"
 19:28:49.522394 < "RETR verifiedserver"
 19:28:49.522433 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:49.522539 =====> Closing passive DATA connection...
 19:28:49.522559 Server disconnects passive DATA connection
 19:28:49.532029 Server disconnected passive DATA connection
 19:28:49.532118 DATA sockfilt for passive data channel quits (pid 168672)
 19:28:49.532467 DATA sockfilt for passive data channel quit (pid 168672)
 19:28:49.532492 =====> Closed passive DATA connection
 19:28:49.532534 > "226 File transfer complete[CR][LF]"
 19:28:49.567243 < "QUIT"
 19:28:49.567293 > "221 bye bye baby[CR][LF]"
 19:28:49.568524 MAIN sockfilt said DISC
 19:28:49.568567 ====> Client disconnected
 19:28:49.568724 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:49.092984 ====> Client connect
 19:28:49.093374 Received DATA (on stdin)
 19:28:49.093391 > 146 bytes data, server => client
 19:28:49.093403 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:49.093411 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:49.093419 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:49.093507 < 16 bytes data, client => server
 19:28:49.093519 'USER anonymous\r\n'
 19:28:49.093690 Received DATA (on stdin)
 19:28:49.093701 > 33 bytes data, server => client
 19:28:49.093710 '331 We are happy you popped in!\r\n'
 19:28:49.093755 < 22 bytes data, client => server
 19:28:49.093765 'PASS ftp@example.com\r\n'
 19:28:49.093840 Received DATA (on stdin)
 19:28:49.093850 > 30 bytes data, server => client
 19:28:49.093885 '230 Welcome you silly person\r\n'
 19:28:49.093933 < 5 bytes data, client => server
 19:28:49.093943 'PWD\r\n'
 19:28:49.094018 Received DATA (on stdin)
 19:28:49.094028 > 30 bytes data, server => client
 19:28:49.094043 '257 "/" is current directory\r\n'
 19:28:49.094117 < 6 bytes data, client => server
 19:28:49.094127 'EPSV\r\n'
 19:28:49.122755 Received DATA (on stdin)
 19:28:49.122772 > 39 bytes data, server => client
 19:28:49.122782 '229 Entering Passive Mode (|||40421|)\r\n'
 19:28:49.123937 < 8 bytes data, client => server
 19:28:49.123954 'TYPE I\r\n'
 19:28:49.124185 Received DATA (on stdin)
 19:28:49.124195 > 33 bytes data, server => client
 19:28:49.124205 '200 I modify TYPE as you wanted\r\n'
 19:28:49.124256 < 21 bytes data, client => server
 19:28:49.124266 'SIZE verifiedserver\r\n'
 19:28:49.124378 Received DATA (on stdin)
 19:28:49.124388 > 8 bytes data, server => client
 19:28:49.124397 '213 17\r\n'
 19:28:49.124622 < 21 bytes data, client => server
 19:28:49.124641 'RETR verifiedserver\r\n'
 19:28:49.124891 Received DATA (on stdin)
 19:28:49.124903 > 29 bytes data, server => client
 19:28:49.124912 '150 Binary junk (17 bytes).\r\n'
 19:28:49.134878 Received DATA (on stdin)
 19:28:49.134896 > 28 bytes data, server => client
 19:28:49.134907 '226 File transfer complete\r\n'
 19:28:49.169380 < 6 bytes data, client => server
 19:28:49.169415 'QUIT\r\n'
 19:28:49.169624 Received DATA (on stdin)
 19:28:49.169634 > 18 bytes data, server => client
 19:28:49.169644 '221 bye bye baby\r\n'
 19:28:49.170793 ====> Client disconnect
 19:28:49.170969 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:49.121774 Running IPv4 version
 19:28:49.121868 Listening on port 40421
 19:28:49.121910 Wrote pid 168672 to log/17/server/ftp_sockdata.pid
 19:28:49.122485 Received PING (on stdin)
 19:28:49.122587 Received PORT (on stdin)
 19:28:49.123974 ====> Client connect
 19:28:49.127990 Received DATA (on stdin)
 19:28:49.128009 > 17 bytes data, server => client
 19:28:49.128019 'WE ROOLZ: 84749\r\n'
 19:28:49.128050 Received DISC (on stdin)
 19:28:49.128062 ====> Client forcibly disconnected
 19:28:49.134476 Received QUIT (on stdin)
 19:28:49.134496 quits
 19:28:49.134590 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc1599
 default   passwor?dlogin anonymou\ ' password login anonymous       passwor?d.'macdef
=== End of file netrc1599
=== Start of file server.cmd
 Testnum 1599
=== End of file server.cmd
=== Start of file valgrind1599
 ==168726== 
 ==168726== Process terminating with default action of signal 4 (SIGILL)
 ==168726==  Illegal opcode at address 0x51CC63F
 ==168726==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168726==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168726==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168726==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1599
test 1601 [MD5 unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1601 ./unit/units unit1601 - > log/11/stdout1601 2> log/11/stderr1601

units returned 132, when expecting 0
 1601: exit FAILED
== Contents of files in the log/11/ directory after test 1601
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1601 ./unit/units unit1601 - > log/11/stdout1601 2> log/11/stderr1601
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1601
=== End of file server.cmd
=== Start of file valgrind1601
 ==168652== 
 ==168652== Process terminating with default action of signal 4 (SIGILL)
 ==168652==  Illegal opcode at address 0x4091F7F
 ==168652==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==168652==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==168652==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==168652==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1601
test 1598 [HTTP POST with trailers at the end]
../libtool --mode=execute /usr/bin/valgriCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1603 ./unit/units unit1603 - > log/8/stdout1603 2> log/8/stderr1603
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1604 ./tunit/tunits tool1604 - > log/14/stdout1604 2> log/14/stderr1604
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1612 ./unit/units unit1612 - > log/5/stdout1612 2> log/5/stderr1612
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1605 ./libtest/libtests lib1605 - > log/16/stdout1605 2> log/16/stderr1605
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1610 ./unit/units unit1610 - > log/4/stdout1610 2> log/4/stderr1610
nd --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1598 ./libtest/libtests lib1598 http://127.0.0.1:39881/bzz/1598 <log/21/stdin-for-1598 > log/21/stdout1598 2> log/21/stderr1598

 1598: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1598
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1598 ./libtest/libtests lib1598 http://127.0.0.1:39881/bzz/1598 <log/21/stdin-for-1598 > log/21/stdout1598 2> log/21/stderr1598
=== End of file commands.log
=== Start of file http_server.log
 19:28:49.047212 ====> Client connect
 19:28:49.047251 accept_connection 3 returned 4
 19:28:49.047274 Read 93 bytes
 19:28:49.047283 Process 93 bytes request
 19:28:49.047296 Got request: GET /verifiedserver HTTP/1.1
 19:28:49.047306 Are-we-friendly question received
 19:28:49.047340 Wrote request (93 bytes) input to log/21/server.input
 19:28:49.047358 Identifying ourselves as friends
 19:28:49.047431 Response sent (56 bytes) and written to log/21/server.response
 19:28:49.047442 special request received, no persistency
 19:28:49.047450 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 40366 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1598
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file stdin-for-1598
 more than one byte
=== End of file stdin-for-1598
=== Start of file valgrind1598
 ==168653== 
 ==168653== Process terminating with default action of signal 4 (SIGILL)
 ==168653==  Illegal opcode at address 0x51CC63F
 ==168653==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168653==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168653==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168653==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1598
test 1603 [Internal hash add, retrieval, deletion testing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1603 ./unit/units unit1603 - > log/8/stdout1603 2> log/8/stderr1603

units returned 132, when expecting 0
 1603: exit FAILED
== Contents of files in the log/8/ directory after test 1603
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1603 ./unit/units unit1603 - > log/8/stdout1603 2> log/8/stderr1603
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1603
=== End of file server.cmd
=== Start of file valgrind1603
 ==168768== 
 ==168768== Process terminating with default action of signal 4 (SIGILL)
 ==168768==  Illegal opcode at address 0x4091F7F
 ==168768==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==168768==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==168768==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==168768==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1603
test 1604 [Test Windows/MS-DOS filename sanitization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1604 ./tunit/tunits tool1604 - > log/14/stdout1604 2> log/14/stderr1604

tunits returned 132, when expecting 0
 1604: exit FAILED
== Contents of files in the log/14/ directory after test 1604
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1604 ./tunit/tunits tool1604 - > log/14/stdout1604 2> log/14/stderr1604
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1604
=== End of file server.cmd
=== Start of file valgrind1604
 ==168825== 
 ==168825== Process terminating with default action of signal 4 (SIGILL)
 ==168825==  Illegal opcode at address 0x48F863F
 ==168825==    at 0x48F863F: formatf.constprop.1 (mprintf.c:1115)
 ==168825==    by 0x48FC58B: curl_mvfprintf (mprintf.c:1482)
 ==168825==    by 0x48FC662: curl_mfprintf (mprintf.c:1493)
 ==168825==    by 0x40011A9: main (first.c:264)
=== End of file valgrind1604
test 1612 [HMAC unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1612 ./unit/units unit1612 - > log/5/stdout1612 2> log/5/stderr1612

units returned 132, when expecting 0
 1612: exit FAILED
== Contents of files in the log/5/ directory after test 1612
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1612 ./unit/units unit1612 - > log/5/stdout1612 2> log/5/stderr1612
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1612
=== End of file server.cmd
=== Start of file valgrind1612
 ==169087== 
 ==169087== Process terminating with default action of signal 4 (SIGILL)
 ==169087==  Illegal opcode at address 0x4091F7F
 ==169087==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169087==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169087==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169087==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1612
test 1605 [Test negative data lengths as input to libcurl functions]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1605 ./libtest/libtests lib1605 - > log/16/stdout1605 2> log/16/stderr1605

libtests returned 132, when expecting 0
 1605: exit FAILED
== Contents of files in the log/16/ directory after test 1605
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1605 ./libtest/libtests lib1605 - > log/16/stdout1605 2> log/16/stderr1605
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1605
=== End of file server.cmd
=== Start of file valgrind1605
 ==168853== 
 ==168853== Process terminating with default action of signal 4 (SIGILL)
 ==168853==  Illegal opcode at address 0x51CC63F
 ==168853==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==168853==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==168853==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==168853==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1605
test 1610 [SHA256 unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1610 ./unit/units unit1610 - > log/4/stdout1610 2> log/4/stderr1610

units returned 132, when expecting 0
 1610: exit FAILED
== Contents of files in the log/4/ directory after test 1610
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1606 ./unit/units unit1606 - > log/3/stdout1606 2> log/3/stderr1606
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1608 ./unit/units unit1608 - > log/10/stdout1608 2> log/10/stderr1608
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1615 ./unit/units unit1615 - > log/2/stdout1615 2> log/2/stderr1615
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1611 ./unit/units unit1611 - > log/7/stdout1611 2> log/7/stderr1611
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1607 ./unit/units unit1607 - > log/22/stdout1607 2> log/22/stderr1607
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1614 ./unit/units unit1614 - > log/20/stdout1614 2> log/20/stderr1614
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1621 ./tunit/tunits tool1621 - > log/9/stdout1621 2> log/9/stderr1621
ppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1610 ./unit/units unit1610 - > log/4/stdout1610 2> log/4/stderr1610
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1610
=== End of file server.cmd
=== Start of file valgrind1610
 ==169049== 
 ==169049== Process terminating with default action of signal 4 (SIGILL)
 ==169049==  Illegal opcode at address 0x4091F7F
 ==169049==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169049==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169049==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169049==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1610
test 1606 [verify speedcheck]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1606 ./unit/units unit1606 - > log/3/stdout1606 2> log/3/stderr1606

units returned 132, when expecting 0
 1606: exit FAILED
== Contents of files in the log/3/ directory after test 1606
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1606 ./unit/units unit1606 - > log/3/stdout1606 2> log/3/stderr1606
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1606
=== End of file server.cmd
=== Start of file valgrind1606
 ==168896== 
 ==168896== Process terminating with default action of signal 4 (SIGILL)
 ==168896==  Illegal opcode at address 0x4091F7F
 ==168896==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==168896==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==168896==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==168896==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1606
test 1608 [verify DNS shuffling]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1608 ./unit/units unit1608 - > log/10/stdout1608 2> log/10/stderr1608

units returned 132, when expecting 0
 1608: exit FAILED
== Contents of files in the log/10/ directory after test 1608
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1608 ./unit/units unit1608 - > log/10/stdout1608 2> log/10/stderr1608
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1608
=== End of file server.cmd
=== Start of file valgrind1608
 ==169029== 
 ==169029== Process terminating with default action of signal 4 (SIGILL)
 ==169029==  Illegal opcode at address 0x4091F7F
 ==169029==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169029==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169029==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169029==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1608
test 1615 [SHA-512/256 unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1615 ./unit/units unit1615 - > log/2/stdout1615 2> log/2/stderr1615

units returned 132, when expecting 0
 1615: exit FAILED
== Contents of files in the log/2/ directory after test 1615
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1615 ./unit/units unit1615 - > log/2/stdout1615 2> log/2/stderr1615
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1615
=== End of file server.cmd
=== Start of file valgrind1615
 ==169240== 
 ==169240== Process terminating with default action of signal 4 (SIGILL)
 ==169240==  Illegal opcode at address 0x4091F7F
 ==169240==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169240==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169240==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169240==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1615
test 1611 [MD4 unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1611 ./unit/units unit1611 - > log/7/stdout1611 2> log/7/stderr1611

units returned 132, when expecting 0
 1611: exit FAILED
== Contents of files in the log/7/ directory after test 1611
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1611 ./unit/units unit1611 - > log/7/stdout1611 2> log/7/stderr1611
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1611
=== End of file server.cmd
=== Start of file valgrind1611
 ==169082== 
 ==169082== Process terminating with default action of signal 4 (SIGILL)
 ==169082==  Illegal opcode at address 0x4091F7F
 ==169082==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169082==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169082==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169082==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1611
test 1607 [CURLOPT_RESOLVE parsing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1607 ./unit/units unit1607 - > log/22/stdout1607 2> log/22/stderr1607

units returned 132, when expecting 0
 1607: exit FAILED
== Contents of files in the log/22/ directory after test 1607
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1607 ./unit/units unit1607 - > log/22/stdout1607 2> log/22/stderr1607
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1607
=== End of file server.cmd
=== Start of file valgrind1607
 ==168929== 
 ==168929== Process terminating with default action of signal 4 (SIGILL)
 ==168929==  Illegal opcode at address 0x4091F7F
 ==168929==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==168929==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==168929==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==168929==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1607
test 1614 [noproxy and cidr comparisons]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1614 ./unit/units unit1614 - > log/20/stdout1614 2> log/20/stderr1614

units returned 132, when expecting 0
 1614: exit FAILED
== Contents of files in the log/20/ directory after test 1614
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1614 ./unit/units unit1614 - > log/20/stdout1614 2> log/20/stderr1614
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1614
=== End of file server.cmd
=== Start of file valgrind1614
 ==169205== 
 ==169205== Process terminating with default action of signal 4 (SIGILL)
 ==169205==  Illegal opcode at address 0x4091F7F
 ==169205==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169205==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169205==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169205==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1614
test 1621 [unit tests for stripcredentials from URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --numCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1620 ./unit/units unit1620 - > log/13/stdout1620 2> log/13/stderr1620
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1616 ./libtest/libtests lib1616 http://test.remote.example.com/16160001 127.0.0.1 44711 1616 > log/23/stdout1616 2> log/23/stderr1616
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1622 ./tunit/tunits tool1622 - > log/19/stdout1622 2> log/19/stderr1622
-callers=16 --log-file=log/9/valgrind1621 ./tunit/tunits tool1621 - > log/9/stdout1621 2> log/9/stderr1621

tunits returned 132, when expecting 0
 1621: exit FAILED
== Contents of files in the log/9/ directory after test 1621
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1621 ./tunit/tunits tool1621 - > log/9/stdout1621 2> log/9/stderr1621
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1621
=== End of file server.cmd
=== Start of file valgrind1621
 ==169496== 
 ==169496== Process terminating with default action of signal 4 (SIGILL)
 ==169496==  Illegal opcode at address 0x48F863F
 ==169496==    at 0x48F863F: formatf.constprop.1 (mprintf.c:1115)
 ==169496==    by 0x48FC58B: curl_mvfprintf (mprintf.c:1482)
 ==169496==    by 0x48FC662: curl_mfprintf (mprintf.c:1493)
 ==169496==    by 0x40011A9: main (first.c:264)
=== End of file valgrind1621
test 1620 [unit tests for url.c]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1620 ./unit/units unit1620 - > log/13/stdout1620 2> log/13/stderr1620

units returned 132, when expecting 0
 1620: exit FAILED
== Contents of files in the log/13/ directory after test 1620
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1620 ./unit/units unit1620 - > log/13/stdout1620 2> log/13/stderr1620
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1620
=== End of file server.cmd
=== Start of file valgrind1620
 ==169410== 
 ==169410== Process terminating with default action of signal 4 (SIGILL)
 ==169410==  Illegal opcode at address 0x4091F7F
 ==169410==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169410==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169410==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169410==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1620
test 1616 [HTTP 407 from a non-proxied host must not set proxy Digest state]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1616 ./libtest/libtests lib1616 http://test.remote.example.com/16160001 127.0.0.1 44711 1616 > log/23/stdout1616 2> log/23/stderr1616

 1616: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1616
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1616 ./libtest/libtests lib1616 http://test.remote.example.com/16160001 127.0.0.1 44711 1616 > log/23/stdout1616 2> log/23/stderr1616
=== End of file commands.log
=== Start of file http_server.log
 19:28:50.153264 ====> Client connect
 19:28:50.153298 accept_connection 3 returned 4
 19:28:50.153438 Read 93 bytes
 19:28:50.153450 Process 93 bytes request
 19:28:50.153463 Got request: GET /verifiedserver HTTP/1.1
 19:28:50.153472 Are-we-friendly question received
 19:28:50.153499 Wrote request (93 bytes) input to log/23/server.input
 19:28:50.153515 Identifying ourselves as friends
 19:28:50.153569 Response sent (56 bytes) and written to log/23/server.response
 19:28:50.153578 special request received, no persistency
 19:28:50.153586 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 48950 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1616
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1616
 ==169335== 
 ==169335== Process terminating with default action of signal 4 (SIGILL)
 ==169335==  Illegal opcode at address 0x51CC63F
 ==169335==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==169335==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==169335==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==169335==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1616
test 1622 [tool time and size progress output]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1622 ./tunit/tunits tool1622 - > log/19/stdout1622 2> log/19/stderr1622

 1622: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:28:52.327052442 +0000
+++ log/19/check-generated	2026-10-15 19:28:52.326412364 +0000
@@ -1,133 +0,0 @@
-timebuf[LF]
-                   0 -         [LF]
-                   1 - 00:00:01[LF]
-                   3 - 00:00:03[LF]
-                   7 - 00:00:07[LF]
-                  15 - 00:00:15[LF]
-                  31 - 00:00:31[LF]
-                  63 - 00:01:03[LF]
-                 127 - 00:02:07[LF]
-                 255 - 00:04:15[LF]
-                 511 - 00:08:31[LF]
-                1023 - 00:17:03[LF]
-                2047 - 00:34:07[LF]
-                4095 - 01:08:15[LF]
-                8191 - 02:16:31[LF]
-               16383 - 04:33:03[LF]
-               32767 - 09:06:07[LF]
-               65535 - 18:12:15[LF]
-              131071 - 36:24:31[LF]
-              262143 - 72:49:03[LF]
-              524287 -   6d 01h[LF]
-             1048575 -  12d 03h[LF]
-             2097151 -  24d 06h[LF]
-             4194303 -  48d 13h[LF]
-             8388607 -  97d 02h[LF]
-            16777215 - 194d 04h[LF]
-            33554431 - 388d 08h[LF]
-            67108863 - 776d 17h[LF]
-           134217727 -  51m 23d[LF]
-           268435455 - 103m 16d[LF]
-           536870911 - 207m 03d[LF]
-          1073741823 - 414m 07d[LF]
-          2147483647 - 828m 15d[LF]
-          4294967295 -     136y[LF]
-          8589934591 -     272y[LF]
-         17179869183 -     544y[LF]
-         34359738367 -    1089y[LF]
-         68719476735 -    2179y[LF]
-        137438953471 -    4358y[LF]
-        274877906943 -    8716y[LF]
-        549755813887 -   17432y[LF]
-       1099511627775 -   34865y[LF]
-       2199023255551 -   69730y[LF]
-       4398046511103 -  >99999y[LF]
-       8796093022207 -  >99999y[LF]
-      17592186044415 -  >99999y[LF]
-      35184372088831 -  >99999y[LF]
-      70368744177663 -  >99999y[LF]
-     140737488355327 -  >99999y[LF]
-     281474976710655 -  >99999y[LF]
-     562949953421311 -  >99999y[LF]
-    1125899906842623 -  >99999y[LF]
-    2251799813685247 -  >99999y[LF]
-    4503599627370495 -  >99999y[LF]
-    9007199254740991 -  >99999y[LF]
-   18014398509481983 -  >99999y[LF]
-   36028797018963967 -  >99999y[LF]
-   72057594037927935 -  >99999y[LF]
-  144115188075855871 -  >99999y[LF]
-  288230376151711743 -  >99999y[LF]
-  576460752303423487 -  >99999y[LF]
- 1152921504606846975 -  >99999y[LF]
- 2305843009213693951 -  >99999y[LF]
- 4611686018427387903 -  >99999y[LF]
-max5data[LF]
-                   0 -     0[LF]
-                   1 -     1[LF]
-                   3 -     3[LF]
-                   7 -     7[LF]
-                  15 -    15[LF]
-                  31 -    31[LF]
-                  63 -    63[LF]
-                 127 -   127[LF]
-                 255 -   255[LF]
-                 511 -   511[LF]
-                1023 -  1023[LF]
-                2047 -  2047[LF]
-                4095 -  4095[LF]
-                8191 -  8191[LF]
-               16383 - 16383[LF]
-               32767 - 32767[LF]
-               65535 - 65535[LF]
-              131071 -  127k[LF]
-              262143 -  255k[LF]
-              524287 -  511k[LF]
-             1048575 - 1023k[LF]
-             2097151 - 2047k[LF]
-             4194303 - 4095k[LF]
-             8388607 - 8191k[LF]
-            16777215 - 15.9M[LF]
-            33554431 - 31.9M[LF]
-            67108863 - 63.9M[LF]
-           134217727 -  127M[LF]
-           268435455 -  255M[LF]
-           536870911 -  511M[LF]
-          1073741823 - 1023M[LF]
-          2147483647 - 2047M[LF]
-          4294967295 - 4095M[LF]
-          8589934591 - 8191M[LF]
-         17179869183 - 15.9G[LF]
-         34359738367 - 31.9G[LF]
-         68719476735 - 63.9G[LF]
-        137438953471 -  127G[LF]
-        274877906943 -  255G[LF]
-        549755813887 -  511G[LF]
-       1099511627775 - 1023G[LF]
-       2199023255551 - 2047G[LF]
-       4398046511103 - 4095G[LF]
-       8796093022207 - 8191G[LF]
-      17592186044415 - 15.9T[LF]
-      35184372088831 - 31.9T[LF]
-      70368744177663 - 63.9T[LF]
-     140737488355327 -  127T[LF]
-     281474976710655 -  255T[LF]
-     562949953421311 -  511T[LF]
-    1125899906842623 - 1023T[LF]
-    2251799813685247 - 2047T[LF]
-    4503599627370495 - 4095T[LF]
-    9007199254740991 - 8191T[LF]
-   18014398509481983 - 15.9P[LF]
-   36028797018963967 - 31.9P[LF]
-   72057594037927935 - 63.9P[LF]
-  144115188075855871 -  127P[LF]
-  288230376151711743 -  255P[LF]
-  576460752303423487 -  511P[LF]
- 1152921504606846975 - 1023P[LF]
- 2305843009213693951 - 2047P[LF]
- 4611686018427387903 - 4095P[LF]
-              131072 -  128k[LF]
-            12645826 - 12.0M[LF]
-          1073741824 - 1024M[LF]
-         12938588979 - 12.0G[LF]
-    1099445657078333 -  999T[LF]
== Contents of files in the log/19/ directory after test 1622
=== Start of file check-expected
 timebuf[LF]
                    0 -         [LF]
                    1 - 00:00:01[LF]
                    3 - 00:00:03[LF]
                    7 - 00:00:07[LF]
                   15 - 00:00:15[LF]
                   31 - 00:00:31[LF]
                   63 - 00:01:03[LF]
                  127 - 00:02:07[LF]
                  255 - 00:04:15[LF]
                  511 - 00:08:31[LF]
                 1023 - 00:17:03[LF]
                 2047 - 00:34:07[LF]
                 4095 - 01:08:15[LF]
                 8191 - 02:16:31[LF]
                16383 - 04:33:03[LF]
                32767 - 09:06:07[LF]
                65535 - 18:12:15[LF]
               131071 - 36:24:31[LF]
               262143 - 72:49:03[LF]
               524287 -   6d 01h[LF]
              1048575 -  12d 03h[LF]
              2097151 -  24d 06h[LF]
              4194303 -  48d 13h[LF]
              8388607 -  97d 02h[LF]
             16777215 - 194d 04h[LF]
             33554431 - 388d 08h[LF]
             67108863 - 776d 17h[LF]
            134217727 -  51m 23d[LF]
            268435455 - 103m 16d[LF]
            536870911 - 207m 03d[LF]
           1073741823 - 414m 07d[LF]
           2147483647 - 828m 15d[LF]
           4294967295 -     136y[LF]
           8589934591 -     272y[LF]
          17179869183 -     544y[LF]
          34359738367 -    1089y[LF]
          68719476735 -    2179y[LF]
         137438953471 -    4358y[LF]
         274877906943 -    8716y[LF]
         549755813887 -   17432y[LF]
        1099511627775 -   34865y[LF]
        2199023255551 -   69730y[LF]
        4398046511103 -  >99999y[LF]
        8796093022207 -  >99999y[LF]
       17592186044415 -  >99999y[LF]
       35184372088831 -  >99999y[LF]
       70368744177663 -  >99999y[LF]
      140737488355327 -  >99999y[LF]
      281474976710655 -  >99999y[LF]
      562949953421311 -  >99999y[LF]
     1125899906842623 -  >99999y[LF]
     2251799813685247 -  >99999y[LF]
     4503599627370495 -  >99999y[LF]
     9007199254740991 -  >99999y[LF]
    18014398509481983 -  >99999y[LF]
    36028797018963967 -  >99999y[LF]
    72057594037927935 -  >99999y[LF]
   144115188075855871 -  >99999y[LF]
   288230376151711743 -  >99999y[LF]
   576460752303423487 -  >99999y[LF]
  1152921504606846975 -  >99999y[LF]
  2305843009213693951 -  >99999y[LF]
  4611686018427387903 -  >99999y[LF]
 max5data[LF]
                    0 -     0[LF]
                    1 -     1[LF]
                    3 -     3[LF]
                    7 -     7[LF]
                   15 -    15[LF]
                   31 -    31[LF]
                   63 -    63[LF]
                  127 -   127[LF]
                  255 -   255[LF]
                  511 -   511[LF]
                 1023 -  1023[LF]
                 2047 -  2047[LF]
                 4095 -  4095[LF]
                 8191 -  8191[LF]
                16383 - 16383[LF]
                32767 - 32767[LF]
                65535 - 65535[LF]
               131071 - CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1625 ./unit/units unit1625 - > log/11/stdout1625 2> log/11/stderr1625
 127k[LF]
               262143 -  255k[LF]
               524287 -  511k[LF]
              1048575 - 1023k[LF]
              2097151 - 2047k[LF]
              4194303 - 4095k[LF]
              8388607 - 8191k[LF]
             16777215 - 15.9M[LF]
             33554431 - 31.9M[LF]
             67108863 - 63.9M[LF]
            134217727 -  127M[LF]
            268435455 -  255M[LF]
            536870911 -  511M[LF]
           1073741823 - 1023M[LF]
           2147483647 - 2047M[LF]
           4294967295 - 4095M[LF]
           8589934591 - 8191M[LF]
          17179869183 - 15.9G[LF]
          34359738367 - 31.9G[LF]
          68719476735 - 63.9G[LF]
         137438953471 -  127G[LF]
         274877906943 -  255G[LF]
         549755813887 -  511G[LF]
        1099511627775 - 1023G[LF]
        2199023255551 - 2047G[LF]
        4398046511103 - 4095G[LF]
        8796093022207 - 8191G[LF]
       17592186044415 - 15.9T[LF]
       35184372088831 - 31.9T[LF]
       70368744177663 - 63.9T[LF]
      140737488355327 -  127T[LF]
      281474976710655 -  255T[LF]
      562949953421311 -  511T[LF]
     1125899906842623 - 1023T[LF]
     2251799813685247 - 2047T[LF]
     4503599627370495 - 4095T[LF]
     9007199254740991 - 8191T[LF]
    18014398509481983 - 15.9P[LF]
    36028797018963967 - 31.9P[LF]
    72057594037927935 - 63.9P[LF]
   144115188075855871 -  127P[LF]
   288230376151711743 -  255P[LF]
   576460752303423487 -  511P[LF]
  1152921504606846975 - 1023P[LF]
  2305843009213693951 - 2047P[LF]
  4611686018427387903 - 4095P[LF]
               131072 -  128k[LF]
             12645826 - 12.0M[LF]
           1073741824 - 1024M[LF]
          12938588979 - 12.0G[LF]
     1099445657078333 -  999T[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1622 ./tunit/tunits tool1622 - > log/19/stdout1622 2> log/19/stderr1622
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1622
=== End of file server.cmd
=== Start of file valgrind1622
 ==169548== 
 ==169548== Process terminating with default action of signal 4 (SIGILL)
 ==169548==  Illegal opcode at address 0x48F863F
 ==169548==    at 0x48F863F: formatf.constprop.1 (mprintf.c:1115)
 ==169548==    by 0x48FC58B: curl_mvfprintf (mprintf.c:1482)
 ==169548==    by 0x48FC662: curl_mfprintf (mprintf.c:1493)
 ==169548==    by 0x40011A9: main (first.c:264)
=== End of file valgrind1622
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1627 ./unit/units unit1627 - > log/8/stdout1627 2> log/8/stderr1627
test 1625 [Curl_compareheader unit test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1625 ./unit/units unit1625 - > log/11/stdout1625 2> log/11/stderr1625

 1625: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:28:52.383628937 +0000
+++ log/11/check-generated	2026-10-15 19:28:52.379222410 +0000
@@ -1 +0,0 @@
-33 invokes[CR][LF]
== Contents of files in the log/11/ directory after test 1625
=== Start of file check-expected
 33 invokes[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1625 ./unit/units unit1625 - > log/11/stdout1625 2> log/11/stderr1625
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1625
=== End of file server.cmd
=== Start of file valgrind1625
 ==169691== 
 ==169691== Process terminating with default action of signal 4 (SIGILL)
 ==169691==  Illegal opcode at address 0x4091F7F
 ==169691==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169691==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169691==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169691==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1625
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1623 ./tunit/tunits tool1623 - > log/1/stdout1623 2> log/1/stderr1623
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1626 ./unit/units unit1626 - > log/21/stdout1626 2> log/21/stderr1626
test 1627 [Curl_get_scheme unit test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1627 ./unit/units unit1627 - > log/8/stdout1627 2> log/8/stderr1627

 1627: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:28:52.402748831 +0000
+++ log/8/check-generated	2026-10-15 19:28:52.401549509 +0000
@@ -1 +0,0 @@
-541 invokes[CR][LF]
== Contents of files in the log/8/ directory after test 1627
=== Start of file check-expected
 541 invokes[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1627 ./unit/units unit1627 - > log/8/stdout1627 2> log/8/stderr1627
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1627
=== End of file server.cmd
=== Start of file valgrind1627
 ==169879== 
 ==169879== Process terminating with default action of signal 4 (SIGILL)
 ==169879==  Illegal opcode at address 0x4091F7F
 ==169879==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169879==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169879==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169879==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1627
test 1623 [the size parser for --limit-rate]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1623 ./tunit/tunits tool1623 - > log/1/stdout1623 2> log/1/stderr1623

tunits returned 132, when expecting 0
 1623: exit FAILED
== Contents of files in the log/1/ directory after test 1623
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1623 ./tunit/tunits tool1623 - > log/1/stdout1623 2> log/1/stderr1623
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1623
=== End of file server.cmd
=== Start of file valgrind1623
 ==169513== 
 ==169513== Process terminating with default action of signal 4 (SIGILL)
 ==169513==  Illegal opcode at address 0x48F863F
 ==169513==    at 0x48F863F: formatf.constprop.1 (mprintf.c:1115)
 ==169513==    by 0x48FC58B: curl_mvfprintf (mprintf.c:1482)
 ==169513==    by 0x48FC662: curl_mfprintf (mprintf.c:1493)
 ==169513==    by 0x40011A9: main (first.c:264)
=== End of file valgrind1623
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1613 ../src/curl -q --output log/15/curl1613.out  --include --trace-ascii log/15/trace1613 --trace-time --request-target '*' -X OPTIONS --proxy http://127.0.0.1:40321/ -H "Testno: 1613" http://www.example.org/ > log/15/stdout1613 2> log/15/stderr1613
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1636 ./unit/units unit1636 log/10/1636 > log/10/stdout1636 2> log/10/stderr1636
test 1626 [Curl_copy_header_value unit test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1626 ./unit/units unit1626 - > log/21/stdout1626 2> log/21/stderr1626

 1626: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:28:52.501044739 +0000
+++ log/21/check-generated	2026-10-15 19:28:52.499840197 +0000
@@ -1 +0,0 @@
-28 invokes[CR][LF]
== Contents of files in the log/21/ directory after test 1626
=== Start of file check-expected
 28 invokes[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1626 ./unit/units unit1626 - > log/21/stdout1626 2> log/21/stderr1626
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1626
=== End of file server.cmd
=== Start of file valgrind1626
 ==169827== 
 ==169827== Process terminating with default action of signal 4 (SIGILL)
 ==169827==  Illegal opcode at address 0x4091F7F
 ==169827==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==169827==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==169827==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==169827==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1626
test 1613 [Send "OPTIONS *" with --request-target to a proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1613 ../src/curl -q --output log/15/curl1613.out  --include --trace-ascii log/15/trace1613 --trace-time --request-target '*' -X OPTIONS --proxy http://127.0.0.1:40321/ -H "Testno: 1613" http://www.example.org/ > log/15/stdout1613 2> log/15/stderr1613

 1613: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1613
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1613 ../src/curl -q --output log/15/curl1613.out  --include --trace-ascii log/15/trace1613 --trace-time --request-target '*' -X OPTIONS --proxy http://127.0.0.1:40321/ -H "Testno: 1613" http://www.example.org/ > log/15/stdout1613 2> log/15/stderr1613
=== End of file commands.log
=== Start of file http_server.log
 19:28:50.923254 ====> Client connect
 19:28:50.923298 accept_connection 3 returned 4
 19:28:50.923323 Read 93 bytes
 19:28:50.923333 Process 93 bytes request
 19:28:50.923346 Got request: GET /verifiedserver HTTP/1.1
 19:28:50.923355 Are-we-friendly question received
 19:28:50.923381 Wrote request (93 bytes) input to log/15/server.input
 19:28:50.923397 Identifying ourselves as friends
 19:28:50.923477 Response sent (56 bytes) and written to log/15/server.response
 19:28:50.923486 special request received, no persistency
 19:28:50.923495 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 59586 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1613
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1613
 ==169185== 
 ==169185== Process terminating with default action of signal 4 (SIGILL)
 ==169185==  Illegal opcode at address 0x492B75F
 ==169185==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169185==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169185==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169185==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169185==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169185==    by 0x49908EB: curl_version_info (version.c:600)
 ==169185==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169185==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169185==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169185==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1613
test 1636 [time2str and max6out]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1636 ./unit/units unit1636 log/10/1636 > log/10/stdout1636 2> log/10/stderr1636

 1636: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:28:53.116661758 +0000
+++ log/10/check-generated	2026-10-15 19:28:53.114214855 +0000
@@ -1,133 +0,0 @@
-time2str[CR][LF]
-                   0 -        [CR][LF]
-                   1 -   00:01[CR][LF]
-                   3 -   00:03[CR][LF]
-                   7 -   00:07[CR][LF]
-                  15 -   00:15[CR][LF]
-                  31 -   00:31[CR][LF]
-                  63 -   01:03[CR][LF]
-                 127 -   02:07[CR][LF]
-                 255 -   04:15[CR][LF]
-                 511 -   08:31[CR][LF]
-                1023 -   17:03[CR][LF]
-                2047 -   34:07[CR][LF]
-                4095 - 1:08:15[CR][LF]
-                8191 - 2:16:31[CR][LF]
-               16383 - 4:33:03[CR][LF]
-               32767 - 9:06:07[CR][LF]
-               65535 - 18h 12m[CR][LF]
-              131071 - 36h 24m[CR][LF]
-              262143 - 72h 49m[CR][LF]
-              524287 -  6d 01h[CR][LF]
-             1048575 - 12d 03h[CR][LF]
-             2097151 - 24d 06h[CR][LF]
-             4194303 - 48d 13h[CR][LF]
-             8388607 - 97d 02h[CR][LF]
-            16777215 -    194d[CR][LF]
-            33554431 -    388d[CR][LF]
-            67108863 -    776d[CR][LF]
-           134217727 -     51m[CR][LF]
-           268435455 -    103m[CR][LF]
-           536870911 -    207m[CR][LF]
-          1073741823 -    414m[CR][LF]
-          2147483647 -    828m[CR][LF]
-          4294967295 -    136y[CR][LF]
-          8589934591 -    272y[CR][LF]
-         17179869183 -    544y[CR][LF]
-         34359738367 -   1089y[CR][LF]
-         68719476735 -   2179y[CR][LF]
-        137438953471 -   4358y[CR][LF]
-        274877906943 -   8716y[CR][LF]
-        549755813887 -  17432y[CR][LF]
-       1099511627775 -  34865y[CR][LF]
-       2199023255551 -  69730y[CR][LF]
-       4398046511103 - >99999y[CR][LF]
-       8796093022207 - >99999y[CR][LF]
-      17592186044415 - >99999y[CR][LF]
-      35184372088831 - >99999y[CR][LF]
-      70368744177663 - >99999y[CR][LF]
-     140737488355327 - >99999y[CR][LF]
-     281474976710655 - >99999y[CR][LF]
-     562949953421311 - >99999y[CR][LF]
-    1125899906842623 - >99999y[CR][LF]
-    2251799813685247 - >99999y[CR][LF]
-    4503599627370495 - >99999y[CR][LF]
-    9007199254740991 - >99999y[CR][LF]
-   18014398509481983 - >99999y[CR][LF]
-   36028797018963967 - >99999y[CR][LF]
-   72057594037927935 - >99999y[CR][LF]
-  144115188075855871 - >99999y[CR][LF]
-  288230376151711743 - >99999y[CR][LF]
-  576460752303423487 - >99999y[CR][LF]
- 1152921504606846975 - >99999y[CR][LF]
- 2305843009213693951 - >99999y[CR][LF]
- 4611686018427387903 - >99999y[CR][LF]
-max6out[CR][LF]
-                   0 -      0[CR][LF]
-                   1 -      1[CR][LF]
-                   3 -      3[CR][LF]
-                   7 -      7[CR][LF]
-                  15 -     15[CR][LF]
-                  31 -     31[CR][LF]
-                  63 -     63[CR][LF]
-                 127 -    127[CR][LF]
-                 255 -    255[CR][LF]
-                 511 -    511[CR][LF]
-                1023 -   1023[CR][LF]
-                2047 -   2047[CR][LF]
-                4095 -   4095[CR][LF]
-                8191 -   8191[CR][LF]
-               16383 -  16383[CR][LF]
-               32767 -  32767[CR][LF]
-               65535 -  65535[CR][LF]
-              131071 - 127.9k[CR][LF]
-              262143 - 255.9k[CR][LF]
-              524287 - 511.9k[CR][LF]
-             1048575 -  0.99M[CR][LF]
-             2097151 -  1.99M[CR][LF]
-             4194303 -  3.99M[CR][LF]
-             8388607 -  7.99M[CR][LF]
-            16777215 - 15.99M[CR][LF]
-            33554431 - 31.99M[CR][LF]
-            67108863 - 63.99M[CR][LF]
-           134217727 - 127.9M[CR][LF]
-           268435455 - 255.9M[CR][LF]
-           536870911 - 511.9M[CR][LF]
-          1073741823 -  0.99G[CR][LF]
-          2147483647 -  1.99G[CR][LF]
-          4294967295 -  3.99G[CR][LF]
-          8589934591 -  7.99G[CR][LF]
-         17179869183 - 15.99G[CR][LF]
-         34359738367 - 31.99G[CR][LF]
-         68719476735 - 63.99G[CR][LF]
-        137438953471 - 127.9G[CR][LF]
-        274877906943 - 255.9G[CR][LF]
-        549755813887 - 511.9G[CR][LF]
-       1099511627775 -  0.99T[CR][LF]
-       2199023255551 -  1.99T[CR][LF]
-       4398046511103 -  3.99T[CR][LF]
-       8796093022207 -  7.99T[CR][LF]
-      17592186044415 - 15.99T[CR][LF]
-      35184372088831 - 31.99T[CR][LF]
-      70368744177663 - 63.99T[CR][LF]
-     140737488355327 - 127.9T[CR][LF]
-     281474976710655 - 255.9T[CR][LF]
-     562949953421311 - 511.9T[CR][LF]
-    1125899906842623 -  0.99P[CR][LF]
-    2251799813685247 -  1.99P[CR][LF]
-    4503599627370495 -  3.99P[CR][LF]
-    9007199254740991 -  7.99P[CR][LF]
-   18014398509481983 - 15.99P[CR][LF]
-   36028797018963967 - 31.99P[CR][LF]
-   72057594037927935 - 63.99P[CR][LF]
-  144115188075855871 - 127.9P[CR][LF]
-  288230376151711743 - 255.9P[CR][LF]
-  576460752303423487 - 511.9P[CR][LF]
- 1152921504606846975 -  0.99E[CR][LF]
- 2305843009213693951 -  1.99E[CR][LF]
- 4611686018427387903 -  3.99E[CR][LF]
-              131072 - 128.0k[CR][LF]
-            12645826 - 12.05M[CR][LF]
-          1073741824 -  1.00G[CR][LF]
-         12938588979 - 12.04G[CR][LF]
-    1099445657078333 - 999.9T[CR][LF]
== Contents of files in the log/10/ directory after test 1636
=== Start of file check-expected
 time2str[CR][LF]
                    0 -        [CR][LF]
                    1 -   00:01[CR][LF]
                    3 -   00:03[CR][LF]
                    7 -   00:07[CR][LF]
                   15 -   00:15[CR][LF]
                   31 -   00:31[CR][LF]
                   63 -   01:03[CR][LF]
                  127 -   02:07[CR][LF]
                  255 -   04:15[CR][LF]
                  511 -   08:31[CR][LF]
                 1023 -   17:03[CR][LF]
                 2047 -   34:07[CR][LF]
                 4095 - 1:08:15[CR][LF]
                 8191 - 2:16:31[CR][LF]
                16383 - 4:33:03[CR][LF]
                32767 - 9:06:07[CR][LF]
                65535 - 18h 12m[CR][LF]
               131071 - 36h 24m[CR][LF]
               262143 - 72h 49m[CR][LF]
               524287 -  6d 01h[CR][LF]
              1048575 - 12d 03h[CR][LF]
              2097151 - 24d 06h[CR][LF]
              4194303 - 48d 13h[CR][LF]
              8388607 - 97d 02h[CR][LF]
             16777215 -    194d[CR][LF]
             33554431 -    388d[CR][LF]
             67108863 -    776d[CR][LF]
            134217727 -     51m[CR][LF]
            268435455 -    103m[CR][LF]
            536870911 -    207m[CR][LF]
           1073741823 -    414m[CR][LF]
           2147483647 -    828m[CR][LF]
           4294967295 -    136y[CR][LF]
           8589934591 -    272y[CR][LF]
          17179869183 -    544y[CR][LF]
          34359738367 -   1089y[CR][LF]
          68719476735 -   2179y[CR][LF]
         137438953471 -   4358y[CR][LF]
         274877906943 -   8716y[CR][LF]
         549755813887 -  17432y[CR][LF]
        1099511627775 -  34865y[CR][LF]
        2199023255551 -  69730y[CR][LF]
        4398046511103 - >99999y[CR][LF]
        8796093022207 - >99999y[CR][LF]
       17592186044415 - >99999y[CR][LF]
       35184372088831 - >99999y[CR][LF]
       70368744177663 - >99999y[CR][LF]
      140737488355327 - >99999y[CR][LF]
      281474976710655 - >99999y[CR][LF]
      562949953421311 - >99999y[CR][LF]
     1125899906842623 - >99999y[CR][LF]
     2251799813685247 - >99999y[CR][LF]
     4503599627370495 - >99999y[CR][LF]
     9007199254740991 - >99999y[CR][LF]
    18014398509481983 - >99999y[CR][LF]
    36028797018963967 - >99999y[CR][LF]
    72057594037927935 - >99999y[CR][LF]
   144115188075855871 - >99999y[CR][LF]
   288230376151711743 - >99999y[CR][LF]
   576460752303423487 - >99999y[CR][LF]
  115292150CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1617 ../src/curl -q --output log/24/curl1617.out  --include --trace-ascii log/24/trace1617 --trace-time http://127.0.0.1:38895/1617 --tr-encoding -H "Connection: this" -H "Connection: that" > log/24/stdout1617 2> log/24/stderr1617
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1624 ../src/curl -q --output log/17/curl1624.out  --include --trace-ascii log/17/trace1624 --trace-time http://127.0.0.1:35993/1624 --url-query token=secret --next http://127.0.0.1:35993/1624 > log/17/stdout1624 2> log/17/stderr1624
4606846975 - >99999y[CR][LF]
  2305843009213693951 - >99999y[CR][LF]
  4611686018427387903 - >99999y[CR][LF]
 max6out[CR][LF]
                    0 -      0[CR][LF]
                    1 -      1[CR][LF]
                    3 -      3[CR][LF]
                    7 -      7[CR][LF]
                   15 -     15[CR][LF]
                   31 -     31[CR][LF]
                   63 -     63[CR][LF]
                  127 -    127[CR][LF]
                  255 -    255[CR][LF]
                  511 -    511[CR][LF]
                 1023 -   1023[CR][LF]
                 2047 -   2047[CR][LF]
                 4095 -   4095[CR][LF]
                 8191 -   8191[CR][LF]
                16383 -  16383[CR][LF]
                32767 -  32767[CR][LF]
                65535 -  65535[CR][LF]
               131071 - 127.9k[CR][LF]
               262143 - 255.9k[CR][LF]
               524287 - 511.9k[CR][LF]
              1048575 -  0.99M[CR][LF]
              2097151 -  1.99M[CR][LF]
              4194303 -  3.99M[CR][LF]
              8388607 -  7.99M[CR][LF]
             16777215 - 15.99M[CR][LF]
             33554431 - 31.99M[CR][LF]
             67108863 - 63.99M[CR][LF]
            134217727 - 127.9M[CR][LF]
            268435455 - 255.9M[CR][LF]
            536870911 - 511.9M[CR][LF]
           1073741823 -  0.99G[CR][LF]
           2147483647 -  1.99G[CR][LF]
           4294967295 -  3.99G[CR][LF]
           8589934591 -  7.99G[CR][LF]
          17179869183 - 15.99G[CR][LF]
          34359738367 - 31.99G[CR][LF]
          68719476735 - 63.99G[CR][LF]
         137438953471 - 127.9G[CR][LF]
         274877906943 - 255.9G[CR][LF]
         549755813887 - 511.9G[CR][LF]
        1099511627775 -  0.99T[CR][LF]
        2199023255551 -  1.99T[CR][LF]
        4398046511103 -  3.99T[CR][LF]
        8796093022207 -  7.99T[CR][LF]
       17592186044415 - 15.99T[CR][LF]
       35184372088831 - 31.99T[CR][LF]
       70368744177663 - 63.99T[CR][LF]
      140737488355327 - 127.9T[CR][LF]
      281474976710655 - 255.9T[CR][LF]
      562949953421311 - 511.9T[CR][LF]
     1125899906842623 -  0.99P[CR][LF]
     2251799813685247 -  1.99P[CR][LF]
     4503599627370495 -  3.99P[CR][LF]
     9007199254740991 -  7.99P[CR][LF]
    18014398509481983 - 15.99P[CR][LF]
    36028797018963967 - 31.99P[CR][LF]
    72057594037927935 - 63.99P[CR][LF]
   144115188075855871 - 127.9P[CR][LF]
   288230376151711743 - 255.9P[CR][LF]
   576460752303423487 - 511.9P[CR][LF]
  1152921504606846975 -  0.99E[CR][LF]
  2305843009213693951 -  1.99E[CR][LF]
  4611686018427387903 -  3.99E[CR][LF]
               131072 - 128.0k[CR][LF]
             12645826 - 12.05M[CR][LF]
           1073741824 -  1.00G[CR][LF]
          12938588979 - 12.04G[CR][LF]
     1099445657078333 - 999.9T[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1636 ./unit/units unit1636 log/10/1636 > log/10/stdout1636 2> log/10/stderr1636
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1636
=== End of file server.cmd
=== Start of file valgrind1636
 ==170352== 
 ==170352== Process terminating with default action of signal 4 (SIGILL)
 ==170352==  Illegal opcode at address 0x4091F7F
 ==170352==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==170352==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==170352==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==170352==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1636
test 1617 [HTTP GET transfer-encoding with two user Connection: headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1617 ../src/curl -q --output log/24/curl1617.out  --include --trace-ascii log/24/trace1617 --trace-time http://127.0.0.1:38895/1617 --tr-encoding -H "Connection: this" -H "Connection: that" > log/24/stdout1617 2> log/24/stderr1617

 1617: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1617
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1617 ../src/curl -q --output log/24/curl1617.out  --include --trace-ascii log/24/trace1617 --trace-time http://127.0.0.1:38895/1617 --tr-encoding -H "Connection: this" -H "Connection: that" > log/24/stdout1617 2> log/24/stderr1617
=== End of file commands.log
=== Start of file http_server.log
 19:28:50.260128 ====> Client connect
 19:28:50.260165 accept_connection 3 returned 4
 19:28:50.260185 Read 93 bytes
 19:28:50.260194 Process 93 bytes request
 19:28:50.260207 Got request: GET /verifiedserver HTTP/1.1
 19:28:50.260216 Are-we-friendly question received
 19:28:50.260240 Wrote request (93 bytes) input to log/24/server.input
 19:28:50.260256 Identifying ourselves as friends
 19:28:50.260312 Response sent (56 bytes) and written to log/24/server.response
 19:28:50.260322 special request received, no persistency
 19:28:50.260330 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 43998 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1617
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1617
 ==169391== 
 ==169391== Process terminating with default action of signal 4 (SIGILL)
 ==169391==  Illegal opcode at address 0x492B75F
 ==169391==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169391==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169391==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169391==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169391==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169391==    by 0x49908EB: curl_version_info (version.c:600)
 ==169391==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169391==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169391==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1617
test 1624 [URL + --url-query with --next and another URL without --url-query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1624 ../src/curl -q --output log/17/curl1624.out  --include --trace-ascii log/17/trace1624 --trace-time http://127.0.0.1:35993/1624 --url-query token=secret --next http://127.0.0.1:35993/1624 > log/17/stdout1624 2> log/17/stderr1624

 1624: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1624
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1624 ../src/curl -q --output log/17/curl1624.out  --include --trace-ascii log/17/trace1624 --trace-time http://127.0.0.1:35993/1624 --url-query token=secret --next http://127.0.0.1:35993/1624 > log/17/stdout1624 2> log/17/stderr1624
=== End of file commands.log
=== Start of file http_server.log
 19:CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1629 ../src/curl -q --output log/16/curl1629.out  --include --trace-ascii log/16/trace1629 --trace-time http://foo.co.uk.:35903/ http://bar.co.uk.:35903/ -b "" --resolve foo.co.uk.:35903:127.0.0.1 --resolve bar.co.uk.:35903:127.0.0.1 > log/16/stdout1629 2> log/16/stderr1629
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1618 ../src/curl -q --output log/18/curl1618.out  --include --trace-ascii log/18/trace1618 --trace-time http://127.0.0.1:43739/1618 --compressed --max-filesize=1000 > log/18/stdout1618 2> log/18/stderr1618
28:51.554359 ====> Client connect
 19:28:51.554403 accept_connection 3 returned 4
 19:28:51.554427 Read 93 bytes
 19:28:51.554437 Process 93 bytes request
 19:28:51.554449 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.554458 Are-we-friendly question received
 19:28:51.554485 Wrote request (93 bytes) input to log/17/server.input
 19:28:51.554500 Identifying ourselves as friends
 19:28:51.554580 Response sent (56 bytes) and written to log/17/server.response
 19:28:51.554590 special request received, no persistency
 19:28:51.554598 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 42288 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1624
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1624
 ==169773== 
 ==169773== Process terminating with default action of signal 4 (SIGILL)
 ==169773==  Illegal opcode at address 0x492B75F
 ==169773==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169773==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169773==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169773==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169773==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169773==    by 0x49908EB: curl_version_info (version.c:600)
 ==169773==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169773==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169773==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169773==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1624
test 1629 [cookies with trailing dot after PSL domain]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1629 ../src/curl -q --output log/16/curl1629.out  --include --trace-ascii log/16/trace1629 --trace-time http://foo.co.uk.:35903/ http://bar.co.uk.:35903/ -b "" --resolve foo.co.uk.:35903:127.0.0.1 --resolve bar.co.uk.:35903:127.0.0.1 > log/16/stdout1629 2> log/16/stderr1629

 1629: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1629
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1629 ../src/curl -q --output log/16/curl1629.out  --include --trace-ascii log/16/trace1629 --trace-time http://foo.co.uk.:35903/ http://bar.co.uk.:35903/ -b "" --resolve foo.co.uk.:35903:127.0.0.1 --resolve bar.co.uk.:35903:127.0.0.1 > log/16/stdout1629 2> log/16/stderr1629
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.953135 ====> Client connect
 19:28:51.953177 accept_connection 3 returned 4
 19:28:51.953199 Read 93 bytes
 19:28:51.953209 Process 93 bytes request
 19:28:51.953223 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.953232 Are-we-friendly question received
 19:28:51.953261 Wrote request (93 bytes) input to log/16/server.input
 19:28:51.953279 Identifying ourselves as friends
 19:28:51.953350 Response sent (56 bytes) and written to log/16/server.response
 19:28:51.953360 special request received, no persistency
 19:28:51.953396 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 58342 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1629
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1629
 ==170044== 
 ==170044== Process terminating with default action of signal 4 (SIGILL)
 ==170044==  Illegal opcode at address 0x492B75F
 ==170044==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170044==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170044==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170044==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170044==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170044==    by 0x49908EB: curl_version_info (version.c:600)
 ==170044==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170044==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170044==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170044==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1629
test 1618 [HTTP GET brotli compression bomb]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1618 ../src/curl -q --output log/18/curl1618.out  --include --trace-ascii log/18/trace1618 --trace-time http://127.0.0.1:43739/1618 --compressed --max-filesize=1000 > log/18/stdout1618 2> log/18/stderr1618

 1618: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1618
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1618 ../src/curl -q --output log/18/curl1618.out  --include --trace-ascii log/18/trace1618 --trace-time http://127.0.0.1:43739/1618 --compressed --max-filesize=1000 > log/18/stdout1618 2> log/18/stderr1618
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.301019 ====> Client connect
 19:28:51.301060 accept_connection 3 returned 4
 19:28:51.301085 Read 93 bytes
 19:28:51.301097 Process 93 bytes request
 19:28:51.301110 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.301119 Are-we-friendly question received
 19:28:51.301149 Wrote request (93 bytes) input to log/18/server.input
 19:28:51.301169 Identifying ourselves as friends
 19:28:51.301265 Response sent (56 bytes) and written to log/18/server.response
 19:28:51.301278 special request received, no persistency
 19:28:51.301288 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 46716 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1618
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1618
 ==169444== 
 ==169444== Process terminating with default action of signal 4 (SIGILL)
 ==169444==  Illegal opcode at address 0x492B75F
 ==16CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1609 ../src/curl -q --output log/6/curl1609.out  --include --trace-ascii log/6/trace1609 --trace-time gopher://127.0.0.1:39325/1/sel%0d%0aINJECT/1609 > log/6/stdout1609 2> log/6/stderr1609
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1628 ../src/curl -q --output log/14/curl1628.out  --include --trace-ascii log/14/trace1628 --trace-time -x http://127.0.0.1:45467 http://ssss/ -T log/14/1628te[]st.txt > log/14/stdout1628 2> log/14/stderr1628
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1649 ./libtest/libtests lib1649 http://127.0.0.1:38815 > log/1/stdout1649 2> log/1/stderr1649
9444==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169444==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169444==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169444==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169444==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169444==    by 0x49908EB: curl_version_info (version.c:600)
 ==169444==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169444==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169444==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169444==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1618
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --gopher --keepalive 30 --pidfile "log/6/server/gopher_server.pid" --logfile "log/6/gopher_server.log" --logdir "log/6" --portfile log/6/server/gopher_server.port --config log/6/server.cmd --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: GOPHER server is on PID 169038 port 39325
* pid gopher => 169038 169038
test 1609 [Gopher with URL-encoded CR LF in the selector]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1609 ../src/curl -q --output log/6/curl1609.out  --include --trace-ascii log/6/trace1609 --trace-time gopher://127.0.0.1:39325/1/sel%0d%0aINJECT/1609 > log/6/stdout1609 2> log/6/stderr1609

curl returned 132, when expecting 3
 1609: exit FAILED
== Contents of files in the log/6/ directory after test 1609
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1609 ../src/curl -q --output log/6/curl1609.out  --include --trace-ascii log/6/trace1609 --trace-time gopher://127.0.0.1:39325/1/sel%0d%0aINJECT/1609 > log/6/stdout1609 2> log/6/stderr1609
=== End of file commands.log
=== Start of file gopher_server.log
 19:28:50.744981 Running GOPHER IPv4 version on port 39325
 19:28:50.745086 Wrote pid 169038 to log/6/server/gopher_server.pid
 19:28:50.745124 Wrote port 39325 to log/6/server/gopher_server.port
=== End of file gopher_server.log
=== Start of file server.cmd
 Testnum 1609
=== End of file server.cmd
=== Start of file valgrind1609
 ==169844== 
 ==169844== Process terminating with default action of signal 4 (SIGILL)
 ==169844==  Illegal opcode at address 0x492B75F
 ==169844==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169844==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169844==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169844==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169844==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169844==    by 0x49908EB: curl_version_info (version.c:600)
 ==169844==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169844==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169844==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169844==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1609
test 1628 [HTTP PUT from file with weird letters over an HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1628 ../src/curl -q --output log/14/curl1628.out  --include --trace-ascii log/14/trace1628 --trace-time -x http://127.0.0.1:45467 http://ssss/ -T log/14/1628te[]st.txt > log/14/stdout1628 2> log/14/stderr1628

 1628: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1628
=== Start of file 1628te[]st.txt
 a few bytes
=== End of file 1628te[]st.txt
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1628 ../src/curl -q --output log/14/curl1628.out  --include --trace-ascii log/14/trace1628 --trace-time -x http://127.0.0.1:45467 http://ssss/ -T log/14/1628te[]st.txt > log/14/stdout1628 2> log/14/stderr1628
=== End of file commands.log
=== Start of file http_server.log
 19:28:50.840821 ====> Client connect
 19:28:50.840871 accept_connection 3 returned 4
 19:28:50.840899 Read 93 bytes
 19:28:50.840910 Process 93 bytes request
 19:28:50.840924 Got request: GET /verifiedserver HTTP/1.1
 19:28:50.840944 Are-we-friendly question received
 19:28:50.840974 Wrote request (93 bytes) input to log/14/server.input
 19:28:50.840991 Identifying ourselves as friends
 19:28:50.841081 Response sent (56 bytes) and written to log/14/server.response
 19:28:50.841094 special request received, no persistency
 19:28:50.841103 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 56726 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1628
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1628
 ==169971== 
 ==169971== Process terminating with default action of signal 4 (SIGILL)
 ==169971==  Illegal opcode at address 0x492B75F
 ==169971==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169971==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169971==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169971==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169971==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169971==    by 0x49908EB: curl_version_info (version.c:600)
 ==169971==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169971==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169971==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169971==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1628
test 1649 [Set referer first then NULL it]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1649 ./libtest/libtests lib1649 http://127.0.0.1:38815 > log/1/stdout1649 2> log/1/stderr1649

 1649: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1649
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1649 ./libtest/libtests lib1649 http://127.0.0.1:38815 > log/1/stdout1649 2> log/1/stderr1649
=== End of file commands.log
=== Start of file http_server.log
 19:28:53.097674 ====> Client connect
 19:28:53.097717 accept_connection 3 returned 4
 19:28:53.097741 Read 93 bytes
 19:28:53.097751 Process 93 bytes request
 19:28:53.097764 Got request: GET /verifiedserver HTTP/1.1
 19:28:53.097772 Are-we-friendly question received
 19:28:53.097800 Wrote request (93 bytes) input to log/1/server.input
 19:28:53.097816 Identifying ourselves as friends
 19:28:53.097890 Response sent (56 bytes) and written to log/1/server.response
 19:28:53.097899 special request received, no persistency
 19:28:53.097907 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 porCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1619 ../src/curl -q --include --trace-ascii log/12/trace1619 --trace-time http://127.0.0.1:40921/1619 -O --output-dir log/12 --etag-save - > log/12/stdout1619 2> log/12/stderr1619
t 38815) from 127.0.0.1 port 51980 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1649
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1649
 ==170987== 
 ==170987== Process terminating with default action of signal 4 (SIGILL)
 ==170987==  Illegal opcode at address 0x51CC63F
 ==170987==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==170987==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==170987==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==170987==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1649
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1633 ../src/curl -q --output log/4/curl1633.out  --include --trace-ascii log/4/trace1633 --trace-time http://127.0.0.1:32943/1633 -d moo --retry 1 -L > log/4/stdout1633 2> log/4/stderr1633
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1634 ../src/curl -q --output log/3/curl1634.out  --include --trace-ascii log/3/trace1634 --trace-time http://127.0.0.1:36161/1634 --retry 1 --fail > log/3/stdout1634 2> log/3/stderr1634
test 1619 [--etag-save to stdout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1619 ../src/curl -q --include --trace-ascii log/12/trace1619 --trace-time http://127.0.0.1:40921/1619 -O --output-dir log/12 --etag-save - > log/12/stdout1619 2> log/12/stderr1619

 1619: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:53.806588159 +0000
+++ log/12/check-generated	2026-10-15 19:28:53.804591766 +0000
@@ -1 +0,0 @@
-W/"heyheyhey"[LF]
== Contents of files in the log/12/ directory after test 1619
=== Start of file check-expected
 W/"heyheyhey"[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1619 ../src/curl -q --include --trace-ascii log/12/trace1619 --trace-time http://127.0.0.1:40921/1619 -O --output-dir log/12 --etag-save - > log/12/stdout1619 2> log/12/stderr1619
=== End of file commands.log
=== Start of file http_server.log
 19:28:50.347356 ====> Client connect
 19:28:50.347392 accept_connection 3 returned 4
 19:28:50.347747 Read 93 bytes
 19:28:50.347763 Process 93 bytes request
 19:28:50.347776 Got request: GET /verifiedserver HTTP/1.1
 19:28:50.347785 Are-we-friendly question received
 19:28:50.347821 Wrote request (93 bytes) input to log/12/server.input
 19:28:50.347839 Identifying ourselves as friends
 19:28:50.347900 Response sent (56 bytes) and written to log/12/server.response
 19:28:50.347910 special request received, no persistency
 19:28:50.347918 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 37612 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1619
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1619
 ==169453== 
 ==169453== Process terminating with default action of signal 4 (SIGILL)
 ==169453==  Illegal opcode at address 0x492B75F
 ==169453==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==169453==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==169453==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==169453==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==169453==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==169453==    by 0x49908EB: curl_version_info (version.c:600)
 ==169453==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==169453==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==169453==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==169453==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1619
test 1633 [--retry with a 429 response and Retry-After:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1633 ../src/curl -q --output log/4/curl1633.out  --include --trace-ascii log/4/trace1633 --trace-time http://127.0.0.1:32943/1633 -d moo --retry 1 -L > log/4/stdout1633 2> log/4/stderr1633

 1633: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1633
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1633 ../src/curl -q --output log/4/curl1633.out  --include --trace-ascii log/4/trace1633 --trace-time http://127.0.0.1:32943/1633 -d moo --retry 1 -L > log/4/stdout1633 2> log/4/stderr1633
=== End of file commands.log
=== Start of file http_server.log
 19:28:52.124903 ====> Client connect
 19:28:52.124943 accept_connection 3 returned 4
 19:28:52.124966 Read 93 bytes
 19:28:52.124977 Process 93 bytes request
 19:28:52.124990 Got request: GET /verifiedserver HTTP/1.1
 19:28:52.124999 Are-we-friendly question received
 19:28:52.125030 Wrote request (93 bytes) input to log/4/server.input
 19:28:52.125048 Identifying ourselves as friends
 19:28:52.125120 Response sent (57 bytes) and written to log/4/server.response
 19:28:52.125132 special request received, no persistency
 19:28:52.125141 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:32943...
 * Established connection to 127.0.0.1 (127.0.0.1 port 32943) from 127.0.0.1 port 37504 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:32943
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:32943 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 165851
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1633
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 165851
=== End of file server.response
=== Start of file valgrind1633
 ==170189== 
 ==170189== Process terminating with default action of signal 4 (SIGILL)
 ==170189==  Illegal opcode at address 0x492B75F
 ==170189==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170189==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170189==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170189==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170189==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170189==    by 0x49908EB: curl_version_info (version.c:600)
 ==170189==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170189==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170189==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170189==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1633
test 1634 [--retry with a 429 response and Retry-After: and --fail]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1634 ../src/curl -q --output log/3/curl1634.out  --include --trace-ascii log/3/trace1634 --trace-time http://127.0.0.1:36161/1634 --retry 1 --fail > log/3/stdout1634 2> log/3/stderr1634

 1634: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 1634
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1634 ../src/curl -q --output log/3/curl1634.out  --include --trace-ascii log/3/trace1634 --trace-time http://127.0.0.1:36161/1634 --retry 1 --fail > log/3/stdout1634 2> log/3/stderr1634
=== End of file commands.log
=== Start of file http_server.log
 19:28:52.211211 ====> Client connect
 19:28:52.211262 accept_connection 3 returned 4
 19:28:52.211290 Read 93 bytes
 19:28:52.211302 Process 93 bytes request
 19:28:52.211315 Got request: GET /verifiedserver HTTP/1.1
 19:28:52.211324 Are-we-friendly question received
 19:28:52.211355 Wrote request (93 bytes) input to log/3/server.input
 19:28:52.211374 Identifying ourselves as friends
 19:28:52.211460 Response sent (56 bytes) and written to log/3/server.response
 19:28:52.211476 special request received, no CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1650 ./unit/units unit1650 - > log/21/stdout1650 2> log/21/stderr1650
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1652 ./unit/units unit1652 - > log/10/stdout1652 2> log/10/stderr1652
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1639 ../src/curl -q --include --trace-ascii log/22/trace1639 --trace-time http://127.0.0.1:35989///////////////// -O --output-dir log/22 > log/22/stdout1639 2> log/22/stderr1639
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1645 ../src/curl -q --output log/19/curl1645.out  --include --trace-ascii log/19/trace1645 --trace-time http://test.curl:37077/we/want/ http://test.curl:37077/WE/WANT/16450002 -c log/19/jar1645.txt --resolve test.curl:37077:127.0.0.1 > log/19/stdout1645 2> log/19/stderr1645
persistency
 19:28:52.211485 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 39892 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1634
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1634
 ==170216== 
 ==170216== Process terminating with default action of signal 4 (SIGILL)
 ==170216==  Illegal opcode at address 0x492B75F
 ==170216==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170216==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170216==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170216==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170216==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170216==    by 0x49908EB: curl_version_info (version.c:600)
 ==170216==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170216==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170216==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170216==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1634
test 1650 [DoH parsing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1650 ./unit/units unit1650 - > log/21/stdout1650 2> log/21/stderr1650

units returned 132, when expecting 0
 1650: exit FAILED
== Contents of files in the log/21/ directory after test 1650
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1650 ./unit/units unit1650 - > log/21/stdout1650 2> log/21/stderr1650
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1650
=== End of file server.cmd
=== Start of file valgrind1650
 ==170974== 
 ==170974== Process terminating with default action of signal 4 (SIGILL)
 ==170974==  Illegal opcode at address 0x4091F7F
 ==170974==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==170974==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==170974==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==170974==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1650
test 1652 [infof]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1652 ./unit/units unit1652 - > log/10/stdout1652 2> log/10/stderr1652

units returned 132, when expecting 0
 1652: exit FAILED
== Contents of files in the log/10/ directory after test 1652
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1652 ./unit/units unit1652 - > log/10/stdout1652 2> log/10/stderr1652
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1652
=== End of file server.cmd
=== Start of file valgrind1652
 ==171211== 
 ==171211== Process terminating with default action of signal 4 (SIGILL)
 ==171211==  Illegal opcode at address 0x4091F7F
 ==171211==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171211==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171211==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171211==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1652
test 1639 [-O with URL without path using many trailing slashes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1639 ../src/curl -q --include --trace-ascii log/22/trace1639 --trace-time http://127.0.0.1:35989///////////////// -O --output-dir log/22 > log/22/stdout1639 2> log/22/stderr1639

 1639: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1639
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1639 ../src/curl -q --include --trace-ascii log/22/trace1639 --trace-time http://127.0.0.1:35989///////////////// -O --output-dir log/22 > log/22/stdout1639 2> log/22/stderr1639
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.449381 ====> Client connect
 19:28:51.449418 accept_connection 3 returned 4
 19:28:51.449442 Read 93 bytes
 19:28:51.449453 Process 93 bytes request
 19:28:51.449465 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.449474 Are-we-friendly question received
 19:28:51.449505 Wrote request (93 bytes) input to log/22/server.input
 19:28:51.449524 Identifying ourselves as friends
 19:28:51.449598 Response sent (56 bytes) and written to log/22/server.response
 19:28:51.449610 special request received, no persistency
 19:28:51.449618 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 47002 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1639
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1639
 ==170441== 
 ==170441== Process terminating with default action of signal 4 (SIGILL)
 ==170441==  Illegal opcode at address 0x492B75F
 ==170441==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170441==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170441==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170441==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170441==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170441==    by 0x49908EB: curl_version_info (version.c:600)
 ==170441==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170441==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170441==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170441==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1639
test 1645 [cookies for paths using different case]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1645 ../src/curl -q --output log/19/curl1645.out  --include --trace-ascii log/19/trace1645 --trace-time http://test.curl:37077/we/want/ http://test.curl:37077/WE/WANT/16450002 -c log/19/jar1645.txt --resolve test.curl:37077:127.0.0.1 > log/19/stdout1645 2> log/19/stderr1645

 1645: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 1645
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1638 ../src/curl -q --output log/7/curl1638.out  --include --trace-ascii log/7/trace1638 --trace-time -x http://127.0.0.1:40859 http://this.hsts.example/1638 --hsts log/7/hsts1638 > log/7/stdout1638 2> log/7/stderr1638
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1648 ./libtest/libtests lib1648 127.0.0.1 44467 > log/8/stdout1648 2> log/8/stderr1648
log-file=log/19/valgrind1645 ../src/curl -q --output log/19/curl1645.out  --include --trace-ascii log/19/trace1645 --trace-time http://test.curl:37077/we/want/ http://test.curl:37077/WE/WANT/16450002 -c log/19/jar1645.txt --resolve test.curl:37077:127.0.0.1 > log/19/stdout1645 2> log/19/stderr1645
=== End of file commands.log
=== Start of file http_server.log
 19:28:52.025690 ====> Client connect
 19:28:52.025724 accept_connection 3 returned 4
 19:28:52.025825 Read 93 bytes
 19:28:52.025837 Process 93 bytes request
 19:28:52.025850 Got request: GET /verifiedserver HTTP/1.1
 19:28:52.025858 Are-we-friendly question received
 19:28:52.025885 Wrote request (93 bytes) input to log/19/server.input
 19:28:52.025900 Identifying ourselves as friends
 19:28:52.025953 Response sent (57 bytes) and written to log/19/server.response
 19:28:52.025962 special request received, no persistency
 19:28:52.025969 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 39800 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1645
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1645
 ==170892== 
 ==170892== Process terminating with default action of signal 4 (SIGILL)
 ==170892==  Illegal opcode at address 0x492B75F
 ==170892==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170892==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170892==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170892==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170892==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170892==    by 0x49908EB: curl_version_info (version.c:600)
 ==170892==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170892==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170892==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170892==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1645
test 1638 [HSTS duplicate domains where the update adds subdomains]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1638 ../src/curl -q --output log/7/curl1638.out  --include --trace-ascii log/7/trace1638 --trace-time -x http://127.0.0.1:40859 http://this.hsts.example/1638 --hsts log/7/hsts1638 > log/7/stdout1638 2> log/7/stderr1638

 1638: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1638
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1638 ../src/curl -q --output log/7/curl1638.out  --include --trace-ascii log/7/trace1638 --trace-time -x http://127.0.0.1:40859 http://this.hsts.example/1638 --hsts log/7/hsts1638 > log/7/stdout1638 2> log/7/stderr1638
=== End of file commands.log
=== Start of file hsts1638
 # comment in input file
 foo.example. "20391001 04:47:41"
 .foo.example. "20291001 04:47:41"
=== End of file hsts1638
=== Start of file http_server.log
 19:28:51.501034 ====> Client connect
 19:28:51.501077 accept_connection 3 returned 4
 19:28:51.501101 Read 93 bytes
 19:28:51.501110 Process 93 bytes request
 19:28:51.501123 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.501131 Are-we-friendly question received
 19:28:51.501155 Wrote request (93 bytes) input to log/7/server.input
 19:28:51.501171 Identifying ourselves as friends
 19:28:51.501243 Response sent (56 bytes) and written to log/7/server.response
 19:28:51.501252 special request received, no persistency
 19:28:51.501260 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39692 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1638
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1638
 ==170479== 
 ==170479== Process terminating with default action of signal 4 (SIGILL)
 ==170479==  Illegal opcode at address 0x492B75F
 ==170479==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170479==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170479==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170479==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170479==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170479==    by 0x49908EB: curl_version_info (version.c:600)
 ==170479==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170479==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170479==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170479==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1638
test 1648 [HTTP proxy with auth, change proxy, clear auth]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1648 ./libtest/libtests lib1648 127.0.0.1 44467 > log/8/stdout1648 2> log/8/stderr1648

 1648: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 1648
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1648 ./libtest/libtests lib1648 127.0.0.1 44467 > log/8/stdout1648 2> log/8/stderr1648
=== End of file commands.log
=== Start of file http_server.log
 19:28:52.080649 ====> Client connect
 19:28:52.080675 accept_connection 3 returned 4
 19:28:52.080692 Read 93 bytes
 19:28:52.080700 Process 93 bytes request
 19:28:52.080709 Got request: GET /verifiedserver HTTP/1.1
 19:28:52.080716 Are-we-friendly question received
 19:28:52.080735 Wrote request (93 bytes) input to log/8/server.input
 19:28:52.080747 Identifying ourselves as friends
 19:28:52.080802 Response sent (56 bytes) and written to log/8/server.response
 19:28:52.080808 special request received, no persistency
 19:28:52.080815 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 36558 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1648
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.rCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1651 ./unit/units unit1651 - > log/15/stdout1651 2> log/15/stderr1651
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1654 ./unit/units unit1654 log/17/1654 > log/17/stdout1654 2> log/17/stderr1654
esponse
=== Start of file valgrind1648
 ==170940== 
 ==170940== Process terminating with default action of signal 4 (SIGILL)
 ==170940==  Illegal opcode at address 0x51CC63F
 ==170940==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==170940==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==170940==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==170940==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1648
test 1651 [x509 parsing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1651 ./unit/units unit1651 - > log/15/stdout1651 2> log/15/stderr1651

units returned 132, when expecting 0
 1651: exit FAILED
== Contents of files in the log/15/ directory after test 1651
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1651 ./unit/units unit1651 - > log/15/stdout1651 2> log/15/stderr1651
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1651
=== End of file server.cmd
=== Start of file valgrind1651
 ==171180== 
 ==171180== Process terminating with default action of signal 4 (SIGILL)
 ==171180==  Illegal opcode at address 0x4091F7F
 ==171180==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171180==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171180==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171180==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1651
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1642 ../src/curl -q --trace-ascii log/9/trace1642 --trace-time http://127.0.0.1:43733/1642 -J -L -O --output-dir log/9 > log/9/stdout1642 2> log/9/stderr1642
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1635 ../src/curl -q --trace-ascii log/5/trace1635 --trace-time http://127.0.0.1:37089/1635 --retry 1 --fail-with-body > log/5/stdout1635 2> log/5/stderr1635
setenv CURL_TIME = 1548369261
test 1654 [alt-svc]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1654 ./unit/units unit1654 log/17/1654 > log/17/stdout1654 2> log/17/stderr1654

 1654: output (log/17/1654-out) FAILED:
--- log/17/check-expected	2026-10-15 19:28:54.558126369 +0000
+++ log/17/check-generated	2026-10-15 19:28:54.552575916 +0000
@@ -1,14 +0,0 @@
-# Your alt-svc cache. https://curl.se/docs/alt-svc.html[CR][LF]
-# This file was generated by libcurl! Edit at your own risk.[CR][LF]
-h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0[CR][LF]
-h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 0[CR][LF]
-h1 example.com 443 h3 shiny.example.com 8443 "20221231 00:00:01" 0 0[CR][LF]
-h3 example.com 443 h3 shiny.example.com 8443 "20231231 00:00:00" 0 0[CR][LF]
-h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0[CR][LF]
-h1 2.example.org 8080 h3 2.example.org 8080 "20190125 22:34:21" 0 0[CR][LF]
-h1 3.example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0[CR][LF]
-h1 3.example.org 8080 h3 yesyes.com 8080 "20190125 22:34:21" 0 0[CR][LF]
-h2 example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0[CR][LF]
-h2 example.net 80 h2 example.net 443 "20190124 22:37:21" 0 0[CR][LF]
-h2 test.se 443 h2 test2.se 443 "20190124 22:37:21" 0 0[CR][LF]
-h2 test.se 443 h2 test3.se 443 "20190124 22:36:21" 0 0[CR][LF]
== Contents of files in the log/17/ directory after test 1654
=== Start of file 1654
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 expired.com 443 h3 shiny.example.com 8443 "20190122 00:00:00" 0 0
 # a comment
 h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 0
   h1 example.com 443 h3 shiny.example.com 8443 "20221231 00:00:01" 0 0
 	h3 example.com 443 h3 shiny.example.com 8443 "20231231 00:00:00" 0 0
     # also a comment
 bad example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 rubbish
=== End of file 1654
=== Start of file check-expected
 # Your alt-svc cache. https://curl.se/docs/alt-svc.html[CR][LF]
 # This file was generated by libcurl! Edit at your own risk.[CR][LF]
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0[CR][LF]
 h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 0[CR][LF]
 h1 example.com 443 h3 shiny.example.com 8443 "20221231 00:00:01" 0 0[CR][LF]
 h3 example.com 443 h3 shiny.example.com 8443 "20231231 00:00:00" 0 0[CR][LF]
 h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0[CR][LF]
 h1 2.example.org 8080 h3 2.example.org 8080 "20190125 22:34:21" 0 0[CR][LF]
 h1 3.example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0[CR][LF]
 h1 3.example.org 8080 h3 yesyes.com 8080 "20190125 22:34:21" 0 0[CR][LF]
 h2 example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0[CR][LF]
 h2 example.net 80 h2 example.net 443 "20190124 22:37:21" 0 0[CR][LF]
 h2 test.se 443 h2 test2.se 443 "20190124 22:37:21" 0 0[CR][LF]
 h2 test.se 443 h2 test3.se 443 "20190124 22:36:21" 0 0[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1654 ./unit/units unit1654 log/17/1654 > log/17/stdout1654 2> log/17/stderr1654
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1654
=== End of file server.cmd
=== Start of file valgrind1654
 ==171294== 
 ==171294== Process terminating with default action of signal 4 (SIGILL)
 ==171294==  Illegal opcode at address 0x4091F7F
 ==171294==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171294==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171294==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171294==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1654
test 1642 [HTTP GET -J, redirect, no Content-Disposition use the Location: name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1642 ../src/curl -q --trace-ascii log/9/trace1642 --trace-time http://127.0.0.1:43733/1642 -J -L -O --output-dir log/9 > log/9/stdout1642 2> log/9/stderr1642

 1642: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1642
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1642 ../src/curl -q --trace-ascii log/9/trace1642 --trace-time http://127.0.0.1:43733/1642 -J -L -O --output-dir log/9 > log/9/stdout1642 2> log/9/stderr1642
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.750747 ====> Client connect
 19:28:51.750792 accept_connection 3 returned 4
 19:28:51.750818 Read 93 bytes
 19:28:51.750828 Process 93 bytes request
 19:28:51.750840 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.750849 Are-we-friendly question received
 19:28:51.751026 Wrote request (93 bytes) input to log/9/server.input
 19:28:51.751061 Identifying ourselves as friends
 19:28:51.751146 Response sent (56 bytes) and written to log/9/server.response
 19:28:51.751158 special request received, no persistency
 19:28:51.751167 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 37092 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1642
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1642
 ==170696== 
 ==170696== Process terminating with default action of signal 4 (SIGILL)
 ==170696==  Illegal opcode at address 0x492B75F
 ==170696==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170696==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170696==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170696==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170696==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170696==    by 0x49908EB: curl_version_info (version.c:600)
 ==170696==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170696==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170696==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170696==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1642
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1646 ../src/curl -q --output log/11/curl1646.out  --include --trace-ascii log/11/trace1646 --trace-time --netrc --netrc-file log/11/netrc1646 http://alice@example.com:40989/1646 --resolve example.com:40989:127.0.0.1 > log/11/stdout1646 2> log/11/stderr1646
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1653 ./unit/units unit1653 - > log/24/stdout1653 2> log/24/stderr1653
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1644 ../src/curl -q --include --trace-ascii log/23/trace1644 --trace-time http://127.0.0.1:44711///foo////////////// -O --output-dir log/23 > log/23/stdout1644 2> log/23/stderr1644
test 1635 [--retry with a 429 response and Retry-After: and --fail-with-body]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1635 ../src/curl -q --trace-ascii log/5/trace1635 --trace-time http://127.0.0.1:37089/1635 --retry 1 --fail-with-body > log/5/stdout1635 2> log/5/stderr1635

 1635: stdout FAILED:
--- log/5/check-expected	2026-10-15 19:28:54.589358334 +0000
+++ log/5/check-generated	2026-10-15 19:28:54.587144864 +0000
@@ -1,2 +0,0 @@
-moo[LF]
-hey[LF]
== Contents of files in the log/5/ directory after test 1635
=== Start of file check-expected
 moo[LF]
 hey[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1635 ../src/curl -q --trace-ascii log/5/trace1635 --trace-time http://127.0.0.1:37089/1635 --retry 1 --fail-with-body > log/5/stdout1635 2> log/5/stderr1635
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.252952 ====> Client connect
 19:28:51.252990 accept_connection 3 returned 4
 19:28:51.253011 Read 93 bytes
 19:28:51.253021 Process 93 bytes request
 19:28:51.253034 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.253043 Are-we-friendly question received
 19:28:51.253068 Wrote request (93 bytes) input to log/5/server.input
 19:28:51.253085 Identifying ourselves as friends
 19:28:51.253149 Response sent (56 bytes) and written to log/5/server.response
 19:28:51.253159 special request received, no persistency
 19:28:51.253167 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 54858 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1635
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1635
 ==170253== 
 ==170253== Process terminating with default action of signal 4 (SIGILL)
 ==170253==  Illegal opcode at address 0x492B75F
 ==170253==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170253==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170253==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170253==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170253==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170253==    by 0x49908EB: curl_version_info (version.c:600)
 ==170253==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170253==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170253==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170253==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1635
test 1646 [netrc parsing without user match but user in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1646 ../src/curl -q --output log/11/curl1646.out  --include --trace-ascii log/11/trace1646 --trace-time --netrc --netrc-file log/11/netrc1646 http://alice@example.com:40989/1646 --resolve example.com:40989:127.0.0.1 > log/11/stdout1646 2> log/11/stderr1646

 1646: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1646
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1646 ../src/curl -q --output log/11/curl1646.out  --include --trace-ascii log/11/trace1646 --trace-time --netrc --netrc-file log/11/netrc1646 http://alice@example.com:40989/1646 --resolve example.com:40989:127.0.0.1 > log/11/stdout1646 2> log/11/stderr1646
=== End of file commands.log
=== Start of file http_server.log
 19:28:52.063999 ====> Client connect
 19:28:52.064036 accept_connection 3 returned 4
 19:28:52.064058 Read 93 bytes
 19:28:52.064068 Process 93 bytes request
 19:28:52.064081 Got request: GET /verifiedserver HTTP/1.1
 19:28:52.064090 Are-we-friendly question received
 19:28:52.064119 Wrote request (93 bytes) input to log/11/server.input
 19:28:52.064136 Identifying ourselves as friends
 19:28:52.064199 Response sent (56 bytes) and written to log/11/server.response
 19:28:52.064208 special request received, no persistency
 19:28:52.064217 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 49406 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file netrc1646
 machine example.com login bob password sekret
=== End of file netrc1646
=== Start of file server.cmd
 Testnum 1646
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1646
 ==170917== 
 ==170917== Process terminating with default action of signal 4 (SIGILL)
 ==170917==  Illegal opcode at address 0x492B75F
 ==170917==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170917==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170917==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170917==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170917==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170917==    by 0x49908EB: curl_version_info (version.c:600)
 ==170917==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170917==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170917==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170917==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1646
test 1653 [urlapi port number parsing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1653 ./unit/units unit1653 - > log/24/stdout1653 2> log/24/stderr1653

units returned 132, when expecting 0
 1653: exit FAILED
== Contents of files in the log/24/ directory after test 1653
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1653 ./unit/units unit1653 - > log/24/stdout1653 2> log/24/stderr1653
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1653
=== End of file server.cmd
=== Start of file valgrind1653
 ==171256== 
 ==171256== Process terminating with default action of signal 4 (SIGILL)
 ==171256==  Illegal opcode at address 0x4091F7F
 ==171256==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171256==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171256==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171256==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1653
test 1644 [-O with URL with path but using many trailing slashes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-checkCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1655 ./unit/units unit1655 - > log/16/stdout1655 2> log/16/stderr1655
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1637 ../src/curl -q --output log/2/curl1637.out  --include --trace-ascii log/2/trace1637 --trace-time http://127.0.0.1:34531/1637 --fail --retry 2 --retry-delay 0.1 > log/2/stdout1637 2> log/2/stderr1637
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1656 ./unit/units unit1656 - > log/18/stdout1656 2> log/18/stderr1656
=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1644 ../src/curl -q --include --trace-ascii log/23/trace1644 --trace-time http://127.0.0.1:44711///foo////////////// -O --output-dir log/23 > log/23/stdout1644 2> log/23/stderr1644

 1644: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 1644
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1644 ../src/curl -q --include --trace-ascii log/23/trace1644 --trace-time http://127.0.0.1:44711///foo////////////// -O --output-dir log/23 > log/23/stdout1644 2> log/23/stderr1644
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.952177 ====> Client connect
 19:28:51.952217 accept_connection 3 returned 4
 19:28:51.952241 Read 93 bytes
 19:28:51.952252 Process 93 bytes request
 19:28:51.952266 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.952275 Are-we-friendly question received
 19:28:51.952305 Wrote request (93 bytes) input to log/23/server.input
 19:28:51.952324 Identifying ourselves as friends
 19:28:51.952398 Response sent (56 bytes) and written to log/23/server.response
 19:28:51.952411 special request received, no persistency
 19:28:51.952421 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 53554 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1644
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1644
 ==170782== 
 ==170782== Process terminating with default action of signal 4 (SIGILL)
 ==170782==  Illegal opcode at address 0x492B75F
 ==170782==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170782==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170782==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170782==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170782==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170782==    by 0x49908EB: curl_version_info (version.c:600)
 ==170782==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170782==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170782==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170782==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1644
test 1655 [unit test for doh_req_encode]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1655 ./unit/units unit1655 - > log/16/stdout1655 2> log/16/stderr1655

units returned 132, when expecting 0
 1655: exit FAILED
== Contents of files in the log/16/ directory after test 1655
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1655 ./unit/units unit1655 - > log/16/stdout1655 2> log/16/stderr1655
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1655
=== End of file server.cmd
=== Start of file valgrind1655
 ==171344== 
 ==171344== Process terminating with default action of signal 4 (SIGILL)
 ==171344==  Illegal opcode at address 0x4091F7F
 ==171344==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171344==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171344==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171344==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1655
test 1637 [HTTP 502 with --fail and --retry 2]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1637 ../src/curl -q --output log/2/curl1637.out  --include --trace-ascii log/2/trace1637 --trace-time http://127.0.0.1:34531/1637 --fail --retry 2 --retry-delay 0.1 > log/2/stdout1637 2> log/2/stderr1637

 1637: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1637
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1637 ../src/curl -q --output log/2/curl1637.out  --include --trace-ascii log/2/trace1637 --trace-time http://127.0.0.1:34531/1637 --fail --retry 2 --retry-delay 0.1 > log/2/stdout1637 2> log/2/stderr1637
=== End of file commands.log
=== Start of file http_server.log
 19:28:52.427677 ====> Client connect
 19:28:52.427720 accept_connection 3 returned 4
 19:28:52.427742 Read 93 bytes
 19:28:52.427752 Process 93 bytes request
 19:28:52.427763 Got request: GET /verifiedserver HTTP/1.1
 19:28:52.427771 Are-we-friendly question received
 19:28:52.427796 Wrote request (93 bytes) input to log/2/server.input
 19:28:52.427817 Identifying ourselves as friends
 19:28:52.427894 Response sent (56 bytes) and written to log/2/server.response
 19:28:52.427903 special request received, no persistency
 19:28:52.427911 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44494 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1637
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1637
 ==170406== 
 ==170406== Process terminating with default action of signal 4 (SIGILL)
 ==170406==  Illegal opcode at address 0x492B75F
 ==170406==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170406==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170406==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170406==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170406==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170406==    by 0x49908EB: curl_version_info (version.c:600)
 ==170406==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170406==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170406==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170406==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1637
test 1656 [GTime2str unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1656 ./unit/units unit1656 - > log/18/stdout1656 2> log/18/stderr1656

units returned 132, when expecting 0
 1656: exit FAILED
== Contents of files in the log/18/ directory after test 1656
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-filCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1641 ../src/curl -q --trace-ascii log/20/trace1641 --trace-time http://127.0.0.1:41689/1641 -J -L -O --output-dir log/20 > log/20/stdout1641 2> log/20/stderr1641
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1660 ./unit/units unit1660 log/12/hsts1660 > log/12/stdout1660 2> log/12/stderr1660
e=log/18/valgrind1656 ./unit/units unit1656 - > log/18/stdout1656 2> log/18/stderr1656
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1656
=== End of file server.cmd
=== Start of file valgrind1656
 ==171380== 
 ==171380== Process terminating with default action of signal 4 (SIGILL)
 ==171380==  Illegal opcode at address 0x4091F7F
 ==171380==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171380==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171380==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171380==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1656
test 1641 [HTTP GET -J, a redirect and Content-Disposition in the second response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1641 ../src/curl -q --trace-ascii log/20/trace1641 --trace-time http://127.0.0.1:41689/1641 -J -L -O --output-dir log/20 > log/20/stdout1641 2> log/20/stderr1641

 1641: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1641
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1641 ../src/curl -q --trace-ascii log/20/trace1641 --trace-time http://127.0.0.1:41689/1641 -J -L -O --output-dir log/20 > log/20/stdout1641 2> log/20/stderr1641
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.604524 ====> Client connect
 19:28:51.604556 accept_connection 3 returned 4
 19:28:51.604703 Read 93 bytes
 19:28:51.604715 Process 93 bytes request
 19:28:51.604728 Got request: GET /verifiedserver HTTP/1.1
 19:28:51.604737 Are-we-friendly question received
 19:28:51.604771 Wrote request (93 bytes) input to log/20/server.input
 19:28:51.604788 Identifying ourselves as friends
 19:28:51.604846 Response sent (57 bytes) and written to log/20/server.response
 19:28:51.604855 special request received, no persistency
 19:28:51.604863 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 53812 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1641
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind1641
 ==170586== 
 ==170586== Process terminating with default action of signal 4 (SIGILL)
 ==170586==  Illegal opcode at address 0x492B75F
 ==170586==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170586==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170586==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170586==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170586==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170586==    by 0x49908EB: curl_version_info (version.c:600)
 ==170586==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170586==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170586==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170586==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1641
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1661 ./unit/units unit1661 - > log/4/stdout1661 2> log/4/stderr1661
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1657 ./unit/units unit1657 - > log/6/stdout1657 2> log/6/stderr1657
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1643 ../src/curl -q --trace-ascii log/13/trace1643 --trace-time http://127.0.0.1:38821/1643 -J -L -O --output-dir log/13 > log/13/stdout1643 2> log/13/stderr1643
setenv CURL_TIME = 1548369261
test 1660 [HSTS]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1660 ./unit/units unit1660 log/12/hsts1660 > log/12/stdout1660 2> log/12/stderr1660

 1660: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:28:55.173148475 +0000
+++ log/12/check-generated	2026-10-15 19:28:55.169247462 +0000
@@ -1,34 +0,0 @@
-readfrom.example [readfrom.example]: 1633063661 includeSubDomains[LF]
-'old.example' is not HSTS[LF]
-'readfrom.example' is not HSTS[LF]
-example.com [example.com]: 1579905261[LF]
-example.com [example.com]: 1569905261[LF]
-example.com [example.com]: 1569905261[LF]
-example.com [example.com]: 1569905261 includeSubDomains[LF]
-example.org [example.org]: 1579905261[LF]
-Input 8: error 43[LF]
-Input 9: error 43[LF]
-this.example [this.example]: 1548400797[LF]
-'this.example' is not HSTS[LF]
-Input 12: error 43[LF]
-Input 13: error 43[LF]
-Input 14: error 43[LF]
-3.example.com [3.example.com]: 1569905261 includeSubDomains[LF]
-3.example.com [example.com]: 1569905261 includeSubDomains[LF]
-foo.example.com [example.com]: 1569905261 includeSubDomains[LF]
-'foo.xample.com' is not HSTS[LF]
-'forexample.net' is not HSTS[LF]
-'forexample.net' is not HSTS[LF]
-'example.net' is not HSTS[LF]
-expire.example [expire.example]: 1548369268[LF]
-Number of entries: 4[LF]
-expire.example [expire.example]: 1548369268[LF]
-expire.example [expire.example]: 1548369268[LF]
-expire.example [expire.example]: 1548369268[LF]
-expire.example [expire.example]: 1548369268[LF]
-expire.example [expire.example]: 1548369268[LF]
-expire.example [expire.example]: 1548369268[LF]
-expire.example [expire.example]: 1548369268[LF]
-'expire.example' is not HSTS[LF]
-'expire.example' is not HSTS[LF]
-'expire.example' is not HSTS[LF]
== Contents of files in the log/12/ directory after test 1660
=== Start of file check-expected
 readfrom.example [readfrom.example]: 1633063661 includeSubDomains[LF]
 'old.example' is not HSTS[LF]
 'readfrom.example' is not HSTS[LF]
 example.com [example.com]: 1579905261[LF]
 example.com [example.com]: 1569905261[LF]
 example.com [example.com]: 1569905261[LF]
 example.com [example.com]: 1569905261 includeSubDomains[LF]
 example.org [example.org]: 1579905261[LF]
 Input 8: error 43[LF]
 Input 9: error 43[LF]
 this.example [this.example]: 1548400797[LF]
 'this.example' is not HSTS[LF]
 Input 12: error 43[LF]
 Input 13: error 43[LF]
 Input 14: error 43[LF]
 3.example.com [3.example.com]: 1569905261 includeSubDomains[LF]
 3.example.com [example.com]: 1569905261 includeSubDomains[LF]
 foo.example.com [example.com]: 1569905261 includeSubDomains[LF]
 'foo.xample.com' is not HSTS[LF]
 'forexample.net' is not HSTS[LF]
 'forexample.net' is not HSTS[LF]
 'example.net' is not HSTS[LF]
 expire.example [expire.example]: 1548369268[LF]
 Number of entries: 4[LF]
 expire.example [expire.example]: 1548369268[LF]
 expire.example [expire.example]: 1548369268[LF]
 expire.example [expire.example]: 1548369268[LF]
 expire.example [expire.example]: 1548369268[LF]
 expire.example [expire.example]: 1548369268[LF]
 expire.example [expire.example]: 1548369268[LF]
 expire.example [expire.example]: 1548369268[LF]
 'expire.example' is not HSTS[LF]
 'expire.example' is not HSTS[LF]
 'expire.example' is not HSTS[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1660 ./unit/units unit1660 log/12/hsts1660 > log/12/stdout1660 2> log/12/stderr1660
=== End of file commands.log
=== Start of file hsts1660
 # Your HSTS cache. https://curl.se/docs/hsts.html
 # This file was generated by libcurl! Edit at your own risk.
 .readfrom.example "20211001 04:47:41"
 .old.example "20161001 04:47:41"
 .new.example "unlimited"
=== End of file hsts1660
=== Start of file server.cmd
 Testnum 1660
=== End of file server.cmd
=== Start of file valgrind1660
 ==171492== 
 ==171492== Process terminating with default action of signal 4 (SIGILL)
 ==171492==  Illegal opcode at address 0x4091F7F
 ==171492==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171492==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171492==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171492==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1660
test 1661 [bufref unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1661 ./unit/units unit1661 - > log/4/stdout1661 2> log/4/stderr1661

units returned 132, when expecting 0
 1661: exit FAILED
== Contents of files in the log/4/ directory after test 1661
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1661 ./unit/units unit1661 - > log/4/stdout1661 2> log/4/stderr1661
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1661
=== End of file server.cmd
=== Start of file valgrind1661
 ==171519== 
 ==171519== Process terminating with default action of signal 4 (SIGILL)
 ==171519==  Illegal opcode at address 0x4091F7F
 ==171519==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171519==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171519==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171519==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1661
test 1657 [getASN1Element unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1657 ./unit/units unit1657 - > log/6/stdout1657 2> log/6/stderr1657

units returned 132, when expecting 0
 1657: exit FAILED
== Contents of files in the log/6/ directory after test 1657
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1657 ./unit/units unit1657 - > log/6/stdout1657 2> log/6/stderr1657
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1657
=== End of file server.cmd
=== Start of file valgrind1657
 ==171403== 
 ==171403== Process terminating with default action of signal 4 (SIGILL)
 ==171403==  Illegal opcode at address 0x4091F7F
 ==171403==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171403==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171403==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171403==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1657
test 1643 [HTTP -J, two redirects, use the last Location: name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1643 ../src/curl -q --trace-ascii log/13/trace1643 --trace-time http://127.0.0.1:38821/1643 -J -L -O --output-dir log/13 > log/13/stdout1643 2> log/13/stderr1643

 1643: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1643
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1643 ../src/curl -q --trace-ascii log/13/trace1643 --trace-time http://127.0.0.1:38821/1643 -J -L -O --output-dir log/13 > log/13/stdout1643 2> log/13/stderr1643
=== End of file commands.log
=== Start of file http_server.log
 19:28:51.777677 ====> Client connect
 19:28:51.777720 accept_connection 3 returned 4
 19:28:51.777745 Read 93 bytes
 19:28:51.777755 Process 93 bytes request
 19:28:51.777769 Got request: GET /veCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1658 ./unit/units unit1658 - > log/14/stdout1658 2> log/14/stderr1658
rifiedserver HTTP/1.1
 19:28:51.777778 Are-we-friendly question received
 19:28:51.777806 Wrote request (93 bytes) input to log/13/server.input
 19:28:51.777823 Identifying ourselves as friends
 19:28:51.777915 Response sent (56 bytes) and written to log/13/server.response
 19:28:51.777926 special request received, no persistency
 19:28:51.777934 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 57558 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1643
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1643
 ==170697== 
 ==170697== Process terminating with default action of signal 4 (SIGILL)
 ==170697==  Illegal opcode at address 0x492B75F
 ==170697==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==170697==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==170697==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==170697==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==170697==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==170697==    by 0x49908EB: curl_version_info (version.c:600)
 ==170697==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==170697==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==170697==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==170697==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1643
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1663 ./unit/units unit1663 - > log/3/stdout1663 2> log/3/stderr1663
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1664 ./unit/units unit1664 - > log/21/stdout1664 2> log/21/stderr1664
test 1658 [unit test for doh_resp_decode_httpsrr]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1658 ./unit/units unit1658 - > log/14/stdout1658 2> log/14/stderr1658

 1658: stderr FAILED:
--- log/14/check-expected	2026-10-15 19:28:55.709027605 +0000
+++ log/14/check-generated	2026-10-15 19:28:55.705917966 +0000
@@ -1,2 +0,0 @@
-URL: -[CR][LF]
-Test ended with result 0[CR][LF]
== Contents of files in the log/14/ directory after test 1658
=== Start of file check-expected
 URL: -[CR][LF]
 Test ended with result 0[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1658 ./unit/units unit1658 - > log/14/stdout1658 2> log/14/stderr1658
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1658
=== End of file server.cmd
=== Start of file valgrind1658
 ==171427== 
 ==171427== Process terminating with default action of signal 4 (SIGILL)
 ==171427==  Illegal opcode at address 0x4091F7F
 ==171427==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171427==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171427==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171427==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1658
test 1663 [unit tests for interface option parsing]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1663 ./unit/units unit1663 - > log/3/stdout1663 2> log/3/stderr1663

units returned 132, when expecting 0
 1663: exit FAILED
== Contents of files in the log/3/ directory after test 1663
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1663 ./unit/units unit1663 - > log/3/stdout1663 2> log/3/stderr1663
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1663
=== End of file server.cmd
=== Start of file valgrind1663
 ==171544== 
 ==171544== Process terminating with default action of signal 4 (SIGILL)
 ==171544==  Illegal opcode at address 0x4091F7F
 ==171544==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171544==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171544==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171544==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1663
test 1664 [unit tests for strparse.c string parsing functions]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1664 ./unit/units unit1664 - > log/21/stdout1664 2> log/21/stderr1664

 1664: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:28:55.731727309 +0000
+++ log/21/check-generated	2026-10-15 19:28:55.725918108 +0000
@@ -1,209 +0,0 @@
-curlx_str_word[LF]
-0: ("word") 0, "word" [4], line 4[LF]
-1: ("word ") 0, "word" [4], line 4[LF]
-2: (" word ") 2, "" [0], line 0[LF]
-3: ("wo rd") 0, "wo" [2], line 2[LF]
-4: ("word(") 0, "word(" [5], line 5[LF]
-5: ("wor(d") 0, "wor(d" [5], line 5[LF]
-6: ("perfect") 0, "perfect" [7], line 7[LF]
-7: ("") 2, "" [0], line 0[LF]
-8: ("longerth") 1, "" [0], line 0[LF]
-curlx_str_until[LF]
-0: ("word") 0, "wor" [3], line 3[LF]
-1: ("word ") 0, "wor" [3], line 3[LF]
-2: (" word ") 0, " wor" [4], line 4[LF]
-3: ("wo rd") 0, "wo r" [4], line 4[LF]
-4: ("word(") 0, "wor" [3], line 3[LF]
-5: ("wor(d") 0, "wor(" [4], line 4[LF]
-6: ("perfect") 0, "perfect" [7], line 7[LF]
-7: ("") 2, "" [0], line 0[LF]
-8: ("longerth") 1, "" [0], line 0[LF]
-curlx_str_quotedword[LF]
-0: (""word"") 0, "word" [4], line 6[LF]
-1: (""word") 4, "" [0], line 0[LF]
-2: ("word"") 3, "" [0], line 0[LF]
-3: (""word""") 0, "word" [4], line 6[LF]
-4: (""word" ") 0, "word" [4], line 6[LF]
-5: (" "word"") 3, "" [0], line 0[LF]
-6: (""perfect"") 0, "perfect" [7], line 9[LF]
-7: (""p r e t"") 0, "p r e t" [7], line 9[LF]
-8: (""perfec\"") 1, "" [0], line 0[LF]
-9: (""trail\""") 0, "trail\"" [7], line 9[LF]
-10: (""trail2\""") 1, "" [0], line 0[LF]
-11: (""trail33\""") 1, "" [0], line 0[LF]
-12: (""0\\\\\\"") 0, "0\\\\\\" [7], line 9[LF]
-13: (""1\\\\\\\"") 1, "" [0], line 0[LF]
-14: ("""") 0, "" [0], line 2[LF]
-15: ("") 3, "" [0], line 0[LF]
-16: (""longerth"") 1, "" [0], line 0[LF]
-curlx_str_single[LF]
-0: ("a") 0, line 1[LF]
-1: ("aa") 0, line 1[LF]
-2: ("A") 5, line 0[LF]
-3: ("b") 5, line 0[LF]
-4: ("\") 5, line 0[LF]
-5: (" ") 5, line 0[LF]
-6: ("") 5, line 0[LF]
-curlx_str_singlespace[LF]
-0: ("a") 5, line 0[LF]
-1: ("aa") 5, line 0[LF]
-2: ("A") 5, line 0[LF]
-3: ("b") 5, line 0[LF]
-4: ("\") 5, line 0[LF]
-5: (" ") 0, line 1[LF]
-6: ("%09") 5, line 0[LF]
-7: ("[LF]
-") 5, line 0[LF]
-8: ("") 5, line 0[LF]
-curlx_str_number[LF]
-0: ("1") 0, [1] line 1[LF]
-1: ("10000") 7, [0] line 0[LF]
-2: ("1234") 0, [1234] line 4[LF]
-3: ("1235") 0, [1235] line 4[LF]
-4: ("1236") 7, [0] line 0[LF]
-5: ("01234") 0, [1234] line 5[LF]
-6: ("00000000000000000000000000001234") 0, [1234] line 32[LF]
-7: ("0123 345") 0, [123] line 4[LF]
-8: ("0123O345") 0, [123] line 4[LF]
-9: ("-12") 8, [0] line 0[LF]
-10: (" 123") 8, [0] line 0[LF]
-11: ("") 8, [0] line 0[LF]
-curlx_str_number varying max[LF]
-0: ("00") max 8 == 0, [0][LF]
-1: ("1") max 8 == 0, [1][LF]
-2: ("1") max 1 == 0, [1][LF]
-3: ("2") max 1 == 7, [0][LF]
-4: ("2") max 2 == 0, [2][LF]
-5: ("5") max 6 == 0, [5][LF]
-6: ("000000000000000000000006") max 6 == 0, [6][LF]
-7: ("7") max 6 == 7, [0][LF]
-8: ("8") max 6 == 7, [0][LF]
-9: ("9") max 8 == 7, [0][LF]
-10: ("10") max 10 == 0, [10][LF]
-11: ("11") max 10 == 7, [0][LF]
-12: ("12") max 10 == 7, [0][LF]
-curlx_str_hex varying max[LF]
-0: ("00") max 8 == 0, [0][LF]
-1: ("1") max 8 == 0, [1][LF]
-2: ("1") max 1 == 0, [1][LF]
-3: ("2") max 1 == 7, [0][LF]
-4: ("2") max 2 == 0, [2][LF]
-5: ("5") max 6 == 0, [5][LF]
-6: ("000000000000000000000006") max 6 == 0, [6][LF]
-7: ("7") max 6 == 7, [0][LF]
-8: ("8") max 6 == 7, [0][LF]
-9: ("9") max 8 == 7, [0][LF]
-10: ("a") max 14 == 0, [10][LF]
-11: ("b") max 14 == 0, [11][LF]
-12: ("c") max 14 == 0, [12][LF]
-13: ("d") max 14 == 0, [13][LF]
-14: ("e") max 14 == 0, [14][LF]
-15: ("f") max 14 == 7, [0][LF]
-16: ("f") max 15 == 0, [15][LF]
-17: ("10") max 16 == 0, [16][LF]
-18: ("11") max 16 == 7, [0][LF]
-19: ("12") max 16 == 7, [0][LF]
-curlx_str_octal varying max[LF]
-0: ("00") max 4 == 0, [0][LF]
-1: ("1") max 4 == 0, [1][LF]
-2: ("1") max 4 == 0, [1][LF]
-3: ("2") max 4 == 0, [2][LF]
-4: ("3") max 4 == 0, [3][LF]
-5: ("4") max 4 == 0, [4][LF]
-6: ("5") max 4 == 7, [0][LF]
-7: ("000000000000000000000006") max 6 == 0, [6][LF]
-8: ("7") max 7 == 0, [7][LF]
-9: ("10") max 8 == 0, [8][LF]
-10: ("11") max 8 == 7, [0][LF]
-11: ("11") max 9 == 0, [9][LF]
-12: ("12") max 9 == 7, [0][LF]
-13: ("13") max 9 == 7, [0][LF]
-14: ("8") max 10 == 8, [0][LF]
-curlx_str_number / max[LF]
-0: ("9223372036854775807") 0, [9223372036854775807] line 19[LF]
-1: ("9223372036854775808") 7, [0] line 0[LF]
-2: ("18446744073709551615") 7, [0] line 0[LF]
-3: ("18446744073709551616") 7, [0] line 0[LF]
-4: ("18446744073709551617") 7, [0] line 0[LF]
-5: ("0123456799a") 0, [123456799] line 10[LF]
-6: ("0123456789") 0, [123456789] line 10[LF]
-7: ("123498760b") 0, [123498760] line 9[LF]
-8: ("1234987607611298232") 0, [1234987607611298232] line 19[LF]
-9: ("1111111111111111111") 0, [1111111111111111111] line 19[LF]
-10: ("2222222222222222222") 0, [2222222222222222222] line 19[LF]
-11: ("00000000000000000000000000000009223372036854775807") 0, [9223372036854775807] line 50[LF]
-12: ("3333333333333333333") 0, [3333333333333333333] line 19[LF]
-13: ("4444444444444444444") 0, [4444444444444444444] line 19[LF]
-14: ("5555555555555555555") 0, [5555555555555555555] line 19[LF]
-15: ("6666666666666666666") 0, [6666666666666666666] line 19[LF]
-16: ("7777777777777777777") 0, [7777777777777777777] line 19[LF]
-17: ("8888888888888888888") 0, [8888888888888888888] line 19[LF]
-18: ("999999999999999999") 0, [999999999999999999] line 18[LF]
-curlx_str_newline[LF]
-0: (%61) 6, line 0[LF]
-1: (%61) 6, line 0[LF]
-2: (%41) 6, line 0[LF]
-3: (%62) 6, line 0[LF]
-4: (%5c) 6, line 0[LF]
-5: (%20) 6, line 0[LF]
-6: (%0a) 0, line 1[LF]
-7: (%0d) 0, line 1[LF]
-8: (%0d) 0, line 1[LF]
-9: (%0c) 6, line 0[LF]
-10: (%00) 6, line 0[LF]
-curlx_str_hex[LF]
-0: ("1") 0, [1] line 1[LF]
-1: ("1000") 0, [4096] line 4[LF]
-2: ("1234") 0, [4660] line 4[LF]
-3: ("1235") 0, [4661] line 4[LF]
-4: ("1236") 7, [0] line 0[LF]
-5: ("01234") 0, [4660] line 5[LF]
-6: ("00000000000000000000000000001234") 0, [4660] line 32[LF]
-7: ("0123 345") 0, [291] line 4[LF]
-8: ("0123O345") 0, [291] line 4[LF]
-9: ("-12") 8, [0] line 0[LF]
-10: (" 123") 8, [0] line 0[LF]
-11: ("") 8, [0] line 0[LF]
-curlx_str_octal[LF]
-0: ("1") 0, [1] line 1[LF]
-1: ("1000") 0, [512] line 4[LF]
-2: ("1234") 0, [668] line 4[LF]
-3: ("1235") 0, [669] line 4[LF]
-4: ("1236") 7, [0] line 0[LF]
-5: ("01234") 0, [668] line 5[LF]
-6: ("00000000000000000000000000001234") 0, [668] line 32[LF]
-7: ("0123 345") 0, [83] line 4[LF]
-8: ("0123O345") 0, [83] line 4[LF]
-9: ("-12") 8, [0] line 0[LF]
-10: (" 123") 8, [0] line 0[LF]
-11: ("") 8, [0] line 0[LF]
-curlx_str_octal / max[LF]
-0: ("777777777777777777777") 0, [9223372036854775807] line 21[LF]
-1: ("1000000000000000000000") 7, [0] line 0[LF]
-2: ("111111111111111111111") 0, [1317624576693539401] line 21[LF]
-3: ("222222222222222222222") 0, [2635249153387078802] line 21[LF]
-4: ("333333333333333333333") 0, [3952873730080618203] line 21[LF]
-5: ("444444444444444444444") 0, [5270498306774157604] line 21[LF]
-6: ("555555555555555555555") 0, [6588122883467697005] line 21[LF]
-7: ("666666666666666666666") 0, [7905747460161236406] line 21[LF]
-curlx_str_hex / max[LF]
-0: ("7FFFFFFFFFFFFFFF") 0, [9223372036854775807] line 16[LF]
-1: ("8000000000000000") 7, [0] line 0[LF]
-2: ("1111111111111111") 0, [1229782938247303441] line 16[LF]
-3: ("2222222222222222") 0, [2459565876494606882] line 16[LF]
-4: ("3333333333333333") 0, [3689348814741910323] line 16[LF]
-5: ("4444444444444444") 0, [4919131752989213764] line 16[LF]
-6: ("5555555555555555") 0, [6148914691236517205] line 16[LF]
-7: ("6666666666666666") 0, [7378697629483820646] line 16[LF]
-8: ("7777777777777777") 0, [8608480567731124087] line 16[LF]
-9: ("888888888888888") 0, [614891469123651720] line 15[LF]
-10: ("999999999999999") 0, [691752902764108185] line 15[LF]
-11: ("aaaaaaaaAAAAAAA") 0, [768614336404564650] line 15[LF]
-12: ("bbbbbbbbBBBBBBB") 0, [845475770045021115] line 15[LF]
-13: ("BBBBBBBBbbbbbbb") 0, [845475770045021115] line 15[LF]
-14: ("ccccccccCCCCCCC") 0, [922337203685477580] line 15[LF]
-15: ("ddddddddDDDDDDD") 0, [999198637325934045] line 15[LF]
-16: ("eeeeeeeeEEEEEEE") 0, [1076060070966390510] line 15[LF]
-17: ("ffffffffFFFFFFF") 0, [1152921504606846975] line 15[LF]
-18: ("abcdef") 0, [11259375] line 6[LF]
-19: ("ABCDEF") 0, [11259375] line 6[LF]
== Contents of files in the log/21/ directory after test 1664
=== Start of file check-expected
 curlx_str_word[LF]
 0: ("word") 0, "word" [4], line 4[LF]
 1: ("word ") 0, "word" [4], line 4[LF]
 2: (" word ") 2, "" [0], line 0[LF]
 3: ("wo rd") 0, "wo" [2], line 2[LF]
 4: ("word(") 0, "word(" [5], line 5[LF]
 5: ("wor(d") 0, "wor(d" [5], line 5[LF]
 6: ("perfect") 0, "perfect" [7], line 7[LF]
 7: ("") 2, "" [0], line 0[LF]
 8: ("longerth") 1, "" [0], line 0[LF]
 curlx_str_until[LF]
 0: ("word") 0, "wor" [3], line 3[LF]
 1: ("word ") 0, "wor" [3], line 3[LF]
 2: (" word ") 0, " wor" [4], line 4[LF]
 3: ("wo rd") 0, "wo r" [4], line 4[LF]
 4: ("word(") 0, "wor" [3], line 3[LF]
 5: ("wor(d") 0, "wor(" [4], line 4[LF]
 6: ("perfect") 0, "perfect" [7], line 7[LF]
 7: ("") 2, "" [0], line 0[LF]
 8: ("longerth") 1, "" [0], line 0[LF]
 curlx_str_quotedword[LF]
 0: (""word"") 0, "word" [4], line 6[LF]
 1: (""word") 4, "" [0], line 0[LF]
 2: ("word"") 3, "" [0], line 0[LF]
 3: (""word""") 0, "word" [4], line 6[LF]
 4: (""word" ") 0, "word" [4], line 6[LF]
 5: (" "word"") 3, "" [0], line 0[LF]
 6: (""perfect"") 0, "perfect" [7], line 9[LF]
 7: (""p r e t"") 0, "p r e t" [7], line 9[LF]
 8: (""perfec\"") 1, "" [0], line 0[LF]
 9: (""trail\""") 0, "trail\"" [7], line 9[LF]
 10: (""trail2\""") 1, "" [0], line 0[LF]
 11: (""trail33\""") 1, "" [0], line 0[LF]
 12: (""0\\\\\\"") 0, "0\\\\\\" [7], line 9[LF]
 13: (""1\\\\\\\"") 1, "" [0], line 0[LF]
 14: ("""") 0, "" [0], line 2[LF]
 15: ("") 3, "" [0], line 0[LF]
 16: (""longerth"") 1, "" [0], line 0[LF]
 curlx_str_single[LF]
 0: ("a") 0, line 1[LF]
 1: ("aa") 0, line 1[LF]
 2: ("A") 5, line 0[LF]
 3: ("b") 5, line 0[LF]
 4: ("\") 5, line 0[LF]
 5: (" ") 5, line 0[LF]
 6: ("") 5, line 0[LF]
 curlx_str_singlespace[LF]
 0: ("a") 5, line 0[LF]
 1: ("aa") 5, line 0[LF]
 2: ("A") 5, line 0[LF]
 3: ("b") 5, line 0[LF]
 4: ("\") 5, line 0[LF]
 5: (" ") 0, line 1[LF]
 6: ("%09") 5, line 0[LF]
 7: ("[LF]
 ") 5, line 0[LF]
 8: ("") 5, line 0[LF]
 curlx_str_number[LF]
 0: ("1") 0, [1] line 1[LF]
 1: ("10000") 7, [0] line 0[LF]
 2: ("1234") 0, [1234] line 4[LF]
 3: ("1235") 0, [1235] line 4[LF]
 4: ("1236") 7, [0] line 0[LF]
 5: ("01234") 0, [1234] line 5[LF]
 6: ("00000000000000000000000000001234") 0, [1234] line 32[LF]
 7: ("0123 345") 0, [123] line 4[LF]
 8: ("0123O345") 0, [123] line 4[LF]
 9: ("-12") 8, [0] line 0[LF]
 10: (" 123") 8, [0] line 0[LF]
 11: ("") 8, [0] line 0[LF]
 curlx_str_number varying max[LF]
 0: ("00") max 8 == 0, [0][LF]
 1: ("1") max 8 == 0, [1][LF]
 2: ("1") max 1 == 0, [1][LF]
 3: ("2") max 1 == 7, [0][LF]
 4: ("2") max 2 == 0, [2][LF]
 5: ("5") max 6 == 0, [5][LF]
 6: ("000000000000000000000006") max 6 == 0, [6][LF]
 7: ("7") max 6 == 7, [0][LF]
 8: ("8") max 6 == 7, [0][LF]
 9: ("9") max 8 == 7, [0][LF]
 10: ("10") max 10 == 0, [10][LF]
 11: ("11") max 10 == 7, [0][LF]
 12: ("12") max 10 == 7, [0][LF]
 curlx_str_hex varying max[LF]
 0: ("00") max 8 == 0, [0][LF]
 1: ("1") max 8 == 0, [1][LF]
 2: ("1") max 1 == 0, [1][LF]
 3: ("2") max 1 == 7, [0][LF]
 4: ("2") max 2 == 0, [2][LF]
 5: ("5") max 6 == 0, [5][LF]
 6: ("000000000000000000000006") max 6 == 0, [6][LF]
 7: ("7") max 6 == 7, [0][LF]
 8: ("8") max 6 == 7, [0][LF]
 9: ("9") max 8 == 7, [0][LF]
 10: ("a") max 14 == 0, [10][LF]
 11: ("b") max 14 == 0, [11][LF]
 12: ("c") max 14 == 0, [12][LF]
 13: ("d") max 14 == 0, [13][LF]
 14: ("e") max 14 == 0, [14][LF]
 15: ("f") max 14 == 7, [0][LF]
 16: ("f") max 15 == 0, [15][LF]
 17: ("10") max 16 == 0, [16][LF]
 18: ("11") max 16 == 7, [0][LF]
 19: ("12") max 16 == 7, [0][LF]
 curlx_str_octal varying max[LF]
 0: ("00") max 4 == 0, [0][LF]
 1: ("1") max 4 == 0, [1][LF]
 2: ("1") max 4 == 0, [1][LF]
 3: ("2") max 4 == 0, [2][LF]
 4: ("3") max 4 == 0, [3][LF]
 5: ("4") max 4 == 0, [4][LF]
 6: ("5") max 4 == 7, [0][LF]
 7: ("000000000000000000000006") max 6 == 0, [6][LF]
 8: ("7") max 7 == 0, [7][LF]
 9: ("10") max 8 == 0, [8][LF]
 10: ("11") max 8 == 7, [0][LF]
 11: ("11") max 9 == 0, [9][LF]
 12: ("12") max 9 == 7, [0][LF]
 13: ("13") max 9 == 7, [0][LF]
 14: ("8") max 10 == 8, [0][LF]
 curlx_str_number / max[LF]
 0: ("9223372036854775807") 0, [9223372036854775807] line 19[LF]
 1: ("9223372036854775808") 7, [0] line 0[LF]
 2: ("18446744073709551615") 7, [0] line 0[LF]
 3: ("18446744073709551616") 7, [0] line 0[LF]
 4: ("18446744073709551617") 7, [0] line 0[LF]
 5: ("0123456799a") 0, [123456799] line 10[LF]
 6: ("0123456789") 0, [123456789] line 10[LF]
 7: ("123498760b") 0, [123498760] line 9[LF]
 8: ("1234987607611298232") 0, [1234987607611298232] line 19[LF]
 9: ("1111111111111111111") 0, [1111111111111111111] line 19[LF]
 10: ("2222222222222222222") 0, [2222222222222222222] line 19[LF]
 11: ("00000000000000000000000000000009223372036854775807") 0, [9223372036854775807] line 50[LF]
 12: ("3333333333333333333") 0, [3333333333333333333] line 19[LF]
 13: ("4444444444444444444") 0, [4444444444444444444] line 19[LF]
 14: ("5555555555555555555") 0, [5555555555555555555] line 19[LF]
 15: ("6666666666666666666") 0, [6666666666666666666] line 19[LF]
 16: ("7777777777777777777") 0, [7777777777777777777] line 19[LF]
 17: ("8888888888888888888") 0, [8888888888888888888] line 19[LF]
 18: ("999999999999999999") 0, [999999999999999999] line 18[LF]
 curlx_str_newline[LF]
 0: (%61) 6, line 0[LF]
 1: (%61) 6, line 0[LF]
 2: (%41) 6, line 0[LF]
 3: (%62) 6, line 0[LF]
 4: (%5c) 6, line 0[LF]
 5: (%20) 6, line 0[LF]
 6: (%0a) 0, line 1[LF]
 7: (%0d) 0, line 1[LF]
 8: (%0d) 0, line 1[LF]
 9: (%0c) 6, line 0[LF]
 10: (%00) 6, line 0[LF]
 curlx_str_hex[LF]
 0: ("1") 0, [1] line 1[LF]
 1: ("1000") 0, [4096] line 4[LF]
 2: ("1234") 0, [4660] line 4[LF]
 3: ("1235") 0, [4661] line 4[LF]
 4: ("1236") 7, [0] line 0[LF]
 5: ("01234") 0, [4660] line 5[LF]
 6: ("00000000000000000000000000001234") 0, [4660] line 32[LF]
 7: ("0123 345") 0, [291] line 4[LF]
 8: ("0123O345") 0, [291] line 4[LF]
 9: ("-12") 8, [0] line 0[LF]
 10: (" 123") 8, [0] line 0[LF]
 11: ("") 8, [0] line 0[LF]
 curlx_str_octal[LF]
 0: ("1") 0, [1] line 1[LF]
 1: ("1000") 0, [512] line 4[LF]
 2: ("1234") 0, [668] line 4[LF]
 3: ("1235") 0, [669] line 4[LF]
 4: ("1236") 7, [0] line 0[LF]
 5: ("01234") 0, [668] line 5[LF]
 6: ("00000000000000000000000000001234") 0, [668] line 32[LF]
 7: ("0123 345") 0, [83] line 4[LF]
 8: ("0123O345") 0, [83] line 4[LF]
 9: ("-12") 8, [0] line 0[LF]
 10: (" 123") 8, [0] line 0[LF]
 11: ("") 8, [0] line 0[LF]
 curlx_str_octal / max[LF]
 0: ("777777777777777777777") 0, [9223372036854775807] line 21[LF]
 1: ("1000000000000000000000") 7, [0] line 0[LF]
 2: ("111111111111111111111") 0, [1317624576693539401] line 21[LF]
 3: ("222222222222222222222") 0, [2635249153387078802] line 21[LF]
 4: ("333333333333333333333") 0, [3952873730080618203] line 21[LF]
 5: ("444444444444444444444") 0, [5270498306774157604] line 21[LF]
 6: ("555555555555555555555") 0, [6588122883467697005] line 21[LF]
 7: ("666666666666666666666") 0, [7905747460161236406] line 21[LF]
 curlx_str_hex / max[LF]
 0: ("7FFFFFFFFFFFFFFF") 0, [9223372036854775807] line 16[LF]
 1: ("8000000000000000") 7, [0] line 0[LF]
 2: ("1111111111111111") 0, [1229782938247303441] line 16[LF]
 3: ("2222222222222222") 0, [2459565876494606882] line 16[LF]
 4: ("3333333333333333") 0, [3689348814741910323] line 16[LF]
 5: ("4444444444444444") 0, [4919131752989213764] line 16[LF]
 6: ("5555555555555555") 0, [6148914691236517205] line 16[LF]
 7: ("6666666666666666") 0, [7378697629483820646] line 16[LF]
 8: ("7777777777777777") 0, [8608480567731124087] line 16[LF]
 9: ("888888888888888") 0, [614891469123651720] line 15[LF]
 10: ("999999999999999") 0, [691752902764108185] line 15[LF]
 11: ("aaaaaaaaAAAAAAA") 0, [768614336404564650] line 15[LF]
 12: ("bbbbbbbbBBBBBBB") 0, [845475770045021115] line 15[LF]
 13: ("BBBBBBCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1674 ./unit/units unit1674 log/11/hsts1674 > log/11/stdout1674 2> log/11/stderr1674
BBbbbbbbb") 0, [845475770045021115] line 15[LF]
 14: ("ccccccccCCCCCCC") 0, [922337203685477580] line 15[LF]
 15: ("ddddddddDDDDDDD") 0, [999198637325934045] line 15[LF]
 16: ("eeeeeeeeEEEEEEE") 0, [1076060070966390510] line 15[LF]
 17: ("ffffffffFFFFFFF") 0, [1152921504606846975] line 15[LF]
 18: ("abcdef") 0, [11259375] line 6[LF]
 19: ("ABCDEF") 0, [11259375] line 6[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1664 ./unit/units unit1664 - > log/21/stdout1664 2> log/21/stderr1664
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1664
=== End of file server.cmd
=== Start of file valgrind1664
 ==171670== 
 ==171670== Process terminating with default action of signal 4 (SIGILL)
 ==171670==  Illegal opcode at address 0x4091F7F
 ==171670==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171670==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171670==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171670==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1664
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1666 ./unit/units unit1666 - > log/22/stdout1666 2> log/22/stderr1666
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1676 ./unit/units unit1676 - > log/23/stdout1676 2> log/23/stderr1676
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1667 ./unit/units unit1667 - > log/19/stdout1667 2> log/19/stderr1667
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1668 ./unit/units unit1668 - > log/7/stdout1668 2> log/7/stderr1668
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1675 ./unit/units unit1675 - > log/24/stdout1675 2> log/24/stderr1675
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1669 ./unit/units unit1669 log/8/1669 > log/8/stdout1669 2> log/8/stderr1669
CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/managen -d log/24 -I /startdir/src/curl/tests/../include mainpage option1.md option2.md > log/24/stdout1705 2> log/24/stderr1705
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1659 ../src/curl -q --output log/1/curl1659.out  --include --trace-ascii log/1/trace1659 --trace-time file://localhost/startdir/src/build-curl/tests/log/1/test1659.txt --connect-to localhost:8080:localhost:8080 > log/1/stdout1659 2> log/1/stderr1659
setenv CURL_TIME = 1548369261
test 1674 [HSTS load more than 10k entries from file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1674 ./unit/units unit1674 log/11/hsts1674 > log/11/stdout1674 2> log/11/stderr1674

 1674: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:28:55.749353531 +0000
+++ log/11/check-generated	2026-10-15 19:28:55.745918251 +0000
@@ -1 +0,0 @@
-OK[LF]
== Contents of files in the log/11/ directory after test 1674
=== Start of file check-expected
 OK[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1674 ./unit/units unit1674 log/11/hsts1674 > log/11/stdout1674 2> log/11/stderr1674
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1674
=== End of file server.cmd
=== Start of file valgrind1674
 ==171927== 
 ==171927== Process terminating with default action of signal 4 (SIGILL)
 ==171927==  Illegal opcode at address 0x4091F7F
 ==171927==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171927==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171927==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171927==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1674
test 1666 [encodeOID unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1666 ./unit/units unit1666 - > log/22/stdout1666 2> log/22/stderr1666

units returned 132, when expecting 0
 1666: exit FAILED
== Contents of files in the log/22/ directory after test 1666
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1666 ./unit/units unit1666 - > log/22/stdout1666 2> log/22/stderr1666
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1666
=== End of file server.cmd
=== Start of file valgrind1666
 ==171693== 
 ==171693== Process terminating with default action of signal 4 (SIGILL)
 ==171693==  Illegal opcode at address 0x4091F7F
 ==171693==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171693==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171693==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171693==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1666
test 1676 [x509 DH public key parameter extraction]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1676 ./unit/units unit1676 - > log/23/stdout1676 2> log/23/stderr1676

units returned 132, when expecting 0
 1676: exit FAILED
== Contents of files in the log/23/ directory after test 1676
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1676 ./unit/units unit1676 - > log/23/stdout1676 2> log/23/stderr1676
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1676
=== End of file server.cmd
=== Start of file valgrind1676
 ==172149== 
 ==172149== Process terminating with default action of signal 4 (SIGILL)
 ==172149==  Illegal opcode at address 0x4091F7F
 ==172149==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==172149==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==172149==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==172149==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1676
test 1667 [ASN1tostr unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1667 ./unit/units unit1667 - > log/19/stdout1667 2> log/19/stderr1667

units returned 132, when expecting 0
 1667: exit FAILED
== Contents of files in the log/19/ directory after test 1667
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1667 ./unit/units unit1667 - > log/19/stdout1667 2> log/19/stderr1667
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1667
=== End of file server.cmd
=== Start of file valgrind1667
 ==171775== 
 ==171775== Process terminating with default action of signal 4 (SIGILL)
 ==171775==  Illegal opcode at address 0x4091F7F
 ==171775==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171775==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171775==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171775==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1667
test 1668 [ftp_213_date unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1668 ./unit/units unit1668 - > log/7/stdout1668 2> log/7/stderr1668

units returned 132, when expecting 0
 1668: exit FAILED
== Contents of files in the log/7/ directory after test 1668
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1668 ./unit/units unit1668 - > log/7/stdout1668 2> log/7/stderr1668
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1668
=== End of file server.cmd
=== Start of file valgrind1668
 ==171790== 
 ==171790== Process terminating with default action of signal 4 (SIGILL)
 ==171790==  Illegal opcode at address 0x4091F7F
 ==171790==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171790==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171790==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171790==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1668
test 1675 [URL API unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1675 ./unit/units unit1675 - > log/24/stdout1675 2> log/24/stderr1675

units returned 132, when expecting 0
 1675: exit FAILED
== Contents of files in the log/24/ directory after test 1675
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1675 ./unit/units unit1675 - > log/24/stdout1675 2> log/24/stderr1675
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1675
=== End of file server.cmd
=== Start of file valgrind1675
 ==172067== 
 ==172067== Process terminating with default action of signal 4 (SIGILL)
 ==172067==  Illegal opcode at address 0x4091F7F
 ==172067==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==172067==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==172067==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==172067==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1675
setenv CURL_TIME = 1548369261
test 1669 [alt-svc load cache with >5000 entries]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1669 ./unit/units unit1669 log/8/1669 > log/8/stdout1669 2> log/8/stderr1669

units returned 132, when expecting 0
 1669: exit FAILED
== Contents of files in the log/8/ directory after test 1669
=== Start of file 1669
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
=== File too long: 3609 lines omitted here
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
 h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 0
=== End of file 1669
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1669 ./unit/units unit1669 log/8/1669 > log/8/stdout1669 2> log/8/stderr1CMD (0): /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/managen -I /startdir/src/curl/tests/../include -d log/8 ascii option1.md option2.md > log/8/stdout1706 2> log/8/stderr1706
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1665 ../src/curl -q --output log/10/curl1665.out  --include --trace-ascii log/10/trace1665 --trace-time http://127.0.0.1:40913/1665 > log/10/stdout1665 2> log/10/stderr1665
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1670 ../src/curl -q --include --trace-ascii log/15/trace1670 --trace-time http://127.0.0.1:40321/1670 -w '%header{etag} %header{nope} %header{DATE}\n' -o log/15/1670.out > log/15/stdout1670 2> log/15/stderr1670
669
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1669
=== End of file server.cmd
=== Start of file valgrind1669
 ==171917== 
 ==171917== Process terminating with default action of signal 4 (SIGILL)
 ==171917==  Illegal opcode at address 0x4091F7F
 ==171917==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==171917==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==171917==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==171917==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1669
test 1659 [--connect-to when using file:// URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1659 ../src/curl -q --output log/1/curl1659.out  --include --trace-ascii log/1/trace1659 --trace-time file://localhost/startdir/src/build-curl/tests/log/1/test1659.txt --connect-to localhost:8080:localhost:8080 > log/1/stdout1659 2> log/1/stderr1659

curl returned 132, when expecting 0
 1659: exit FAILED
== Contents of files in the log/1/ directory after test 1659
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1659 ../src/curl -q --output log/1/curl1659.out  --include --trace-ascii log/1/trace1659 --trace-time file://localhost/startdir/src/build-curl/tests/log/1/test1659.txt --connect-to localhost:8080:localhost:8080 > log/1/stdout1659 2> log/1/stderr1659
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1659
=== End of file server.cmd
=== Start of file test1659.txt
 1234567890
=== End of file test1659.txt
=== Start of file valgrind1659
 ==171434== 
 ==171434== Process terminating with default action of signal 4 (SIGILL)
 ==171434==  Illegal opcode at address 0x492B75F
 ==171434==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==171434==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==171434==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==171434==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==171434==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==171434==    by 0x49908EB: curl_version_info (version.c:600)
 ==171434==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==171434==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==171434==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==171434==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1659
test 1705 [managen makes man page]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/managen -d log/24 -I /startdir/src/curl/tests/../include mainpage option1.md option2.md > log/24/stdout1705 2> log/24/stderr1705
 valgrind SKIPPED
sr-----e--- OK (1574 out of 1890, remaining: 00:36, took 0.219s, duration: 02:59)
test 1706 [managen makes ASCII page]
/usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/../scripts/managen -I /startdir/src/curl/tests/../include -d log/8 ascii option1.md option2.md > log/8/stdout1706 2> log/8/stderr1706
 valgrind SKIPPED
sr-----e--- OK (1575 out of 1890, remaining: 00:35, took 0.086s, duration: 02:59)
test 1665 [HTTP with only headers and no final CRLF separator]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1665 ../src/curl -q --output log/10/curl1665.out  --include --trace-ascii log/10/trace1665 --trace-time http://127.0.0.1:40913/1665 > log/10/stdout1665 2> log/10/stderr1665

 1665: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1665
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1665 ../src/curl -q --output log/10/curl1665.out  --include --trace-ascii log/10/trace1665 --trace-time http://127.0.0.1:40913/1665 > log/10/stdout1665 2> log/10/stderr1665
=== End of file commands.log
=== Start of file http_server.log
 19:28:53.869865 ====> Client connect
 19:28:53.869904 accept_connection 3 returned 4
 19:28:53.870057 Read 93 bytes
 19:28:53.870071 Process 93 bytes request
 19:28:53.870084 Got request: GET /verifiedserver HTTP/1.1
 19:28:53.870093 Are-we-friendly question received
 19:28:53.870125 Wrote request (93 bytes) input to log/10/server.input
 19:28:53.870143 Identifying ourselves as friends
 19:28:53.870217 Response sent (56 bytes) and written to log/10/server.response
 19:28:53.870228 special request received, no persistency
 19:28:53.870236 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 59132 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1665
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind1665
 ==171696== 
 ==171696== Process terminating with default action of signal 4 (SIGILL)
 ==171696==  Illegal opcode at address 0x492B75F
 ==171696==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==171696==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==171696==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==171696==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==171696==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==171696==    by 0x49908EB: curl_version_info (version.c:600)
 ==171696==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==171696==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==171696==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==171696==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1665
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1672 ../src/curl -q --output log/9/curl1672.out  --include --trace-ascii log/9/trace1672 --trace-time --netrc --netrc-file log/9/netrc1672 http://127.0.0.1:43733/1672 > log/9/stdout1672 2> log/9/stderr1672
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1680 ../src/curl -q --include --trace-ascii log/18/trace1680 --trace-time http://127.0.0.1:43739/1680 -o log/18/exist1680 --clobber > log/18/stdout1680 2> log/18/stderr1680
test 1670 [-w individual header output]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1670 ../src/curl -q --include --trace-ascii log/15/trace1670 --trace-time http://127.0.0.1:40321/1670 -w '%header{etag} %header{nope} %header{DATE}\n' -o log/15/1670.out > log/15/stdout1670 2> log/15/stderr1670

 1670: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:28:56.906981849 +0000
+++ log/15/check-generated	2026-10-15 19:28:56.902763630 +0000
@@ -1 +0,0 @@
-"21025-dc7-39462498"  Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
== Contents of files in the log/15/ directory after test 1670
=== Start of file check-expected
 "21025-dc7-39462498"  Tue, 09 Nov 2010 14:49:00 GMT[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1670 ../src/curl -q --include --trace-ascii log/15/trace1670 --trace-time http://127.0.0.1:40321/1670 -w '%header{etag} %header{nope} %header{DATE}\n' -o log/15/1670.out > log/15/stdout1670 2> log/15/stderr1670
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.199878 ====> Client connect
 19:28:55.199911 accept_connection 3 returned 4
 19:28:55.199930 Read 93 bytes
 19:28:55.199940 Process 93 bytes request
 19:28:55.199952 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.199960 Are-we-friendly question received
 19:28:55.199985 Wrote request (93 bytes) input to log/15/server.input
 19:28:55.200004 Identifying ourselves as friends
 19:28:55.200061 Response sent (56 bytes) and written to log/15/server.response
 19:28:55.200070 special request received, no persistency
 19:28:55.200078 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 49506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1670
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1670
 ==171906== 
 ==171906== Process terminating with default action of signal 4 (SIGILL)
 ==171906==  Illegal opcode at address 0x492B75F
 ==171906==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==171906==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==171906==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==171906==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==171906==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==171906==    by 0x49908EB: curl_version_info (version.c:600)
 ==171906==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==171906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==171906==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==171906==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1670
test 1672 [netrc parser skips macdef even with broken quote]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1672 ../src/curl -q --output log/9/curl1672.out  --include --trace-ascii log/9/trace1672 --trace-time --netrc --netrc-file log/9/netrc1672 http://127.0.0.1:43733/1672 > log/9/stdout1672 2> log/9/stderr1672

 1672: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1672
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1672 ../src/curl -q --output log/9/curl1672.out  --include --trace-ascii log/9/trace1672 --trace-time --netrc --netrc-file log/9/netrc1672 http://127.0.0.1:43733/1672 > log/9/stdout1672 2> log/9/stderr1672
=== End of file commands.log
=== Start of file http_server.log
 19:28:54.270986 ====> Client connect
 19:28:54.271048 accept_connection 3 returned 4
 19:28:54.271073 Read 93 bytes
 19:28:54.271083 Process 93 bytes request
 19:28:54.271095 Got request: GET /verifiedserver HTTP/1.1
 19:28:54.271103 Are-we-friendly question received
 19:28:54.271132 Wrote request (93 bytes) input to log/9/server.input
 19:28:54.271148 Identifying ourselves as friends
 19:28:54.271220 Response sent (56 bytes) and written to log/9/server.response
 19:28:54.271228 special request received, no persistency
 19:28:54.271236 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 37100 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file netrc1672
 macdef testmacro
 	bin
 	cd "broken quote
 	put password.bin
 	quit
 machine 127.0.0.1 login user1 password passwd1
=== End of file netrc1672
=== Start of file server.cmd
 Testnum 1672
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1672
 ==171969== 
 ==171969== Process terminating with default action of signal 4 (SIGILL)
 ==171969==  Illegal opcode at address 0x492B75F
 ==171969==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==171969==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==171969==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==171969==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==171969==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==171969==    by 0x49908EB: curl_version_info (version.c:600)
 ==171969==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==171969==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==171969==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==171969==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1672
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1693 ./unit/units unit1693 - > log/22/stdout1693 2> log/22/stderr1693
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1673 ../src/curl -q --output log/5/curl1673.out  --include --trace-ascii log/5/trace1673 --trace-time http://127.0.0.1:47/1673 --retry 5 --retry-all-errors --upload-file AAAAAAAAAAA > log/5/stdout1673 2> log/5/stderr1673
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1681 ../src/curl -q --include --trace-ascii log/20/trace1681 --trace-time http://127.0.0.1:41689/1681 -o log/20/exist1681 --no-clobber -w '%{filename_effective}\n' > log/20/stdout1681 2> log/20/stderr1681
test 1680 [HTTP GET with explicit clobber]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1680 ../src/curl -q --include --trace-ascii log/18/trace1680 --trace-time http://127.0.0.1:43739/1680 -o log/18/exist1680 --clobber > log/18/stdout1680 2> log/18/stderr1680

 1680: output (log/18/exist1680) FAILED:
--- log/18/check-expected	2026-10-15 19:28:56.935946713 +0000
+++ log/18/check-generated	2026-10-15 19:28:56.935910034 +0000
@@ -1,6 +1 @@
-HTTP/1.0 200 OK[LF]
-Connection: close[LF]
-Content-Type: text/plain[LF]
-Content-Length: 4[LF]
-[LF]
-foo[LF]
+to be overwritten[LF]
== Contents of files in the log/18/ directory after test 1680
=== Start of file check-expected
 HTTP/1.0 200 OK[LF]
 Connection: close[LF]
 Content-Type: text/plain[LF]
 Content-Length: 4[LF]
 [LF]
 foo[LF]
=== End of file check-expected
=== Start of file check-generated
 to be overwritten[LF]
=== End of file check-generated
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1680 ../src/curl -q --include --trace-ascii log/18/trace1680 --trace-time http://127.0.0.1:43739/1680 -o log/18/exist1680 --clobber > log/18/stdout1680 2> log/18/stderr1680
=== End of file commands.log
=== Start of file exist1680
 to be overwritten
=== End of file exist1680
=== Start of file http_server.log
 19:28:55.647642 ====> Client connect
 19:28:55.647680 accept_connection 3 returned 4
 19:28:55.647701 Read 93 bytes
 19:28:55.647711 Process 93 bytes request
 19:28:55.647723 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.647732 Are-we-friendly question received
 19:28:55.647757 Wrote request (93 bytes) input to log/18/server.input
 19:28:55.647775 Identifying ourselves as friends
 19:28:55.647840 Response sent (56 bytes) and written to log/18/server.response
 19:28:55.647849 special request received, no persistency
 19:28:55.647856 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45914 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1680
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1680
 ==172372== 
 ==172372== Process terminating with default action of signal 4 (SIGILL)
 ==172372==  Illegal opcode at address 0x492B75F
 ==172372==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172372==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172372==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172372==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172372==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172372==    by 0x49908EB: curl_version_info (version.c:600)
 ==172372==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172372==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172372==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172372==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1680
test 1693 [MQTT partial sends, would-block, polling and packet ordering]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1693 ./unit/units unit1693 - > log/22/stdout1693 2> log/22/stderr1693

units returned 132, when expecting 0
 1693: exit FAILED
== Contents of files in the log/22/ directory after test 1693
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1693 ./unit/units unit1693 - > log/22/stdout1693 2> log/22/stderr1693
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1693
=== End of file server.cmd
=== Start of file valgrind1693
 ==172866== 
 ==172866== Process terminating with default action of signal 4 (SIGILL)
 ==172866==  Illegal opcode at address 0x4091F7F
 ==172866==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==172866==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==172866==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==172866==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1693
test 1673 [HTTP retry upload with missing upload file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1673 ../src/curl -q --output log/5/curl1673.out  --include --trace-ascii log/5/trace1673 --trace-time http://127.0.0.1:47/1673 --retry 5 --retry-all-errors --upload-file AAAAAAAAAAA > log/5/stdout1673 2> log/5/stderr1673

curl returned 132, when expecting 26
 1673: exit FAILED
== Contents of files in the log/5/ directory after test 1673
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1673 ../src/curl -q --output log/5/curl1673.out  --include --trace-ascii log/5/trace1673 --trace-time http://127.0.0.1:47/1673 --retry 5 --retry-all-errors --upload-file AAAAAAAAAAA > log/5/stdout1673 2> log/5/stderr1673
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1673
=== End of file server.cmd
=== Start of file valgrind1673
 ==171914== 
 ==171914== Process terminating with default action of signal 4 (SIGILL)
 ==171914==  Illegal opcode at address 0x492B75F
 ==171914==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==171914==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==171914==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==171914==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==171914==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==171914==    by 0x49908EB: curl_version_info (version.c:600)
 ==171914==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==171914==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==171914==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==171914==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1673
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1688 ./libtest/libtests lib567 rtsp://127.0.0.1:33101/1688 > log/3/stdout1688 2> log/3/stderr1688
test 1681 [HTTP GET without clobber]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1681 ../src/curl -q --include --trace-ascii log/20/trace1681 --trace-time http://127.0.0.1:41689/1681 -o log/20/exist1681 --no-clobber -w '%{filename_effective}\n' > log/20/stdout1681 2> log/20/stderr1681

 1681: stdout FAILED:
--- log/20/check-expected	2026-10-15 19:28:57.319921416 +0000
+++ log/20/check-generated	2026-10-15 19:28:57.315927803 +0000
@@ -1 +0,0 @@
-log/20/exist1681.1[CR][LF]
== Contents of files in the log/20/ directory after test 1681
=== Start of file check-expected
 log/20/exist1681.1[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1681 ../src/curl -q --include --trace-ascii log/20/trace1681 --trace-time http://127.0.0.1:41689/1681 -o log/20/exist1681 --no-clobber -w '%{filename_effective}\n' > log/20/stdout1681 2> log/20/stderr1681
=== End of file commands.log
=== Start of file exist1681
 to stay the same
=== End of file exist1681
=== Start of file http_server.log
 19:28:54.657638 ====> Client connect
 19:28:54.657872 accept_connection 3 returned 4
 19:28:54.657900 Read 93 bytes
 19:28:54.657911 Process 93 bytes request
 19:28:54.657925 Got request: GET /verifiedserver HTTP/1.1
 19:28:54.657934 Are-we-friendly question received
 19:28:54.657969 Wrote request (93 bytes) input to log/20/server.input
 19:28:54.657989 Identifying ourselves as friends
 19:28:54.658067 Response sent (57 bytes) and written to log/20/server.response
 19:28:54.658085 special request received, no persistency
 19:28:54.658094 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 53828 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1681
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind1681
 ==172377== 
 ==172377== Process terminating with default action of signal 4 (SIGILL)
 ==172377==  Illegal opcode at address 0x492B75F
 ==172377==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172377==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172377==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172377==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172377==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172377==    by 0x49908EB: curl_version_info (version.c:600)
 ==172377==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172377==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172377==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172377==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1681
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1671 ../src/curl -q --include --trace-ascii log/17/trace1671 --trace-time http://127.0.0.1:35993/1671 -w '%{header_json}\n' -o log/17/1671.out > log/17/stdout1671 2> log/17/stderr1671
test 1688 [RTSP OPTIONS response with a body, CURLOPT_NOBODY set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1688 ./libtest/libtests lib567 rtsp://127.0.0.1:33101/1688 > log/3/stdout1688 2> log/3/stderr1688

 1688: stdout FAILED:
--- log/3/check-expected	2026-10-15 19:28:57.356719474 +0000
+++ log/3/check-generated	2026-10-15 19:28:57.352594658 +0000
@@ -1,6 +0,0 @@
-RTSP/1.0 200 OK[LF]
-Server: RTSPD/libcurl-test[LF]
-CSeq: 1[LF]
-Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE[LF]
-Content-Length: 18[LF]
-[LF]
== Contents of files in the log/3/ directory after test 1688
=== Start of file check-expected
 RTSP/1.0 200 OK[LF]
 Server: RTSPD/libcurl-test[LF]
 CSeq: 1[LF]
 Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE[LF]
 Content-Length: 18[LF]
 [LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1688 ./libtest/libtests lib567 rtsp://127.0.0.1:33101/1688 > log/3/stdout1688 2> log/3/stderr1688
=== End of file commands.log
=== Start of file rtsp_server.log
 19:28:55.410989 ====> Client connect
 19:28:55.411036 Read 93 bytes
 19:28:55.411049 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1
 Host: 127.0.0.1:33101
 User-Agent: curl/8.23.0
 Accept: */*
 ]
 19:28:55.411080 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.411090 Are-we-friendly question received
 19:28:55.411131 Wrote request (93 bytes) input to log/3/server.input
 19:28:55.411150 Send response number -2 part 0
 19:28:55.411159 Identifying ourselves as friends
 19:28:55.411218 Sent off 69 bytes
 19:28:55.411234 Response sent (69 bytes) and written to log/3/server.response
 19:28:55.411243 special request received, no persistency
 19:28:55.411251 ====> Client disconnect
=== End of file rtsp_server.log
=== Start of file rtsp_verify.log
 *   Trying 127.0.0.1:33101...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33101) from 127.0.0.1 port 41214 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33101
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 30
 < 
 { [30 bytes data]
 * Connection #0 to host 127.0.0.1:33101 left intact
=== End of file rtsp_verify.log
=== Start of file rtsp_verify.out
 RTSP_SERVER WE ROOLZ: 111152
=== End of file rtsp_verify.out
=== Start of file server.cmd
 Testnum 1688
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 30
 RTSP_SERVER WE ROOLZ: 111152
=== End of file server.response
=== Start of file valgrind1688
 ==172831== 
 ==172831== Process terminating with default action of signal 4 (SIGILL)
 ==172831==  Illegal opcode at address 0x51CC63F
 ==172831==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==172831==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==172831==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==172831==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1688
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1686 ./libtest/libtests lib1686 127.0.0.1 38821 > log/13/stdout1686 2> log/13/stderr1686
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1684 ../src/curl -q --output log/4/curl1684.out  --include --trace-ascii log/4/trace1684 --trace-time ftp://127.0.0.1:39739/1684 -z "apr 1 2025 08:00:00" > log/4/stdout1684 2> log/4/stderr1684
test 1671 [-w header JSON output]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1671 ../src/curl -q --include --trace-ascii log/17/trace1671 --trace-time http://127.0.0.1:35993/1671 -w '%{header_json}\n' -o log/17/1671.out > log/17/stdout1671 2> log/17/stderr1671

 1671: stdout FAILED:
--- log/17/check-expected	2026-10-15 19:28:57.487080575 +0000
+++ log/17/check-generated	2026-10-15 19:28:57.482595319 +0000
@@ -1,11 +0,0 @@
-{"date":["Tue, 09 Nov 2010 14:49:00 GMT"],[CR][LF]
-"server":["test-server/fake"],[CR][LF]
-"last-modified":["Tue, 13 Jun 2000 12:10:00 GMT"],[CR][LF]
-"etag":["\"21025-dc7-39462498\""],[CR][LF]
-"accept-ranges":["bytes"],[CR][LF]
-"set-cookie":["firstcookie=want1; path=/","2cookie=want2; path=/","cookie3=want3; path=/"],[CR][LF]
-"funny-head":["yesyes"],[CR][LF]
-"content-type":["text/html"],[CR][LF]
-"content-length":["6"],[CR][LF]
-"connection":["close"][CR][LF]
-}[CR][LF]
== Contents of files in the log/17/ directory after test 1671
=== Start of file check-expected
 {"date":["Tue, 09 Nov 2010 14:49:00 GMT"],[CR][LF]
 "server":["test-server/fake"],[CR][LF]
 "last-modified":["Tue, 13 Jun 2000 12:10:00 GMT"],[CR][LF]
 "etag":["\"21025-dc7-39462498\""],[CR][LF]
 "accept-ranges":["bytes"],[CR][LF]
 "set-cookie":["firstcookie=want1; path=/","2cookie=want2; path=/","cookie3=want3; path=/"],[CR][LF]
 "funny-head":["yesyes"],[CR][LF]
 "content-type":["text/html"],[CR][LF]
 "content-length":["6"],[CR][LF]
 "connection":["close"][CR][LF]
 }[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1671 ../src/curl -q --include --trace-ascii log/17/trace1671 --trace-time http://127.0.0.1:35993/1671 -w '%{header_json}\n' -o log/17/1671.out > log/17/stdout1671 2> log/17/stderr1671
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.269157 ====> Client connect
 19:28:55.269654 accept_connection 3 returned 4
 19:28:55.269681 Read 93 bytes
 19:28:55.269692 Process 93 bytes request
 19:28:55.269703 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.269711 Are-we-friendly question received
 19:28:55.269743 Wrote request (93 bytes) input to log/17/server.input
 19:28:55.269759 Identifying ourselves as friends
 19:28:55.269827 Response sent (56 bytes) and written to log/17/server.response
 19:28:55.269836 special request received, no persistency
 19:28:55.269845 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 38378 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1671
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1671
 ==171980== 
 ==171980== Process terminating with default action of signal 4 (SIGILL)
 ==171980==  Illegal opcode at address 0x492B75F
 ==171980==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==171980==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==171980==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==171980==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==171980==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==171980==    by 0x49908EB: curl_version_info (version.c:600)
 ==171980==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==171980==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==171980==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==171980==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1671
test 1686 [HTTP Digest to different origins and switching credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1686 ./libtest/libtests lib1686 127.0.0.1 38821 > log/13/stdout1686 2> log/13/stderr1686

 1686: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1686
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1686 ./libtest/libtests lib1686 127.0.0.1 38821 > log/13/stdout1686 2> log/13/stderr1686
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.370358 ====> Client connect
 19:28:55.370391 accept_connection 3 returned 4
 19:28:55.370414 Read 93 bytes
 19:28:55.370426 Process 93 bytes request
 19:28:55.370439 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.370448 Are-we-friendly question received
 19:28:55.370474 Wrote request (93 bytes) input to log/13/server.input
 19:28:55.370491 Identifying ourselves as friends
 19:28:55.370553 Response sent (56 bytes) and written to log/13/server.response
 19:28:55.370562 special request received, no persistency
 19:28:55.370571 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 57566 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1686
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1686
 ==172807== 
 ==172807== Process terminating with default action of signal 4 (SIGILL)
 ==172807==  Illegal opcode at address 0x51CC63F
 ==172807==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==172807==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==172807==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==172807==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1686
test 1684 [FTP with malformed MDTM response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1684 ../src/curl -q --output log/4/curl1684.out  --include --trace-ascii log/4/trace1684 --trace-time ftp://127.0.0.1:39739/1684 -z "apr 1 2025 08:00:00" > log/4/stdout1684 2> log/4/stderr1684

 1684: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 1684
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1684 ../src/curl -q --output log/4/curl1684.out  --include --trace-ascii log/4/trace1684 --trace-time ftp://127.0.0.1:39739/1684 -z "apr 1 2025 08:00:00" > log/4/stdout1684 2> log/4/stderr1684
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:55.322120 ====> Client connect
 19:28:55.322325 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  |CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1685 ../src/curl -q --output log/6/curl1685.out  --include --trace-ascii log/6/trace1685 --trace-time http://127.0.0.1:33935/ -c log/6/jar1685.txt > log/6/stdout1685 2> log/6/stderr1685
 (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:55.322627 < "USER anonymous"
 19:28:55.322657 > "331 We are happy you popped in![CR][LF]"
 19:28:55.322800 < "PASS ftp@example.com"
 19:28:55.322822 > "230 Welcome you silly person[CR][LF]"
 19:28:55.322952 < "PWD"
 19:28:55.322978 > "257 "/" is current directory[CR][LF]"
 19:28:55.323115 < "EPSV"
 19:28:55.323138 ====> Passive DATA channel requested by client
 19:28:55.323150 DATA sockfilt for passive data channel starting...
 19:28:55.329925 DATA sockfilt for passive data channel started (pid 172576)
 19:28:55.330083 DATA sockfilt for passive data channel listens on port 41933
 19:28:55.330139 > "229 Entering Passive Mode (|||41933|)[CR][LF]"
 19:28:55.330164 Client has been notified that upcoming DATA connection is awaited on port 41933
 19:28:55.330497 Client connects to port 41933
 19:28:55.330553 ====> Client established passive DATA connection on port 41933
 19:28:55.330664 < "TYPE I"
 19:28:55.330705 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:55.332848 < "SIZE verifiedserver"
 19:28:55.333548 > "213 17[CR][LF]"
 19:28:55.333606 < "RETR verifiedserver"
 19:28:55.333724 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:55.333820 =====> Closing passive DATA connection...
 19:28:55.333837 Server disconnects passive DATA connection
 19:28:55.333999 Server disconnected passive DATA connection
 19:28:55.334023 DATA sockfilt for passive data channel quits (pid 172576)
 19:28:55.334254 DATA sockfilt for passive data channel quit (pid 172576)
 19:28:55.334277 =====> Closed passive DATA connection
 19:28:55.334354 > "226 File transfer complete[CR][LF]"
 19:28:55.376454 < "QUIT"
 19:28:55.377734 > "221 bye bye baby[CR][LF]"
 19:28:55.377779 MAIN sockfilt said DISC
 19:28:55.377845 ====> Client disconnected
 19:28:55.377932 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:54.924254 ====> Client connect
 19:28:54.924602 Received DATA (on stdin)
 19:28:54.924614 > 146 bytes data, server => client
 19:28:54.924624 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:54.924633 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:54.924641 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:54.924755 < 16 bytes data, client => server
 19:28:54.924766 'USER anonymous\r\n'
 19:28:54.924924 Received DATA (on stdin)
 19:28:54.924934 > 33 bytes data, server => client
 19:28:54.924943 '331 We are happy you popped in!\r\n'
 19:28:54.924991 < 22 bytes data, client => server
 19:28:54.925000 'PASS ftp@example.com\r\n'
 19:28:54.925086 Received DATA (on stdin)
 19:28:54.925095 > 30 bytes data, server => client
 19:28:54.925104 '230 Welcome you silly person\r\n'
 19:28:54.925147 < 5 bytes data, client => server
 19:28:54.925155 'PWD\r\n'
 19:28:54.925241 Received DATA (on stdin)
 19:28:54.925250 > 30 bytes data, server => client
 19:28:54.925259 '257 "/" is current directory\r\n'
 19:28:54.925311 < 6 bytes data, client => server
 19:28:54.925320 'EPSV\r\n'
 19:28:54.932446 Received DATA (on stdin)
 19:28:54.932463 > 39 bytes data, server => client
 19:28:54.932474 '229 Entering Passive Mode (|||41933|)\r\n'
 19:28:54.932673 < 8 bytes data, client => server
 19:28:54.932690 'TYPE I\r\n'
 19:28:54.932981 Received DATA (on stdin)
 19:28:54.932994 > 33 bytes data, server => client
 19:28:54.933005 '200 I modify TYPE as you wanted\r\n'
 19:28:54.933066 < 21 bytes data, client => server
 19:28:54.933081 'SIZE verifiedserver\r\n'
 19:28:54.935138 Received DATA (on stdin)
 19:28:54.935150 > 8 bytes data, server => client
 19:28:54.935698 '213 17\r\n'
 19:28:54.935757 < 21 bytes data, client => server
 19:28:54.935768 'RETR verifiedserver\r\n'
 19:28:54.935887 Received DATA (on stdin)
 19:28:54.935898 > 29 bytes data, server => client
 19:28:54.935914 '150 Binary junk (17 bytes).\r\n'
 19:28:54.936548 Received DATA (on stdin)
 19:28:54.936560 > 28 bytes data, server => client
 19:28:54.936577 '226 File transfer complete\r\n'
 19:28:54.978519 < 6 bytes data, client => server
 19:28:54.978551 'QUIT\r\n'
 19:28:54.978754 Received DATA (on stdin)
 19:28:54.978767 > 18 bytes data, server => client
 19:28:54.978784 '221 bye bye baby\r\n'
 19:28:54.979938 ====> Client disconnect
 19:28:54.980045 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:55.931762 Running IPv4 version
 19:28:55.931868 Listening on port 41933
 19:28:55.931917 Wrote pid 172576 to log/4/server/ftp_sockdata.pid
 19:28:55.932120 Received PING (on stdin)
 19:28:55.932245 Received PORT (on stdin)
 19:28:55.932714 ====> Client connect
 19:28:55.936106 Received DATA (on stdin)
 19:28:55.936117 > 17 bytes data, server => client
 19:28:55.936127 'WE ROOLZ: 85249\r\n'
 19:28:55.936194 Received DISC (on stdin)
 19:28:55.936208 ====> Client forcibly disconnected
 19:28:55.936296 Received QUIT (on stdin)
 19:28:55.936306 quits
 19:28:55.936367 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 1684
=== End of file server.cmd
=== Start of file valgrind1684
 ==172613== 
 ==172613== Process terminating with default action of signal 4 (SIGILL)
 ==172613==  Illegal opcode at address 0x492B75F
 ==172613==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172613==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172613==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172613==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172613==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172613==    by 0x49908EB: curl_version_info (version.c:600)
 ==172613==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172613==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172613==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172613==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1684
test 1685 [HTTP, reject cookie with tab in path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1685 ../src/curl -q --output log/6/curl1685.out  --include --trace-ascii log/6/trace1685 --trace-time http://127.0.0.1:33935/ -c log/6/jar1685.txt > log/6/stdout1685 2> log/6/stderr1685

 1685: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1685
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1685 ../src/curl -q --output log/6/curl1685.out  --include --trace-ascii log/6/trace1685 --trace-time http://127.0.0.1:33935/ -c log/6/jar1685.txt > log/6/stdout1685 2> log/6/stderr1685
=== End of file commands.log
=== Start of file http_server.log
 19:28:54.928829 ====> Client connect
 19:28:54.928859 accept_connection 3 returned 4
 19:28:54.928878 Read 93 bytes
 19:28:54.928887 Process 93 bytes request
 19:28:54.928898 Got request: GET /verifiedserver HTTP/1.1
 19:28:54.928907 Are-we-friendly question received
 19:28:54.928931 Wrote request (93 bytes) input to log/6/server.input
 19:28:54.928945 Identifying ourselves as friends
 19:28:54.929001 Response sent (56 bytes) and written to log/6/server.response
 19:28:54.929009 special request received, no persistency
 19:28:54.929017 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 44326 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1685
=== End of file server.cmdCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1679 ../src/curl -q --output log/2/curl1679.out  --include --trace-ascii log/2/trace1679 --trace-time http://127.0.0.1:34531/we/want/1679 --libcurl log/2/test1679.c --insecure --next http://127.0.0.1:34531/we/want/1679 > log/2/stdout1679 2> log/2/stderr1679
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1682 ../src/curl -q --include --trace-ascii log/12/trace1682 --trace-time http://127.0.0.1:40921/1682 --output-dir log/12 -o exist1682 --no-clobber > log/12/stdout1682 2> log/12/stderr1682

=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1685
 ==172590== 
 ==172590== Process terminating with default action of signal 4 (SIGILL)
 ==172590==  Illegal opcode at address 0x492B75F
 ==172590==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172590==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172590==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172590==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172590==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172590==    by 0x49908EB: curl_version_info (version.c:600)
 ==172590==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172590==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172590==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172590==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1685
test 1679 [--libcurl resets SSL verification after --next]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1679 ../src/curl -q --output log/2/curl1679.out  --include --trace-ascii log/2/trace1679 --trace-time http://127.0.0.1:34531/we/want/1679 --libcurl log/2/test1679.c --insecure --next http://127.0.0.1:34531/we/want/1679 > log/2/stdout1679 2> log/2/stderr1679

 1679: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1679
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1679 ../src/curl -q --output log/2/curl1679.out  --include --trace-ascii log/2/trace1679 --trace-time http://127.0.0.1:34531/we/want/1679 --libcurl log/2/test1679.c --insecure --next http://127.0.0.1:34531/we/want/1679 > log/2/stdout1679 2> log/2/stderr1679
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.587652 ====> Client connect
 19:28:55.587692 accept_connection 3 returned 4
 19:28:55.587714 Read 93 bytes
 19:28:55.587723 Process 93 bytes request
 19:28:55.587737 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.587745 Are-we-friendly question received
 19:28:55.587770 Wrote request (93 bytes) input to log/2/server.input
 19:28:55.587792 Identifying ourselves as friends
 19:28:55.587871 Response sent (56 bytes) and written to log/2/server.response
 19:28:55.587884 special request received, no persistency
 19:28:55.587893 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1679
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1679
 ==172328== 
 ==172328== Process terminating with default action of signal 4 (SIGILL)
 ==172328==  Illegal opcode at address 0x492B75F
 ==172328==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172328==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172328==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172328==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172328==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172328==    by 0x49908EB: curl_version_info (version.c:600)
 ==172328==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172328==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172328==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172328==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1679
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1677 ../src/curl -q --include --trace-ascii log/16/trace1677 --trace-time http://127.0.0.1:35903/1677 -d "testdata" > log/16/stdout1677 2> log/16/stderr1677
test 1682 [HTTP GET without clobber and --output-dir]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1682 ../src/curl -q --include --trace-ascii log/12/trace1682 --trace-time http://127.0.0.1:40921/1682 --output-dir log/12 -o exist1682 --no-clobber > log/12/stdout1682 2> log/12/stderr1682

 1682: output (log/12/exist1682.1) FAILED:
--- log/12/check-expected	2026-10-15 19:28:57.809305256 +0000
+++ log/12/check-generated	2026-10-15 19:28:57.805930299 +0000
@@ -1,6 +0,0 @@
-HTTP/1.0 200 OK[LF]
-Connection: close[LF]
-Content-Type: text/plain[LF]
-Content-Length: 4[LF]
-[LF]
-foo[LF]
== Contents of files in the log/12/ directory after test 1682
=== Start of file check-expected
 HTTP/1.0 200 OK[LF]
 Connection: close[LF]
 Content-Type: text/plain[LF]
 Content-Length: 4[LF]
 [LF]
 foo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1682 ../src/curl -q --include --trace-ascii log/12/trace1682 --trace-time http://127.0.0.1:40921/1682 --output-dir log/12 -o exist1682 --no-clobber > log/12/stdout1682 2> log/12/stderr1682
=== End of file commands.log
=== Start of file exist1682
 to stay the same
=== End of file exist1682
=== Start of file http_server.log
 19:28:54.891210 ====> Client connect
 19:28:54.891247 accept_connection 3 returned 4
 19:28:54.891356 Read 93 bytes
 19:28:54.891368 Process 93 bytes request
 19:28:54.891382 Got request: GET /verifiedserver HTTP/1.1
 19:28:54.891390 Are-we-friendly question received
 19:28:54.891423 Wrote request (93 bytes) input to log/12/server.input
 19:28:54.891439 Identifying ourselves as friends
 19:28:54.891612 Response sent (56 bytes) and written to log/12/server.response
 19:28:54.891622 special request received, no persistency
 19:28:54.891630 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59652 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1682
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1682
 ==172572== 
 ==172572== Process terminating with default action of signal 4 (SIGILL)
 ==172572==  Illegal opcode at address 0x492B75F
 ==172572==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172572==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172572==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172572==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172572==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172572==    by 0x49908EB: curl_version_info (version.c:600)
 ==172572==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172572==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172572==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172572==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1682
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1692 ../src/curl -q --output log/11/curl1692.out  --include --trace-ascii log/11/trace1692 --trace-time --ipfs-gateway http://127.0.0.1:40989/private/gateway ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/%2f..%2f..%2f..%2f..%2f..%2fadmin/config > log/11/stdout1692 2> log/11/stderr1692
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1687 ../src/curl -q --output log/14/curl1687.out  --include --trace-ascii log/14/trace1687 --trace-time http://127.0.0.1:45467/we/want/1687 -H "X-First: yes" --libcurl log/14/test1687.c --next http://127.0.0.1:45467/we/want/1687 > log/14/stdout1687 2> log/14/stderr1687
test 1677 [HTTP POST response with both chunked and zero Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1677 ../src/curl -q --include --trace-ascii log/16/trace1677 --trace-time http://127.0.0.1:35903/1677 -d "testdata" > log/16/stdout1677 2> log/16/stderr1677

 1677: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:28:57.825966075 +0000
+++ log/16/check-generated	2026-10-15 19:28:57.822597050 +0000
@@ -1,7 +0,0 @@
-HTTP/1.1 200 OK[CR][LF]
-content-type: text/json[CR][LF]
-connection: keep-alive[CR][LF]
-content-length: 0[CR][LF]
-transfer-encoding: chunked[CR][LF]
-[CR][LF]
-random data in first chunk another data in second chunk third and last chunk
== Contents of files in the log/16/ directory after test 1677
=== Start of file check-expected
 HTTP/1.1 200 OK[CR][LF]
 content-type: text/json[CR][LF]
 connection: keep-alive[CR][LF]
 content-length: 0[CR][LF]
 transfer-encoding: chunked[CR][LF]
 [CR][LF]
 random data in first chunk another data in second chunk third and last chunk
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1677 ../src/curl -q --include --trace-ascii log/16/trace1677 --trace-time http://127.0.0.1:35903/1677 -d "testdata" > log/16/stdout1677 2> log/16/stderr1677
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.492132 ====> Client connect
 19:28:55.492161 accept_connection 3 returned 4
 19:28:55.492181 Read 93 bytes
 19:28:55.492190 Process 93 bytes request
 19:28:55.492205 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.492214 Are-we-friendly question received
 19:28:55.492239 Wrote request (93 bytes) input to log/16/server.input
 19:28:55.492254 Identifying ourselves as friends
 19:28:55.492307 Response sent (56 bytes) and written to log/16/server.response
 19:28:55.492315 special request received, no persistency
 19:28:55.492322 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 39604 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 writedelay: 500
 Testnum 1677
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1677
 ==172271== 
 ==172271== Process terminating with default action of signal 4 (SIGILL)
 ==172271==  Illegal opcode at address 0x492B75F
 ==172271==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172271==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172271==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172271==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172271==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172271==    by 0x49908EB: curl_version_info (version.c:600)
 ==172271==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172271==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172271==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172271==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1677
test 1692 [IPNS path with encoded slashes and dotdot stays under the gateway]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1692 ../src/curl -q --output log/11/curl1692.out  --include --trace-ascii log/11/trace1692 --trace-time --ipfs-gateway http://127.0.0.1:40989/private/gateway ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/%2f..%2f..%2f..%2f..%2f..%2fadmin/config > log/11/stdout1692 2> log/11/stderr1692

 1692: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1692
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1692 ../src/curl -q --output log/11/curl1692.out  --include --trace-ascii log/11/trace1692 --trace-time --ipfs-gateway http://127.0.0.1:40989/private/gateway ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/%2f..%2f..%2f..%2f..%2f..%2fadmin/config > log/11/stdout1692 2> log/11/stderr1692
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.447635 ====> Client connect
 19:28:55.447670 accept_connection 3 returned 4
 19:28:55.447695 Read 93 bytes
 19:28:55.447705 Process 93 bytes request
 19:28:55.447717 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.447726 Are-we-friendly question received
 19:28:55.447781 Wrote request (93 bytes) input to log/11/server.input
 19:28:55.447798 Identifying ourselves as friends
 19:28:55.447885 Response sent (56 bytes) and written to log/11/server.response
 19:28:55.447896 special request received, no persistency
 19:28:55.447904 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 49412 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1692
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1692
 ==172849== 
 ==172849== Process terminating with default action of signal 4 (SIGILL)
 ==172849==  Illegal opcode at address 0x492B75F
 ==172849==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172849==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172849==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172849==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172849==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172849==    by 0x49908EB: curl_version_info (version.c:600)
 ==172849==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172849==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172849==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172849==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1692
test 1687 [--libcurl resets the handle between --next operations]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1687 ../src/curl -q --output log/14/curl1687.out  --include --trace-ascii log/14/trace1687 --trace-time http://127.0.0.1:45467/we/want/1687 -H "X-First: yes" --libcurl log/14/test1687.c --next http://127.0.0.1:45467/we/want/1687 > log/14/stdout1687 2> log/14/stderr1687

 1687: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1687
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --nCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1691 ../src/curl -q --output log/21/curl1691.out  --include --trace-ascii log/21/trace1691 --trace-time --ipfs-gateway http://127.0.0.1:39881/private/gateway ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/%2f..%2f..%2f..%2f..%2f..%2fadmin/config > log/21/stdout1691 2> log/21/stderr1691
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1720 ./tunit/tunits tool1720 - > log/9/stdout1720 2> log/9/stderr1720
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1704 ../src/curl -q --output log/7/curl1704.out  --include --trace-ascii log/7/trace1704 --trace-time http://127.0.0.1:40859/1704 --http2 > log/7/stdout1704 2> log/7/stderr1704
um-callers=16 --log-file=log/14/valgrind1687 ../src/curl -q --output log/14/curl1687.out  --include --trace-ascii log/14/trace1687 --trace-time http://127.0.0.1:45467/we/want/1687 -H "X-First: yes" --libcurl log/14/test1687.c --next http://127.0.0.1:45467/we/want/1687 > log/14/stdout1687 2> log/14/stderr1687
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.414803 ====> Client connect
 19:28:55.414839 accept_connection 3 returned 4
 19:28:55.414859 Read 93 bytes
 19:28:55.414868 Process 93 bytes request
 19:28:55.414880 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.414889 Are-we-friendly question received
 19:28:55.414913 Wrote request (93 bytes) input to log/14/server.input
 19:28:55.414929 Identifying ourselves as friends
 19:28:55.414996 Response sent (56 bytes) and written to log/14/server.response
 19:28:55.415005 special request received, no persistency
 19:28:55.415013 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 59362 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1687
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1687
 ==172825== 
 ==172825== Process terminating with default action of signal 4 (SIGILL)
 ==172825==  Illegal opcode at address 0x492B75F
 ==172825==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172825==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172825==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172825==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172825==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172825==    by 0x49908EB: curl_version_info (version.c:600)
 ==172825==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172825==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172825==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172825==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1687
test 1691 [IPFS path with encoded slashes and dotdot stays under the gateway]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1691 ../src/curl -q --output log/21/curl1691.out  --include --trace-ascii log/21/trace1691 --trace-time --ipfs-gateway http://127.0.0.1:39881/private/gateway ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/%2f..%2f..%2f..%2f..%2f..%2fadmin/config > log/21/stdout1691 2> log/21/stderr1691

 1691: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1691
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1691 ../src/curl -q --output log/21/curl1691.out  --include --trace-ascii log/21/trace1691 --trace-time --ipfs-gateway http://127.0.0.1:39881/private/gateway ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/%2f..%2f..%2f..%2f..%2f..%2fadmin/config > log/21/stdout1691 2> log/21/stderr1691
=== End of file commands.log
=== Start of file http_server.log
 19:28:55.474297 ====> Client connect
 19:28:55.474336 accept_connection 3 returned 4
 19:28:55.474360 Read 93 bytes
 19:28:55.474369 Process 93 bytes request
 19:28:55.474383 Got request: GET /verifiedserver HTTP/1.1
 19:28:55.474391 Are-we-friendly question received
 19:28:55.474419 Wrote request (93 bytes) input to log/21/server.input
 19:28:55.474436 Identifying ourselves as friends
 19:28:55.474525 Response sent (56 bytes) and written to log/21/server.response
 19:28:55.474534 special request received, no persistency
 19:28:55.474543 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 42782 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1691
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1691
 ==172886== 
 ==172886== Process terminating with default action of signal 4 (SIGILL)
 ==172886==  Illegal opcode at address 0x492B75F
 ==172886==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==172886==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==172886==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==172886==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==172886==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==172886==    by 0x49908EB: curl_version_info (version.c:600)
 ==172886==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==172886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==172886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==172886==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1691
test 1720 [create_dir_hierarchy()]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1720 ./tunit/tunits tool1720 - > log/9/stdout1720 2> log/9/stderr1720

tunits returned 132, when expecting 0
 1720: exit FAILED
== Contents of files in the log/9/ directory after test 1720
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1720 ./tunit/tunits tool1720 - > log/9/stdout1720 2> log/9/stderr1720
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1720
=== End of file server.cmd
=== Start of file valgrind1720
 ==173387== 
 ==173387== Process terminating with default action of signal 4 (SIGILL)
 ==173387==  Illegal opcode at address 0x48F863F
 ==173387==    at 0x48F863F: formatf.constprop.1 (mprintf.c:1115)
 ==173387==    by 0x48FC58B: curl_mvfprintf (mprintf.c:1482)
 ==173387==    by 0x48FC662: curl_mfprintf (mprintf.c:1493)
 ==173387==    by 0x40011A9: main (first.c:264)
=== End of file valgrind1720
test 1704 [HTTP/1 doing HTTP/2 Upgrade: getting an HTTP/2 101 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1704 ../src/curl -q --output log/7/curl1704.out  --include --trace-ascii log/7/trace1704 --trace-time http://127.0.0.1:40859/1704 --http2 > log/7/stdout1704 2> log/7/stderr1704

 1704: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1704
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1704 ../src/curl -q --output log/7/curl1704.out  --include --trace-ascii log/7/trace1704 --traceCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1744 ./libtest/libtests lib1744 http://127.0.0.1:33935/1744 127.0.0.1:45269 > log/6/stdout1744 2> log/6/stderr1744
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1712 ../src/curl -q --output log/1/curl1712.out  --include --trace-ascii log/1/trace1712 --trace-time http://127.0.0.1:38815/1712 --config log/1/config --silent > log/1/stdout1712 2> log/1/stderr1712
-time http://127.0.0.1:40859/1704 --http2 > log/7/stdout1704 2> log/7/stderr1704
=== End of file commands.log
=== Start of file http_server.log
 19:28:56.050492 ====> Client connect
 19:28:56.050526 accept_connection 3 returned 4
 19:28:56.050545 Read 93 bytes
 19:28:56.050554 Process 93 bytes request
 19:28:56.050567 Got request: GET /verifiedserver HTTP/1.1
 19:28:56.050576 Are-we-friendly question received
 19:28:56.050601 Wrote request (93 bytes) input to log/7/server.input
 19:28:56.050616 Identifying ourselves as friends
 19:28:56.051780 Response sent (56 bytes) and written to log/7/server.response
 19:28:56.051794 special request received, no persistency
 19:28:56.051802 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39698 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1704
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1704
 ==173169== 
 ==173169== Process terminating with default action of signal 4 (SIGILL)
 ==173169==  Illegal opcode at address 0x492B75F
 ==173169==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173169==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173169==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173169==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173169==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173169==    by 0x49908EB: curl_version_info (version.c:600)
 ==173169==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173169==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173169==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173169==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1704
test 1744 [SOCKS5 CURLAUTH_ONLY does not reuse an unauthenticated connection]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1744 ./libtest/libtests lib1744 http://127.0.0.1:33935/1744 127.0.0.1:45269 > log/6/stdout1744 2> log/6/stderr1744

 1744: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 1744
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1744 ./libtest/libtests lib1744 http://127.0.0.1:33935/1744 127.0.0.1:45269 > log/6/stdout1744 2> log/6/stderr1744
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.314294 ====> Client connect
 19:28:57.314332 accept_connection 3 returned 4
 19:28:57.314358 Read 93 bytes
 19:28:57.314368 Process 93 bytes request
 19:28:57.314380 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.314388 Are-we-friendly question received
 19:28:57.314416 Wrote request (93 bytes) input to log/6/server.input
 19:28:57.314433 Identifying ourselves as friends
 19:28:57.314520 Response sent (56 bytes) and written to log/6/server.response
 19:28:57.314531 special request received, no persistency
 19:28:57.314539 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 44332 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 method 0
 Testnum 1744
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1744
 ==174082== 
 ==174082== Process terminating with default action of signal 4 (SIGILL)
 ==174082==  Illegal opcode at address 0x51CC63F
 ==174082==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174082==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174082==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174082==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1744
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1714 ../src/curl -q --include --trace-ascii log/10/trace1714 --trace-time telnet://127.0.0.1:40913 --max-filesize 99995 <log/10/stdin-for-1714 > log/10/stdout1714 2> log/10/stderr1714
setenv COLUMNS = 10000
test 1712 [config file with argument using single quotes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1712 ../src/curl -q --output log/1/curl1712.out  --include --trace-ascii log/1/trace1712 --trace-time http://127.0.0.1:38815/1712 --config log/1/config --silent > log/1/stdout1712 2> log/1/stderr1712

 1712: stderr FAILED:
--- log/1/check-expected	2026-10-15 19:28:59.048204504 +0000
+++ log/1/check-generated	2026-10-15 19:28:59.042602168 +0000
@@ -1 +0,0 @@
-log/1/config:1 Option 'data' uses argument with leading single quote. It is probably a mistake. Consider double quotes. 
== Contents of files in the log/1/ directory after test 1712
=== Start of file check-expected
 log/1/config:1 Option 'data' uses argument with leading single quote. It is probably a mistake. Consider double quotes. 
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1712 ../src/curl -q --output log/1/curl1712.out  --include --trace-ascii log/1/trace1712 --trace-time http://127.0.0.1:38815/1712 --config log/1/config --silent > log/1/stdout1712 2> log/1/stderr1712
=== End of file commands.log
=== Start of file config
 data = 'arg-with-quote'
=== End of file config
=== Start of file http_server.log
 19:28:57.399196 ====> Client connect
 19:28:57.399234 accept_connection 3 returned 4
 19:28:57.399256 Read 93 bytes
 19:28:57.399265 Process 93 bytes request
 19:28:57.399277 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.399286 Are-we-friendly question received
 19:28:57.399318 Wrote request (93 bytes) input to log/1/server.input
 19:28:57.399336 Identifying ourselves as friends
 19:28:57.399410 Response sent (56 bytes) and written to log/1/server.response
 19:28:57.399421 special request received, no persistency
 19:28:57.399429 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 51994 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1712
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1712
 ==173282== 
 ==173282== Process terminating with default action of signal 4 (SIGILL)
 ==173282==  Illegal opcode at address 0x492B75F
 ==173282==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173282==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173282==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173282==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173282==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173282==    by 0x49908EB: curl_version_info (version.c:600)
 ==173282==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173282==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173282==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173282==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1712
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1743 ./libtest/libtests lib1742 http://127.0.0.1:32943/1743 127.0.0.1:44355 > log/4/stdout1743 2> log/4/stderr1743
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1711 ../src/curl -q --output log/24/curl1711.out  --include --trace-ascii log/24/trace1711 --trace-time smtp://127.0.0.1:40147/1711 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/24/email1711 > log/24/stdout1711 2> log/24/stderr1711
test 1714 [TELNET download with --max-filesize]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1714 ../src/curl -q --include --trace-ascii log/10/trace1714 --trace-time telnet://127.0.0.1:40913 --max-filesize 99995 <log/10/stdin-for-1714 > log/10/stdout1714 2> log/10/stderr1714

 1714: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:28:59.159269192 +0000
+++ log/10/check-generated	2026-10-15 19:28:59.149269161 +0000
@@ -1,5 +0,0 @@
-HTTP/1.0 200 OK swsclose[CR][LF]
-Content-Length: 330000[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-boring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the client
== Contents of files in the log/10/ directory after test 1714
=== Start of file check-expected
 HTTP/1.0 200 OK swsclose[CR][LF]
 Content-Length: 330000[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 boring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the clientboring data to send to the client
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1714 ../src/curl -q --include --trace-ascii log/10/trace1714 --trace-time telnet://127.0.0.1:40913 --max-filesize 99995 <log/10/stdin-for-1714 > log/10/stdout1714 2> log/10/stderr1714
=== End of file commands.log
=== Start of file http_server.log
 19:28:56.484318 ====> Client connect
 19:28:56.484362 accept_connection 3 returned 4
 19:28:56.486804 Read 93 bytes
 19:28:56.486825 Process 93 bytes request
 19:28:56.486837 Got request: GET /verifiedserver HTTP/1.1
 19:28:56.486846 Are-we-friendly question received
 19:28:56.486884 Wrote request (93 bytes) input to log/10/server.input
 19:28:56.486903 Identifying ourselves as friends
 19:28:56.486968 Response sent (56 bytes) and written to log/10/server.response
 19:28:56.486977 special request received, no persistency
 19:28:56.486985 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 59148 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1714
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file stdin-for-1714
 GET /this/for/1714 HTTP/1.0
=== End of file stdin-for-1714
=== Start of file valgrind1714
 ==173377== 
 ==173377== Process terminating with default action of signal 4 (SIGILL)
 ==173377==  Illegal opcode at address 0x492B75F
 ==173377==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173377==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173377==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173377==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173377==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173377==    by 0x49908EB: curl_version_info (version.c:600)
 ==173377==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173377==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173377==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173377==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1714
test 1743 [SOCKS5 CURLAUTH_ONLY rejects a proxy that selects no authentication]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1743 ./libtest/libtests lib1742 http://127.0.0.1:32943/1743 127.0.0.1:44355 > log/4/stdout1743 2> log/4/stderr1743

libtests returned 132, when expecting 97
 1743: exit FAILED
== Contents of files in the log/4/ directory after test 1743
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1743 ./libtest/libtests lib1742 http://127.0.0.1:32943/1743 127.0.0.1:44355 > log/4/stdout1743 2> log/4/stderr1743
=== End of file commands.log
=== Start of file http_server.log
 19:28:58.294293 ====> Client connect
 19:28:58.294335 accept_connection 3 returned 4
 19:28:58.294359 Read 93 bytes
 19:28:58.294368 Process 93 bytes request
 19:28:58.294381 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.294389 Are-we-friendly question received
 19:28:58.294416 Wrote request (93 bytes) input to log/4/server.input
 19:28:58.294432 Identifying ourselves as friends
 19:28:58.294506 Response sent (57 bytes) and written to log/4/server.response
 19:28:58.294515 special request received, no persistency
 19:28:58.294523 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:32943...
 * Established connection to 127.0.0.1 (127.0.0.1 port 32943) from 127.0.0.1 port 41636 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:32943
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:32943 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 165851
=== End of file http_verify.out
=== Start of file server.cmd
 method 0
 Testnum 1743
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 165851
=== End of file server.response
=== Start of file valgrind1743
 ==174041== 
 ==174041== Process terminating with default action of signal 4 (SIGILL)
 ==174041==  Illegal opcode at address 0x51CC63F
 ==174041==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174041==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174041==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174041==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1743
test 1711 [Send >64K over SMTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1711 ../src/curl -q --output log/24/curl1711.out  --include --trace-ascii log/24/trace1711 --trace-time smtp://127.0.0.1:40147/1711 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/24/email1711 > log/24/stdout1711 2> log/24/stderr1711

 1711: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1711
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1711 ../src/curl -q --output log/24/curl1711.out  --include --trace-ascii log/24/trace1711 --trace-time smtp://127.0.0.1:40147/1711 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/24/email1711 > log/24/stdout1711 2> log/24/stderr1711
=== End of file commands.log
=== Start of file email1711
 From: different
 To: another
 test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in bodCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1723 ../src/curl -q --output log/5/curl1723.out  --include --trace-ascii log/5/trace1723 --trace-time http://127.0.0.1:37089/1723 > log/5/stdout1723 2> log/5/stderr1723
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1745 ./libtest/libtests lib1745 ftp://127.0.0.1:38033/1745 127.0.0.1:36107 > log/2/stdout1745 2> log/2/stderr1745
y... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... test in body... 
=== End of file email1711
=== Start of file server.cmd
 Testnum 1711
=== End of file server.cmd
=== Start of file smtp_server.log
 19:28:56.774248 ====> Client connect
 19:28:56.774454 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:56.778912 < "EHLO verifiedserver"
 19:28:56.778961 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:28:56.779133 < "HELP"
 19:28:56.779167 > "214 WE ROOLZ: 127811[CR][LF]"
 19:28:56.779181 return proof we are we
 19:28:56.779369 < "QUIT"
 19:28:56.780524 > "221 curl ESMTP server signing off[CR][LF]"
 19:28:56.780553 MAIN sockfilt said DISC
 19:28:56.780615 ====> Client disconnected
 19:28:56.780692 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:28:57.376380 ====> Client connect
 19:28:57.376727 Received DATA (on stdin)
 19:28:57.376742 > 146 bytes data, server => client
 19:28:57.376753 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:57.376762 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:57.376771 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:57.380974 < 21 bytes data, client => server
 19:28:57.380996 'EHLO verifiedserver\r\n'
 19:28:57.381222 Received DATA (on stdin)
 19:28:57.381233 > 53 bytes data, server => client
 19:28:57.381243 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:28:57.381302 < 6 bytes data, client => server
 19:28:57.381311 'HELP\r\n'
 19:28:57.381435 Received DATA (on stdin)
 19:28:57.381444 > 22 bytes data, server => client
 19:28:57.381453 '214 WE ROOLZ: 127811\r\n'
 19:28:57.381545 < 6 bytes data, client => server
 19:28:57.381555 'QUIT\r\n'
 19:28:57.381630 Received DATA (on stdin)
 19:28:57.381639 > 35 bytes data, server => client
 19:28:57.381655 '221 curl ESMTP server signing off\r\n'
 19:28:57.382732 ====> Client disconnect
 19:28:57.382809 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file valgrind1711
 ==173270== 
 ==173270== Process terminating with default action of signal 4 (SIGILL)
 ==173270==  Illegal opcode at address 0x492B75F
 ==173270==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173270==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173270==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173270==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173270==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173270==    by 0x49908EB: curl_version_info (version.c:600)
 ==173270==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173270==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173270==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173270==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1711
test 1723 [HTTP with two chunked Transfer-Encoding not listed last]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1723 ../src/curl -q --output log/5/curl1723.out  --include --trace-ascii log/5/trace1723 --trace-time http://127.0.0.1:37089/1723 > log/5/stdout1723 2> log/5/stderr1723

 1723: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1723
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1723 ../src/curl -q --output log/5/curl1723.out  --include --trace-ascii log/5/trace1723 --trace-time http://127.0.0.1:37089/1723 > log/5/stdout1723 2> log/5/stderr1723
=== End of file commands.log
=== Start of file http_server.log
 19:28:56.702772 ====> Client connect
 19:28:56.702810 accept_connection 3 returned 4
 19:28:56.702834 Read 93 bytes
 19:28:56.702845 Process 93 bytes request
 19:28:56.702858 Got request: GET /verifiedserver HTTP/1.1
 19:28:56.702867 Are-we-friendly question received
 19:28:56.702898 Wrote request (93 bytes) input to log/5/server.input
 19:28:56.702916 Identifying ourselves as friends
 19:28:56.702987 Response sent (56 bytes) and written to log/5/server.response
 19:28:56.702998 special request received, no persistency
 19:28:56.703007 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 60180 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1723
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1723
 ==173639== 
 ==173639== Process terminating with default action of signal 4 (SIGILL)
 ==173639==  Illegal opcode at address 0x492B75F
 ==173639==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173639==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173639==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173639==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173639==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173639==    by 0x49908EB: curl_version_info (version.c:600)
 ==173639==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173639==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173639==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173639==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1723
test 1745 [SOCKS5 CURLAUTH_ONLY ignores auth done for the FTP data socket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1745 ./libtest/libtests lib1745 ftp://127.0.0.1:38033/1745 127.0.0.1:36107 > log/2/stdout1745 2> log/2/stderr1745

 1745: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1745
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1745 ./libtest/libtests lib1745 ftp://127.0.0.1:38033/1745 127.0.0.1:36107 > log/2/stdout1745 2> log/2/stderr1745
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:57.725636 ====> Client connect
 19:28:57.726058 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:57.726397 < "USER anonymous"
 19:28:57.726440 > "331 We are happy you popped in![CR][LF]"
 19:28:57.726625 < "PASS ftp@example.com"
 19:28:57.726656 > "230 Welcome you silly person[CR][LF]"
 19:28:57.726806 < "PWD"
 19:28:57.726840 > "257 "/" is current dirCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1791 ./libtest/libtests lib1791 localhost > log/16/stdout1791 2> log/16/stderr1791
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1721 ../src/curl -q --output log/18/curl1721.out  --include --trace-ascii log/18/trace1721 --trace-time "http://127.0.0.1:43739/hello?" -w '%output{log/18/out1721}%{url_effective}' > log/18/stdout1721 2> log/18/stderr1721
ectory[CR][LF]"
 19:28:57.727007 < "EPSV"
 19:28:57.727034 ====> Passive DATA channel requested by client
 19:28:57.727048 DATA sockfilt for passive data channel starting...
 19:28:57.729644 DATA sockfilt for passive data channel started (pid 174064)
 19:28:57.729754 DATA sockfilt for passive data channel listens on port 39461
 19:28:57.729796 > "229 Entering Passive Mode (|||39461|)[CR][LF]"
 19:28:57.729813 Client has been notified that upcoming DATA connection is awaited on port 39461
 19:28:57.730070 Client connects to port 39461
 19:28:57.730102 ====> Client established passive DATA connection on port 39461
 19:28:57.730178 < "TYPE I"
 19:28:57.730207 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:57.730370 < "SIZE verifiedserver"
 19:28:57.730409 > "213 17[CR][LF]"
 19:28:57.730564 < "RETR verifiedserver"
 19:28:57.730602 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:57.730696 =====> Closing passive DATA connection...
 19:28:57.730714 Server disconnects passive DATA connection
 19:28:57.730912 Server disconnected passive DATA connection
 19:28:57.730937 DATA sockfilt for passive data channel quits (pid 174064)
 19:28:57.731273 DATA sockfilt for passive data channel quit (pid 174064)
 19:28:57.731300 =====> Closed passive DATA connection
 19:28:57.731327 > "226 File transfer complete[CR][LF]"
 19:28:57.775638 < "QUIT"
 19:28:57.775694 > "221 bye bye baby[CR][LF]"
 19:28:57.776753 MAIN sockfilt said DISC
 19:28:57.776846 ====> Client disconnected
 19:28:57.776928 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:57.327744 ====> Client connect
 19:28:57.328355 Received DATA (on stdin)
 19:28:57.328375 > 146 bytes data, server => client
 19:28:57.328387 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:57.328396 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:57.328405 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:57.328491 < 16 bytes data, client => server
 19:28:57.328502 'USER anonymous\r\n'
 19:28:57.328697 Received DATA (on stdin)
 19:28:57.328709 > 33 bytes data, server => client
 19:28:57.328719 '331 We are happy you popped in!\r\n'
 19:28:57.328778 < 22 bytes data, client => server
 19:28:57.328788 'PASS ftp@example.com\r\n'
 19:28:57.328907 Received DATA (on stdin)
 19:28:57.328917 > 30 bytes data, server => client
 19:28:57.328926 '230 Welcome you silly person\r\n'
 19:28:57.328975 < 5 bytes data, client => server
 19:28:57.328985 'PWD\r\n'
 19:28:57.329092 Received DATA (on stdin)
 19:28:57.329103 > 30 bytes data, server => client
 19:28:57.329113 '257 "/" is current directory\r\n'
 19:28:57.329175 < 6 bytes data, client => server
 19:28:57.329186 'EPSV\r\n'
 19:28:57.332074 Received DATA (on stdin)
 19:28:57.332086 > 39 bytes data, server => client
 19:28:57.332097 '229 Entering Passive Mode (|||39461|)\r\n'
 19:28:57.332242 < 8 bytes data, client => server
 19:28:57.332256 'TYPE I\r\n'
 19:28:57.332459 Received DATA (on stdin)
 19:28:57.332470 > 33 bytes data, server => client
 19:28:57.332481 '200 I modify TYPE as you wanted\r\n'
 19:28:57.332533 < 21 bytes data, client => server
 19:28:57.332544 'SIZE verifiedserver\r\n'
 19:28:57.332662 Received DATA (on stdin)
 19:28:57.332672 > 8 bytes data, server => client
 19:28:57.332681 '213 17\r\n'
 19:28:57.332735 < 21 bytes data, client => server
 19:28:57.332746 'RETR verifiedserver\r\n'
 19:28:57.332968 Received DATA (on stdin)
 19:28:57.332980 > 29 bytes data, server => client
 19:28:57.332990 '150 Binary junk (17 bytes).\r\n'
 19:28:57.333582 Received DATA (on stdin)
 19:28:57.333593 > 28 bytes data, server => client
 19:28:57.333603 '226 File transfer complete\r\n'
 19:28:57.377677 < 6 bytes data, client => server
 19:28:57.377699 'QUIT\r\n'
 19:28:57.377952 Received DATA (on stdin)
 19:28:57.377964 > 18 bytes data, server => client
 19:28:57.377975 '221 bye bye baby\r\n'
 19:28:57.378948 ====> Client disconnect
 19:28:57.379027 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:57.331109 Running IPv4 version
 19:28:57.331190 Listening on port 39461
 19:28:57.331263 Wrote pid 174064 to log/2/server/ftp_sockdata.pid
 19:28:57.331834 Received PING (on stdin)
 19:28:57.331922 Received PORT (on stdin)
 19:28:57.332277 ====> Client connect
 19:28:57.333050 Received DATA (on stdin)
 19:28:57.333063 > 17 bytes data, server => client
 19:28:57.333072 'WE ROOLZ: 85208\r\n'
 19:28:57.333101 Received DISC (on stdin)
 19:28:57.333112 ====> Client forcibly disconnected
 19:28:57.333259 Received QUIT (on stdin)
 19:28:57.333271 quits
 19:28:57.333358 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 method 0
 method2 2
 user silly
 password person
 Testnum 1745
=== End of file server.cmd
=== Start of file valgrind1745
 ==174138== 
 ==174138== Process terminating with default action of signal 4 (SIGILL)
 ==174138==  Illegal opcode at address 0x51CC63F
 ==174138==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174138==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174138==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174138==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1745
test 1791 [blank COPYPOSTFIELDS and duphandle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1791 ./libtest/libtests lib1791 localhost > log/16/stdout1791 2> log/16/stderr1791

libtests returned 132, when expecting 0
 1791: exit FAILED
== Contents of files in the log/16/ directory after test 1791
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1791 ./libtest/libtests lib1791 localhost > log/16/stdout1791 2> log/16/stderr1791
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1791
=== End of file server.cmd
=== Start of file valgrind1791
 ==174195== 
 ==174195== Process terminating with default action of signal 4 (SIGILL)
 ==174195==  Illegal opcode at address 0x51CC63F
 ==174195==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174195==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174195==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174195==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1791
test 1721 [Keep question mark for empty query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1721 ../src/curl -q --output log/18/curl1721.out  --include --trace-ascii log/18/trace1721 --trace-time "http://127.0.0.1:43739/hello?" -w '%output{log/18/out1721}%{url_effective}' > log/18/stdout1721 2> log/18/stderr1721

 1721: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1721
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1721 ../src/curl -q --output log/18/curl1721.out  --include --trace-ascii log/18/trace1721 --trace-time "http://127.0.0.1:43739/hello?" -w '%output{log/18/out1721}%{url_effective}' > log/18/stdout1721 2> log/18/stderr1721
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.660962 ====> Client connect
 19:28:57.661021 accept_connection 3 returned 4
 19:28:57.661048 Read 93 bytes
 19:28:57.661060 Process 93 bytes request
 19:28:57.661073 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.661082 Are-we-friendly question received
 19:28:57.661113 Wrote request (93 bytes) input to log/18/server.input
 19:28:57.661130 Identifying ourselves as friends
 19:28:57.661205 Response sent (56 bytes) and written to log/18/server.response
 19:28:57.661217 special request received, no persistency
 19:28:57.661226 ====> ClieCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1722 ../src/curl -q --output log/22/curl1722.out  --include --trace-ascii log/22/trace1722 --trace-time http://127.0.0.1:35989/1722 > log/22/stdout1722 2> log/22/stderr1722
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1715 ../src/curl -q --output log/15/curl1715.out  --include --trace-ascii log/15/trace1715 --trace-time http://test.example --proxy http://127.0.0.1:40321 --proxytunnel -sS > log/15/stdout1715 2> log/15/stderr1715
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1742 ./libtest/libtests lib1742 http://127.0.0.1:38821/1742 127.0.0.1:41949 > log/13/stdout1742 2> log/13/stderr1742
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1713 ../src/curl -q --output log/8/curl1713.out  --include --trace-ascii log/8/trace1713 --trace-time http://invalid.invalid/1713 --alt-svc log/8 --cookie log/8 --hsts log/8 --netrc-file log/8 > log/8/stdout1713 2> log/8/stderr1713
nt disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45924 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1721
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1721
 ==173606== 
 ==173606== Process terminating with default action of signal 4 (SIGILL)
 ==173606==  Illegal opcode at address 0x492B75F
 ==173606==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173606==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173606==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173606==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173606==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173606==    by 0x49908EB: curl_version_info (version.c:600)
 ==173606==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173606==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173606==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173606==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1721
test 1722 [HTTP with chunked Transfer-Encoding not listed last]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1722 ../src/curl -q --output log/22/curl1722.out  --include --trace-ascii log/22/trace1722 --trace-time http://127.0.0.1:35989/1722 > log/22/stdout1722 2> log/22/stderr1722

 1722: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 1722
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1722 ../src/curl -q --output log/22/curl1722.out  --include --trace-ascii log/22/trace1722 --trace-time http://127.0.0.1:35989/1722 > log/22/stdout1722 2> log/22/stderr1722
=== End of file commands.log
=== Start of file http_server.log
 19:28:56.653458 ====> Client connect
 19:28:56.653490 accept_connection 3 returned 4
 19:28:56.653510 Read 93 bytes
 19:28:56.653519 Process 93 bytes request
 19:28:56.653531 Got request: GET /verifiedserver HTTP/1.1
 19:28:56.653540 Are-we-friendly question received
 19:28:56.653569 Wrote request (93 bytes) input to log/22/server.input
 19:28:56.653585 Identifying ourselves as friends
 19:28:56.654816 Response sent (56 bytes) and written to log/22/server.response
 19:28:56.654830 special request received, no persistency
 19:28:56.654838 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 47012 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1722
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1722
 ==173602== 
 ==173602== Process terminating with default action of signal 4 (SIGILL)
 ==173602==  Illegal opcode at address 0x492B75F
 ==173602==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173602==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173602==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173602==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173602==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173602==    by 0x49908EB: curl_version_info (version.c:600)
 ==173602==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173602==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173602==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173602==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1722
test 1715 [HTTP CONNECT with proxy returning Content-Length and chunked]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1715 ../src/curl -q --output log/15/curl1715.out  --include --trace-ascii log/15/trace1715 --trace-time http://test.example --proxy http://127.0.0.1:40321 --proxytunnel -sS > log/15/stdout1715 2> log/15/stderr1715

 1715: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1715
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1715 ../src/curl -q --output log/15/curl1715.out  --include --trace-ascii log/15/trace1715 --trace-time http://test.example --proxy http://127.0.0.1:40321 --proxytunnel -sS > log/15/stdout1715 2> log/15/stderr1715
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.597628 ====> Client connect
 19:28:57.597673 accept_connection 3 returned 4
 19:28:57.597695 Read 93 bytes
 19:28:57.597705 Process 93 bytes request
 19:28:57.597718 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.597727 Are-we-friendly question received
 19:28:57.597755 Wrote request (93 bytes) input to log/15/server.input
 19:28:57.597773 Identifying ourselves as friends
 19:28:57.597846 Response sent (56 bytes) and written to log/15/server.response
 19:28:57.597856 special request received, no persistency
 19:28:57.597865 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 49518 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1715
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1715
 ==173536== 
 ==173536== Process terminating with default action of signal 4 (SIGILL)
 ==173536==  Illegal opcode at address 0x492B75F
 ==173536==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173536==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173536==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173536==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173536==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173536==    by 0x49908EB: curl_version_info (version.c:600)
 ==173536==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173536==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173536==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1715
test 1742 [SOCKS5 CURLAUTH_ONLY does not offerCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1724 ../src/curl -q --output log/20/curl1724.out  --include --trace-ascii log/20/trace1724 --trace-time --ipfs-gateway http://127.0.0.1:41689 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u --proto-default http > log/20/stdout1724 2> log/20/stderr1724
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1741 ../src/curl -q --include --trace-ascii log/17/trace1741 --trace-time http://127.0.0.1:35993/1741 -X POST -d foo -o log/17/out1741 --no-progress-meter -w '%{stderr}done\n' > log/17/stdout1741 2> log/17/stderr1741
 the no authentication method]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1742 ./libtest/libtests lib1742 http://127.0.0.1:38821/1742 127.0.0.1:41949 > log/13/stdout1742 2> log/13/stderr1742

 1742: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1742
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1742 ./libtest/libtests lib1742 http://127.0.0.1:38821/1742 127.0.0.1:41949 > log/13/stdout1742 2> log/13/stderr1742
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.277269 ====> Client connect
 19:28:57.277306 accept_connection 3 returned 4
 19:28:57.277326 Read 93 bytes
 19:28:57.277335 Process 93 bytes request
 19:28:57.277349 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.277357 Are-we-friendly question received
 19:28:57.277383 Wrote request (93 bytes) input to log/13/server.input
 19:28:57.277400 Identifying ourselves as friends
 19:28:57.277459 Response sent (56 bytes) and written to log/13/server.response
 19:28:57.277468 special request received, no persistency
 19:28:57.277476 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 57568 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 method 2
 user silly
 password person
 nmethods_min 1
 nmethods_max 1
 Testnum 1742
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1742
 ==174038== 
 ==174038== Process terminating with default action of signal 4 (SIGILL)
 ==174038==  Illegal opcode at address 0x51CC63F
 ==174038==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174038==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174038==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174038==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1742
test 1713 [Filenames pointing to directory failing gracefully]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1713 ../src/curl -q --output log/8/curl1713.out  --include --trace-ascii log/8/trace1713 --trace-time http://invalid.invalid/1713 --alt-svc log/8 --cookie log/8 --hsts log/8 --netrc-file log/8 > log/8/stdout1713 2> log/8/stderr1713

curl returned 132, when expecting 26
 1713: exit FAILED
== Contents of files in the log/8/ directory after test 1713
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1713 ../src/curl -q --output log/8/curl1713.out  --include --trace-ascii log/8/trace1713 --trace-time http://invalid.invalid/1713 --alt-svc log/8 --cookie log/8 --hsts log/8 --netrc-file log/8 > log/8/stdout1713 2> log/8/stderr1713
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1713
=== End of file server.cmd
=== Start of file valgrind1713
 ==173277== 
 ==173277== Process terminating with default action of signal 4 (SIGILL)
 ==173277==  Illegal opcode at address 0x492B75F
 ==173277==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173277==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173277==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173277==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173277==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173277==    by 0x49908EB: curl_version_info (version.c:600)
 ==173277==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173277==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1713
test 1724 [IPFS with --proto-default HTTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1724 ../src/curl -q --output log/20/curl1724.out  --include --trace-ascii log/20/trace1724 --trace-time --ipfs-gateway http://127.0.0.1:41689 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u --proto-default http > log/20/stdout1724 2> log/20/stderr1724

 1724: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1724
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1724 ../src/curl -q --output log/20/curl1724.out  --include --trace-ascii log/20/trace1724 --trace-time --ipfs-gateway http://127.0.0.1:41689 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u --proto-default http > log/20/stdout1724 2> log/20/stderr1724
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.034344 ====> Client connect
 19:28:57.034377 accept_connection 3 returned 4
 19:28:57.034399 Read 93 bytes
 19:28:57.034409 Process 93 bytes request
 19:28:57.034422 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.034430 Are-we-friendly question received
 19:28:57.034462 Wrote request (93 bytes) input to log/20/server.input
 19:28:57.034478 Identifying ourselves as friends
 19:28:57.034545 Response sent (57 bytes) and written to log/20/server.response
 19:28:57.034555 special request received, no persistency
 19:28:57.034563 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 53842 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1724
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind1724
 ==173837== 
 ==173837== Process terminating with default action of signal 4 (SIGILL)
 ==173837==  Illegal opcode at address 0x492B75F
 ==173837==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173837==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173837==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173837==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173837==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173837==    by 0x49908EB: curl_version_info (version.c:600)
 ==173837==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173837==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173837==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173837==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1724
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1740 ../src/curl -q --include --trace-ascii log/3/trace1740 --trace-time http://127.0.0.1:36161/1740 --silent -X POST -d foo -o log/3/out1740 -w '%{stderr}done\n' > log/3/stdout1740 2> log/3/stderr1740
setenv COLUMNS = 10000
test 1741 [Note: messages are shown when verbose without --silent]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1741 ../src/curl -q --include --trace-ascii log/17/trace1741 --trace-time http://127.0.0.1:35993/1741 -X POST -d foo -o log/17/out1741 --no-progress-meter -w '%{stderr}done\n' > log/17/stdout1741 2> log/17/stderr1741

 1741: stderr FAILED:
--- log/17/check-expected	2026-10-15 19:28:59.773851531 +0000
+++ log/17/check-generated	2026-10-15 19:28:59.769271061 +0000
@@ -1,2 +0,0 @@
-Note: Unnecessary use of -X or --request, POST is already inferred.[CR][LF]
-done[CR][LF]
== Contents of files in the log/17/ directory after test 1741
=== Start of file check-expected
 Note: Unnecessary use of -X or --request, POST is already inferred.[CR][LF]
 done[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1741 ../src/curl -q --include --trace-ascii log/17/trace1741 --trace-time http://127.0.0.1:35993/1741 -X POST -d foo -o log/17/out1741 --no-progress-meter -w '%{stderr}done\n' > log/17/stdout1741 2> log/17/stderr1741
=== End of file commands.log
=== Start of file http_server.log
 19:28:58.194301 ====> Client connect
 19:28:58.194349 accept_connection 3 returned 4
 19:28:58.194376 Read 93 bytes
 19:28:58.194385 Process 93 bytes request
 19:28:58.194397 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.194406 Are-we-friendly question received
 19:28:58.194433 Wrote request (93 bytes) input to log/17/server.input
 19:28:58.194449 Identifying ourselves as friends
 19:28:58.194537 Response sent (56 bytes) and written to log/17/server.response
 19:28:58.194547 special request received, no persistency
 19:28:58.194555 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 38382 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1741
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1741
 ==173943== 
 ==173943== Process terminating with default action of signal 4 (SIGILL)
 ==173943==  Illegal opcode at address 0x492B75F
 ==173943==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173943==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173943==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173943==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173943==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173943==    by 0x49908EB: curl_version_info (version.c:600)
 ==173943==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173943==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173943==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1741
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1800 ../src/curl -q --output log/12/curl1800.out  --include --trace-ascii log/12/trace1800 --trace-time http://127.0.0.1:40921/1800 --http2 > log/12/stdout1800 2> log/12/stderr1800
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1827 ../src/curl -q --output log/14/curl1827.out  --include --trace-ascii log/14/trace1827 --trace-time http://test.anything.really.com:1827 --proxy 127.0.0.1:45467 --proxytunnel > log/14/stdout1827 2> log/14/stderr1827
setenv COLUMNS = 10000
test 1740 [--silent suppresses Note: messages when verbose]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1740 ../src/curl -q --include --trace-ascii log/3/trace1740 --trace-time http://127.0.0.1:36161/1740 --silent -X POST -d foo -o log/3/out1740 -w '%{stderr}done\n' > log/3/stdout1740 2> log/3/stderr1740

 1740: stderr FAILED:
--- log/3/check-expected	2026-10-15 19:28:59.896939452 +0000
+++ log/3/check-generated	2026-10-15 19:28:59.895684875 +0000
@@ -1 +0,0 @@
-done[CR][LF]
== Contents of files in the log/3/ directory after test 1740
=== Start of file check-expected
 done[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1740 ../src/curl -q --include --trace-ascii log/3/trace1740 --trace-time http://127.0.0.1:36161/1740 --silent -X POST -d foo -o log/3/out1740 -w '%{stderr}done\n' > log/3/stdout1740 2> log/3/stderr1740
=== End of file commands.log
=== Start of file http_server.log
 19:28:58.070983 ====> Client connect
 19:28:58.071027 accept_connection 3 returned 4
 19:28:58.071051 Read 93 bytes
 19:28:58.071061 Process 93 bytes request
 19:28:58.071074 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.071082 Are-we-friendly question received
 19:28:58.071109 Wrote request (93 bytes) input to log/3/server.input
 19:28:58.071127 Identifying ourselves as friends
 19:28:58.071210 Response sent (56 bytes) and written to log/3/server.response
 19:28:58.071222 special request received, no persistency
 19:28:58.071230 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 47580 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1740
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1740
 ==173861== 
 ==173861== Process terminating with default action of signal 4 (SIGILL)
 ==173861==  Illegal opcode at address 0x492B75F
 ==173861==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==173861==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==173861==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==173861==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==173861==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==173861==    by 0x49908EB: curl_version_info (version.c:600)
 ==173861==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==173861==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==173861==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==173861==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1740
test 1800 [HTTP/2 upgrade refused]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1800 ../src/curl -q --output log/12/curl1800.out  --include --trace-ascii log/12/trace1800 --trace-time http://127.0.0.1:40921/1800 --http2 > log/12/stdout1800 2> log/12/stderr1800

 1800: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1800
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1800 ../src/curl -q --output log/12/curl1800.out  --include --trace-ascii log/12/trace1800 --trace-time http://127.0.0.1:40921/1800 --http2 > log/12/stdout1800 2> log/12/stderr1800
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.544309 ====> Client connect
 19:28:57.544355 accept_connection 3 returned 4
 19:28:57.544380 Read 93 bytes
 19:28:57.544389 Process 93 bytes request
 19:28:57.544402 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.544410 Are-we-friendly question received
 19:28:57.544436 Wrote request (93 bytes) input to log/12/server.input
 19:28:57.544451 Identifying ourselves as friends
 19:28:57.544542 Response sent (56 bytes) and written to log/12/server.response
 19:28:57.544550 special request received, no persistency
 19:28:57.544558 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59666 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1800
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1800
 ==174310== 
 ==174310== Process terminating with default action of signal 4 (SIGILL)
 ==174310==  Illegal opcode at address 0x492B75F
 ==174310==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174310==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174310==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174310==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174310==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174310==    by 0x49908EB: curl_version_info (version.c:600)
 ==174310==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174310==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174310==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174310==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1800
test 1827 [HTTP CONNECT with faked status line header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1827 ../src/curl -q --output log/14/curl1827.out  --include --trace-ascii log/14/trace1827 --trace-time http://test.anything.really.com:1827 --proxy 127.0.0.1:45467 --proxytunnel > log/14/stdout1827 2> log/14/stderr1827

 1827: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1827
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1827 ../src/curl -q --output log/14/curl1827.out  --include --trace-ascii log/14/trace1827 --trace-time http://test.anything.really.com:1827 --proxy 127.0.0.1:45467 --proxytunnel > log/14/stdout1827 2> log/14/stderr1827
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.816396 ====> Client connect
 19:28:57.816442 accept_connection 3 returned 4
 19:28:57.816470 Read 93 bytes
 19:28:57.816480 Process 93 bytes request
 19:28:57.816494 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.816503 Are-we-friendly question received
 19:28:57.816536 Wrote request (93 bytes) input to log/14/server.input
 19:28:57.816555 Identifying ourselves as friends
 19:28:57.816647 ResponCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1901 ./libtest/libtests lib1901 http://127.0.0.1:38895/boom > log/24/stdout1901 2> log/24/stderr1901
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1900 ./libtest/libtests lib1900 http://127.0.0.1:47/not-there/1900 > log/10/stdout1900 2> log/10/stderr1900
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1903 ./libtest/libtests lib1903 http://127.0.0.1:37089/we/want/1903 log/5/cookies1903 log/5/cookiesout1903 > log/5/stdout1903 2> log/5/stderr1903
se sent (56 bytes) and written to log/14/server.response
 19:28:57.816660 special request received, no persistency
 19:28:57.816669 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 59370 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1827
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind1827
 ==174442== 
 ==174442== Process terminating with default action of signal 4 (SIGILL)
 ==174442==  Illegal opcode at address 0x492B75F
 ==174442==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174442==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174442==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174442==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174442==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174442==    by 0x49908EB: curl_version_info (version.c:600)
 ==174442==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174442==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174442==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174442==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1827
test 1901 [Chunked HTTP POST from callback with CURLOPT_POSTFIELDSIZE set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1901 ./libtest/libtests lib1901 http://127.0.0.1:38895/boom > log/24/stdout1901 2> log/24/stderr1901

 1901: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1901
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1901 ./libtest/libtests lib1901 http://127.0.0.1:38895/boom > log/24/stdout1901 2> log/24/stderr1901
=== End of file commands.log
=== Start of file http_server.log
 19:28:58.907830 ====> Client connect
 19:28:58.907871 accept_connection 3 returned 4
 19:28:58.907896 Read 93 bytes
 19:28:58.907907 Process 93 bytes request
 19:28:58.907921 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.907930 Are-we-friendly question received
 19:28:58.907961 Wrote request (93 bytes) input to log/24/server.input
 19:28:58.907980 Identifying ourselves as friends
 19:28:58.908058 Response sent (56 bytes) and written to log/24/server.response
 19:28:58.908072 special request received, no persistency
 19:28:58.908081 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 39874 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1901
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind1901
 ==174950== 
 ==174950== Process terminating with default action of signal 4 (SIGILL)
 ==174950==  Illegal opcode at address 0x51CC63F
 ==174950==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174950==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174950==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174950==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1901
test 1900 [HSTS curl_easy_duphandle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1900 ./libtest/libtests lib1900 http://127.0.0.1:47/not-there/1900 > log/10/stdout1900 2> log/10/stderr1900

libtests returned 132, when expecting 0
 1900: exit FAILED
== Contents of files in the log/10/ directory after test 1900
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1900 ./libtest/libtests lib1900 http://127.0.0.1:47/not-there/1900 > log/10/stdout1900 2> log/10/stderr1900
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1900
=== End of file server.cmd
=== Start of file valgrind1900
 ==174834== 
 ==174834== Process terminating with default action of signal 4 (SIGILL)
 ==174834==  Illegal opcode at address 0x51CC63F
 ==174834==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174834==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174834==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174834==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1900
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1902 ./libtest/libtests lib1902 log/4/cookie1902 > log/4/stdout1902 2> log/4/stderr1902
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1848 ../src/curl -q --output log/9/curl1848.out  --include --trace-ascii log/9/trace1848 --trace-time 'imap://127.0.0.1:38847/1848' --request 'UID FETCH 1:* (FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Message-Id DATE FROM SUBJECT TO SENDER REPLY-TO CC BCC)])' -u '"user:sec"ret{' > log/9/stdout1848 2> log/9/stderr1848
test 1903 [CURLOPT_COOKIEFILE then reset then set again]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1903 ./libtest/libtests lib1903 http://127.0.0.1:37089/we/want/1903 log/5/cookies1903 log/5/cookiesout1903 > log/5/stdout1903 2> log/5/stderr1903

 1903: output (log/5/cookiesout1903) FAILED:
--- log/5/check-expected	2026-10-15 19:29:00.734512367 +0000
+++ log/5/check-generated	2026-10-15 19:29:00.729273275 +0000
@@ -1,6 +0,0 @@
-# Netscape HTTP Cookie File[CR][LF]
-# https://curl.se/docs/http-cookies.html[CR][LF]
-# This file was generated by libcurl! Edit at your own risk.[CR][LF]
-[CR][LF]
-127.0.0.1%09FALSE%09/we/want%09FALSE%090%09foobar%09name[CR][LF]
-127.0.0.1%09FALSE%09/we/want%09FALSE%090%09secondcookie%09present[CR][LF]
== Contents of files in the log/5/ directory after test 1903
=== Start of file check-expected
 # Netscape HTTP Cookie File[CR][LF]
 # https://curl.se/docs/http-cookies.html[CR][LF]
 # This file was generated by libcurl! Edit at your own risk.[CR][LF]
 [CR][LF]
 127.0.0.1%09FALSE%09/we/want%09FALSE%090%09foobar%09name[CR][LF]
 127.0.0.1%09FALSE%09/we/want%09FALSE%090%09secondcookie%09present[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1903 ./libtest/libtests lib1903 http://127.0.0.1:37089/we/want/1903 log/5/cookies1903 log/5/cookiesout1903 > log/5/stdout1903 2> log/5/stderr1903
=== End of file commands.log
=== Start of file cookies1903
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 127.0.0.1	FALSE	/we/want/	FALSE	0	secondcookie	present
 127.0.0.1	FALSE	/we/want/	FALSE	0	foobar	name
=== End of file cookies1903
=== Start of file http_server.log
 19:28:58.963163 ====> Client connect
 19:28:58.963201 accept_connection 3 returned 4
 19:28:58.963224 Read 93 bytes
 19:28:58.963234 Process 93 bytes request
 19:28:58.963246 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.963255 Are-we-friendly question received
 19:28:58.963286 Wrote request (93 bytes) input to log/5/server.input
 19:28:58.963305 Identifying ourselves as friends
 19:28:58.963385 Response sent (56 bytes) and written to log/5/server.response
 19:28:58.963397 special request received, no persistency
 19:28:58.963405 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 60182 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1903
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1903
 ==175064== 
 ==175064== Process terminating with default action of signal 4 (SIGILL)
 ==175064==  Illegal opcode at address 0x51CC63F
 ==175064==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175064==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175064==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175064==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1903
test 1902 [set COOKIEFILE and COOKIEJAR but make no transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1902 ./libtest/libtests lib1902 log/4/cookie1902 > log/4/stdout1902 2> log/4/stderr1902

libtests returned 132, when expecting 0
 1902: exit FAILED
== Contents of files in the log/4/ directory after test 1902
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1902 ./libtest/libtests lib1902 log/4/cookie1902 > log/4/stdout1902 2> log/4/stderr1902
=== End of file commands.log
=== Start of file cookie1902
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 example.com	FALSE	/	FALSE	0	has_js	1
=== End of file cookie1902
=== Start of file server.cmd
 Testnum 1902
=== End of file server.cmd
=== Start of file valgrind1902
 ==174840== 
 ==174840== Process terminating with default action of signal 4 (SIGILL)
 ==174840==  Illegal opcode at address 0x51CC63F
 ==174840==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==174840==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==174840==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==174840==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1902
test 1848 [IMAP FETCH message with custom request to get list of email.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1848 ../src/curl -q --output log/9/curl1848.out  --include --trace-ascii log/9/trace1848 --trace-time 'imap://127.0.0.1:38847/1848' --request 'UID FETCH 1:* (FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Message-Id DATE FROM SUBJECT TO SENDER REPLY-TO CC BCC)])' -u '"user:sec"ret{' > log/9/stdout1848 2> log/9/stderr1848

 1848: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1848
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1848 ../src/curl -q --output log/9/curl1848.out  --include --trace-ascii log/9/trace1848 --trace-time 'imap://127.0.0.1:38847/1848' --request 'UID FETCH 1:* (FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Message-Id DATE FROM SUBJECT TO SENDER REPLY-TO CC BCC)])' -u '"user:sec"ret{' > log/9/stdout1848 2> log/9/stderr1848
=== End of file commands.log
=== Start of file imap_server.log
 19:28:58.652162 ====> Client connect
 19:28:58.652410 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:28:58.658931 < "A001 CAPABILITY"
 19:28:58.658992 > "A001 BAD Command[CR][LF]"
 19:28:58.662301 < "A002 LIST "verifiedserver" *"
 19:28:58.662355 LIST_imap got "verifiedserver" *
 19:28:58.662396 > "* LIST () "/" "WE ROOLZ: 113573"[CR][LF]"
 19:28:58.662422 > "A002 OK LIST Completed[CR][LF]"
 19:28:58.662439 return proof we are we
 19:28:58.709029 < "A003 LOGOUT"
 19:28:58.709091 > "* BYE curl IMAP server signing off[CR][LF]"
 19:28:58.709114 > "A003 OK LOGOUT completed[CR][LF]"
 19:28:58.710523 MAIN sockfilt said DISC
 19:28:58.710565 ====> Client disconnected
 19:28:58.710664 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:58.254252 ====> Client connect
 19:28:58.254691 Received DATA (on stdin)
 19:28:58.254711 > 164 bytes data, server => client
 19:28:58.254724 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:58.254734 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:58.254744 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:28:58.260931 < 17 bytes data, client => server
 19:28:58.260963 'A001 CAPABILITY\r\n'
 19:28:58.261260 Received DATA (on stdin)
 19:28:58.261275 > 18 bytes data, server => client
 19:28:58.261286 'A001 BCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1911 ./libtest/libtests lib1911 - > log/8/stdout1911 2> log/8/stderr1911
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1906 ./libtest/libtests lib1906 http://127.0.0.1:43739/1906 > log/18/stdout1906 2> log/18/stderr1906
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1905 ./libtest/libtests lib1905 http://127.0.0.1:35903/we/want/1905 log/16/cookies1905 > log/16/stdout1905 2> log/16/stderr1905
AD Command\r\n'
 19:28:58.264338 < 30 bytes data, client => server
 19:28:58.264372 'A002 LIST "verifiedserver" *\r\n'
 19:28:58.264691 Received DATA (on stdin)
 19:28:58.264705 > 34 bytes data, server => client
 19:28:58.264715 '* LIST () "/" "WE ROOLZ: 113573"\r\n'
 19:28:58.264772 Received DATA (on stdin)
 19:28:58.264787 > 24 bytes data, server => client
 19:28:58.264798 'A002 OK LIST Completed\r\n'
 19:28:58.311039 < 13 bytes data, client => server
 19:28:58.311079 'A003 LOGOUT\r\n'
 19:28:58.311369 Received DATA (on stdin)
 19:28:58.311383 > 36 bytes data, server => client
 19:28:58.311393 '* BYE curl IMAP server signing off\r\n'
 19:28:58.311421 Received DATA (on stdin)
 19:28:58.311432 > 26 bytes data, server => client
 19:28:58.311442 'A003 OK LOGOUT completed\r\n'
 19:28:58.312714 ====> Client disconnect
 19:28:58.312925 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 1848
=== End of file server.cmd
=== Start of file valgrind1848
 ==174625== 
 ==174625== Process terminating with default action of signal 4 (SIGILL)
 ==174625==  Illegal opcode at address 0x492B75F
 ==174625==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174625==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174625==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174625==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174625==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174625==    by 0x49908EB: curl_version_info (version.c:600)
 ==174625==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174625==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174625==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174625==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1848
test 1911 [verify that curl_easy_setopt() rejects too long string inputs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1911 ./libtest/libtests lib1911 - > log/8/stdout1911 2> log/8/stderr1911

libtests returned 132, when expecting 0
 1911: exit FAILED
== Contents of files in the log/8/ directory after test 1911
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1911 ./libtest/libtests lib1911 - > log/8/stdout1911 2> log/8/stderr1911
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1911
=== End of file server.cmd
=== Start of file valgrind1911
 ==175248== 
 ==175248== Process terminating with default action of signal 4 (SIGILL)
 ==175248==  Illegal opcode at address 0x51CC63F
 ==175248==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175248==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175248==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175248==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1911
test 1906 [CURLOPT_CURLU and CURLOPT_PORT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1906 ./libtest/libtests lib1906 http://127.0.0.1:43739/1906 > log/18/stdout1906 2> log/18/stderr1906

 1906: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1906
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1906 ./libtest/libtests lib1906 http://127.0.0.1:43739/1906 > log/18/stdout1906 2> log/18/stderr1906
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.141560 ====> Client connect
 19:29:00.141605 accept_connection 3 returned 4
 19:29:00.141632 Read 93 bytes
 19:29:00.141643 Process 93 bytes request
 19:29:00.141658 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.141671 Are-we-friendly question received
 19:29:00.141702 Wrote request (93 bytes) input to log/18/server.input
 19:29:00.141720 Identifying ourselves as friends
 19:29:00.141813 Response sent (56 bytes) and written to log/18/server.response
 19:29:00.141824 special request received, no persistency
 19:29:00.141831 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45934 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1906
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1906
 ==175220== 
 ==175220== Process terminating with default action of signal 4 (SIGILL)
 ==175220==  Illegal opcode at address 0x51CC63F
 ==175220==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175220==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175220==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175220==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1906
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http2-server.pl --port 49003 --port2 36133 --nghttpx "nghttpx" --pidfile "log/19/server/http_v2_server.pid" --logfile "log/19/http_v2_server.log" --logdir "log/19" --connect 127.0.0.1:37077 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/2 server
test 1702 SKIPPED: failed starting HTTP/2 server
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http2-server.pl --port 37417 --port2 39399 --nghttpx "nghttpx" --pidfile "log/23/server/http_v2_server.pid" --logfile "log/23/http_v2_server.log" --logdir "log/23" --connect 127.0.0.1:44711 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/2 server
test 1700 SKIPPED: failed starting HTTP/2 server
test 1905 [CURLOPT_COOKIELIST set to "FLUSH" of a shared cookie object]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1905 ./libtest/libtests lib1905 http://127.0.0.1:35903/we/want/1905 log/16/cookies1905 > log/16/stdout1905 2> log/16/stderr1905

 1905: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 1905
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1905 ./libtest/libtests lib1905 http://127.0.0.1:35903/we/want/1905 log/16/cookies1905 > log/16/stdout1905 2> log/16/stderr1905
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.046501 ====> Client connect
 19:29:00.046534 accept_connection 3 returned 4
 19:29:00.046553 Read 93 bytes
 19:29:00.046562 Process 93 bytes request
 19:29:00.046575 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.046583 Are-we-friendly question received
 19:29:00.046607 Wrote request (93 bytes) input to log/16/server.input
 19:29:00.046622 Identifying ourselves as friends
 19:29:00.046679 Response sent (56 bytes) and written to log/16/server.response
 19:29:00.046688 special request received, no persistency
 19:29:00.046696 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1802 ../src/curl -q --output log/11/curl1802.out  --include --trace-ascii log/11/trace1802 --trace-time http://hello/wanted/page -p -x 127.0.0.1:40989 --header "User-Agent: myapp/1.0" --proxy-header "User-Agent: Benjamin/2" --proxy-header "Host: todeloo" --header "Host: foo" > log/11/stdout1802 2> log/11/stderr1802
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1847 ../src/curl -q --output log/21/curl1847.out  --include --trace-ascii log/21/trace1847 --trace-time 'imap://127.0.0.1:39665/1847' --request 'UID FETCH 1 BODY[]' -u '"user:sec"ret{' > log/21/stdout1847 2> log/21/stderr1847
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1877 ../src/curl -q --trace-ascii log/1/trace1877 --trace-time http://127.0.0.1:38815/1877 --netrc-optional --netrc-file log/1/netrc -w 'REDIRECT_URL=%{redirect_url}\n' > log/1/stdout1877 2> log/1/stderr1877
127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 39610 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1905
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1905
 ==175146== 
 ==175146== Process terminating with default action of signal 4 (SIGILL)
 ==175146==  Illegal opcode at address 0x51CC63F
 ==175146==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175146==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175146==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175146==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1905
test 1802 [HTTP CONNECT with custom headers for proxy and server]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1802 ../src/curl -q --output log/11/curl1802.out  --include --trace-ascii log/11/trace1802 --trace-time http://hello/wanted/page -p -x 127.0.0.1:40989 --header "User-Agent: myapp/1.0" --proxy-header "User-Agent: Benjamin/2" --proxy-header "Host: todeloo" --header "Host: foo" > log/11/stdout1802 2> log/11/stderr1802

 1802: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 1802
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1802 ../src/curl -q --output log/11/curl1802.out  --include --trace-ascii log/11/trace1802 --trace-time http://hello/wanted/page -p -x 127.0.0.1:40989 --header "User-Agent: myapp/1.0" --proxy-header "User-Agent: Benjamin/2" --proxy-header "Host: todeloo" --header "Host: foo" > log/11/stdout1802 2> log/11/stderr1802
=== End of file commands.log
=== Start of file http_server.log
 19:28:57.760950 ====> Client connect
 19:28:57.760989 accept_connection 3 returned 4
 19:28:57.761014 Read 93 bytes
 19:28:57.761028 Process 93 bytes request
 19:28:57.761041 Got request: GET /verifiedserver HTTP/1.1
 19:28:57.761050 Are-we-friendly question received
 19:28:57.761081 Wrote request (93 bytes) input to log/11/server.input
 19:28:57.761100 Identifying ourselves as friends
 19:28:57.761175 Response sent (56 bytes) and written to log/11/server.response
 19:28:57.761187 special request received, no persistency
 19:28:57.761196 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 49414 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1802
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1802
 ==174420== 
 ==174420== Process terminating with default action of signal 4 (SIGILL)
 ==174420==  Illegal opcode at address 0x492B75F
 ==174420==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174420==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174420==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174420==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174420==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174420==    by 0x49908EB: curl_version_info (version.c:600)
 ==174420==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174420==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174420==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174420==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1802
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1907 ./libtest/libtests lib1907 127.0.0.1:35989/hello/../1907 > log/22/stdout1907 2> log/22/stderr1907
test 1877 [verify no credentials present in redirect URL after redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1877 ../src/curl -q --trace-ascii log/1/trace1877 --trace-time http://127.0.0.1:38815/1877 --netrc-optional --netrc-file log/1/netrc -w 'REDIRECT_URL=%{redirect_url}\n' > log/1/stdout1877 2> log/1/stderr1877

 1877: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:29:01.265962099 +0000
+++ log/1/check-generated	2026-10-15 19:29:01.262607453 +0000
@@ -1 +0,0 @@
-REDIRECT_URL=http://127.0.0.1:38815/18770002[LF]
== Contents of files in the log/1/ directory after test 1877
=== Start of file check-expected
 REDIRECT_URL=http://127.0.0.1:38815/18770002[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1877 ../src/curl -q --trace-ascii log/1/trace1877 --trace-time http://127.0.0.1:38815/1877 --netrc-optional --netrc-file log/1/netrc -w 'REDIRECT_URL=%{redirect_url}\n' > log/1/stdout1877 2> log/1/stderr1877
=== End of file commands.log
=== Start of file http_server.log
 19:28:59.757631 ====> Client connect
 19:28:59.757669 accept_connection 3 returned 4
 19:28:59.757690 Read 93 bytes
 19:28:59.757700 Process 93 bytes request
 19:28:59.757713 Got request: GET /verifiedserver HTTP/1.1
 19:28:59.757722 Are-we-friendly question received
 19:28:59.757748 Wrote request (93 bytes) input to log/1/server.input
 19:28:59.757764 Identifying ourselves as friends
 19:28:59.757824 Response sent (56 bytes) and written to log/1/server.response
 19:28:59.757833 special request received, no persistency
 19:28:59.757841 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 51998 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file netrc
 machine 127.0.0.1
 login netrcuser
 password netrcSECRET123
=== End of file netrc
=== Start of file server.cmd
 Testnum 1877
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1877
 ==174820== 
 ==174820== Process terminating with default action of signal 4 (SIGILL)
 ==174820==  Illegal opcode at address 0x492B75F
 ==174820==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174820==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174820==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174820==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174820==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174820==    by 0x49908EB: curl_version_info (version.c:600)
 ==174820==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174820==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174820==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174820==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1877
test 1847 [IMAP FETCH message with custom request]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1847 ../src/curl -q --output log/21/curl1847.out  --include --trace-ascii log/21/trace1847 --trace-time 'imap://127.0.0.1:39665/1847' --request 'UID FETCH 1 BODY[]' -u '"user:sec"ret{' > log/21/stdout1847 2> log/21/stderr1847

 1847: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 1847
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1847 ../src/curl -q --output log/21/curl1847.out  --include --trace-ascii log/21/trace1847 --trace-time 'imap://127.0.0.1:39665/1847' --request 'UID FETCH 1 BODY[]' -u '"user:sec"ret{' > log/21/stdout1847 2> log/21/stderr1847
=== End of file commands.log
=== Start of file imap_server.log
 19:28:58.435506 ====> Client connect
 19:28:58.435739 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:28:58.439712 < "A001 CAPABILITY"
 19:28:58.439767 > "A001 BAD Command[CR][LF]"
 19:28:58.440037 < "A002 LIST "verifiedserver" *"
 19:28:58.440071 LIST_imap got "verifiedserver" *
 19:28:58.440101 > "* LIST () "/" "WE ROOLZ: 122217"[CR][LF]"
 19:28:58.440122 > "A002 OK LIST Completed[CR][LF]"
 19:28:58.440137 return proof we are we
 19:28:58.485712 < "A003 LOGOUT"
 19:28:58.485784 > "* BYE curl IMAP server signing off[CR][LF]"
 19:28:58.485816 > "A003 OK LOGOUT completed[CR][LF]"
 19:28:58.495364 MAIN sockfilt said DISC
 19:28:58.495442 ====> Client disconnected
 19:28:58.495545 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:28:58.037584 ====> Client connect
 19:28:58.038020 Received DATA (on stdin)
 19:28:58.038041 > 164 bytes data, server => client
 19:28:58.038054 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:28:58.038064 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:28:58.038074 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:28:58.041733 < 17 bytes data, client => server
 19:28:58.041762 'A001 CAPABILITY\r\n'
 19:28:58.042027 Received DATA (on stdin)
 19:28:58.042041 > 18 bytes data, server => client
 19:28:58.042051 'A001 BAD Command\r\n'
 19:28:58.042158 < 30 bytes data, client => server
 19:28:58.042175 'A002 LIST "verifiedserver" *\r\n'
 19:28:58.042390 Received DATA (on stdin)
 19:28:58.042402 > 34 bytes data, server => client
 19:28:58.042411 '* LIST () "/" "WE ROOLZ: 122217"\r\n'
 19:28:58.042435 Received DATA (on stdin)
 19:28:58.042444 > 24 bytes data, server => client
 19:28:58.042453 'A002 OK LIST Completed\r\n'
 19:28:58.087721 < 13 bytes data, client => server
 19:28:58.087765 'A003 LOGOUT\r\n'
 19:28:58.088076 Received DATA (on stdin)
 19:28:58.088093 > 36 bytes data, server => client
 19:28:58.088104 '* BYE curl IMAP server signing off\r\n'
 19:28:58.088136 Received DATA (on stdin)
 19:28:58.088149 > 26 bytes data, server => client
 19:28:58.088160 'A003 OK LOGOUT completed\r\n'
 19:28:58.094249 ====> Client disconnect
 19:28:58.097818 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 1847
=== End of file server.cmd
=== Start of file valgrind1847
 ==174555== 
 ==174555== Process terminating with default action of signal 4 (SIGILL)
 ==174555==  Illegal opcode at address 0x492B75F
 ==174555==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174555==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174555==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174555==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174555==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174555==    by 0x49908EB: curl_version_info (version.c:600)
 ==174555==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174555==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174555==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1847
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1912 ./libtest/libtests lib1912 - > log/20/stdout1912 2> log/20/stderr1912
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1910 ./libtest/libtests lib1910 127.0.0.1:38821/1910 > log/13/stdout1910 2> log/13/stderr1910
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1913 ./libtest/libtests lib1913 ftp://127.0.0.1:46137/not-there/1913 > log/17/stdout1913 2> log/17/stderr1913
test 1907 [CURLINFO_EFFECTIVE_URL with non-scheme URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1907 ./libtest/libtests lib1907 127.0.0.1:35989/hello/../1907 > log/22/stdout1907 2> log/22/stderr1907

 1907: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:29:01.278091816 +0000
+++ log/22/check-generated	2026-10-15 19:29:01.272607464 +0000
@@ -1 +0,0 @@
-Effective URL: http://127.0.0.1:35989/1907[LF]
== Contents of files in the log/22/ directory after test 1907
=== Start of file check-expected
 Effective URL: http://127.0.0.1:35989/1907[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1907 ./libtest/libtests lib1907 127.0.0.1:35989/hello/../1907 > log/22/stdout1907 2> log/22/stderr1907
=== End of file commands.log
=== Start of file http_server.log
 19:28:59.148551 ====> Client connect
 19:28:59.148631 accept_connection 3 returned 4
 19:28:59.148662 Read 93 bytes
 19:28:59.148672 Process 93 bytes request
 19:28:59.148685 Got request: GET /verifiedserver HTTP/1.1
 19:28:59.148694 Are-we-friendly question received
 19:28:59.148723 Wrote request (93 bytes) input to log/22/server.input
 19:28:59.148740 Identifying ourselves as friends
 19:28:59.148907 Response sent (56 bytes) and written to log/22/server.response
 19:28:59.148921 special request received, no persistency
 19:28:59.149012 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 47028 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1907
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1907
 ==175219== 
 ==175219== Process terminating with default action of signal 4 (SIGILL)
 ==175219==  Illegal opcode at address 0x51CC63F
 ==175219==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175219==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175219==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175219==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1907
test 1912 [Cross validate that gcc-typecheck macros match the option types.]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1912 ./libtest/libtests lib1912 - > log/20/stdout1912 2> log/20/stderr1912

libtests returned 132, when expecting 0
 1912: exit FAILED
== Contents of files in the log/20/ directory after test 1912
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1912 ./libtest/libtests lib1912 - > log/20/stdout1912 2> log/20/stderr1912
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1912
=== End of file server.cmd
=== Start of file valgrind1912
 ==175419== 
 ==175419== Process terminating with default action of signal 4 (SIGILL)
 ==175419==  Illegal opcode at address 0x51CC63F
 ==175419==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175419==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175419==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175419==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1912
test 1910 [HTTP credentials with newline and redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1910 ./libtest/libtests lib1910 127.0.0.1:38821/1910 > log/13/stdout1910 2> log/13/stderr1910

 1910: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 1910
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1910 ./libtest/libtests lib1910 127.0.0.1:38821/1910 > log/13/stdout1910 2> log/13/stderr1910
=== End of file commands.log
=== Start of file http_server.log
 19:28:59.237619 ====> Client connect
 19:28:59.237658 accept_connection 3 returned 4
 19:28:59.237679 Read 93 bytes
 19:28:59.237687 Process 93 bytes request
 19:28:59.237697 Got request: GET /verifiedserver HTTP/1.1
 19:28:59.237705 Are-we-friendly question received
 19:28:59.237727 Wrote request (93 bytes) input to log/13/server.input
 19:28:59.237740 Identifying ourselves as friends
 19:28:59.237806 Response sent (56 bytes) and written to log/13/server.response
 19:28:59.237813 special request received, no persistency
 19:28:59.237820 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 57582 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1910
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind1910
 ==175385== 
 ==175385== Process terminating with default action of signal 4 (SIGILL)
 ==175385==  Illegal opcode at address 0x51CC63F
 ==175385==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175385==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175385==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175385==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1910
test 1913 [FTP with NOBODY set, getting a missing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1913 ./libtest/libtests lib1913 ftp://127.0.0.1:46137/not-there/1913 > log/17/stdout1913 2> log/17/stderr1913

libtests returned 132, when expecting 78
 1913: exit FAILED
== Contents of files in the log/17/ directory after test 1913
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1913 ./libtest/libtests lib1913 ftp://127.0.0.1:46137/not-there/1913 > log/17/stdout1913 2> log/17/stderr1913
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:59.875356 ====> Client connect
 19:28:59.875580 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:59.876267 < "USER anonymous"
 19:28:59.876305 > "331 We are happy you popped in![CR][LF]"
 19:28:59.882516 < "PASS ftp@example.com"
 19:28:59.882576 > "230 Welcome you silly person[CR][LF]"
 19:28:59.882742 < "PWD"
 19:28:59.882777 > "257 "/" is current directory[CR][LF]"
 19:28:59.882960 <CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1851 ../src/curl -q --output log/7/curl1851.out  --include --trace-ascii log/7/trace1851 --trace-time --ipfs-gateway http://somewhere.anywhere "ipfs://r4nd0m" -x http://127.0.0.1:40859 > log/7/stdout1851 2> log/7/stderr1851
 "EPSV"
 19:28:59.882991 ====> Passive DATA channel requested by client
 19:28:59.883005 DATA sockfilt for passive data channel starting...
 19:28:59.887928 DATA sockfilt for passive data channel started (pid 175645)
 19:28:59.892183 DATA sockfilt for passive data channel listens on port 35449
 19:28:59.892274 > "229 Entering Passive Mode (|||35449|)[CR][LF]"
 19:28:59.892303 Client has been notified that upcoming DATA connection is awaited on port 35449
 19:28:59.898743 Client connects to port 35449
 19:28:59.898797 ====> Client established passive DATA connection on port 35449
 19:28:59.898920 < "TYPE I"
 19:28:59.898973 > "200 I modify TYPE as you wanted[CR][LF]"
 19:28:59.899255 < "SIZE verifiedserver"
 19:28:59.899312 > "213 17[CR][LF]"
 19:28:59.899520 < "RETR verifiedserver"
 19:28:59.899561 > "150 Binary junk (17 bytes).[CR][LF]"
 19:28:59.899664 =====> Closing passive DATA connection...
 19:28:59.899684 Server disconnects passive DATA connection
 19:28:59.899871 Server disconnected passive DATA connection
 19:28:59.899901 DATA sockfilt for passive data channel quits (pid 175645)
 19:28:59.900210 DATA sockfilt for passive data channel quit (pid 175645)
 19:28:59.900240 =====> Closed passive DATA connection
 19:28:59.900276 > "226 File transfer complete[CR][LF]"
 19:28:59.945672 < "QUIT"
 19:28:59.945725 > "221 bye bye baby[CR][LF]"
 19:28:59.947068 MAIN sockfilt said DISC
 19:28:59.947110 ====> Client disconnected
 19:28:59.947193 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:28:59.475999 ====> Client connect
 19:28:59.477838 Received DATA (on stdin)
 19:28:59.477854 > 146 bytes data, server => client
 19:28:59.477865 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:28:59.477875 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:28:59.477884 '220    \___|\___/|_| \_\_____|\r\n'
 19:28:59.478345 < 16 bytes data, client => server
 19:28:59.478361 'USER anonymous\r\n'
 19:28:59.484231 Received DATA (on stdin)
 19:28:59.484267 > 33 bytes data, server => client
 19:28:59.484278 '331 We are happy you popped in!\r\n'
 19:28:59.484571 < 22 bytes data, client => server
 19:28:59.484590 'PASS ftp@example.com\r\n'
 19:28:59.484827 Received DATA (on stdin)
 19:28:59.484839 > 30 bytes data, server => client
 19:28:59.484848 '230 Welcome you silly person\r\n'
 19:28:59.484900 < 5 bytes data, client => server
 19:28:59.484911 'PWD\r\n'
 19:28:59.485025 Received DATA (on stdin)
 19:28:59.485036 > 30 bytes data, server => client
 19:28:59.485046 '257 "/" is current directory\r\n'
 19:28:59.485116 < 6 bytes data, client => server
 19:28:59.485129 'EPSV\r\n'
 19:28:59.497600 Received DATA (on stdin)
 19:28:59.497642 > 39 bytes data, server => client
 19:28:59.497655 '229 Entering Passive Mode (|||35449|)\r\n'
 19:28:59.497884 < 8 bytes data, client => server
 19:28:59.497901 'TYPE I\r\n'
 19:28:59.501231 Received DATA (on stdin)
 19:28:59.501250 > 33 bytes data, server => client
 19:28:59.501261 '200 I modify TYPE as you wanted\r\n'
 19:28:59.501379 < 21 bytes data, client => server
 19:28:59.501396 'SIZE verifiedserver\r\n'
 19:28:59.501566 Received DATA (on stdin)
 19:28:59.501580 > 8 bytes data, server => client
 19:28:59.501590 '213 17\r\n'
 19:28:59.501658 < 21 bytes data, client => server
 19:28:59.501674 'RETR verifiedserver\r\n'
 19:28:59.502041 Received DATA (on stdin)
 19:28:59.502053 > 29 bytes data, server => client
 19:28:59.502064 '150 Binary junk (17 bytes).\r\n'
 19:28:59.502529 Received DATA (on stdin)
 19:28:59.502542 > 28 bytes data, server => client
 19:28:59.502553 '226 File transfer complete\r\n'
 19:28:59.547714 < 6 bytes data, client => server
 19:28:59.547748 'QUIT\r\n'
 19:28:59.547974 Received DATA (on stdin)
 19:28:59.547986 > 18 bytes data, server => client
 19:28:59.547996 '221 bye bye baby\r\n'
 19:28:59.549248 ====> Client disconnect
 19:28:59.549442 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:28:59.489766 Running IPv4 version
 19:28:59.490026 Listening on port 35449
 19:28:59.490077 Wrote pid 175645 to log/17/server/ftp_sockdata.pid
 19:28:59.490102 Received PING (on stdin)
 19:28:59.494260 Received PORT (on stdin)
 19:28:59.500907 ====> Client connect
 19:28:59.501937 Received DATA (on stdin)
 19:28:59.501955 > 17 bytes data, server => client
 19:28:59.501965 'WE ROOLZ: 84749\r\n'
 19:28:59.501997 Received DISC (on stdin)
 19:28:59.502013 ====> Client forcibly disconnected
 19:28:59.502158 Received QUIT (on stdin)
 19:28:59.502171 quits
 19:28:59.502248 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY SIZE 550 no such file
 Testnum 1913
=== End of file server.cmd
=== Start of file valgrind1913
 ==175662== 
 ==175662== Process terminating with default action of signal 4 (SIGILL)
 ==175662==  Illegal opcode at address 0x51CC63F
 ==175662==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175662==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175662==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175662==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1913
test 1851 [IPFS gateway using default port number]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1851 ../src/curl -q --output log/7/curl1851.out  --include --trace-ascii log/7/trace1851 --trace-time --ipfs-gateway http://somewhere.anywhere "ipfs://r4nd0m" -x http://127.0.0.1:40859 > log/7/stdout1851 2> log/7/stderr1851

 1851: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 1851
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1851 ../src/curl -q --output log/7/curl1851.out  --include --trace-ascii log/7/trace1851 --trace-time --ipfs-gateway http://somewhere.anywhere "ipfs://r4nd0m" -x http://127.0.0.1:40859 > log/7/stdout1851 2> log/7/stderr1851
=== End of file commands.log
=== Start of file http_server.log
 19:28:58.564295 ====> Client connect
 19:28:58.564333 accept_connection 3 returned 4
 19:28:58.564357 Read 93 bytes
 19:28:58.564368 Process 93 bytes request
 19:28:58.564382 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.564391 Are-we-friendly question received
 19:28:58.564419 Wrote request (93 bytes) input to log/7/server.input
 19:28:58.564437 Identifying ourselves as friends
 19:28:58.564510 Response sent (56 bytes) and written to log/7/server.response
 19:28:58.564522 special request received, no persistency
 19:28:58.564531 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39726 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1851
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind1851
 ==174714== 
 ==174714== Process terminating with default action of signal 4 (SIGILL)
 ==174714==  Illegal opcode at address 0x492B75F
 ==174714==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174714==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174714==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174714==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174714==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174714==    by 0x49908EB: curl_version_info (version.cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1915 ./libtest/libtests lib1915 http://127.0.0.1:47/not-there/1915 > log/12/stdout1915 2> log/12/stderr1915
:600)
 ==174714==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174714==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174714==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174714==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1851
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1904 ../src/curl -q --output log/2/curl1904.out  --include --trace-ascii log/2/trace1904 --trace-time http://test.1904:34531/we/want/that/page/1904 -p --proxy 127.0.0.1:37607 > log/2/stdout1904 2> log/2/stderr1904
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1914 ./libtest/libtests lib1913 ftp://127.0.0.1:42249/not-there/1913 1 > log/3/stdout1914 2> log/3/stderr1914
test 1915 [HSTS read/write callbacks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1915 ./libtest/libtests lib1915 http://127.0.0.1:47/not-there/1915 > log/12/stdout1915 2> log/12/stderr1915

 1915: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:29:01.637149899 +0000
+++ log/12/check-generated	2026-10-15 19:29:01.632607849 +0000
@@ -1,6 +0,0 @@
-[0/4] 1.example.com 25250320 01:02:03[LF]
-[1/4] 2.example.com 25250320 03:02:01[LF]
-[2/4] .3.example.com 25250319 01:02:03[LF]
-[3/4] .4.example.com unlimited[LF]
-First request returned 7[LF]
-Second request returned 42[LF]
== Contents of files in the log/12/ directory after test 1915
=== Start of file check-expected
 [0/4] 1.example.com 25250320 01:02:03[LF]
 [1/4] 2.example.com 25250320 03:02:01[LF]
 [2/4] .3.example.com 25250319 01:02:03[LF]
 [3/4] .4.example.com unlimited[LF]
 First request returned 7[LF]
 Second request returned 42[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1915 ./libtest/libtests lib1915 http://127.0.0.1:47/not-there/1915 > log/12/stdout1915 2> log/12/stderr1915
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1915
=== End of file server.cmd
=== Start of file valgrind1915
 ==175700== 
 ==175700== Process terminating with default action of signal 4 (SIGILL)
 ==175700==  Illegal opcode at address 0x51CC63F
 ==175700==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175700==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175700==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175700==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1915
test 1904 [HTTP CONNECT with 204 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1904 ../src/curl -q --output log/2/curl1904.out  --include --trace-ascii log/2/trace1904 --trace-time http://test.1904:34531/we/want/that/page/1904 -p --proxy 127.0.0.1:37607 > log/2/stdout1904 2> log/2/stderr1904

 1904: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 1904
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1904 ../src/curl -q --output log/2/curl1904.out  --include --trace-ascii log/2/trace1904 --trace-time http://test.1904:34531/we/want/that/page/1904 -p --proxy 127.0.0.1:37607 > log/2/stdout1904 2> log/2/stderr1904
=== End of file commands.log
=== Start of file http2_server.log
 19:29:00.152758 ====> Client connect
 19:29:00.152799 accept_connection 3 returned 4
 19:29:00.152822 Read 93 bytes
 19:29:00.152832 Process 93 bytes request
 19:29:00.152844 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.152853 Are-we-friendly question received
 19:29:00.152884 Wrote request (93 bytes) input to log/2/proxy.input
 19:29:00.152903 Identifying ourselves as friends
 19:29:00.152974 Response sent (57 bytes) and written to log/2/proxy.response
 19:29:00.152986 special request received, no persistency
 19:29:00.152996 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:37607...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37607) from 127.0.0.1 port 45812 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37607
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37607 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 150157
=== End of file http2_verify.out
=== Start of file http_server.log
 19:29:00.069669 ====> Client connect
 19:29:00.069708 accept_connection 3 returned 4
 19:29:00.069732 Read 93 bytes
 19:29:00.069743 Process 93 bytes request
 19:29:00.069756 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.069765 Are-we-friendly question received
 19:29:00.069795 Wrote request (93 bytes) input to log/2/server.input
 19:29:00.069814 Identifying ourselves as friends
 19:29:00.069885 Response sent (56 bytes) and written to log/2/server.response
 19:29:00.069898 special request received, no persistency
 19:29:00.069909 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44518 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 150157
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1904
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind1904
 ==175247== 
 ==175247== Process terminating with default action of signal 4 (SIGILL)
 ==175247==  Illegal opcode at address 0x492B75F
 ==175247==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==175247==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==175247==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==175247==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==175247==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==175247==    by 0x49908EB: curl_version_info (version.c:600)
 ==175247==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==175247==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==175247==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==175247==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1904
test 1914 [FTP with NOBODY and FILETIME set, getting a missing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1914 ./libtest/libtests lib1913 ftp://127.0.0.1:42249/not-there/1913 1 > log/3/stdout1914 2> log/3/stderr1914

libtests returned 132, when expecting 78
 1914: exit FAILED
== Contents of files in the log/3/ directory after test 1914
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1914 ./libtest/libtests lib1913 ftp://127.0.0.1:42249/not-there/1913 1 > log/3/stdout1914 2> log/3/stderr1914
=== End of file commands.log
=== Start of file ftp_server.log
 19:28:59.998237 ====> Client connect
 19:28:59.998459 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:28:59.998805 < "USER anonymous"
 19:28:59.998854 > "331 We are happy you popped in![CR][LF]"
 19:28:59.999074 < "PASS ftp@example.com"
 19:28:59.999112 > "230 Welcome you silly person[CR][LF]"
 19:28:59.999312 < "PWD"
 19:28:59.999353 > "257 "/" is current directory[CR][LF]"
 19:28:59.999546 < "EPSV"
 19:28:59.999577 ====> Passive DATA channel requested by client
 19:28:59.999593 DATA sockfilt for passive data channel starting...
 19:29:00.009544 DATA sockfilt for passive data channel started (pid 175682)
 19:29:00.009740 DATA sockfilt for passive data channel listens on portCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1876 ../src/curl -q --trace-ascii log/6/trace1876 --trace-time http://127.0.0.1:33935/1876 --netrc-optional --netrc-file log/6/netrc -L -w 'EFFECTIVE_URL=%{url_effective}\n' > log/6/stdout1876 2> log/6/stderr1876
 38797
 19:29:00.009802 > "229 Entering Passive Mode (|||38797|)[CR][LF]"
 19:29:00.009829 Client has been notified that upcoming DATA connection is awaited on port 38797
 19:29:00.010160 Client connects to port 38797
 19:29:00.010194 ====> Client established passive DATA connection on port 38797
 19:29:00.010297 < "TYPE I"
 19:29:00.010335 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:00.010506 < "SIZE verifiedserver"
 19:29:00.010546 > "213 17[CR][LF]"
 19:29:00.010698 < "RETR verifiedserver"
 19:29:00.010733 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:00.010830 =====> Closing passive DATA connection...
 19:29:00.010848 Server disconnects passive DATA connection
 19:29:00.011077 Server disconnected passive DATA connection
 19:29:00.011109 DATA sockfilt for passive data channel quits (pid 175682)
 19:29:00.011397 DATA sockfilt for passive data channel quit (pid 175682)
 19:29:00.011422 =====> Closed passive DATA connection
 19:29:00.011451 > "226 File transfer complete[CR][LF]"
 19:29:00.055670 < "QUIT"
 19:29:00.055735 > "221 bye bye baby[CR][LF]"
 19:29:00.057015 MAIN sockfilt said DISC
 19:29:00.057049 ====> Client disconnected
 19:29:00.057144 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:00.600366 ====> Client connect
 19:29:00.600727 Received DATA (on stdin)
 19:29:00.600747 > 146 bytes data, server => client
 19:29:00.600758 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:00.600769 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:00.600778 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:00.600886 < 16 bytes data, client => server
 19:29:00.600903 'USER anonymous\r\n'
 19:29:00.601109 Received DATA (on stdin)
 19:29:00.601123 > 33 bytes data, server => client
 19:29:00.601133 '331 We are happy you popped in!\r\n'
 19:29:00.601197 < 22 bytes data, client => server
 19:29:00.601214 'PASS ftp@example.com\r\n'
 19:29:00.601364 Received DATA (on stdin)
 19:29:00.601377 > 30 bytes data, server => client
 19:29:00.601388 '230 Welcome you silly person\r\n'
 19:29:00.601449 < 5 bytes data, client => server
 19:29:00.601465 'PWD\r\n'
 19:29:00.601604 Received DATA (on stdin)
 19:29:00.601616 > 30 bytes data, server => client
 19:29:00.601626 '257 "/" is current directory\r\n'
 19:29:00.601692 < 6 bytes data, client => server
 19:29:00.601705 'EPSV\r\n'
 19:29:00.612090 Received DATA (on stdin)
 19:29:00.612110 > 39 bytes data, server => client
 19:29:00.612121 '229 Entering Passive Mode (|||38797|)\r\n'
 19:29:00.612348 < 8 bytes data, client => server
 19:29:00.612361 'TYPE I\r\n'
 19:29:00.612585 Received DATA (on stdin)
 19:29:00.612597 > 33 bytes data, server => client
 19:29:00.612607 '200 I modify TYPE as you wanted\r\n'
 19:29:00.612662 < 21 bytes data, client => server
 19:29:00.612673 'SIZE verifiedserver\r\n'
 19:29:00.612790 Received DATA (on stdin)
 19:29:00.612801 > 8 bytes data, server => client
 19:29:00.612811 '213 17\r\n'
 19:29:00.612863 < 21 bytes data, client => server
 19:29:00.612873 'RETR verifiedserver\r\n'
 19:29:00.613180 Received DATA (on stdin)
 19:29:00.613192 > 29 bytes data, server => client
 19:29:00.613202 '150 Binary junk (17 bytes).\r\n'
 19:29:00.613698 Received DATA (on stdin)
 19:29:00.613711 > 28 bytes data, server => client
 19:29:00.613721 '226 File transfer complete\r\n'
 19:29:00.657695 < 6 bytes data, client => server
 19:29:00.657733 'QUIT\r\n'
 19:29:00.657988 Received DATA (on stdin)
 19:29:00.658001 > 18 bytes data, server => client
 19:29:00.658011 '221 bye bye baby\r\n'
 19:29:00.659206 ====> Client disconnect
 19:29:00.659400 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:00.609132 Running IPv4 version
 19:29:00.609242 Listening on port 38797
 19:29:00.609289 Wrote pid 175682 to log/3/server/ftp_sockdata.pid
 19:29:00.611694 Received PING (on stdin)
 19:29:00.611864 Received PORT (on stdin)
 19:29:00.612316 ====> Client connect
 19:29:00.613095 Received DATA (on stdin)
 19:29:00.613106 > 17 bytes data, server => client
 19:29:00.613116 'WE ROOLZ: 84710\r\n'
 19:29:00.613143 Received DISC (on stdin)
 19:29:00.613156 ====> Client forcibly disconnected
 19:29:00.613363 Received QUIT (on stdin)
 19:29:00.613375 quits
 19:29:00.613447 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY MDTM 550 no such file
 Testnum 1914
=== End of file server.cmd
=== Start of file valgrind1914
 ==175717== 
 ==175717== Process terminating with default action of signal 4 (SIGILL)
 ==175717==  Illegal opcode at address 0x51CC63F
 ==175717==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175717==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175717==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175717==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1914
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1909 ../src/curl -q --trace-ascii log/15/trace1909 --trace-time --retry 1 --retry-all-errors -o log/15/outfile1909 http://127.0.0.1:40321/1909 > log/15/stdout1909 2> log/15/stderr1909
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1918 ./libtest/libtests lib1918 - > log/10/stdout1918 2> log/10/stderr1918
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1921 ./libtest/libtests lib1921 - > log/9/stdout1921 2> log/9/stderr1921
test 1876 [verify no credentials present in effective URL after redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1876 ../src/curl -q --trace-ascii log/6/trace1876 --trace-time http://127.0.0.1:33935/1876 --netrc-optional --netrc-file log/6/netrc -L -w 'EFFECTIVE_URL=%{url_effective}\n' > log/6/stdout1876 2> log/6/stderr1876

 1876: stdout FAILED:
--- log/6/check-expected	2026-10-15 19:29:01.842490965 +0000
+++ log/6/check-generated	2026-10-15 19:29:01.839274736 +0000
@@ -1 +0,0 @@
-EFFECTIVE_URL=http://127.0.0.1:33935/18760002[LF]
== Contents of files in the log/6/ directory after test 1876
=== Start of file check-expected
 EFFECTIVE_URL=http://127.0.0.1:33935/18760002[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1876 ../src/curl -q --trace-ascii log/6/trace1876 --trace-time http://127.0.0.1:33935/1876 --netrc-optional --netrc-file log/6/netrc -L -w 'EFFECTIVE_URL=%{url_effective}\n' > log/6/stdout1876 2> log/6/stderr1876
=== End of file commands.log
=== Start of file http_server.log
 19:28:58.704244 ====> Client connect
 19:28:58.704281 accept_connection 3 returned 4
 19:28:58.706756 Read 93 bytes
 19:28:58.706775 Process 93 bytes request
 19:28:58.706789 Got request: GET /verifiedserver HTTP/1.1
 19:28:58.706798 Are-we-friendly question received
 19:28:58.706836 Wrote request (93 bytes) input to log/6/server.input
 19:28:58.706854 Identifying ourselves as friends
 19:28:58.707072 Response sent (56 bytes) and written to log/6/server.response
 19:28:58.707083 special request received, no persistency
 19:28:58.707092 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 44340 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file netrc
 machine 127.0.0.1
 login netrcuser
 password netrcSECRET123
=== End of file netrc
=== Start of file server.cmd
 Testnum 1876
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind1876
 ==174786== 
 ==174786== Process terminating with default action of signal 4 (SIGILL)
 ==174786==  Illegal opcode at address 0x492B75F
 ==174786==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==174786==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==174786==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==174786==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==174786==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==174786==    by 0x49908EB: curl_version_info (version.c:600)
 ==174786==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==174786==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==174786==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==174786==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1876
test 1909 [HTTP GET --retry-all-errors to overcome partial transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1909 ../src/curl -q --trace-ascii log/15/trace1909 --trace-time --retry 1 --retry-all-errors -o log/15/outfile1909 http://127.0.0.1:40321/1909 > log/15/stdout1909 2> log/15/stderr1909

 1909: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 1909
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1909 ../src/curl -q --trace-ascii log/15/trace1909 --trace-time --retry 1 --retry-all-errors -o log/15/outfile1909 http://127.0.0.1:40321/1909 > log/15/stdout1909 2> log/15/stderr1909
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.236323 ====> Client connect
 19:29:00.236356 accept_connection 3 returned 4
 19:29:00.236440 Read 93 bytes
 19:29:00.236453 Process 93 bytes request
 19:29:00.236466 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.236474 Are-we-friendly question received
 19:29:00.236505 Wrote request (93 bytes) input to log/15/server.input
 19:29:00.236522 Identifying ourselves as friends
 19:29:00.236578 Response sent (56 bytes) and written to log/15/server.response
 19:29:00.236587 special request received, no persistency
 19:29:00.236595 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 49528 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1909
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind1909
 ==175362== 
 ==175362== Process terminating with default action of signal 4 (SIGILL)
 ==175362==  Illegal opcode at address 0x492B75F
 ==175362==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==175362==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==175362==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==175362==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==175362==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==175362==    by 0x49908EB: curl_version_info (version.c:600)
 ==175362==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==175362==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==175362==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==175362==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1909
test 1918 [curl_easy_option_by_name() and curl_easy_option_by_id()]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1918 ./libtest/libtests lib1918 - > log/10/stdout1918 2> log/10/stderr1918

libtests returned 132, when expecting 0
 1918: exit FAILED
== Contents of files in the log/10/ directory after test 1918
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1918 ./libtest/libtests lib1918 - > log/10/stdout1918 2> log/10/stderr1918
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1918
=== End of file server.cmd
=== Start of file valgrind1918
 ==175837== 
 ==175837== Process terminating with default action of signal 4 (SIGILL)
 ==175837==  Illegal opcode at address 0x51CC63F
 ==175837==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175837==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175837==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175837==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1918
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1919 ./libtest/libtests lib1919 http://127.0.0.1:37089/1919 > log/5/stdout1919 2> log/5/stderr1919
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1941 ./libtest/libtests lib1940 http://hello:43739/1941 127.0.0.1:38183 > log/18/stdout1941 2> log/18/stderr1941
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1940 ./libtest/libtests lib1940 http://127.0.0.1:44467/1940 > log/8/stdout1940 2> log/8/stderr1940
test 1921 [Set a URL without scheme, then redirect with default scheme]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1921 ./libtest/libtests lib1921 - > log/9/stdout1921 2> log/9/stderr1921

 1921: stdout FAILED:
--- log/9/check-expected	2026-10-15 19:29:02.080750274 +0000
+++ log/9/check-generated	2026-10-15 19:29:02.075941585 +0000
@@ -1 +0,0 @@
-URL: https://example.com/newpath[CR][LF]
== Contents of files in the log/9/ directory after test 1921
=== Start of file check-expected
 URL: https://example.com/newpath[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1921 ./libtest/libtests lib1921 - > log/9/stdout1921 2> log/9/stderr1921
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1921
=== End of file server.cmd
=== Start of file valgrind1921
 ==175882== 
 ==175882== Process terminating with default action of signal 4 (SIGILL)
 ==175882==  Illegal opcode at address 0x51CC63F
 ==175882==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175882==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175882==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175882==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1921
test 1919 [set CURLOPT_XOAUTH2_BEARER and do connection reuse]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1919 ./libtest/libtests lib1919 http://127.0.0.1:37089/1919 > log/5/stdout1919 2> log/5/stderr1919

 1919: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1919
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1919 ./libtest/libtests lib1919 http://127.0.0.1:37089/1919 > log/5/stdout1919 2> log/5/stderr1919
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.449248 ====> Client connect
 19:29:00.449288 accept_connection 3 returned 4
 19:29:00.449448 Read 93 bytes
 19:29:00.449464 Process 93 bytes request
 19:29:00.449477 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.449485 Are-we-friendly question received
 19:29:00.449522 Wrote request (93 bytes) input to log/5/server.input
 19:29:00.449539 Identifying ourselves as friends
 19:29:00.449601 Response sent (56 bytes) and written to log/5/server.response
 19:29:00.449611 special request received, no persistency
 19:29:00.449619 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 60184 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1919
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind1919
 ==175970== 
 ==175970== Process terminating with default action of signal 4 (SIGILL)
 ==175970==  Illegal opcode at address 0x51CC63F
 ==175970==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175970==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175970==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175970==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1919
test 1940 [curl_easy_header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1940 ./libtest/libtests lib1940 http://127.0.0.1:44467/1940 > log/8/stdout1940 2> log/8/stderr1940

 1940: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:29:02.259349910 +0000
+++ log/8/check-generated	2026-10-15 19:29:02.255941600 +0000
@@ -1,12 +0,0 @@
- Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
- Server == test with trailing space[LF]
- Content-Type == text/html[LF]
- Content-Length == 0[LF]
- Location == /19400002[LF]
-- Set-Cookie == onecookie=data; (0/3)[LF]
-- Set-Cookie == secondcookie=2data; (1/3)[LF]
-- Set-Cookie == cookie3=data3; (2/3)[LF]
- Fold == is folding a line[LF]
- Blank == [LF]
- Blank2 == [LF]
- Test == word[LF]
== Contents of files in the log/8/ directory after test 1940
=== Start of file check-expected
  Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
  Server == test with trailing space[LF]
  Content-Type == text/html[LF]
  Content-Length == 0[LF]
  Location == /19400002[LF]
 - Set-Cookie == onecookie=data; (0/3)[LF]
 - Set-Cookie == secondcookie=2data; (1/3)[LF]
 - Set-Cookie == cookie3=data3; (2/3)[LF]
  Fold == is folding a line[LF]
  Blank == [LF]
  Blank2 == [LF]
  Test == word[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1940 ./libtest/libtests lib1940 http://127.0.0.1:44467/1940 > log/8/stdout1940 2> log/8/stderr1940
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.501758 ====> Client connect
 19:29:00.501793 accept_connection 3 returned 4
 19:29:00.501890 Read 93 bytes
 19:29:00.501902 Process 93 bytes request
 19:29:00.501916 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.501924 Are-we-friendly question received
 19:29:00.501953 Wrote request (93 bytes) input to log/8/server.input
 19:29:00.501970 Identifying ourselves as friends
 19:29:00.502029 Response sent (56 bytes) and written to log/8/server.response
 19:29:00.502038 special request received, no persistency
 19:29:00.502046 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 36574 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1940
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind1940
 ==176036== 
 ==176036== Process terminating with default action of signal 4 (SIGILL)
 ==176036==  Illegal opcode at address 0x51CC63F
 ==176036==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176036==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176036==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176036==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1940
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1943 ./libtest/libtests lib1940 http://127.0.0.1:35903/1943 > log/16/stdout1943 2> log/16/stderr1943
test 1941 [curl_easy_header with CONNECT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1941 ./libtest/libtests lib1940 http://hello:43739/1941 127.0.0.1:38183 > log/18/stdout1941 2> log/18/stderr1941

 1941: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:29:02.271586456 +0000
+++ log/18/check-generated	2026-10-15 19:29:02.265941601 +0000
@@ -1,10 +0,0 @@
- Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
- Server == test with trailing space[LF]
- Content-Type == text/html[LF]
- Content-Length == 0[LF]
- Location == /19410002[LF]
-- Set-Cookie == onecookie=data; (0/3)[LF]
-- Set-Cookie == secondcookie=2data; (1/3)[LF]
-- Set-Cookie == cookie3=data3; (2/3)[LF]
- Server == from the connect[LF]
- Silly-thing == yes yes[LF]
== Contents of files in the log/18/ directory after test 1941
=== Start of file check-expected
  Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
  Server == test with trailing space[LF]
  Content-Type == text/html[LF]
  Content-Length == 0[LF]
  Location == /19410002[LF]
 - Set-Cookie == onecookie=data; (0/3)[LF]
 - Set-Cookie == secondcookie=2data; (1/3)[LF]
 - Set-Cookie == cookie3=data3; (2/3)[LF]
  Server == from the connect[LF]
  Silly-thing == yes yes[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1941 ./libtest/libtests lib1940 http://hello:43739/1941 127.0.0.1:38183 > log/18/stdout1941 2> log/18/stderr1941
=== End of file commands.log
=== Start of file http2_server.log
 19:29:00.569429 ====> Client connect
 19:29:00.569469 accept_connection 3 returned 4
 19:29:00.569592 Read 93 bytes
 19:29:00.569610 Process 93 bytes request
 19:29:00.569634 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.569644 Are-we-friendly question received
 19:29:00.569680 Wrote request (93 bytes) input to log/18/proxy.input
 19:29:00.569701 Identifying ourselves as friends
 19:29:00.569776 Response sent (57 bytes) and written to log/18/proxy.response
 19:29:00.569788 special request received, no persistency
 19:29:00.569797 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:38183...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38183) from 127.0.0.1 port 36134 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38183
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:38183 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 164586
=== End of file http2_verify.out
=== Start of file http_server.log
 19:29:01.510026 ====> Client connect
 19:29:01.510061 accept_connection 3 returned 4
 19:29:01.510168 Read 93 bytes
 19:29:01.510185 Process 93 bytes request
 19:29:01.510198 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.510207 Are-we-friendly question received
 19:29:01.510239 Wrote request (93 bytes) input to log/18/server.input
 19:29:01.510256 Identifying ourselves as friends
 19:29:01.510317 Response sent (56 bytes) and written to log/18/server.response
 19:29:01.510327 special request received, no persistency
 19:29:01.510336 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 45950 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 164586
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1941
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1941
 ==176106== 
 ==176106== Process terminating with default action of signal 4 (SIGILL)
 ==176106==  Illegal opcode at address 0x51CC63F
 ==176106==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176106==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176106==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176106==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1941
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1920 ./libtest/libtests lib1920 http://127.0.0.1:32943/ log/4/cookie1920 > log/4/stdout1920 2> log/4/stderr1920
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1944 ./libtest/libtests lib1940 http://127.0.0.1:37077/1944 > log/19/stdout1944 2> log/19/stderr1944
test 1943 [curl_easy_header with trailers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1943 ./libtest/libtests lib1940 http://127.0.0.1:35903/1943 > log/16/stdout1943 2> log/16/stderr1943

 1943: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:29:02.556672583 +0000
+++ log/16/check-generated	2026-10-15 19:29:02.552608291 +0000
@@ -1,3 +0,0 @@
- Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
- Server == fakeit/0.9 fakeitbad/1.0[LF]
- Server == sent-as-trailer[LF]
== Contents of files in the log/16/ directory after test 1943
=== Start of file check-expected
  Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
  Server == fakeit/0.9 fakeitbad/1.0[LF]
  Server == sent-as-trailer[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind1943 ./libtest/libtests lib1940 http://127.0.0.1:35903/1943 > log/16/stdout1943 2> log/16/stderr1943
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.869155 ====> Client connect
 19:29:01.869210 accept_connection 3 returned 4
 19:29:01.869472 Read 93 bytes
 19:29:01.869485 Process 93 bytes request
 19:29:01.869497 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.869506 Are-we-friendly question received
 19:29:01.869533 Wrote request (93 bytes) input to log/16/server.input
 19:29:01.869549 Identifying ourselves as friends
 19:29:01.869601 Response sent (56 bytes) and written to log/16/server.response
 19:29:01.869609 special request received, no persistency
 19:29:01.869616 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 39624 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1943
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind1943
 ==176314== 
 ==176314== Process terminating with default action of signal 4 (SIGILL)
 ==176314==  Illegal opcode at address 0x51CC63F
 ==176314==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176314==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176314==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176314==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1943
test 1920 [load cookies, perform then reset before cleanup]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1920 ./libtest/libtests lib1920 http://127.0.0.1:32943/ log/4/cookie1920 > log/4/stdout1920 2> log/4/stderr1920

 1920: output (log/4/cookie1920) FAILED:
--- log/4/check-expected	2026-10-15 19:29:02.575105122 +0000
+++ log/4/check-generated	2026-10-15 19:29:02.575053826 +0000
@@ -2,5 +2,4 @@
 # https://curl.se/docs/http-cookies.html[CR][LF]
 # This file was generated by libcurl! Edit at your own risk.[CR][LF]
 [CR][LF]
-127.0.0.1%09FALSE%09/%09FALSE%090%09cookiename%09cookiecontent[CR][LF]
 example.com%09FALSE%09/%09FALSE%090%09has_js%091[CR][LF]
== Contents of files in the log/4/ directory after test 1920
=== Start of file check-expected
 # Netscape HTTP Cookie File[CR][LF]
 # https://curl.se/docs/http-cookies.html[CR][LF]
 # This file was generated by libcurl! Edit at your own risk.[CR][LF]
 [CR][LF]
 127.0.0.1%09FALSE%09/%09FALSE%090%09cookiename%09cookiecontent[CR][LF]
 example.com%09FALSE%09/%09FALSE%090%09has_js%091[CR][LF]
=== End of file check-expected
=== Start of file check-generated
 # Netscape HTTP Cookie File[CR][LF]
 # https://curl.se/docs/http-cookies.html[CR][LF]
 # This file was generated by libcurl! Edit at your own risk.[CR][LF]
 [CR][LF]
 example.com%09FALSE%09/%09FALSE%090%09has_js%091[CR][LF]
=== End of file check-generated
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind1920 ./libtest/libtests lib1920 http://127.0.0.1:32943/ log/4/cookie1920 > log/4/stdout1920 2> log/4/stderr1920
=== End of file commands.log
=== Start of file cookie1920
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 example.com	FALSE	/	FALSE	0	has_js	1
=== End of file cookie1920
=== Start of file http_server.log
 19:29:01.420645 ====> Client connect
 19:29:01.420683 accept_connection 3 returned 4
 19:29:01.420825 Read 93 bytes
 19:29:01.420837 Process 93 bytes request
 19:29:01.420849 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.420857 Are-we-friendly question received
 19:29:01.420898 Wrote request (93 bytes) input to log/4/server.input
 19:29:01.420914 Identifying ourselves as friends
 19:29:01.420968 Response sent (57 bytes) and written to log/4/server.response
 19:29:01.420977 special request received, no persistency
 19:29:01.420984 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:32943...
 * Established connection to 127.0.0.1 (127.0.0.1 port 32943) from 127.0.0.1 port 41642 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:32943
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:32943 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 165851
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1920
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 165851
=== End of file server.response
=== Start of file valgrind1920
 ==175955== 
 ==175955== Process terminating with default action of signal 4 (SIGILL)
 ==175955==  Illegal opcode at address 0x51CC63F
 ==175955==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==175955==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==175955==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==175955==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1920
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1942 ./libtest/libtests lib1940 http://127.0.0.1:44711/1942 > log/23/stdout1942 2> log/23/stderr1942
test 1944 [curl_easy_header with redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1944 ./libtest/libtests lib1940 http://127.0.0.1:37077/1944 > log/19/stdout1944 2> log/19/stderr1944

 1944: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:29:02.593789304 +0000
+++ log/19/check-generated	2026-10-15 19:29:02.589274961 +0000
@@ -1,6 +0,0 @@
- Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
- Server == the other one[LF]
- Content-Type == text/html[LF]
- Content-Length == 0[LF]
-- Set-Cookie == 1cookie=data1; (0/2)[LF]
-- Set-Cookie == 2cookie=data2; (1/2)[LF]
== Contents of files in the log/19/ directory after test 1944
=== Start of file check-expected
  Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
  Server == the other one[LF]
  Content-Type == text/html[LF]
  Content-Length == 0[LF]
 - Set-Cookie == 1cookie=data1; (0/2)[LF]
 - Set-Cookie == 2cookie=data2; (1/2)[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind1944 ./libtest/libtests lib1940 http://127.0.0.1:37077/1944 > log/19/stdout1944 2> log/19/stderr1944
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.896181 ====> Client connect
 19:29:00.896219 accept_connection 3 returned 4
 19:29:00.896243 Read 93 bytes
 19:29:00.896254 Process 93 bytes request
 19:29:00.896266 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.896276 Are-we-friendly question received
 19:29:00.896306 Wrote request (93 bytes) input to log/19/server.input
 19:29:00.896326 Identifying ourselves as friends
 19:29:00.896390 Response sent (57 bytes) and written to log/19/server.response
 19:29:00.896401 special request received, no persistency
 19:29:00.896409 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 39808 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1944
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind1944
 ==176315== 
 ==176315== Process terminating with default action of signal 4 (SIGILL)
 ==176315==  Illegal opcode at address 0x51CC63F
 ==176315==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176315==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176315==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176315==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1944
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1947 ./libtest/libtests lib1947 http://127.0.0.1:35989/1947 http://127.0.0.1:35989/19470003 > log/22/stdout1947 2> log/22/stderr1947
test 1942 [curl_easy_header with 1xx response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1942 ./libtest/libtests lib1940 http://127.0.0.1:44711/1942 > log/23/stdout1942 2> log/23/stderr1942

 1942: stdout FAILED:
--- log/23/check-expected	2026-10-15 19:29:02.826160527 +0000
+++ log/23/check-generated	2026-10-15 19:29:02.822608313 +0000
@@ -1,10 +0,0 @@
- Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
- Server == test with trailing space[LF]
- Content-Type == text/html[LF]
- Content-Length == 0[LF]
- Location == /19420002[LF]
-- Set-Cookie == onecookie=data; (0/3)[LF]
-- Set-Cookie == secondcookie=2data; (1/3)[LF]
-- Set-Cookie == cookie3=data3; (2/3)[LF]
- Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
- Server == maybe different[LF]
== Contents of files in the log/23/ directory after test 1942
=== Start of file check-expected
  Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
  Server == test with trailing space[LF]
  Content-Type == text/html[LF]
  Content-Length == 0[LF]
  Location == /19420002[LF]
 - Set-Cookie == onecookie=data; (0/3)[LF]
 - Set-Cookie == secondcookie=2data; (1/3)[LF]
 - Set-Cookie == cookie3=data3; (2/3)[LF]
  Date == Thu, 09 Nov 2010 14:49:00 GMT[LF]
  Server == maybe different[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind1942 ./libtest/libtests lib1940 http://127.0.0.1:44711/1942 > log/23/stdout1942 2> log/23/stderr1942
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.810954 ====> Client connect
 19:29:00.810995 accept_connection 3 returned 4
 19:29:00.811019 Read 93 bytes
 19:29:00.811029 Process 93 bytes request
 19:29:00.811042 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.811051 Are-we-friendly question received
 19:29:00.811077 Wrote request (93 bytes) input to log/23/server.input
 19:29:00.811094 Identifying ourselves as friends
 19:29:00.811172 Response sent (56 bytes) and written to log/23/server.response
 19:29:00.811181 special request received, no persistency
 19:29:00.811190 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 53582 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1942
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind1942
 ==176241== 
 ==176241== Process terminating with default action of signal 4 (SIGILL)
 ==176241==  Illegal opcode at address 0x51CC63F
 ==176241==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176241==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176241==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176241==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1942
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1961 ./unit/units unit1961 - > log/13/stdout1961 2> log/13/stderr1961
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1946 ./libtest/libtests lib1940 http://127.0.0.1:39881/1946 > log/21/stdout1946 2> log/21/stderr1946
test 1947 [curl_easy_nextheader on second request after first did redirects]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1947 ./libtest/libtests lib1947 http://127.0.0.1:35989/1947 http://127.0.0.1:35989/19470003 > log/22/stdout1947 2> log/22/stderr1947

 1947: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:29:02.879368977 +0000
+++ log/22/check-generated	2026-10-15 19:29:02.875941651 +0000
@@ -1,2 +0,0 @@
-count = 2[LF]
-count = 1[LF]
== Contents of files in the log/22/ directory after test 1947
=== Start of file check-expected
 count = 2[LF]
 count = 1[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind1947 ./libtest/libtests lib1947 http://127.0.0.1:35989/1947 http://127.0.0.1:35989/19470003 > log/22/stdout1947 2> log/22/stderr1947
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.000977 ====> Client connect
 19:29:01.001012 accept_connection 3 returned 4
 19:29:01.001206 Read 93 bytes
 19:29:01.001227 Process 93 bytes request
 19:29:01.001242 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.001251 Are-we-friendly question received
 19:29:01.001283 Wrote request (93 bytes) input to log/22/server.input
 19:29:01.001302 Identifying ourselves as friends
 19:29:01.001367 Response sent (56 bytes) and written to log/22/server.response
 19:29:01.001377 special request received, no persistency
 19:29:01.001385 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 47036 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1947
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind1947
 ==176497== 
 ==176497== Process terminating with default action of signal 4 (SIGILL)
 ==176497==  Illegal opcode at address 0x51CC63F
 ==176497==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176497==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176497==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176497==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1947
test 1961 [curlx_inet_ntop() and curlx_inet_pton()]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1961 ./unit/units unit1961 - > log/13/stdout1961 2> log/13/stderr1961

units returned 132, when expecting 0
 1961: exit FAILED
== Contents of files in the log/13/ directory after test 1961
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind1961 ./unit/units unit1961 - > log/13/stdout1961 2> log/13/stderr1961
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1961
=== End of file server.cmd
=== Start of file valgrind1961
 ==176492== 
 ==176492== Process terminating with default action of signal 4 (SIGILL)
 ==176492==  Illegal opcode at address 0x4091F7F
 ==176492==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==176492==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==176492==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==176492==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1961
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1967 ./libtest/libtests lib1967 http://127.0.0.1:47/not-there/1967 > log/2/stdout1967 2> log/2/stderr1967
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1945 ./libtest/libtests lib1945 http://hello:40989/1945 127.0.0.1:39335 > log/11/stdout1945 2> log/11/stderr1945
test 1946 [curl_easy_header with redirect but get headers from first request]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1946 ./libtest/libtests lib1940 http://127.0.0.1:39881/1946 > log/21/stdout1946 2> log/21/stderr1946

 1946: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:29:02.992917075 +0000
+++ log/21/check-generated	2026-10-15 19:29:02.990529647 +0000
@@ -1,8 +0,0 @@
- Date == Thu, 01 Nov 2001 14:49:00 GMT[LF]
- Server == test with trailing space[LF]
- Content-Type == text/html[LF]
- Content-Length == 0[LF]
- Location == /19460002[LF]
-- Set-Cookie == onecookie=data; (0/3)[LF]
-- Set-Cookie == secondcookie=2data; (1/3)[LF]
-- Set-Cookie == cookie3=data3; (2/3)[LF]
== Contents of files in the log/21/ directory after test 1946
=== Start of file check-expected
  Date == Thu, 01 Nov 2001 14:49:00 GMT[LF]
  Server == test with trailing space[LF]
  Content-Type == text/html[LF]
  Content-Length == 0[LF]
  Location == /19460002[LF]
 - Set-Cookie == onecookie=data; (0/3)[LF]
 - Set-Cookie == secondcookie=2data; (1/3)[LF]
 - Set-Cookie == cookie3=data3; (2/3)[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind1946 ./libtest/libtests lib1940 http://127.0.0.1:39881/1946 > log/21/stdout1946 2> log/21/stderr1946
=== End of file commands.log
=== Start of file http_server.log
 19:29:00.954301 ====> Client connect
 19:29:00.954350 accept_connection 3 returned 4
 19:29:00.954375 Read 93 bytes
 19:29:00.954385 Process 93 bytes request
 19:29:00.954399 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.954407 Are-we-friendly question received
 19:29:00.954450 Wrote request (93 bytes) input to log/21/server.input
 19:29:00.954467 Identifying ourselves as friends
 19:29:00.954559 Response sent (56 bytes) and written to log/21/server.response
 19:29:00.954569 special request received, no persistency
 19:29:00.954577 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 42792 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1946
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind1946
 ==176419== 
 ==176419== Process terminating with default action of signal 4 (SIGILL)
 ==176419==  Illegal opcode at address 0x51CC63F
 ==176419==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176419==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176419==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176419==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1946
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1948 ./libtest/libtests lib1948 http://127.0.0.1:38815/1948 > log/1/stdout1948 2> log/1/stderr1948
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1960 ./libtest/libtests lib1960 http://127.0.0.1:41689/file 127.0.0.1 41689 > log/20/stdout1960 2> log/20/stderr1960
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1917 ./libtest/libtests lib1916 "mqtt://127.0.0.1:40663/%20" > log/24/stdout1917 2> log/24/stderr1917
test 1967 [curl_url_set() a URL without guessing a scheme]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1967 ./libtest/libtests lib1967 http://127.0.0.1:47/not-there/1967 > log/2/stdout1967 2> log/2/stderr1967

 1967: stdout FAILED:
--- log/2/check-expected	2026-10-15 19:29:03.095987439 +0000
+++ log/2/check-generated	2026-10-15 19:29:03.092608251 +0000
@@ -1 +0,0 @@
-URL http://a.b/x[CR][LF]
== Contents of files in the log/2/ directory after test 1967
=== Start of file check-expected
 URL http://a.b/x[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind1967 ./libtest/libtests lib1967 http://127.0.0.1:47/not-there/1967 > log/2/stdout1967 2> log/2/stderr1967
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1967
=== End of file server.cmd
=== Start of file valgrind1967
 ==176922== 
 ==176922== Process terminating with default action of signal 4 (SIGILL)
 ==176922==  Illegal opcode at address 0x51CC63F
 ==176922==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176922==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176922==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176922==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1967
test 1948 [CURLOPT_POST after CURLOPT_UPLOAD reusing handle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1948 ./libtest/libtests lib1948 http://127.0.0.1:38815/1948 > log/1/stdout1948 2> log/1/stderr1948

 1948: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 1948
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind1948 ./libtest/libtests lib1948 http://127.0.0.1:38815/1948 > log/1/stdout1948 2> log/1/stderr1948
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.987110 ====> Client connect
 19:29:01.987147 accept_connection 3 returned 4
 19:29:01.987166 Read 93 bytes
 19:29:01.987176 Process 93 bytes request
 19:29:01.987189 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.987197 Are-we-friendly question received
 19:29:01.987228 Wrote request (93 bytes) input to log/1/server.input
 19:29:01.987244 Identifying ourselves as friends
 19:29:01.987309 Response sent (56 bytes) and written to log/1/server.response
 19:29:01.987319 special request received, no persistency
 19:29:01.987327 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 52008 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1948
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind1948
 ==176458== 
 ==176458== Process terminating with default action of signal 4 (SIGILL)
 ==176458==  Illegal opcode at address 0x51CC63F
 ==176458==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176458==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176458==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176458==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1948
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1916 ./libtest/libtests lib1916 "mqtt://127.0.0.1:45407/%20" > log/14/stdout1916 2> log/14/stderr1916
test 1945 [curl_easy_nextheader with server + CONNECT]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1945 ./libtest/libtests lib1945 http://hello:40989/1945 127.0.0.1:39335 > log/11/stdout1945 2> log/11/stderr1945

 1945: stdout FAILED:
--- log/11/check-expected	2026-10-15 19:29:03.112989088 +0000
+++ log/11/check-generated	2026-10-15 19:29:03.109876983 +0000
@@ -1,11 +0,0 @@
- Server == from the connect (0/2)[LF]
- Silly-thing == yes yes (0/1)[LF]
- Date == Thu, 09 Nov 2010 14:49:00 GMT (0/1)[LF]
- Server == test with trailing space (1/2)[LF]
- Content-Type == text/html (0/1)[LF]
- Content-Length == 0 (0/1)[LF]
- Set-Cookie == onecookie=data; (0/4)[LF]
- Set-Cookie == secondcookie=2data; (1/4)[LF]
- Set-Cookie == cookie3=data3; (2/4)[LF]
- set-cookie == lowercase=data4; (3/4)[LF]
- Location == /19450002 (0/1)[LF]
== Contents of files in the log/11/ directory after test 1945
=== Start of file check-expected
  Server == from the connect (0/2)[LF]
  Silly-thing == yes yes (0/1)[LF]
  Date == Thu, 09 Nov 2010 14:49:00 GMT (0/1)[LF]
  Server == test with trailing space (1/2)[LF]
  Content-Type == text/html (0/1)[LF]
  Content-Length == 0 (0/1)[LF]
  Set-Cookie == onecookie=data; (0/4)[LF]
  Set-Cookie == secondcookie=2data; (1/4)[LF]
  Set-Cookie == cookie3=data3; (2/4)[LF]
  set-cookie == lowercase=data4; (3/4)[LF]
  Location == /19450002 (0/1)[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind1945 ./libtest/libtests lib1945 http://hello:40989/1945 127.0.0.1:39335 > log/11/stdout1945 2> log/11/stderr1945
=== End of file commands.log
=== Start of file http2_server.log
 19:29:01.994301 ====> Client connect
 19:29:01.994346 accept_connection 3 returned 4
 19:29:01.994375 Read 93 bytes
 19:29:01.994387 Process 93 bytes request
 19:29:01.994413 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.994423 Are-we-friendly question received
 19:29:01.994456 Wrote request (93 bytes) input to log/11/proxy.input
 19:29:01.994487 Identifying ourselves as friends
 19:29:01.994584 Response sent (57 bytes) and written to log/11/proxy.response
 19:29:01.994598 special request received, no persistency
 19:29:01.994607 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:39335...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39335) from 127.0.0.1 port 46888 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39335
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:39335 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 150163
=== End of file http2_verify.out
=== Start of file http_server.log
 19:29:00.927071 ====> Client connect
 19:29:00.927110 accept_connection 3 returned 4
 19:29:00.927132 Read 93 bytes
 19:29:00.927142 Process 93 bytes request
 19:29:00.927155 Got request: GET /verifiedserver HTTP/1.1
 19:29:00.927163 Are-we-friendly question received
 19:29:00.927188 Wrote request (93 bytes) input to log/11/server.input
 19:29:00.927204 Identifying ourselves as friends
 19:29:00.927265 Response sent (56 bytes) and written to log/11/server.response
 19:29:00.927274 special request received, no persistency
 19:29:00.927282 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 49416 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 150163
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 1945
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind1945
 ==176485== 
 ==176485== Process terminating with default action of signal 4 (SIGILL)
 ==176485==  Illegal opcode at address 0x51CC63F
 ==176485==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176485==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176485==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176485==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1945
prechecked ./libtest/libtests lib1960 check
test 1960 [application hands over already connected socket]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1960 ./libtest/libtests lib1960 http://127.0.0.1:41689/file 127.0.0.1 41689 > log/20/stdout1960 2> log/20/stderr1960

 1960: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 1960
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind1960 ./libtest/libtests lib1960 http://127.0.0.1:41689/file 127.0.0.1 41689 > log/20/stdout1960 2> log/20/stderr1960
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.071409 ====> Client connect
 19:29:01.071479 accept_connection 3 returned 4
 19:29:01.071505 Read 93 bytes
 19:29:01.071514 Process 93 bytes request
 19:29:01.071525 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.071533 Are-we-friendly question received
 19:29:01.071561 Wrote request (93 bytes) input to log/20/server.input
 19:29:01.071576 Identifying ourselves as friends
 19:29:01.071663 Response sent (57 bytes) and written to log/20/server.response
 19:29:01.071674 special request received, no persistency
 19:29:01.071682 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 53856 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file precheck-1960
 URL: check
 Test ended with result 0
=== End of file precheck-1960
=== Start of file server.cmd
 Testnum 1960
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind1960
 ==176745== 
 ==176745== Process terminating with default action of signal 4 (SIGILL)
 ==176745==  Illegal opcode at address 0x51CC63F
 ==176745==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176745==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176745==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176745==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1960
startnew: ./server/servers mqttd --port 0 --pidfile log/14/server/mqtt_server.pid --portfile log/14/server/mqtt_server.port --config log/14/server.cmd --logfile log/14/mqtt_server.log --logdir log/14
RUN: MQTT server is now running PID 175830 on PORT 45407
* pid mqtt => 175830 175830
test 1916 [MQTT PUBLISH with no POSTFIELDSIZE set]
../libtool -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1965 ./libtest/libtests lib1965 - > log/7/stdout1965 2> log/7/stderr1965
-mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1916 ./libtest/libtests lib1916 "mqtt://127.0.0.1:45407/%20" > log/14/stdout1916 2> log/14/stderr1916

 1916: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 1916
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind1916 ./libtest/libtests lib1916 "mqtt://127.0.0.1:45407/%20" > log/14/stdout1916 2> log/14/stderr1916
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:00.118043 Running IPv4 version
 19:29:00.118135 Listening on port 45407
 19:29:00.118177 Wrote pid 175830 to log/14/server/mqtt_server.pid
 19:29:00.118211 Wrote port 45407 to log/14/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 1916
=== End of file server.cmd
=== Start of file valgrind1916
 ==176662== 
 ==176662== Process terminating with default action of signal 4 (SIGILL)
 ==176662==  Illegal opcode at address 0x51CC63F
 ==176662==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176662==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176662==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176662==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1916
startnew: ./server/servers mqttd --port 0 --pidfile log/24/server/mqtt_server.pid --portfile log/24/server/mqtt_server.port --config log/24/server.cmd --logfile log/24/mqtt_server.log --logdir log/24
RUN: MQTT server is now running PID 175834 on PORT 40663
* pid mqtt => 175834 175834
test 1917 [MQTT PUBLISH with CURLOPT_POST set (no payload)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1917 ./libtest/libtests lib1916 "mqtt://127.0.0.1:40663/%20" > log/24/stdout1917 2> log/24/stderr1917

 1917: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 1917
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind1917 ./libtest/libtests lib1916 "mqtt://127.0.0.1:40663/%20" > log/24/stdout1917 2> log/24/stderr1917
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:00.191479 Running IPv4 version
 19:29:00.191564 Listening on port 40663
 19:29:00.191606 Wrote pid 175834 to log/24/server/mqtt_server.pid
 19:29:00.191639 Wrote port 40663 to log/24/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 1917
=== End of file server.cmd
=== Start of file valgrind1917
 ==176804== 
 ==176804== Process terminating with default action of signal 4 (SIGILL)
 ==176804==  Illegal opcode at address 0x51CC63F
 ==176804==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176804==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176804==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176804==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1917
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1964 ./libtest/libtests lib1964 http://xxx:yyy@127.0.0.1:9000/1964/testapi/test 127.0.0.1:9000:127.0.0.1:35993 > log/17/stdout1964 2> log/17/stderr1964
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1977 ./libtest/libtests lib1977 http://127.0.0.1:36161/1977 > log/3/stdout1977 2> log/3/stderr1977
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1979 ./unit/units unit1979 - > log/6/stdout1979 2> log/6/stderr1979
test 1965 [curl_url_set() different schemes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1965 ./libtest/libtests lib1965 - > log/7/stdout1965 2> log/7/stderr1965

 1965: stdout FAILED:
--- log/7/check-expected	2026-10-15 19:29:03.189505639 +0000
+++ log/7/check-generated	2026-10-15 19:29:03.185941501 +0000
@@ -1,20 +0,0 @@
-bad! REJECTED[CR][LF]
-bad{ REJECTED[CR][LF]
-bad/ REJECTED[CR][LF]
-bad\ REJECTED[CR][LF]
-a! REJECTED[CR][LF]
-a+123 ACCEPTED[CR][LF]
-http-2 ACCEPTED[CR][LF]
-http.1 ACCEPTED[CR][LF]
-a+-.123 ACCEPTED[CR][LF]
-http-+++2 ACCEPTED[CR][LF]
-http.1-- ACCEPTED[CR][LF]
-+a123 REJECTED[CR][LF]
--http2 REJECTED[CR][LF]
-.http1 REJECTED[CR][LF]
-ABC2 ACCEPTED[CR][LF]
-2CBA REJECTED[CR][LF]
- REJECTED[CR][LF]
-a ACCEPTED[CR][LF]
-aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd ACCEPTED[CR][LF]
-aaaaaaaaaabbbbbbbbbbccccccccccdddddddddde REJECTED[CR][LF]
== Contents of files in the log/7/ directory after test 1965
=== Start of file check-expected
 bad! REJECTED[CR][LF]
 bad{ REJECTED[CR][LF]
 bad/ REJECTED[CR][LF]
 bad\ REJECTED[CR][LF]
 a! REJECTED[CR][LF]
 a+123 ACCEPTED[CR][LF]
 http-2 ACCEPTED[CR][LF]
 http.1 ACCEPTED[CR][LF]
 a+-.123 ACCEPTED[CR][LF]
 http-+++2 ACCEPTED[CR][LF]
 http.1-- ACCEPTED[CR][LF]
 +a123 REJECTED[CR][LF]
 -http2 REJECTED[CR][LF]
 .http1 REJECTED[CR][LF]
 ABC2 ACCEPTED[CR][LF]
 2CBA REJECTED[CR][LF]
  REJECTED[CR][LF]
 a ACCEPTED[CR][LF]
 aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd ACCEPTED[CR][LF]
 aaaaaaaaaabbbbbbbbbbccccccccccdddddddddde REJECTED[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind1965 ./libtest/libtests lib1965 - > log/7/stdout1965 2> log/7/stderr1965
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1965
=== End of file server.cmd
=== Start of file valgrind1965
 ==176619== 
 ==176619== Process terminating with default action of signal 4 (SIGILL)
 ==176619==  Illegal opcode at address 0x51CC63F
 ==176619==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176619==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176619==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176619==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1965
test 1964 [HTTP AWS_SIGV4 with X-Xxx-Date header set manually]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1964 ./libtest/libtests lib1964 http://xxx:yyy@127.0.0.1:9000/1964/testapi/test 127.0.0.1:9000:127.0.0.1:35993 > log/17/stdout1964 2> log/17/stderr1964

 1964: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 1964
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind1964 ./libtest/libtests lib1964 http://xxx:yyy@127.0.0.1:9000/1964/testapi/test 127.0.0.1:9000:127.0.0.1:35993 > log/17/stdout1964 2> log/17/stderr1964
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.090952 ====> Client connect
 19:29:02.090994 accept_connection 3 returned 4
 19:29:02.091019 Read 93 bytes
 19:29:02.091029 Process 93 bytes request
 19:29:02.091042 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.091050 Are-we-friendly question received
 19:29:02.091077 Wrote request (93 bytes) input to log/17/server.input
 19:29:02.091093 Identifying ourselves as friends
 19:29:02.091183 Response sent (56 bytes) and written to log/17/server.response
 19:29:02.091193 special request received, no persistency
 19:29:02.091201 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 38384 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1964
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind1964
 ==176652== 
 ==176652== Process terminating with default action of signal 4 (SIGILL)
 ==176652==  Illegal opcode at address 0x51CC63F
 ==176652==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==176652==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==176652==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==176652==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1964
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1980 ./unit/units unit1980 - > log/15/stdout1980 2> log/15/stderr1980
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1989 ./libtest/libtests lib1989 - > log/8/stdout1989 2> log/8/stderr1989
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1985 ./libtest/libtests lib1985 http://firsthost:43739/1985 http://secondhost:43739/19850001 43739 127.0.0.1 > log/18/stdout1985 2> log/18/stderr1985
test 1977 [CURLOPT_CURLU and CURLINFO_EFFECTIVE_URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1977 ./libtest/libtests lib1977 http://127.0.0.1:36161/1977 > log/3/stdout1977 2> log/3/stderr1977

 1977: stdout FAILED:
--- log/3/check-expected	2026-10-15 19:29:03.225452601 +0000
+++ log/3/check-generated	2026-10-15 19:29:03.222608134 +0000
@@ -1,3 +0,0 @@
-effective URL: http://127.0.0.1:36161/1977[LF]
-effective URL: http://127.0.0.1:36161/1977?foo[LF]
-effective URL: http://127.0.0.1:36161/1977?foo&bar[LF]
== Contents of files in the log/3/ directory after test 1977
=== Start of file check-expected
 effective URL: http://127.0.0.1:36161/1977[LF]
 effective URL: http://127.0.0.1:36161/1977?foo[LF]
 effective URL: http://127.0.0.1:36161/1977?foo&bar[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind1977 ./libtest/libtests lib1977 http://127.0.0.1:36161/1977 > log/3/stdout1977 2> log/3/stderr1977
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.357621 ====> Client connect
 19:29:02.357666 accept_connection 3 returned 4
 19:29:02.357692 Read 93 bytes
 19:29:02.357702 Process 93 bytes request
 19:29:02.357715 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.357723 Are-we-friendly question received
 19:29:02.357751 Wrote request (93 bytes) input to log/3/server.input
 19:29:02.357772 Identifying ourselves as friends
 19:29:02.357852 Response sent (56 bytes) and written to log/3/server.response
 19:29:02.357861 special request received, no persistency
 19:29:02.357870 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 47586 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1977
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind1977
 ==177036== 
 ==177036== Process terminating with default action of signal 4 (SIGILL)
 ==177036==  Illegal opcode at address 0x51CC63F
 ==177036==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==177036==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==177036==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==177036==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1977
test 1979 [sigv4 canon_string unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1979 ./unit/units unit1979 - > log/6/stdout1979 2> log/6/stderr1979

units returned 132, when expecting 0
 1979: exit FAILED
== Contents of files in the log/6/ directory after test 1979
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind1979 ./unit/units unit1979 - > log/6/stdout1979 2> log/6/stderr1979
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1979
=== End of file server.cmd
=== Start of file valgrind1979
 ==177087== 
 ==177087== Process terminating with default action of signal 4 (SIGILL)
 ==177087==  Illegal opcode at address 0x4091F7F
 ==177087==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==177087==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==177087==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==177087==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1979
test 1980 [sigv4 canon_query unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1980 ./unit/units unit1980 - > log/15/stdout1980 2> log/15/stderr1980

units returned 132, when expecting 0
 1980: exit FAILED
== Contents of files in the log/15/ directory after test 1980
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind1980 ./unit/units unit1980 - > log/15/stdout1980 2> log/15/stderr1980
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1980
=== End of file server.cmd
=== Start of file valgrind1980
 ==177109== 
 ==177109== Process terminating with default action of signal 4 (SIGILL)
 ==177109==  Illegal opcode at address 0x4091F7F
 ==177109==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==177109==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==177109==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==177109==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind1980
test 1989 [curl_url_dup preserves guessed_scheme]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1989 ./libtest/libtests lib1989 - > log/8/stdout1989 2> log/8/stderr1989

libtests returned 132, when expecting 0
 1989: exit FAILED
== Contents of files in the log/8/ directory after test 1989
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind1989 ./libtest/libtests lib1989 - > log/8/stdout1989 2> log/8/stderr1989
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1989
=== End of file server.cmd
=== Start of file valgrind1989
 ==177370== 
 ==177370== Process terminating with default action of signal 4 (SIGILL)
 ==177370==  Illegal opcode at address 0x51CC63F
 ==177370==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==177370==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==177370==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==177370==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1989
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/22/server/tftp_server.pid" --portfile "log/22/server/tftp_server.port" --logfile "log/22/tftp_server.log" --logdir "log/22" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 177694 port 53891
* pid tftp => 177694 177694
test 1985 [Digest response when not asked, then use Digest]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1985 ./libtest/libtests lib1985 http://firsthost:43739/1985 http://secondhost:43739/19850001 43739 127.0.0.1 > log/18/stdout1985 2> log/18/stderr1985

 1985: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 1985
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind1985 ./libtest/libtests lib1985 http://firsthost:43739/1985 http://secondhost:43739/19850001 43739 127.0.0.1 > log/18/stdout1985 2> log/18/stderr1985
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.971091 ====> Client connect
 19:29:02.971151 accept_cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1982 ../src/curl -q --output log/10/curl1982.out  --include --trace-ascii log/10/trace1982 --trace-time 'imap://user.one:secret@127.0.0.1:43825/1982/;MAILINDEX=1' 'imap://user.one:secret;AUTH=XOAUTH2@127.0.0.1:43825/1982/;UID=2' > log/10/stdout1982 2> log/10/stderr1982
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1966 ../src/curl -q --output log/12/curl1966.out  --include --trace-ascii log/12/trace1966 --trace-time --resolve host.evil.com:40921:127.0.0.1 --resolve host.corp.com:40921:127.0.0.1 --netrc-file log/12/netrc1966 --digest -L http://host.evil.com:40921/1966 --max-redirs 2 > log/12/stdout1966 2> log/12/stderr1966
onnection 3 returned 4
 19:29:02.977561 Read 93 bytes
 19:29:02.977593 Process 93 bytes request
 19:29:02.977607 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.977616 Are-we-friendly question received
 19:29:02.977668 Wrote request (93 bytes) input to log/18/server.input
 19:29:02.977691 Identifying ourselves as friends
 19:29:02.977777 Response sent (56 bytes) and written to log/18/server.response
 19:29:02.977791 special request received, no persistency
 19:29:02.977800 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 59712 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1985
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind1985
 ==177435== 
 ==177435== Process terminating with default action of signal 4 (SIGILL)
 ==177435==  Illegal opcode at address 0x51CC63F
 ==177435==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==177435==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==177435==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==177435==    by 0x40041AF: main (first.c:264)
=== End of file valgrind1985
test 1982 [IMAP two requests, change options for the second]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1982 ../src/curl -q --output log/10/curl1982.out  --include --trace-ascii log/10/trace1982 --trace-time 'imap://user.one:secret@127.0.0.1:43825/1982/;MAILINDEX=1' 'imap://user.one:secret;AUTH=XOAUTH2@127.0.0.1:43825/1982/;UID=2' > log/10/stdout1982 2> log/10/stderr1982

 1982: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 1982
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind1982 ../src/curl -q --output log/10/curl1982.out  --include --trace-ascii log/10/trace1982 --trace-time 'imap://user.one:secret@127.0.0.1:43825/1982/;MAILINDEX=1' 'imap://user.one:secret;AUTH=XOAUTH2@127.0.0.1:43825/1982/;UID=2' > log/10/stdout1982 2> log/10/stderr1982
=== End of file commands.log
=== Start of file imap_server.log
 19:29:02.118802 ====> Client connect
 19:29:02.118983 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:29:02.129043 < "A001 CAPABILITY"
 19:29:02.129104 > "A001 BAD Command[CR][LF]"
 19:29:02.135540 < "A002 LIST "verifiedserver" *"
 19:29:02.135596 LIST_imap got "verifiedserver" *
 19:29:02.135636 > "* LIST () "/" "WE ROOLZ: 121977"[CR][LF]"
 19:29:02.135657 > "A002 OK LIST Completed[CR][LF]"
 19:29:02.135671 return proof we are we
 19:29:02.182394 < "A003 LOGOUT"
 19:29:02.182464 > "* BYE curl IMAP server signing off[CR][LF]"
 19:29:02.182489 > "A003 OK LOGOUT completed[CR][LF]"
 19:29:02.183909 MAIN sockfilt said DISC
 19:29:02.183948 ====> Client disconnected
 19:29:02.184031 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:29:02.720900 ====> Client connect
 19:29:02.721237 Received DATA (on stdin)
 19:29:02.721251 > 164 bytes data, server => client
 19:29:02.721262 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:29:02.721273 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:29:02.721282 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:29:02.730910 < 17 bytes data, client => server
 19:29:02.730951 'A001 CAPABILITY\r\n'
 19:29:02.731349 Received DATA (on stdin)
 19:29:02.731363 > 18 bytes data, server => client
 19:29:02.731373 'A001 BAD Command\r\n'
 19:29:02.737566 < 30 bytes data, client => server
 19:29:02.737599 'A002 LIST "verifiedserver" *\r\n'
 19:29:02.737920 Received DATA (on stdin)
 19:29:02.737936 > 34 bytes data, server => client
 19:29:02.737947 '* LIST () "/" "WE ROOLZ: 121977"\r\n'
 19:29:02.737984 Received DATA (on stdin)
 19:29:02.737994 > 24 bytes data, server => client
 19:29:02.738004 'A002 OK LIST Completed\r\n'
 19:29:02.784408 < 13 bytes data, client => server
 19:29:02.784444 'A003 LOGOUT\r\n'
 19:29:02.784741 Received DATA (on stdin)
 19:29:02.784757 > 36 bytes data, server => client
 19:29:02.784767 '* BYE curl IMAP server signing off\r\n'
 19:29:02.784795 Received DATA (on stdin)
 19:29:02.784804 > 26 bytes data, server => client
 19:29:02.784814 'A003 OK LOGOUT completed\r\n'
 19:29:02.786088 ====> Client disconnect
 19:29:02.786273 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 REPLY "LOGIN user.one secret" A002 OK LOGIN completed
 Testnum 1982
=== End of file server.cmd
=== Start of file valgrind1982
 ==177279== 
 ==177279== Process terminating with default action of signal 4 (SIGILL)
 ==177279==  Illegal opcode at address 0x492B75F
 ==177279==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177279==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177279==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177279==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177279==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177279==    by 0x49908EB: curl_version_info (version.c:600)
 ==177279==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177279==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177279==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177279==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1982
test 1966 [netrc with digest and redirect to other origin]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1966 ../src/curl -q --output log/12/curl1966.out  --include --trace-ascii log/12/trace1966 --trace-time --resolve host.evil.com:40921:127.0.0.1 --resolve host.corp.com:40921:127.0.0.1 --netrc-file log/12/netrc1966 --digest -L http://host.evil.com:40921/1966 --max-redirs 2 > log/12/stdout1966 2> log/12/stderr1966

 1966: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 1966
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind1966 ../src/curl -q --output log/12/curl1966.out  --include --trace-ascii log/12/trace1966 --trace-time --resolve host.evil.com:40921:127.0.0.1 --resolve host.corp.com:40921:127.0.0.1 --netrc-file log/12/netrc1966 --digest -L http://host.evil.com:40921/1966 --max-redirs 2 > log/12/stdout1966 2> log/12/stderr1966
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.350958 ====> Client connect
 19:29:01.350995 accept_connection 3 returned 4
 19:29:01.351018 Read 93 bytes
 19:29:01.351027 Process 93 bytes request
 19:29:01.351040 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.351049 Are-we-friendly question received
 19:29:01.351074 Wrote request (93 bytes) input to log/12/server.input
 19:29:01.351090 Identifying ourselves as friends
 19:29:01.351158 Response sent (56 bytes) and written to log/12/server.response
 19:29:01.351167 special request received, no persistency
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1983 ../src/curl -q --output log/9/curl1983.out  --include --trace-ascii log/9/trace1983 --trace-time http://127.0.0.1:43733/blah/1983 --follow -X DELETE > log/9/stdout1983 2> log/9/stderr1983
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1984 ../src/curl -q --output log/5/curl1984.out  --include --trace-ascii log/5/trace1984 --trace-time http://127.0.0.1:37089/blah/1984 --follow -T log/5/upload > log/5/stdout1984 2> log/5/stderr1984
19:29:01.351176 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 59676 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file netrc1966
 machine host.evil.com
   login evil_user
   password evil_pass
 machine host.corp.com
   login corporate_admin
   password S3cretP@ssw0rd
=== End of file netrc1966
=== Start of file server.cmd
 Testnum 1966
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind1966
 ==177038== 
 ==177038== Process terminating with default action of signal 4 (SIGILL)
 ==177038==  Illegal opcode at address 0x492B75F
 ==177038==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177038==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177038==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177038==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177038==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177038==    by 0x49908EB: curl_version_info (version.c:600)
 ==177038==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177038==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177038==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177038==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1966
test 1983 [HTTP DELETE with --follow and 303 redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1983 ../src/curl -q --output log/9/curl1983.out  --include --trace-ascii log/9/trace1983 --trace-time http://127.0.0.1:43733/blah/1983 --follow -X DELETE > log/9/stdout1983 2> log/9/stderr1983

 1983: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 1983
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind1983 ../src/curl -q --output log/9/curl1983.out  --include --trace-ascii log/9/trace1983 --trace-time http://127.0.0.1:43733/blah/1983 --follow -X DELETE > log/9/stdout1983 2> log/9/stderr1983
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.780947 ====> Client connect
 19:29:01.780985 accept_connection 3 returned 4
 19:29:01.781007 Read 93 bytes
 19:29:01.781016 Process 93 bytes request
 19:29:01.781029 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.781037 Are-we-friendly question received
 19:29:01.781064 Wrote request (93 bytes) input to log/9/server.input
 19:29:01.781081 Identifying ourselves as friends
 19:29:01.781147 Response sent (56 bytes) and written to log/9/server.response
 19:29:01.781156 special request received, no persistency
 19:29:01.781164 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35622 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1983
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind1983
 ==177283== 
 ==177283== Process terminating with default action of signal 4 (SIGILL)
 ==177283==  Illegal opcode at address 0x492B75F
 ==177283==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177283==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177283==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177283==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177283==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177283==    by 0x49908EB: curl_version_info (version.c:600)
 ==177283==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177283==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177283==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177283==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1983
test 1984 [HTTP PUT with 303 redirect and --follow]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1984 ../src/curl -q --output log/5/curl1984.out  --include --trace-ascii log/5/trace1984 --trace-time http://127.0.0.1:37089/blah/1984 --follow -T log/5/upload > log/5/stdout1984 2> log/5/stderr1984

 1984: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 1984
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind1984 ../src/curl -q --output log/5/curl1984.out  --include --trace-ascii log/5/trace1984 --trace-time http://127.0.0.1:37089/blah/1984 --follow -T log/5/upload > log/5/stdout1984 2> log/5/stderr1984
=== End of file commands.log
=== Start of file http_server.log
 19:29:01.911523 ====> Client connect
 19:29:01.911568 accept_connection 3 returned 4
 19:29:01.911706 Read 93 bytes
 19:29:01.911718 Process 93 bytes request
 19:29:01.911730 Got request: GET /verifiedserver HTTP/1.1
 19:29:01.911739 Are-we-friendly question received
 19:29:01.911769 Wrote request (93 bytes) input to log/5/server.input
 19:29:01.911786 Identifying ourselves as friends
 19:29:01.911841 Response sent (56 bytes) and written to log/5/server.response
 19:29:01.911851 special request received, no persistency
 19:29:01.911859 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 48750 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 1984
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file upload
 Except for responses to a HEAD request, the representation of a 303 response ought to contain a short hypertext note with a hyperlink to the same URI reference provided in the Location header field.
=== End of file upload
=== Start of file valgrind1984
 ==177358== 
 ==177358== Process terminating with default action of signal 4 (SIGILL)
 ==177358==  Illegal opcode at address 0x492B75F
 ==177358==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177358==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177358==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177358==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177358==    by 0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2001 ../src/curl -q --trace-ascii log/19/trace2001 --trace-time http://127.0.0.1:37077/20010001 ftp://127.0.0.1:38555/20010002 file://localhost/startdir/src/build-curl/tests/log/19/test2001.txt > log/19/stdout2001 2> log/19/stderr2001
x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177358==    by 0x49908EB: curl_version_info (version.c:600)
 ==177358==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177358==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177358==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind1984
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2005 ../src/curl -q --output log/13/curl2005.out  --include --trace-ascii log/13/trace2005 --trace-time --netrc-optional --netrc-file log/13/netrc2005 http://127.0.0.1:38821/ > log/13/stdout2005 2> log/13/stderr2005
test 2001 [HTTP GET followed by FTP RETR followed by FILE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2001 ../src/curl -q --trace-ascii log/19/trace2001 --trace-time http://127.0.0.1:37077/20010001 ftp://127.0.0.1:38555/20010002 file://localhost/startdir/src/build-curl/tests/log/19/test2001.txt > log/19/stdout2001 2> log/19/stderr2001

 2001: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:29:04.933406186 +0000
+++ log/19/check-generated	2026-10-15 19:29:04.929951351 +0000
@@ -1,12 +0,0 @@
--foo-[LF]
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/19/ directory after test 2001
=== Start of file check-expected
 -foo-[LF]
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2001 ../src/curl -q --trace-ascii log/19/trace2001 --trace-time http://127.0.0.1:37077/20010001 ftp://127.0.0.1:38555/20010002 file://localhost/startdir/src/build-curl/tests/log/19/test2001.txt > log/19/stdout2001 2> log/19/stderr2001
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:02.775466 ====> Client connect
 19:29:02.775682 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:02.775977 < "USER anonymous"
 19:29:02.776018 > "331 We are happy you popped in![CR][LF]"
 19:29:02.776200 < "PASS ftp@example.com"
 19:29:02.776231 > "230 Welcome you silly person[CR][LF]"
 19:29:02.776391 < "PWD"
 19:29:02.776425 > "257 "/" is current directory[CR][LF]"
 19:29:02.776593 < "EPSV"
 19:29:02.776619 ====> Passive DATA channel requested by client
 19:29:02.776637 DATA sockfilt for passive data channel starting...
 19:29:02.786761 DATA sockfilt for passive data channel started (pid 177645)
 19:29:02.786941 DATA sockfilt for passive data channel listens on port 34001
 19:29:02.786998 > "229 Entering Passive Mode (|||34001|)[CR][LF]"
 19:29:02.787018 Client has been notified that upcoming DATA connection is awaited on port 34001
 19:29:02.798778 Client connects to port 34001
 19:29:02.798854 ====> Client established passive DATA connection on port 34001
 19:29:02.798979 < "TYPE I"
 19:29:02.799023 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:02.799285 < "SIZE verifiedserver"
 19:29:02.799332 > "213 17[CR][LF]"
 19:29:02.799513 < "RETR verifiedserver"
 19:29:02.799554 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:02.799652 =====> Closing passive DATA connection...
 19:29:02.799672 Server disconnects passive DATA connection
 19:29:02.799943 Server disconnected passive DATA connection
 19:29:02.799972 DATA sockfilt for passive data channel quits (pid 177645)
 19:29:02.800250 DATA sockfilt for passive data channel quit (pid 177645)
 19:29:02.800276 =====> Closed passive DATA connection
 19:29:02.800308 > "226 File transfer complete[CR][LF]"
 19:29:02.845665 < "QUIT"
 19:29:02.845725 > "221 bye bye baby[CR][LF]"
 19:29:02.846956 MAIN sockfilt said DISC
 19:29:02.846994 ====> Client disconnected
 19:29:02.847076 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:02.377569 ====> Client connect
 19:29:02.377942 Received DATA (on stdin)
 19:29:02.377958 > 146 bytes data, server => client
 19:29:02.377970 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:02.377980 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:02.377989 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:02.378081 < 16 bytes data, client => server
 19:29:02.378095 'USER anonymous\r\n'
 19:29:02.378263 Received DATA (on stdin)
 19:29:02.378275 > 33 bytes data, server => client
 19:29:02.378285 '331 We are happy you popped in!\r\n'
 19:29:02.378342 < 22 bytes data, client => server
 19:29:02.378354 'PASS ftp@example.com\r\n'
 19:29:02.378472 Received DATA (on stdin)
 19:29:02.378482 > 30 bytes data, server => client
 19:29:02.378492 '230 Welcome you silly person\r\n'
 19:29:02.378545 < 5 bytes data, client => server
 19:29:02.378555 'PWD\r\n'
 19:29:02.378663 Received DATA (on stdin)
 19:29:02.378674 > 30 bytes data, server => client
 19:29:02.378683 '257 "/" is current directory\r\n'
 19:29:02.378746 < 6 bytes data, client => server
 19:29:02.378757 'EPSV\r\n'
 19:29:02.394233 Received DATA (on stdin)
 19:29:02.394276 > 39 bytes data, server => client
 19:29:02.394289 '229 Entering Passive Mode (|||34001|)\r\n'
 19:29:02.397731 < 8 bytes data, client => server
 19:29:02.397756 'TYPE I\r\n'
 19:29:02.401274 Received DATA (on stdin)
 19:29:02.401292 > 33 bytes data, server => client
 19:29:02.401302 '200 I modify TYPE as you wanted\r\n'
 19:29:02.401414 < 21 bytes data, client => server
 19:29:02.401429 'SIZE verifiedserver\r\n'
 19:29:02.401578 Received DATA (on stdin)
 19:29:02.401589 > 8 bytes data, server => client
 19:29:02.401599 '213 17\r\n'
 19:29:02.401660 < 21 bytes data, client => server
 19:29:02.401673 'RETR verifiedserver\r\n'
 19:29:02.401915 Received DATA (on stdin)
 19:29:02.401927 > 29 bytes data, server => client
 19:29:02.401937 '150 Binary junk (17 bytes).\r\n'
 19:29:02.402551 Received DATA (on stdin)
 19:29:02.402563 > 28 bytes data, server => client
 19:29:02.402573 '226 File transfer complete\r\n'
 19:29:02.447682 < 6 bytes data, client => server
 19:29:02.447711 'QUIT\r\n'
 19:29:02.447971 Received DATA (on stdin)
 19:29:02.447984 > 18 bytes data, server => client
 19:29:02.447995 '221 bye bye baby\r\n'
 19:29:02.449138 ====> Client disconnect
 19:29:02.449313 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:02.388399 Running IPv4 version
 19:29:02.388501 Listening on port 34001
 19:29:02.388543 Wrote pid 177645 to log/19/server/ftp_sockdata.pid
 19:29:02.388565 Received PING (on stdin)
 19:29:02.389063 Received PORT (on stdin)
 19:29:02.400929 ====> Client connect
 19:29:02.402006 Received DATA (on stdin)
 19:29:02.402023 > 17 bytes data, server => client
 19:29:02.402033 'WE ROOLZ: 84587\r\n'
 19:29:02.402063 Received DISC (on stdin)
 19:29:02.402076 ====> Client forcibly disconnected
 19:29:02.402225 Received QUIT (on stdin)
 19:29:02.402236 quits
 19:29:02.402315 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:29:02.270192 ====> Client connect
 19:29:02.270230 accept_connection 3 returned 4
 19:29:02.270253 Read 93 bytes
 19:29:02.270263 Process 93 bytes request
 19:29:02.270275 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.270284 Are-we-friendly question received
 19:29:02.270313 Wrote request (93 bytes) input to log/19/server.input
 19:29:02.270329 Identifying ourselves as friends
 19:29:02.270394 Response sent (57 bytes) and written to log/19/server.response
 19:29:02.270404 special request received, no persistency
 19:29:02.270412 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 46456 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2001
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file test2001.txt
 foo
    bar
 bar
    foo
 moo
=== End of file testCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2023 ./libtest/libtests lib2023 http://127.0.0.1:40321/2023 basic basic > log/15/stdout2023 2> log/15/stderr2023
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2036 ../src/curl -q --output log/11/curl2036.out  --include --trace-ascii log/11/trace2036 --trace-time --proto-default https:// > log/11/stdout2036 2> log/11/stderr2036
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2039 ../src/curl -q --output log/1/curl2039.out  --include --trace-ascii log/1/trace2039 --trace-time --netrc-optional --netrc-file log/1/netrc2039 ftp://127.0.0.1:40221/ > log/1/stdout2039 2> log/1/stderr2039
2001.txt
=== Start of file valgrind2001
 ==177704== 
 ==177704== Process terminating with default action of signal 4 (SIGILL)
 ==177704==  Illegal opcode at address 0x492B75F
 ==177704==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177704==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177704==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177704==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177704==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177704==    by 0x49908EB: curl_version_info (version.c:600)
 ==177704==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177704==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177704==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177704==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2001
test 2005 [netrc match with password only in file, no username. machine follows]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2005 ../src/curl -q --output log/13/curl2005.out  --include --trace-ascii log/13/trace2005 --trace-time --netrc-optional --netrc-file log/13/netrc2005 http://127.0.0.1:38821/ > log/13/stdout2005 2> log/13/stderr2005

 2005: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 2005
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2005 ../src/curl -q --output log/13/curl2005.out  --include --trace-ascii log/13/trace2005 --trace-time --netrc-optional --netrc-file log/13/netrc2005 http://127.0.0.1:38821/ > log/13/stdout2005 2> log/13/stderr2005
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.673529 ====> Client connect
 19:29:02.673563 accept_connection 3 returned 4
 19:29:02.673703 Read 93 bytes
 19:29:02.673715 Process 93 bytes request
 19:29:02.673729 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.673737 Are-we-friendly question received
 19:29:02.673769 Wrote request (93 bytes) input to log/13/server.input
 19:29:02.673786 Identifying ourselves as friends
 19:29:02.673846 Response sent (56 bytes) and written to log/13/server.response
 19:29:02.673855 special request received, no persistency
 19:29:02.673864 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54816 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file netrc2005
 machine 127.0.0.1
 password 5up3r53cr37
 machine example.com
=== End of file netrc2005
=== Start of file server.cmd
 Testnum 2005
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind2005
 ==177832== 
 ==177832== Process terminating with default action of signal 4 (SIGILL)
 ==177832==  Illegal opcode at address 0x492B75F
 ==177832==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177832==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177832==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177832==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177832==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177832==    by 0x49908EB: curl_version_info (version.c:600)
 ==177832==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177832==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2005
test 2023 [HTTP authorization retry (Basic)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2023 ./libtest/libtests lib2023 http://127.0.0.1:40321/2023 basic basic > log/15/stdout2023 2> log/15/stderr2023

 2023: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 2023
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2023 ./libtest/libtests lib2023 http://127.0.0.1:40321/2023 basic basic > log/15/stdout2023 2> log/15/stderr2023
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.951492 ====> Client connect
 19:29:03.951528 accept_connection 3 returned 4
 19:29:03.951551 Read 93 bytes
 19:29:03.951562 Process 93 bytes request
 19:29:03.951576 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.951585 Are-we-friendly question received
 19:29:03.951614 Wrote request (93 bytes) input to log/15/server.input
 19:29:03.951631 Identifying ourselves as friends
 19:29:03.951696 Response sent (56 bytes) and written to log/15/server.response
 19:29:03.951706 special request received, no persistency
 19:29:03.951715 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 39570 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2023
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind2023
 ==178217== 
 ==178217== Process terminating with default action of signal 4 (SIGILL)
 ==178217==  Illegal opcode at address 0x51CC63F
 ==178217==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==178217==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==178217==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==178217==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2023
test 2039 [FTP optional .netrc with 'default' override; no user/pass, dir list]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2039 ../src/curl -q --output log/1/curl2039.out  --include --trace-ascii log/1/trace2039 --trace-time --netrc-optional --netrc-file log/1/netrc2039 ftp://127.0.0.1:40221/ > log/1/stdout2039 2> log/1/stderr2039

 2039: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 2039
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2039 ../src/curl -q --output log/1/curl2039.out  --include --trace-ascii log/1/trace2039 --trace-time --netrc-optional --netrc-file log/1/netrc2039 ftp://127.0.0.1:40221/ > log/1/stdout2039 2> log/1/stderr2039
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:03.445441 ====> Client connect
 19:29:03.445699 > "220-      CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2000 ../src/curl -q --trace-ascii log/16/trace2000 --trace-time ftp://127.0.0.1:40031/2000 file://localhost/startdir/src/build-curl/tests/log/16/test2000.txt > log/16/stdout2000 2> log/16/stderr2000
  _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:03.455605 < "USER anonymous"
 19:29:03.455675 > "331 We are happy you popped in![CR][LF]"
 19:29:03.462098 < "PASS ftp@example.com"
 19:29:03.462181 > "230 Welcome you silly person[CR][LF]"
 19:29:03.462600 < "PWD"
 19:29:03.462632 > "257 "/" is current directory[CR][LF]"
 19:29:03.462834 < "EPSV"
 19:29:03.462872 ====> Passive DATA channel requested by client
 19:29:03.462887 DATA sockfilt for passive data channel starting...
 19:29:03.473015 DATA sockfilt for passive data channel started (pid 178357)
 19:29:03.473165 DATA sockfilt for passive data channel listens on port 38905
 19:29:03.473215 > "229 Entering Passive Mode (|||38905|)[CR][LF]"
 19:29:03.473232 Client has been notified that upcoming DATA connection is awaited on port 38905
 19:29:03.473573 Client connects to port 38905
 19:29:03.473609 ====> Client established passive DATA connection on port 38905
 19:29:03.473715 < "TYPE I"
 19:29:03.473755 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:03.473938 < "SIZE verifiedserver"
 19:29:03.473981 > "213 17[CR][LF]"
 19:29:03.474137 < "RETR verifiedserver"
 19:29:03.474169 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:03.474262 =====> Closing passive DATA connection...
 19:29:03.474278 Server disconnects passive DATA connection
 19:29:03.474521 Server disconnected passive DATA connection
 19:29:03.474547 DATA sockfilt for passive data channel quits (pid 178357)
 19:29:03.474781 DATA sockfilt for passive data channel quit (pid 178357)
 19:29:03.474806 =====> Closed passive DATA connection
 19:29:03.474884 > "226 File transfer complete[CR][LF]"
 19:29:03.518937 < "QUIT"
 19:29:03.518987 > "221 bye bye baby[CR][LF]"
 19:29:03.520350 MAIN sockfilt said DISC
 19:29:03.520397 ====> Client disconnected
 19:29:03.520472 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:04.040830 ====> Client connect
 19:29:04.047963 Received DATA (on stdin)
 19:29:04.047982 > 146 bytes data, server => client
 19:29:04.047993 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:04.048004 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:04.048013 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:04.054237 < 16 bytes data, client => server
 19:29:04.054270 'USER anonymous\r\n'
 19:29:04.061272 Received DATA (on stdin)
 19:29:04.061303 > 33 bytes data, server => client
 19:29:04.061316 '331 We are happy you popped in!\r\n'
 19:29:04.061743 < 22 bytes data, client => server
 19:29:04.061763 'PASS ftp@example.com\r\n'
 19:29:04.064403 Received DATA (on stdin)
 19:29:04.064424 > 30 bytes data, server => client
 19:29:04.064434 '230 Welcome you silly person\r\n'
 19:29:04.064514 < 5 bytes data, client => server
 19:29:04.064525 'PWD\r\n'
 19:29:04.064855 Received DATA (on stdin)
 19:29:04.064868 > 30 bytes data, server => client
 19:29:04.064878 '257 "/" is current directory\r\n'
 19:29:04.064946 < 6 bytes data, client => server
 19:29:04.064957 'EPSV\r\n'
 19:29:04.075482 Received DATA (on stdin)
 19:29:04.075500 > 39 bytes data, server => client
 19:29:04.075511 '229 Entering Passive Mode (|||38905|)\r\n'
 19:29:04.075726 < 8 bytes data, client => server
 19:29:04.075741 'TYPE I\r\n'
 19:29:04.075999 Received DATA (on stdin)
 19:29:04.076012 > 33 bytes data, server => client
 19:29:04.076022 '200 I modify TYPE as you wanted\r\n'
 19:29:04.076087 < 21 bytes data, client => server
 19:29:04.076097 'SIZE verifiedserver\r\n'
 19:29:04.076221 Received DATA (on stdin)
 19:29:04.076231 > 8 bytes data, server => client
 19:29:04.076241 '213 17\r\n'
 19:29:04.076293 < 21 bytes data, client => server
 19:29:04.076304 'RETR verifiedserver\r\n'
 19:29:04.076521 Received DATA (on stdin)
 19:29:04.076531 > 29 bytes data, server => client
 19:29:04.076541 '150 Binary junk (17 bytes).\r\n'
 19:29:04.077053 Received DATA (on stdin)
 19:29:04.077065 > 28 bytes data, server => client
 19:29:04.077083 '226 File transfer complete\r\n'
 19:29:04.121018 < 6 bytes data, client => server
 19:29:04.121042 'QUIT\r\n'
 19:29:04.121233 Received DATA (on stdin)
 19:29:04.121246 > 18 bytes data, server => client
 19:29:04.121256 '221 bye bye baby\r\n'
 19:29:04.122531 ====> Client disconnect
 19:29:04.122714 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:03.072242 Running IPv4 version
 19:29:03.072343 Listening on port 38905
 19:29:03.072382 Wrote pid 178357 to log/1/server/ftp_sockdata.pid
 19:29:03.075181 Received PING (on stdin)
 19:29:03.075302 Received PORT (on stdin)
 19:29:03.075764 ====> Client connect
 19:29:03.076601 Received DATA (on stdin)
 19:29:03.076615 > 17 bytes data, server => client
 19:29:03.076625 'WE ROOLZ: 84935\r\n'
 19:29:03.076652 Received DISC (on stdin)
 19:29:03.076663 ====> Client forcibly disconnected
 19:29:03.076796 Received QUIT (on stdin)
 19:29:03.076806 quits
 19:29:03.076877 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file netrc2039
 # the following two lines were created while testing curl
 default login userdef password passwddef
 machine 127.0.0.1 login user1 password passwd1
 machine 127.0.0.1 login user2 password passwd2
=== End of file netrc2039
=== Start of file server.cmd
 Testnum 2039
=== End of file server.cmd
=== Start of file valgrind2039
 ==178512== 
 ==178512== Process terminating with default action of signal 4 (SIGILL)
 ==178512==  Illegal opcode at address 0x492B75F
 ==178512==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178512==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178512==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178512==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178512==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178512==    by 0x49908EB: curl_version_info (version.c:600)
 ==178512==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178512==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178512==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178512==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2039
test 2036 [Attempt to set a default protocol with :// suffix]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2036 ../src/curl -q --output log/11/curl2036.out  --include --trace-ascii log/11/trace2036 --trace-time --proto-default https:// > log/11/stdout2036 2> log/11/stderr2036

curl returned 132, when expecting 1
 2036: exit FAILED
== Contents of files in the log/11/ directory after test 2036
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2036 ../src/curl -q --output log/11/curl2036.out  --include --trace-ascii log/11/trace2036 --trace-time --proto-default https:// > log/11/stdout2036 2> log/11/stderr2036
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2036
=== End of file server.cmd
=== Start of file valgrind2036
 ==178151== 
 ==178151== Process terminating with default action of signal 4 (SIGILL)
 ==178151==  Illegal opcode at address 0x492B75F
 ==178151==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178151==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178151==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178151==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178151==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178151==    by 0x49908EB: curl_version_info (version.c:600)
 ==178151==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178151==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178151==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178151==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2036
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2026 ./libtest/libtests lib2023 http://127.0.0.1:45467/2026 digest basic > log/14/stdout2026 2> log/14/stderr2026
test 2000 [FTP RETR followed by FILE]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2000 ../src/curl -q --trace-ascii log/16/trace2000 --trace-time ftp://127.0.0.1:40031/2000 file://localhost/startdir/src/build-curl/tests/log/16/test2000.txt > log/16/stdout2000 2> log/16/stderr2000

 2000: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:29:05.252333672 +0000
+++ log/16/check-generated	2026-10-15 19:29:05.249271542 +0000
@@ -1,11 +0,0 @@
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/16/ directory after test 2000
=== Start of file check-expected
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2000 ../src/curl -q --trace-ascii log/16/trace2000 --trace-time ftp://127.0.0.1:40031/2000 file://localhost/startdir/src/build-curl/tests/log/16/test2000.txt > log/16/stdout2000 2> log/16/stderr2000
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:02.641519 ====> Client connect
 19:29:02.641843 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:02.642094 < "USER anonymous"
 19:29:02.642134 > "331 We are happy you popped in![CR][LF]"
 19:29:02.645528 < "PASS ftp@example.com"
 19:29:02.645568 > "230 Welcome you silly person[CR][LF]"
 19:29:02.645746 < "PWD"
 19:29:02.645784 > "257 "/" is current directory[CR][LF]"
 19:29:02.645958 < "EPSV"
 19:29:02.645986 ====> Passive DATA channel requested by client
 19:29:02.646001 DATA sockfilt for passive data channel starting...
 19:29:02.649351 DATA sockfilt for passive data channel started (pid 177592)
 19:29:02.649458 DATA sockfilt for passive data channel listens on port 39847
 19:29:02.649504 > "229 Entering Passive Mode (|||39847|)[CR][LF]"
 19:29:02.649523 Client has been notified that upcoming DATA connection is awaited on port 39847
 19:29:02.649780 Client connects to port 39847
 19:29:02.649813 ====> Client established passive DATA connection on port 39847
 19:29:02.649899 < "TYPE I"
 19:29:02.649929 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:02.650091 < "SIZE verifiedserver"
 19:29:02.650132 > "213 17[CR][LF]"
 19:29:02.650283 < "RETR verifiedserver"
 19:29:02.650318 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:02.650404 =====> Closing passive DATA connection...
 19:29:02.650420 Server disconnects passive DATA connection
 19:29:02.650644 Server disconnected passive DATA connection
 19:29:02.650668 DATA sockfilt for passive data channel quits (pid 177592)
 19:29:02.650882 DATA sockfilt for passive data channel quit (pid 177592)
 19:29:02.650902 =====> Closed passive DATA connection
 19:29:02.650927 > "226 File transfer complete[CR][LF]"
 19:29:02.696467 < "QUIT"
 19:29:02.696523 > "221 bye bye baby[CR][LF]"
 19:29:02.700466 MAIN sockfilt said DISC
 19:29:02.700524 ====> Client disconnected
 19:29:02.700604 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:02.243628 ====> Client connect
 19:29:02.243949 Received DATA (on stdin)
 19:29:02.243970 > 146 bytes data, server => client
 19:29:02.243992 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:02.244002 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:02.244012 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:02.244158 < 16 bytes data, client => server
 19:29:02.244173 'USER anonymous\r\n'
 19:29:02.244379 Received DATA (on stdin)
 19:29:02.244392 > 33 bytes data, server => client
 19:29:02.244402 '331 We are happy you popped in!\r\n'
 19:29:02.247631 < 22 bytes data, client => server
 19:29:02.247651 'PASS ftp@example.com\r\n'
 19:29:02.247813 Received DATA (on stdin)
 19:29:02.247825 > 30 bytes data, server => client
 19:29:02.247835 '230 Welcome you silly person\r\n'
 19:29:02.247892 < 5 bytes data, client => server
 19:29:02.247903 'PWD\r\n'
 19:29:02.248025 Received DATA (on stdin)
 19:29:02.248036 > 30 bytes data, server => client
 19:29:02.248046 '257 "/" is current directory\r\n'
 19:29:02.248109 < 6 bytes data, client => server
 19:29:02.248121 'EPSV\r\n'
 19:29:02.251768 Received DATA (on stdin)
 19:29:02.251781 > 39 bytes data, server => client
 19:29:02.251791 '229 Entering Passive Mode (|||39847|)\r\n'
 19:29:02.251934 < 8 bytes data, client => server
 19:29:02.251951 'TYPE I\r\n'
 19:29:02.252170 Received DATA (on stdin)
 19:29:02.252181 > 33 bytes data, server => client
 19:29:02.252192 '200 I modify TYPE as you wanted\r\n'
 19:29:02.252245 < 21 bytes data, client => server
 19:29:02.252256 'SIZE verifiedserver\r\n'
 19:29:02.252372 Received DATA (on stdin)
 19:29:02.252383 > 8 bytes data, server => client
 19:29:02.252392 '213 17\r\n'
 19:29:02.252442 < 21 bytes data, client => server
 19:29:02.252453 'RETR verifiedserver\r\n'
 19:29:02.252662 Received DATA (on stdin)
 19:29:02.252673 > 29 bytes data, server => client
 19:29:02.252683 '150 Binary junk (17 bytes).\r\n'
 19:29:02.253167 Received DATA (on stdin)
 19:29:02.253179 > 28 bytes data, server => client
 19:29:02.253189 '226 File transfer complete\r\n'
 19:29:02.298517 < 6 bytes data, client => server
 19:29:02.298541 'QUIT\r\n'
 19:29:02.298767 Received DATA (on stdin)
 19:29:02.298778 > 18 bytes data, server => client
 19:29:02.298788 '221 bye bye baby\r\n'
 19:29:02.302629 ====> Client disconnect
 19:29:02.302845 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:02.250471 Running IPv4 version
 19:29:02.250539 Listening on port 39847
 19:29:02.250613 Wrote pid 177592 to log/16/server/ftp_sockdata.pid
 19:29:02.251527 Received PING (on stdin)
 19:29:02.251614 Received PORT (on stdin)
 19:29:02.251971 ====> Client connect
 19:29:02.252738 Received DATA (on stdin)
 19:29:02.252751 > 17 bytes data, server => client
 19:29:02.252761 'WE ROOLZ: 84702\r\n'
 19:29:02.252785 Received DISC (on stdin)
 19:29:02.252795 ====> Client forcibly disconnected
 19:29:02.252914 Received QUIT (on stdin)
 19:29:02.252924 quits
 19:29:02.252988 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 2000
=== End of file server.cmd
=== Start of file test2000.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test2000.txt
=== Start of file valgrind2000
 ==177618== 
 ==177618== Process terminating with default action of signal 4 (SIGILL)
 ==177618==  Illegal opcode at address 0x492B75F
 ==177618==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177618==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177618==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177618==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177618==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177618==    by 0x49908EB: curl_version_info (version.c:600)
 ==177618==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177618==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177618==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177618==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2000
test 2026 [HTTP authorization retry (Digest switching to Basic)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2026 ./libtest/libtests lib2023 http://127.0.0.1:45467/2026 digest basic > log/14/stdout2026 2> log/14/stderr2026

 2026: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 2026
=== Start of filCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2024 ./libtest/libtests lib2023 http://127.0.0.1:38895/2024 basic digest > log/24/stdout2024 2> log/24/stderr2024
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2013 ../src/curl -q --include --trace-ascii log/6/trace2013 --trace-time -T 'log/6/upload{1,2}' http://127.0.0.1:33935/2013 http://127.0.0.1:33935/20130002 --silent --output=log/6/first-out --output=log/6/second-out > log/6/stdout2013 2> log/6/stderr2013
e commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2026 ./libtest/libtests lib2023 http://127.0.0.1:45467/2026 digest basic > log/14/stdout2026 2> log/14/stderr2026
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.032928 ====> Client connect
 19:29:03.032976 accept_connection 3 returned 4
 19:29:03.033000 Read 93 bytes
 19:29:03.033010 Process 93 bytes request
 19:29:03.033025 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.033034 Are-we-friendly question received
 19:29:03.033062 Wrote request (93 bytes) input to log/14/server.input
 19:29:03.033079 Identifying ourselves as friends
 19:29:03.033147 Response sent (56 bytes) and written to log/14/server.response
 19:29:03.033156 special request received, no persistency
 19:29:03.033164 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 44794 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2026
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind2026
 ==178398== 
 ==178398== Process terminating with default action of signal 4 (SIGILL)
 ==178398==  Illegal opcode at address 0x51CC63F
 ==178398==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==178398==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==178398==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==178398==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2026
test 2024 [HTTP authorization retry (Basic switching to Digest)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2024 ./libtest/libtests lib2023 http://127.0.0.1:38895/2024 basic digest > log/24/stdout2024 2> log/24/stderr2024

 2024: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 2024
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2024 ./libtest/libtests lib2023 http://127.0.0.1:38895/2024 basic digest > log/24/stdout2024 2> log/24/stderr2024
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.040948 ====> Client connect
 19:29:03.040990 accept_connection 3 returned 4
 19:29:03.041015 Read 93 bytes
 19:29:03.041025 Process 93 bytes request
 19:29:03.041038 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.041046 Are-we-friendly question received
 19:29:03.041072 Wrote request (93 bytes) input to log/24/server.input
 19:29:03.041089 Identifying ourselves as friends
 19:29:03.041180 Response sent (56 bytes) and written to log/24/server.response
 19:29:03.041191 special request received, no persistency
 19:29:03.041199 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 55722 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2024
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind2024
 ==178483== 
 ==178483== Process terminating with default action of signal 4 (SIGILL)
 ==178483==  Illegal opcode at address 0x51CC63F
 ==178483==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==178483==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==178483==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==178483==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2024
test 2013 [upload with a glob]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2013 ../src/curl -q --include --trace-ascii log/6/trace2013 --trace-time -T 'log/6/upload{1,2}' http://127.0.0.1:33935/2013 http://127.0.0.1:33935/20130002 --silent --output=log/6/first-out --output=log/6/second-out > log/6/stdout2013 2> log/6/stderr2013

 2013: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 2013
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2013 ../src/curl -q --include --trace-ascii log/6/trace2013 --trace-time -T 'log/6/upload{1,2}' http://127.0.0.1:33935/2013 http://127.0.0.1:33935/20130002 --silent --output=log/6/first-out --output=log/6/second-out > log/6/stdout2013 2> log/6/stderr2013
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.920054 ====> Client connect
 19:29:02.920109 accept_connection 3 returned 4
 19:29:02.920128 Read 93 bytes
 19:29:02.920137 Process 93 bytes request
 19:29:02.920149 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.920157 Are-we-friendly question received
 19:29:02.920180 Wrote request (93 bytes) input to log/6/server.input
 19:29:02.920195 Identifying ourselves as friends
 19:29:02.920251 Response sent (56 bytes) and written to log/6/server.response
 19:29:02.920260 special request received, no persistency
 19:29:02.920268 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 39486 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2013
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind2013
 ==178120== 
 ==178120== Process terminating with default action of signal 4 (SIGILL)
 ==178120==  Illegal opcode at address 0x492B75F
 ==178120==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178120==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178120==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178120==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178120==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178120==    by 0x49908EB: curl_version_info (version.c:600)
 ==178120==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178120==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178120==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178120==    by 0x4003269: main (tool_main.c:195)
=== End of file valgriCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2014 ../src/curl -q --include --trace-ascii log/3/trace2014 --trace-time -T 'log/3/upload{<hej>1,2}' http://127.0.0.1:36161/2014 --silent '--output=log/3/out-#<hej>' > log/3/stdout2014 2> log/3/stderr2014
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2027 ./libtest/libtests lib2023 http://127.0.0.1:34531/2027 digest digest > log/2/stdout2027 2> log/2/stderr2027
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2012 ../src/curl -q --include --trace-ascii log/17/trace2012 --trace-time -T 'log/17/upload{1,2}' --url @log/17/urls --silent --output=log/17/first-out --output=log/17/second-out > log/17/stdout2012 2> log/17/stderr2012
nd2013
test 2014 [upload with glob, output name based on upload glob]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2014 ../src/curl -q --include --trace-ascii log/3/trace2014 --trace-time -T 'log/3/upload{<hej>1,2}' http://127.0.0.1:36161/2014 --silent '--output=log/3/out-#<hej>' > log/3/stdout2014 2> log/3/stderr2014

 2014: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 2014
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2014 ../src/curl -q --include --trace-ascii log/3/trace2014 --trace-time -T 'log/3/upload{<hej>1,2}' http://127.0.0.1:36161/2014 --silent '--output=log/3/out-#<hej>' > log/3/stdout2014 2> log/3/stderr2014
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.914277 ====> Client connect
 19:29:03.914313 accept_connection 3 returned 4
 19:29:03.914334 Read 93 bytes
 19:29:03.914343 Process 93 bytes request
 19:29:03.914354 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.914363 Are-we-friendly question received
 19:29:03.914387 Wrote request (93 bytes) input to log/3/server.input
 19:29:03.914403 Identifying ourselves as friends
 19:29:03.914470 Response sent (56 bytes) and written to log/3/server.response
 19:29:03.914479 special request received, no persistency
 19:29:03.914487 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 56394 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2014
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind2014
 ==178146== 
 ==178146== Process terminating with default action of signal 4 (SIGILL)
 ==178146==  Illegal opcode at address 0x492B75F
 ==178146==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178146==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178146==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178146==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178146==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178146==    by 0x49908EB: curl_version_info (version.c:600)
 ==178146==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178146==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178146==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178146==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2014
test 2027 [HTTP authorization retry (Digest)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2027 ./libtest/libtests lib2023 http://127.0.0.1:34531/2027 digest digest > log/2/stdout2027 2> log/2/stderr2027

 2027: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 2027
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2027 ./libtest/libtests lib2023 http://127.0.0.1:34531/2027 digest digest > log/2/stdout2027 2> log/2/stderr2027
=== End of file commands.log
=== Start of file http_server.log
 19:29:04.064482 ====> Client connect
 19:29:04.064525 accept_connection 3 returned 4
 19:29:04.064552 Read 93 bytes
 19:29:04.064561 Process 93 bytes request
 19:29:04.064572 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.064579 Are-we-friendly question received
 19:29:04.064602 Wrote request (93 bytes) input to log/2/server.input
 19:29:04.064616 Identifying ourselves as friends
 19:29:04.064690 Response sent (56 bytes) and written to log/2/server.response
 19:29:04.064698 special request received, no persistency
 19:29:04.064705 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 32860 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2027
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind2027
 ==178464== 
 ==178464== Process terminating with default action of signal 4 (SIGILL)
 ==178464==  Illegal opcode at address 0x51CC63F
 ==178464==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==178464==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==178464==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==178464==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2027
test 2012 [load URLs from a file, upload with a glob]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2012 ../src/curl -q --include --trace-ascii log/17/trace2012 --trace-time -T 'log/17/upload{1,2}' --url @log/17/urls --silent --output=log/17/first-out --output=log/17/second-out > log/17/stdout2012 2> log/17/stderr2012

 2012: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 2012
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2012 ../src/curl -q --include --trace-ascii log/17/trace2012 --trace-time -T 'log/17/upload{1,2}' --url @log/17/urls --silent --output=log/17/first-out --output=log/17/second-out > log/17/stdout2012 2> log/17/stderr2012
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.892787 ====> Client connect
 19:29:03.892831 accept_connection 3 returned 4
 19:29:03.892860 Read 93 bytes
 19:29:03.892869 Process 93 bytes request
 19:29:03.892881 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.892890 Are-we-friendly question received
 19:29:03.892918 Wrote request (93 bytes) input to log/17/server.input
 19:29:03.892935 Identifying ourselves as friends
 19:29:03.893004 Response sent (56 bytes) and written to log/17/server.response
 19:29:03.893014 special request received, no persistency
 19:29:03.893023 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 58844 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== StaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2008 ../src/curl -q --output log/20/curl2008.out  --include --trace-ascii log/20/trace2008 --trace-time ftp.test --proto-default=http --resolve ftp.test:80:127.0.0.1 -G -d hello -x http://127.0.0.1:41689/ > log/20/stdout2008 2> log/20/stderr2008
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2006 ../src/curl -q --output log/21/curl2006.out  --include --trace-ascii log/21/trace2006 --trace-time --netrc --netrc-file log/21/netrc2006 --oauth2-bearer SECRET_TOKEN -L -x http://127.0.0.1:39881/ http://a.com/ > log/21/stdout2006 2> log/21/stderr2006
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2015 ../src/curl -q --output log/7/curl2015.out  --include --trace-ascii log/7/trace2015 --trace-time http://first.host.it.is/we/want/that/page/2015 -x 127.0.0.1:40859 -b "test=yes" --location > log/7/stdout2015 2> log/7/stderr2015
rt of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2012
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file urls
 http://127.0.0.1:35993/2012
 http://127.0.0.1:35993/20120002
=== End of file urls
=== Start of file valgrind2012
 ==178103== 
 ==178103== Process terminating with default action of signal 4 (SIGILL)
 ==178103==  Illegal opcode at address 0x492B75F
 ==178103==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178103==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178103==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178103==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178103==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178103==    by 0x49908EB: curl_version_info (version.c:600)
 ==178103==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178103==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178103==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178103==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2012
test 2008 [-G with --proto-default=http and scheme-less URL starting with "ftp"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2008 ../src/curl -q --output log/20/curl2008.out  --include --trace-ascii log/20/trace2008 --trace-time ftp.test --proto-default=http --resolve ftp.test:80:127.0.0.1 -G -d hello -x http://127.0.0.1:41689/ > log/20/stdout2008 2> log/20/stderr2008

 2008: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 2008
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2008 ../src/curl -q --output log/20/curl2008.out  --include --trace-ascii log/20/trace2008 --trace-time ftp.test --proto-default=http --resolve ftp.test:80:127.0.0.1 -G -d hello -x http://127.0.0.1:41689/ > log/20/stdout2008 2> log/20/stderr2008
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.803492 ====> Client connect
 19:29:02.803520 accept_connection 3 returned 4
 19:29:02.803538 Read 93 bytes
 19:29:02.803547 Process 93 bytes request
 19:29:02.803557 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.803565 Are-we-friendly question received
 19:29:02.803593 Wrote request (93 bytes) input to log/20/server.input
 19:29:02.803607 Identifying ourselves as friends
 19:29:02.803662 Response sent (57 bytes) and written to log/20/server.response
 19:29:02.803670 special request received, no persistency
 19:29:02.803677 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 46910 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2008
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind2008
 ==177957== 
 ==177957== Process terminating with default action of signal 4 (SIGILL)
 ==177957==  Illegal opcode at address 0x492B75F
 ==177957==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177957==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177957==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177957==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177957==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177957==    by 0x49908EB: curl_version_info (version.c:600)
 ==177957==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177957==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177957==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177957==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2008
test 2006 [.netrc default with redirect plus oauth2-bearer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2006 ../src/curl -q --output log/21/curl2006.out  --include --trace-ascii log/21/trace2006 --trace-time --netrc --netrc-file log/21/netrc2006 --oauth2-bearer SECRET_TOKEN -L -x http://127.0.0.1:39881/ http://a.com/ > log/21/stdout2006 2> log/21/stderr2006

 2006: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 2006
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2006 ../src/curl -q --output log/21/curl2006.out  --include --trace-ascii log/21/trace2006 --trace-time --netrc --netrc-file log/21/netrc2006 --oauth2-bearer SECRET_TOKEN -L -x http://127.0.0.1:39881/ http://a.com/ > log/21/stdout2006 2> log/21/stderr2006
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.674275 ====> Client connect
 19:29:02.674310 accept_connection 3 returned 4
 19:29:02.674329 Read 93 bytes
 19:29:02.674338 Process 93 bytes request
 19:29:02.674347 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.674355 Are-we-friendly question received
 19:29:02.674382 Wrote request (93 bytes) input to log/21/server.input
 19:29:02.674398 Identifying ourselves as friends
 19:29:02.674476 Response sent (56 bytes) and written to log/21/server.response
 19:29:02.674486 special request received, no persistency
 19:29:02.674494 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 35088 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file netrc2006
 default login testuser password testpass
=== End of file netrc2006
=== Start of file server.cmd
 Testnum 2006
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind2006
 ==177838== 
 ==177838== Process terminating with default action of signal 4 (SIGILL)
 ==177838==  Illegal opcode at address 0x492B75F
 ==177838==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==177838==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==177838==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==177838==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==177838==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==177838==    by 0x49908EB: curl_version_info (version.c:600)
 ==177838==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==177838==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==177838==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==177838==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2006
test 2015 [HTTP with cookie with with -b and redirect to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2040 ../src/curl -q --trace-ascii log/8/trace2040 --trace-time -u testuser:testpass http://127.0.0.1:44467/20400100 --next --no-basic http://127.0.0.1:44467/20400200 > log/8/stdout2040 2> log/8/stderr2040
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2045 ../src/curl -q --output log/18/curl2045.out  --include --trace-ascii log/18/trace2045 --trace-time -H "User-Agent:" -H "Host:" -H "Accept:" --proto-default ftp 127.0.0.1:36115 > log/18/stdout2045 2> log/18/stderr2045
memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2015 ../src/curl -q --output log/7/curl2015.out  --include --trace-ascii log/7/trace2015 --trace-time http://first.host.it.is/we/want/that/page/2015 -x 127.0.0.1:40859 -b "test=yes" --location > log/7/stdout2015 2> log/7/stderr2015

 2015: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 2015
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2015 ../src/curl -q --output log/7/curl2015.out  --include --trace-ascii log/7/trace2015 --trace-time http://first.host.it.is/we/want/that/page/2015 -x 127.0.0.1:40859 -b "test=yes" --location > log/7/stdout2015 2> log/7/stderr2015
=== End of file commands.log
=== Start of file http_server.log
 19:29:02.926576 ====> Client connect
 19:29:02.926607 accept_connection 3 returned 4
 19:29:02.926628 Read 93 bytes
 19:29:02.926637 Process 93 bytes request
 19:29:02.926649 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.926658 Are-we-friendly question received
 19:29:02.926709 Wrote request (93 bytes) input to log/7/server.input
 19:29:02.926726 Identifying ourselves as friends
 19:29:02.926785 Response sent (56 bytes) and written to log/7/server.response
 19:29:02.926794 special request received, no persistency
 19:29:02.926802 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39246 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2015
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind2015
 ==178140== 
 ==178140== Process terminating with default action of signal 4 (SIGILL)
 ==178140==  Illegal opcode at address 0x492B75F
 ==178140==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178140==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178140==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178140==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178140==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178140==    by 0x49908EB: curl_version_info (version.c:600)
 ==178140==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178140==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178140==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178140==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2015
test 2040 [HTTP Basic authorization, then without authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2040 ../src/curl -q --trace-ascii log/8/trace2040 --trace-time -u testuser:testpass http://127.0.0.1:44467/20400100 --next --no-basic http://127.0.0.1:44467/20400200 > log/8/stdout2040 2> log/8/stderr2040

 2040: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:29:06.265559068 +0000
+++ log/8/check-generated	2026-10-15 19:29:06.262601761 +0000
@@ -1,2 +0,0 @@
-Finally, this is the real page![LF]
-This is a bad password page![LF]
== Contents of files in the log/8/ directory after test 2040
=== Start of file check-expected
 Finally, this is the real page![LF]
 This is a bad password page![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2040 ../src/curl -q --trace-ascii log/8/trace2040 --trace-time -u testuser:testpass http://127.0.0.1:44467/20400100 --next --no-basic http://127.0.0.1:44467/20400200 > log/8/stdout2040 2> log/8/stderr2040
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.487625 ====> Client connect
 19:29:03.487670 accept_connection 3 returned 4
 19:29:03.487697 Read 93 bytes
 19:29:03.487708 Process 93 bytes request
 19:29:03.487721 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.487730 Are-we-friendly question received
 19:29:03.487758 Wrote request (93 bytes) input to log/8/server.input
 19:29:03.487776 Identifying ourselves as friends
 19:29:03.487863 Response sent (56 bytes) and written to log/8/server.response
 19:29:03.487874 special request received, no persistency
 19:29:03.487883 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 32926 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2040
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind2040
 ==178711== 
 ==178711== Process terminating with default action of signal 4 (SIGILL)
 ==178711==  Illegal opcode at address 0x492B75F
 ==178711==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178711==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178711==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178711==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178711==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178711==    by 0x49908EB: curl_version_info (version.c:600)
 ==178711==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178711==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178711==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178711==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2040
test 2045 [Set the default protocol to ftp for a schemeless URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2045 ../src/curl -q --output log/18/curl2045.out  --include --trace-ascii log/18/trace2045 --trace-time -H "User-Agent:" -H "Host:" -H "Accept:" --proto-default ftp 127.0.0.1:36115 > log/18/stdout2045 2> log/18/stderr2045

curl returned 132, when expecting 8
 2045: exit FAILED
== Contents of files in the log/18/ directory after test 2045
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2045 ../src/curl -q --output log/18/curl2045.out  --include --trace-ascii log/18/trace2045 --trace-time -H "User-Agent:" -H "Host:" -H "Accept:" --proto-default ftp 127.0.0.1:36115 > log/18/stdout2045 2> log/18/stderr2045
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:03.992164 ====> Client connect
 19:29:03.992360 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:03.992649 < "USER anonymous"
 19:29:03.992681 > "331 We are happy you popped in![CR][LF]"
 19:29:03.992843 < "PASS ftp@example.com"
 19:29:03.992869 > "230 Welcome you silly person[CR][LF]"
 19:29:03.993028 < "PWD"
 19:29:03.993061 > "257 "/" is current directory[CR][LF]"
 19:29:03.993212 < "EPSV"
 19:29:03.993236 ====> Passive DATA channel requested by client
 19:29:03.993249 DATA sockfilt for passive data channel starting...
 19:29:03.998807 DATA sockfilt for passive data channel started (pid 178784)
 19:29:03.998954 DATA sockfilt for passive data channel listens on port 34131
 19:29:03.999009 > "229 Entering Passive Mode (|||34131|)[CR][LF]"
 19:29:03.999029 Client has been notified that upcoming DATA connection is awaited on port 34131
 19:29:03.999363 Client connects to port 34131
 19:29:03.999393 ====> Client established passive DATA connection on port 34131
 19:29:03.999484 < "TYPE I"
 19:29:03.999517 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:03.999672 < "SIZE verifiedserver"
 19:29:03.999708 > "213 17[CR][LF]"
 19:29:03.999846 < "RETR verifiedserver"
 19:29:03.999884 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:03.999978 =====> Closing passive DATA connection...
 19:29:03.999997 Server disconnects passive DATA connection
 19:29:04.000220 Server disconnected passive DATA connection
 19:29:04.000247 DATA sockfilt for passive data channel quits (pid 178784)
 19:29:04.000514 DATA sockfilt for passive data channel quit (pid 178784)
 19:29:04.000541 =====> Closed passive DATA connection
 19:29:04.000567 > "226 File transfer complete[CR][LF]"
 19:29:04.046352 < "QUIT"
 19:29:04.046406 > "221 bye bye baby[CR][LF]"
 19:29:04.055419 MAIN sockfilt said DISC
 19:29:04.055486 ====> Client disconnected
 19:29:04.055569 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:03.594294 ====> Client connect
 19:29:03.594617 Received DATA (on stdin)
 19:29:03.594631 > 146 bytes data, server => client
 19:29:03.594642 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:03.594652 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:03.594662 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:03.594749 < 16 bytes data, client => server
 19:29:03.594760 'USER anonymous\r\n'
 19:29:03.594923 Received DATA (on stdin)
 19:29:03.594934 > 33 bytes data, server => client
 19:29:03.594944 '331 We are happy you popped in!\r\n'
 19:29:03.594996 < 22 bytes data, client => server
 19:29:03.595007 'PASS ftp@example.com\r\n'
 19:29:03.595111 Received DATA (on stdin)
 19:29:03.595123 > 30 bytes data, server => client
 19:29:03.595133 '230 Welcome you silly person\r\n'
 19:29:03.595186 < 5 bytes data, client => server
 19:29:03.595196 'PWD\r\n'
 19:29:03.595300 Received DATA (on stdin)
 19:29:03.595310 > 30 bytes data, server => client
 19:29:03.595319 '257 "/" is current directory\r\n'
 19:29:03.595377 < 6 bytes data, client => server
 19:29:03.595386 'EPSV\r\n'
 19:29:03.601283 Received DATA (on stdin)
 19:29:03.601299 > 39 bytes data, server => client
 19:29:03.601309 '229 Entering Passive Mode (|||34131|)\r\n'
 19:29:03.601521 < 8 bytes data, client => server
 19:29:03.601536 'TYPE I\r\n'
 19:29:03.601759 Received DATA (on stdin)
 19:29:03.601770 > 33 bytes data, server => client
 19:29:03.601780 '200 I modify TYPE as you wanted\r\n'
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2003 ../src/curl -q --trace-ascii log/23/trace2003 --trace-time http://127.0.0.1:44711/20030001 ftp://127.0.0.1:35523/20030002 file://localhost/startdir/src/build-curl/tests/log/23/test2003.txt tftp://127.0.0.1:47779//20030003 tftp://127.0.0.1:47779//20030003 file://localhost/startdir/src/build-curl/tests/log/23/test2003.txt ftp://127.0.0.1:35523/20030002 http://127.0.0.1:44711/20030001 > log/23/stdout2003 2> log/23/stderr2003
9:03.601833 < 21 bytes data, client => server
 19:29:03.601844 'SIZE verifiedserver\r\n'
 19:29:03.601947 Received DATA (on stdin)
 19:29:03.601957 > 8 bytes data, server => client
 19:29:03.601966 '213 17\r\n'
 19:29:03.602013 < 21 bytes data, client => server
 19:29:03.602022 'RETR verifiedserver\r\n'
 19:29:03.602326 Received DATA (on stdin)
 19:29:03.602338 > 29 bytes data, server => client
 19:29:03.602348 '150 Binary junk (17 bytes).\r\n'
 19:29:03.602808 Received DATA (on stdin)
 19:29:03.602820 > 28 bytes data, server => client
 19:29:03.602830 '226 File transfer complete\r\n'
 19:29:03.648407 < 6 bytes data, client => server
 19:29:03.648436 'QUIT\r\n'
 19:29:03.648649 Received DATA (on stdin)
 19:29:03.648659 > 18 bytes data, server => client
 19:29:03.648668 '221 bye bye baby\r\n'
 19:29:03.657568 ====> Client disconnect
 19:29:03.657810 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:03.597072 Running IPv4 version
 19:29:03.597135 Listening on port 34131
 19:29:03.597171 Wrote pid 178784 to log/18/server/ftp_sockdata.pid
 19:29:03.600963 Received PING (on stdin)
 19:29:03.601091 Received PORT (on stdin)
 19:29:03.601556 ====> Client connect
 19:29:03.602241 Received DATA (on stdin)
 19:29:03.602252 > 17 bytes data, server => client
 19:29:03.602262 'WE ROOLZ: 85350\r\n'
 19:29:03.602290 Received DISC (on stdin)
 19:29:03.602301 ====> Client forcibly disconnected
 19:29:03.602496 Received QUIT (on stdin)
 19:29:03.602507 quits
 19:29:03.602575 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY welcome HTTP/1.1 200 OK\r\nContent-Length: 21\r\n\r\n500 Weird FTP Reply
 Testnum 2045
=== End of file server.cmd
=== Start of file valgrind2045
 ==178832== 
 ==178832== Process terminating with default action of signal 4 (SIGILL)
 ==178832==  Illegal opcode at address 0x492B75F
 ==178832==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178832==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178832==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178832==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178832==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178832==    by 0x49908EB: curl_version_info (version.c:600)
 ==178832==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178832==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178832==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2045
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/23/server/tftp_server.pid" --portfile "log/23/server/tftp_server.port" --logfile "log/23/tftp_server.log" --logdir "log/23" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 177818 port 47779
* pid tftp => 177818 177818
test 2003 [HTTP GET, FTP RETR, FILE, TFTP RRQ then again in rev order]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2003 ../src/curl -q --trace-ascii log/23/trace2003 --trace-time http://127.0.0.1:44711/20030001 ftp://127.0.0.1:35523/20030002 file://localhost/startdir/src/build-curl/tests/log/23/test2003.txt tftp://127.0.0.1:47779//20030003 tftp://127.0.0.1:47779//20030003 file://localhost/startdir/src/build-curl/tests/log/23/test2003.txt ftp://127.0.0.1:35523/20030002 http://127.0.0.1:44711/20030001 > log/23/stdout2003 2> log/23/stderr2003

 2003: stdout FAILED:
--- log/23/check-expected	2026-10-15 19:29:06.541845910 +0000
+++ log/23/check-generated	2026-10-15 19:29:06.535934060 +0000
@@ -1,32 +0,0 @@
--foo-[LF]
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
-a chunk of[LF]
-data[LF]
-returned[LF]
- to TFTP client[LF]
-a chunk of[LF]
-data[LF]
-returned[LF]
- to TFTP client[LF]
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
--foo-[LF]
== Contents of files in the log/23/ directory after test 2003
=== Start of file check-expected
 -foo-[LF]
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
 a chunk of[LF]
 data[LF]
 returned[LF]
  to TFTP client[LF]
 a chunk of[LF]
 data[LF]
 returned[LF]
  to TFTP client[LF]
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2003 ../src/curl -q --trace-ascii log/23/trace2003 --trace-time http://127.0.0.1:44711/20030001 ftp://127.0.0.1:35523/20030002 file://localhost/startdir/src/build-curl/tests/log/23/test2003.txt tftp://127.0.0.1:47779//20030003 tftp://127.0.0.1:47779//20030003 file://localhost/startdir/src/build-curl/tests/log/23/test2003.txt ftp://127.0.0.1:35523/20030002 http://127.0.0.1:44711/20030001 > log/23/stdout2003 2> log/23/stderr2003
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:02.995454 ====> Client connect
 19:29:02.995668 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:02.995943 < "USER anonymous"
 19:29:02.995982 > "331 We are happy you popped in![CR][LF]"
 19:29:02.996145 < "PASS ftp@example.com"
 19:29:02.996173 > "230 Welcome you silly person[CR][LF]"
 19:29:02.996321 < "PWD"
 19:29:02.996356 > "257 "/" is current directory[CR][LF]"
 19:29:02.996546 < "EPSV"
 19:29:02.996575 ====> Passive DATA channel requested by client
 19:29:02.996591 DATA sockfilt for passive data channel starting...
 19:29:03.009750 DATA sockfilt for passive data channel started (pid 177769)
 19:29:03.009938 DATA sockfilt for passive data channel listens on port 36359
 19:29:03.009990 > "229 Entering Passive Mode (|||36359|)[CR][LF]"
 19:29:03.010006 Client has been notified that upcoming DATA connection is awaited on port 36359
 19:29:03.010388 Client connects to port 36359
 19:29:03.010420 ====> Client established passive DATA connection on port 36359
 19:29:03.010519 < "TYPE I"
 19:29:03.010554 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:03.010756 < "SIZE verifiedserver"
 19:29:03.010819 > "213 17[CR][LF]"
 19:29:03.010980 < "RETR verifiedserver"
 19:29:03.011013 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:03.011107 =====> Closing passive DATA connection...
 19:29:03.011124 Server disconnects passive DATA connection
 19:29:03.011371 Server disconnected passive DATA connection
 19:29:03.011399 DATA sockfilt for passive data channel quits (pid 177769)
 19:29:03.011721 DATA sockfilt for passive data channel quit (pid 177769)
 19:29:03.011745 =====> Closed passive DATA connection
 19:29:03.011772 > "226 File transfer complete[CR][LF]"
 19:29:03.062203 < "QUIT"
 19:29:03.062262 > "221 bye bye baby[CR][LF]"
 19:29:03.068717 MAIN sockfilt said DISC
 19:29:03.068775 ====> Client disconnected
 19:29:03.068875 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:03.597565 ====> Client connect
 19:29:03.597925 Received DATA (on stdin)
 19:29:03.597941 > 146 bytes data, server => client
 19:29:03.597952 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:03.597962 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:03.597970 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:03.598056 < 16 bytes data, client => server
 19:29:03.598069 'USER anonymous\r\n'
 19:29:03.598223 Received DATA (on stdin)
 19:29:03.598234 > 33 bytes data, server => client
 19:29:03.598243 '331 We are happy you popped in!\r\n'
 19:29:03.598297 < 22 bytes data, client => server
 19:29:03.598307 'PASS ftp@example.com\r\n'
 19:29:03.598411 Received DATA (on stdin)
 19:29:03.598421 > 30 bytes data, server => client
 19:29:03.598430 '230 Welcome you silly person\r\n'
 19:29:03.598477 < 5 bytes data, client => server
 19:29:03.598486 'PWD\r\n'
 19:29:03.598598 Received DATA (on stdin)
 19:29:03.598610 > 30 bytes data, server => client
 19:29:03.598620 '257 "/" is current directory\r\n'
 19:29:03.598689 < 6 bytes data, client => server
 19:29:03.598703 'EPSV\r\n'
 19:29:03.612256 Received DATA (on stdin)
 19:29:03.612273 > 39 bytes data, server => client
 19:29:03.612284 '229 Entering Passive Mode (|||36359|)\r\n'
 19:29:03.612530 < 8 bytes data, client => server
 19:29:03.612545 'TYPE I\r\n'
 19:29:03.612797 Received DATA (on stdin)
 19:29:03.612809 > 33 bytes data, server => client
 19:29:03.612819 '200 I modify TYPE as you wanted\r\n'
 19:29:03.612896 < 21 bytes data, client => server
 19:29:03.612907 'SIZE verifiedserver\r\n'
 19:29:03.613060 Received DATA (on stdin)
 19:29:03.613078 > 8 bytes data, server => client
 19:29:03.613088 '213 17\r\n'
 19:29:03.613138 < 21 bytes data, client => server
 19:29:03.613148 'RETR verifiedserver\r\n'
 19:29:03.613365 Received DATA (on stdin)
 19:29:03.613376 > 29 bytes data, server => client
 19:29:03.613385 '150 Binary junk (17 bytes).\r\n'
 19:29:03.614014 Received DATA (on stdin)
 19:29:03.614026 > 28 bytes data, server => client
 19:29:03.614035 '226 File transfer complete\r\n'
 19:29:03.664243 < 6 bytes data, client => server
 19:29:03.664274 'QUIT\r\n'
 19:29:03.664509 Received DATA (on stdin)
 19:29:03.664522 > 18 bytes data, server => client
 19:29:03.664531 '221 bye bye baby\r\n'
 19:29:03.670884 ====> Client disconnect
 19:29:03.671128 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:03.611673 Running IPv4 version
 19:29:03.611742 Listening on port 36359
 19:29:03.611782 Wrote pid 177769 to log/23/server/ftp_sockdata.pid
 19:29:03.611803 Received PING (on stdin)
 19:29:03.612064 Received PORT (on stdin)
 19:29:03.612577 ====> Client connect
 19:29:03.613433 Received DATA (on stdin)
 19:29:03.613447 > 17 bytes data, server => client
 19:29:03.613456 'WE ROOLZ: 84709\r\n'
 19:29:03.613480 Received DISC (on stdin)
 19:29:03.613491 ====> Client forcibly disconnected
 19:29:03.613647 Received QUIT (on stdin)
 19:29:03.613657 quits
 19:29:03.613736 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:29:02.541659 ====> Client connect
 19:29:02.541695 accept_connection 3 returned 4
 19:29:02.541716 Read 93 bytes
 19:29:02CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2044 ../src/curl -q --output log/22/curl2044.out  --include --trace-ascii log/22/trace2044 --trace-time --proto-default DOESNOTEXIST > log/22/stdout2044 2> log/22/stderr2044
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2049 ../src/curl -q --output log/9/curl2049.out  --include --trace-ascii log/9/trace2049 --trace-time http://www1.example.com:8081/2049 --connect-to ::127.0.0.1:43733 --next http://www2.example.com:8082/2049 --connect-to :8082:127.0.0.1:43733 --next http://www3.example.com:8083/2049 --connect-to www3.example.com::127.0.0.1:43733 --next http://www4.example.com:8084/2049 --connect-to www4.example.com:8084:127.0.0.1:43733 > log/9/stdout2049 2> log/9/stderr2049
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2046 ../src/curl -q --include --trace-ascii log/10/trace2046 --trace-time http://åäö.se:40913/2046 --resolve xn--4cab6c.se:40913:127.0.0.1 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/10/stdout2046 2> log/10/stderr2046
.541725 Process 93 bytes request
 19:29:02.541737 Got request: GET /verifiedserver HTTP/1.1
 19:29:02.541745 Are-we-friendly question received
 19:29:02.541770 Wrote request (93 bytes) input to log/23/server.input
 19:29:02.541788 Identifying ourselves as friends
 19:29:02.541851 Response sent (56 bytes) and written to log/23/server.response
 19:29:02.541861 special request received, no persistency
 19:29:02.541869 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 39258 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2003
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file test2003.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test2003.txt
=== Start of file tftp_server.log
 19:29:03.716545 Wrote pid 177818 to log/23/server/tftp_server.pid
 19:29:03.716620 Wrote port 47779 to log/23/server/tftp_server.port
 19:29:03.716633 Running IPv4 version on port UDP/47779
=== End of file tftp_server.log
=== Start of file valgrind2003
 ==178885== 
 ==178885== Process terminating with default action of signal 4 (SIGILL)
 ==178885==  Illegal opcode at address 0x492B75F
 ==178885==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178885==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178885==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178885==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178885==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178885==    by 0x49908EB: curl_version_info (version.c:600)
 ==178885==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178885==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178885==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178885==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2003
test 2044 [Attempt to set a default protocol that does not exist]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2044 ../src/curl -q --output log/22/curl2044.out  --include --trace-ascii log/22/trace2044 --trace-time --proto-default DOESNOTEXIST > log/22/stdout2044 2> log/22/stderr2044

curl returned 132, when expecting 1
 2044: exit FAILED
== Contents of files in the log/22/ directory after test 2044
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2044 ../src/curl -q --output log/22/curl2044.out  --include --trace-ascii log/22/trace2044 --trace-time --proto-default DOESNOTEXIST > log/22/stdout2044 2> log/22/stderr2044
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2044
=== End of file server.cmd
=== Start of file valgrind2044
 ==178745== 
 ==178745== Process terminating with default action of signal 4 (SIGILL)
 ==178745==  Illegal opcode at address 0x492B75F
 ==178745==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178745==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178745==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178745==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178745==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178745==    by 0x49908EB: curl_version_info (version.c:600)
 ==178745==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178745==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178745==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178745==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2044
test 2049 [Connect to specific host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2049 ../src/curl -q --output log/9/curl2049.out  --include --trace-ascii log/9/trace2049 --trace-time http://www1.example.com:8081/2049 --connect-to ::127.0.0.1:43733 --next http://www2.example.com:8082/2049 --connect-to :8082:127.0.0.1:43733 --next http://www3.example.com:8083/2049 --connect-to www3.example.com::127.0.0.1:43733 --next http://www4.example.com:8084/2049 --connect-to www4.example.com:8084:127.0.0.1:43733 > log/9/stdout2049 2> log/9/stderr2049

 2049: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 2049
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2049 ../src/curl -q --output log/9/curl2049.out  --include --trace-ascii log/9/trace2049 --trace-time http://www1.example.com:8081/2049 --connect-to ::127.0.0.1:43733 --next http://www2.example.com:8082/2049 --connect-to :8082:127.0.0.1:43733 --next http://www3.example.com:8083/2049 --connect-to www3.example.com::127.0.0.1:43733 --next http://www4.example.com:8084/2049 --connect-to www4.example.com:8084:127.0.0.1:43733 > log/9/stdout2049 2> log/9/stderr2049
=== End of file commands.log
=== Start of file http_server.log
 19:29:04.077750 ====> Client connect
 19:29:04.077785 accept_connection 3 returned 4
 19:29:04.077805 Read 93 bytes
 19:29:04.077814 Process 93 bytes request
 19:29:04.077827 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.077835 Are-we-friendly question received
 19:29:04.077860 Wrote request (93 bytes) input to log/9/server.input
 19:29:04.077876 Identifying ourselves as friends
 19:29:04.077931 Response sent (56 bytes) and written to log/9/server.response
 19:29:04.077940 special request received, no persistency
 19:29:04.077947 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35626 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2049
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind2049
 ==179084== 
 ==179084== Process terminating with default action of signal 4 (SIGILL)
 ==179084==  Illegal opcode at address 0x492B75F
 ==179084==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179084==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179084==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179084==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179084==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179084==    by 0x49908EB: curl_version_info (version.c:600)
 ==179084==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179084==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179084==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2049
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2002 ../src/curl -q --trace-ascii log/4/trace2002 --trace-time http://127.0.0.1:32943/20020001 ftp://127.0.0.1:39739/20020002 file://localhost/startdir/src/build-curl/tests/log/4/test2002.txt tftp://127.0.0.1:58670//20020003 > log/4/stdout2002 2> log/4/stderr2002
setenv LC_ALL = C.UTF-8
test 2046 [Connection reuse with IDN hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2046 ../src/curl -q --include --trace-ascii log/10/trace2046 --trace-time http://åäö.se:40913/2046 --resolve xn--4cab6c.se:40913:127.0.0.1 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/10/stdout2046 2> log/10/stderr2046

 2046: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:29:06.903429923 +0000
+++ log/10/check-generated	2026-10-15 19:29:06.899266018 +0000
@@ -1,18 +0,0 @@
-HTTP/1.1 302 OK swsbounce[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Content-Type: text/plain[LF]
-Location: ./20460001[LF]
-[LF]
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 3[LF]
-Content-Type: text/plain; charset=us-ascii[LF]
-[LF]
-OK[LF]
-1[LF]
-1[LF]
-3[LF]
-http://%c3%a5%c3%a4%c3%b6.se:40913/20460001[LF]
-text/plain; charset=us-ascii[LF]
-200[LF]
== Contents of files in the log/10/ directory after test 2046
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Content-Type: text/plain[LF]
 Location: ./20460001[LF]
 [LF]
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 3[LF]
 Content-Type: text/plain; charset=us-ascii[LF]
 [LF]
 OK[LF]
 1[LF]
 1[LF]
 3[LF]
 http://%c3%a5%c3%a4%c3%b6.se:40913/20460001[LF]
 text/plain; charset=us-ascii[LF]
 200[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2046 ../src/curl -q --include --trace-ascii log/10/trace2046 --trace-time http://åäö.se:40913/2046 --resolve xn--4cab6c.se:40913:127.0.0.1 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/10/stdout2046 2> log/10/stderr2046
=== End of file commands.log
=== Start of file http_server.log
 19:29:03.899826 ====> Client connect
 19:29:03.899863 accept_connection 3 returned 4
 19:29:03.899884 Read 93 bytes
 19:29:03.899893 Process 93 bytes request
 19:29:03.899905 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.899914 Are-we-friendly question received
 19:29:03.899941 Wrote request (93 bytes) input to log/10/server.input
 19:29:03.899957 Identifying ourselves as friends
 19:29:03.900019 Response sent (56 bytes) and written to log/10/server.response
 19:29:03.900028 special request received, no persistency
 19:29:03.900036 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 39486 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2046
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind2046
 ==179004== 
 ==179004== Process terminating with default action of signal 4 (SIGILL)
 ==179004==  Illegal opcode at address 0x492B75F
 ==179004==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179004==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179004==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179004==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179004==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179004==    by 0x49908EB: curl_version_info (version.c:600)
 ==179004==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179004==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179004==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179004==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2046
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/tftpserver.pl --pidfile "log/4/server/tftp_server.pid" --portfile "log/4/server/tftp_server.port" --logfile "log/4/tftp_server.log" --logdir "log/4" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: TFTP server on PID 177739 port 58670
* pid tftp => 177739 177739
test 2002 [HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2002 ../src/curl -q --trace-ascii log/4/trace2002 --trace-time http://127.0.0.1:32943/20020001 ftp://127.0.0.1:39739/20020002 file://localhost/startdir/src/build-curl/tests/log/4/test2002.txt tftp://127.0.0.1:58670//20020003 > log/4/stdout2002 2> log/4/stderr2002

 2002: stdout FAILED:
--- log/4/check-expected	2026-10-15 19:29:07.148140966 +0000
+++ log/4/check-generated	2026-10-15 19:29:07.142598300 +0000
@@ -1,16 +0,0 @@
--foo-[LF]
-data[LF]
-    to[LF]
-      see[LF]
-that FTP[LF]
-works[LF]
-  so does it?[LF]
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
-a chunk of[LF]
-data[LF]
-returned[LF]
- to TFTP client[LF]
== Contents of files in the log/4/ directory after test 2002
=== Start of file check-expected
 -foo-[LF]
 data[LF]
     to[LF]
       see[LF]
 that FTP[LF]
 works[LF]
   so does it?[LF]
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
 a chunk of[LF]
 data[LF]
 returned[LF]
  to TFTP client[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2002 ../src/curl -q --trace-ascii log/4/trace2002 --trace-time http://127.0.0.1:32943/20020001 ftp://127.0.0.1:39739/20020002 file://localhost/startdir/src/build-curl/tests/log/4/test2002.txt tftp://127.0.0.1:58670//20020003 > log/4/stdout2002 2> log/4/stderr2002
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:02.902147 ====> Client connect
 19:29:02.902373 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:02.902675 < "USER anonymous"
 19:29:02.902707 > "331 We are happy you popped in![CR][LF]"
 19:29:02.902863 < "PASS ftp@example.com"
 19:29:02.902888 > "230 Welcome you silly person[CR][LF]"
 19:29:02.903036 < "PWD"
 19:29:02.903066 > "257 "/" is current directory[CR][LF]"
 19:29:02.903230 < "EPSV"
 19:29:02.903255 ====> Passive DATA channel requested by client
 19:29:02.903268 DATA sockfilt for passive data channel starting...
 19:29:02.909148 DATA sockfilt for passive data channel started (pid 177701)
 19:29:02.909294 DATA sockfilt for passive data channel listens on port 36717
 19:29:02.909343 > "229 Entering Passive Mode (|||36717|)[CR][LF]"
 19:29:02.909365 Client has been notified that upcoming DATA connection is awaited on port 36717
 19:29:02.909721 Client connects to port 36717
 19:29:02.909752 ====> Client established passive DATA connection on port 36717
 19:29:02.909841 < "TYPE I"
 19:29:02.909871 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:02.910038 < "SIZE verifiedserver"
 19:29:02.910077 > "213 17[CR][LF]"
 19:29:02.910253 < "RETR verifiedserver"
 19:29:02.910293 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:02.910381 =====> Closing passive DATA connection...
 19:29:02.910398 Server disconnects passive DATA connection
 19:29:02.910632 Server disconnected passive DATA connection
 19:29:02.910665 DATA sockfilt for passive data channel quits (pid 177701)
 19:29:02.910916 DATA sockfilt for passive data channel quit (pid 177701)
 19:29:02.910943 =====> Closed passive DATA connection
 19:29:02.910969 > "226 File transfer complete[CR][LF]"
 19:29:02.953810 < "QUIT"
 19:29:02.953866 > "221 bye bye baby[CR][LF]"
 19:29:02.955141 MAIN sockfilt said DISC
 19:29:02.955187 ====> Client disconnected
 19:29:02.955264 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:02.500910 ====> Client connect
 19:29:02.504617 Received DATA (on stdin)
 19:29:02.504636 > 146 bytes data, server => client
 19:29:02.504647 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:02.504657 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:02.504666 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:02.504793 < 16 bytes data, client => server
 19:29:02.504806 'USER anonymous\r\n'
 19:29:02.504947 Received DATA (on stdin)
 19:29:02.504958 > 33 bytes data, server => client
 19:29:02.504967 '331 We are happy you popped in!\r\n'
 19:29:02.505019 < 22 bytes data, client => server
 19:29:02.505030 'PASS ftp@example.com\r\n'
 19:29:02.505126 Received DATA (on stdin)
 19:29:02.505136 > 30 bytes data, server => client
 19:29:02.505146 '230 Welcome you silly person\r\n'
 19:29:02.505194 < 5 bytes data, client => server
 19:29:02.505204 'PWD\r\n'
 19:29:02.505305 Received DATA (on stdin)
 19:29:02.505316 > 30 bytes data, server => client
 19:29:02.505325 '257 "/" is current directory\r\n'
 19:29:02.505387 < 6 bytes data, client => server
 19:29:02.505398 'EPSV\r\n'
 19:29:02.511620 Received DATA (on stdin)
 19:29:02.511640 > 39 bytes data, server => client
 19:29:02.511651 '229 Entering Passive Mode (|||36717|)\r\n'
 19:29:02.511874 < 8 bytes data, client => server
 19:29:02.511892 'TYPE I\r\n'
 19:29:02.512113 Received DATA (on stdin)
 19:29:02.512125 > 33 bytes data, server => client
 19:29:02.512135 '200 I modify TYPE as you wanted\r\n'
 19:29:02.512190 < 21 bytes data, client => server
 19:29:02.512203 'SIZE verifiedserver\r\n'
 19:29:02.512320 Received DATA (on stdin)
 19:29:02.512331 > 8 bytes data, server => client
 19:29:02.512340 '213 17\r\n'
 19:29:02.512397 < 21 bytes data, client => server
 19:29:02.512411 'RETR verifiedserver\r\n'
 19:29:02.512641 Received DATA (on stdin)
 19:29:02.512652 > 29 bytes data, server => client
 19:29:02.512662 '150 Binary junk (17 bytes).\r\n'
 19:29:02.513211 Received DATA (on stdin)
 19:29:02.513224 > 28 bytes data, server => client
 19:29:02.513235 '226 File transfer complete\r\n'
 19:29:02.555836 < 6 bytes data, client => server
 19:29:02.555867 'QUIT\r\n'
 19:29:02.556114 Received DATA (on stdin)
 19:29:02.556128 > 18 bytes data, server => client
 19:29:02.556137 '221 bye bye baby\r\n'
 19:29:02.557318 ====> Client disconnect
 19:29:02.557514 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:02.507438 Running IPv4 version
 19:29:02.507502 Listening on port 36717
 19:29:02.507555 Wrote pid 177701 to log/4/server/ftp_sockdata.pid
 19:29:02.511315 Received PING (on stdin)
 19:29:02.511433 Received PORT (on stdin)
 19:29:02.511914 ====> Client connect
 19:29:02.512691 Received DATA (on stdin)
 19:29:02.512703 > 17 bytes data, server => client
 19:29:02.512713 'WE ROOLZ: 85249\r\n'
 19:29:02.512738 Received DISC (on stdin)
 19:29:02.512751 ====> Client forcibly disconnected
 19:29:02.512917 Received QUIT (on stdin)
 19:29:02.512929 quits
 19:29:02.512994 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file http_server.log
 19:29:03.414283 ====> Client connect
 19:29:03.414330 accept_connection 3 returned 4
 19:29:03.414353 Read 93 bytes
 19:29:03.414363 Process 93 bytes request
 19:29:03.414376 Got request: GET /verifiedserver HTTP/1.1
 19:29:03.414385 Are-we-friendly question received
 19:29:03.414416 Wrote request (93 bytes) input to log/4/server.input
 19:29:03.414433 Identifying ourselves as friends
 19:29:03.414517 Response sent (57 bytes) and written to log/4/server.response
 19:29:03.414526 special request received, no persistency
 19:29:03.414534 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:32943...
 * Established connection to 127.0.0.1 (127.0.0.1 port 32943) from 127.0.0.1 port 47790 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:32943
 > User-Agent: curl/8.23.0
 > Accept: *CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2051 ../src/curl -q --include --trace-ascii log/19/trace2051 --trace-time http://127.0.0.1:37077/2051 -w "%{num_connects}\n" --next --connect-to ::127.0.0.1:37077 http://127.0.0.1:37077/2051 -w "%{num_connects}\n" --next http://127.0.0.1:37077/2051 -w "%{num_connects}\n" > log/19/stdout2051 2> log/19/stderr2051
/*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:32943 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 165851
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2002
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 165851
=== End of file server.response
=== Start of file test2002.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test2002.txt
=== Start of file tftp_server.log
 19:29:03.608233 Wrote pid 177739 to log/4/server/tftp_server.pid
 19:29:03.608313 Wrote port 58670 to log/4/server/tftp_server.port
 19:29:03.608325 Running IPv4 version on port UDP/58670
=== End of file tftp_server.log
=== Start of file valgrind2002
 ==178785== 
 ==178785== Process terminating with default action of signal 4 (SIGILL)
 ==178785==  Illegal opcode at address 0x492B75F
 ==178785==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==178785==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==178785==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==178785==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==178785==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==178785==    by 0x49908EB: curl_version_info (version.c:600)
 ==178785==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==178785==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==178785==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==178785==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2002
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2047 ../src/curl -q --include --trace-ascii log/12/trace2047 --trace-time http://åäö.se/2047 -x 127.0.0.1:40921 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/12/stdout2047 2> log/12/stderr2047
test 2051 [Connect to specific host: Reuse existing connections if possible]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2051 ../src/curl -q --include --trace-ascii log/19/trace2051 --trace-time http://127.0.0.1:37077/2051 -w "%{num_connects}\n" --next --connect-to ::127.0.0.1:37077 http://127.0.0.1:37077/2051 -w "%{num_connects}\n" --next http://127.0.0.1:37077/2051 -w "%{num_connects}\n" > log/19/stdout2051 2> log/19/stderr2051

 2051: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:29:07.362700211 +0000
+++ log/19/check-generated	2026-10-15 19:29:07.359263941 +0000
@@ -1,11 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 3[LF]
-Content-Type: text/plain[LF]
-[LF]
-OK[LF]
-1[LF]
-OK[LF]
-0[LF]
-OK[LF]
-0[LF]
== Contents of files in the log/19/ directory after test 2051
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 3[LF]
 Content-Type: text/plain[LF]
 [LF]
 OK[LF]
 1[LF]
 OK[LF]
 0[LF]
 OK[LF]
 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2051 ../src/curl -q --include --trace-ascii log/19/trace2051 --trace-time http://127.0.0.1:37077/2051 -w "%{num_connects}\n" --next --connect-to ::127.0.0.1:37077 http://127.0.0.1:37077/2051 -w "%{num_connects}\n" --next http://127.0.0.1:37077/2051 -w "%{num_connects}\n" > log/19/stdout2051 2> log/19/stderr2051
=== End of file commands.log
=== Start of file http_server.log
 19:29:04.623458 ====> Client connect
 19:29:04.623493 accept_connection 3 returned 4
 19:29:04.637695 Read 93 bytes
 19:29:04.637716 Process 93 bytes request
 19:29:04.637727 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.637736 Are-we-friendly question received
 19:29:04.637771 Wrote request (93 bytes) input to log/19/server.input
 19:29:04.637788 Identifying ourselves as friends
 19:29:04.637846 Response sent (57 bytes) and written to log/19/server.response
 19:29:04.637855 special request received, no persistency
 19:29:04.637863 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 46470 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2051
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind2051
 ==179282== 
 ==179282== Process terminating with default action of signal 4 (SIGILL)
 ==179282==  Illegal opcode at address 0x492B75F
 ==179282==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179282==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179282==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179282==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179282==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179282==    by 0x49908EB: curl_version_info (version.c:600)
 ==179282==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179282==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179282==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179282==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2051
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2054 ../src/curl -q --output log/11/curl2054.out  --include --trace-ascii log/11/trace2054 --trace-time http://127.0.0.1:40989/2054 --connect-to foo::bar: --connect-to :123::456 --next http://www.example.com:40989/2054 --connect-to www.example.com::127.0.0.1: --connect-to www.example.com::foo: --next http://127.0.0.1:8083/2054 --connect-to :8083::40989 --connect-to :8083::123 --next http://www.example.com:8084/2054 --connect-to www.example.com:8084:127.0.0.1:40989 --connect-to www.example.com:8084:foo:123 > log/11/stdout2054 2> log/11/stderr2054
setenv LC_ALL = C.UTF-8
test 2047 [Connection reuse with IDN hostname over HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2047 ../src/curl -q --include --trace-ascii log/12/trace2047 --trace-time http://åäö.se/2047 -x 127.0.0.1:40921 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/12/stdout2047 2> log/12/stderr2047

 2047: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:29:07.389430439 +0000
+++ log/12/check-generated	2026-10-15 19:29:07.385930482 +0000
@@ -1,18 +0,0 @@
-HTTP/1.1 302 OK swsbounce[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Content-Type: text/plain[LF]
-Location: ./20470001[LF]
-[LF]
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 3[LF]
-Content-Type: text/plain; charset=us-ascii[LF]
-[LF]
-OK[LF]
-1[LF]
-1[LF]
-3[LF]
-http://%c3%a5%c3%a4%c3%b6.se/20470001[LF]
-text/plain; charset=us-ascii[LF]
-200[LF]
== Contents of files in the log/12/ directory after test 2047
=== Start of file check-expected
 HTTP/1.1 302 OK swsbounce[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Content-Type: text/plain[LF]
 Location: ./20470001[LF]
 [LF]
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 3[LF]
 Content-Type: text/plain; charset=us-ascii[LF]
 [LF]
 OK[LF]
 1[LF]
 1[LF]
 3[LF]
 http://%c3%a5%c3%a4%c3%b6.se/20470001[LF]
 text/plain; charset=us-ascii[LF]
 200[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2047 ../src/curl -q --include --trace-ascii log/12/trace2047 --trace-time http://åäö.se/2047 -x 127.0.0.1:40921 -w "%{num_connects}\n%{num_redirects}\n%{size_download}\n%{url_effective}\n%{content_type}\n%{response_code}\n" -L > log/12/stdout2047 2> log/12/stderr2047
=== End of file commands.log
=== Start of file http_server.log
 19:29:04.017636 ====> Client connect
 19:29:04.017681 accept_connection 3 returned 4
 19:29:04.017704 Read 93 bytes
 19:29:04.017714 Process 93 bytes request
 19:29:04.017726 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.017734 Are-we-friendly question received
 19:29:04.017758 Wrote request (93 bytes) input to log/12/server.input
 19:29:04.017773 Identifying ourselves as friends
 19:29:04.017871 Response sent (56 bytes) and written to log/12/server.response
 19:29:04.017881 special request received, no persistency
 19:29:04.017888 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 53060 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2047
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind2047
 ==179077== 
 ==179077== Process terminating with default action of signal 4 (SIGILL)
 ==179077==  Illegal opcode at address 0x492B75F
 ==179077==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179077==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179077==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179077==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179077==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179077==    by 0x49908EB: curl_version_info (version.c:600)
 ==179077==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179077==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179077==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179077==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2047
test 2054 [Connect to specific host: use the first "connect-to" string]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2054 ../src/curl -q --output log/11/curl2054.out  --include --trace-ascii log/11/trace2054 --trace-time http://127.0.0.1:40989/2054 --connect-to foo::bar: --connect-to :123::456 --next http://www.example.com:40989/2054 --connect-to www.example.com::127.0.0.1: --connect-to www.example.com::foo: --next http://127.0.0.1:8083/2054 --connect-to :8083::40989 --connect-to :8083::123 --next http://www.example.com:8084/2054 --connect-to www.example.com:8084:127.0.0.1:40989 --connect-to www.example.com:8084:foo:123 > log/11/stdout2054 2> log/11/stderr2054

 2054: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 2054
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2054 ../src/curl -q --output log/11/curl2054.out  --include --trace-ascii log/11/trace2054 --trace-time http://127.0.0.1:40989/2054 --connect-to foo::bar: --connect-to :123::456 --next http://www.example.com:40989/2054 --connect-to www.example.com::127.0.0.1: --connect-to www.example.com::foo: --next http://127.0.0.1:8083/2054 --connect-to :8083::40989 --connect-to :8083::123 --next http://www.example.com:8084/2054 --connect-to www.example.com:8084:127.0.0.1:40989 --connect-to www.example.com:8084:foo:123 > log/11/stdout2054 2> log/11/stderr2054
=== End of file commands.log
=== Start of file http_server.log
 19:29:04.924288 ====> Client connect
 19:29:04.924330 accept_connection 3 returned 4
 19:29:04.924532 Read 93 bytes
 19:29:04.924550 Process 93 bytes request
 19:29:04.924565 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.924574 Are-we-friendly question received
 19:29:04.924608 Wrote request (93 bytes) input to log/11/server.input
 19:29:04.924629 Identifying ourselves as friends
 19:29:04.924699 Response sent (56 bytes) and written to log/11/server.response
 19:29:04.924711 special request received, no persistency
 19:29:04.924720 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 43208 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2054
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind2054
 ==179481== 
 ==179481== Process terminating with default action of signal 4 (SIGILL)
 ==179481==  Illegal opcode at address 0x492B75F
 ==179481==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179481==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179481==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179481==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179481==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179481==    by 0x49908EB: curl_version_info (version.c:600)
 ==179481==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179481==    by 0x4003269: UnknownInlinedFun (tool_cfgabCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2064 ../src/curl -q --output log/17/curl2064.out  --include --trace-ascii log/17/trace2064 --trace-time http://127.0.0.1:35993/2064 -u testuser:test2pass --digest > log/17/stdout2064 2> log/17/stderr2064
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2052 ../src/curl -q --include --trace-ascii log/13/trace2052 --trace-time http://www.example.com:38821/2052 --resolve www.example.com:38821:127.0.0.1 -w "%{num_connects}\n" --next --resolve -www.example.com:38821 --connect-to ::127.0.0.1:38821 http://www.example.com:38821/2052 -w "%{num_connects}\n" > log/13/stdout2052 2> log/13/stderr2052
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2053 ../src/curl -q --output log/15/curl2053.out  --include --trace-ascii log/15/trace2053 --trace-time http://10.0.0.1:8081/2053  --connect-to 10.0.0.1:8081:127.0.0.1:40321 --next http://[fc00::1]:8081/2053 --connect-to [fc00::1]:8081:127.0.0.1:40321 > log/15/stdout2053 2> log/15/stderr2053
le.c:339)
 ==179481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179481==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2054
test 2064 [HTTP with RFC7616 Digest authorization with bad password and SHA256]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2064 ../src/curl -q --output log/17/curl2064.out  --include --trace-ascii log/17/trace2064 --trace-time http://127.0.0.1:35993/2064 -u testuser:test2pass --digest > log/17/stdout2064 2> log/17/stderr2064

 2064: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 2064
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2064 ../src/curl -q --output log/17/curl2064.out  --include --trace-ascii log/17/trace2064 --trace-time http://127.0.0.1:35993/2064 -u testuser:test2pass --digest > log/17/stdout2064 2> log/17/stderr2064
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.257014 ====> Client connect
 19:29:06.257050 accept_connection 3 returned 4
 19:29:06.257072 Read 93 bytes
 19:29:06.257082 Process 93 bytes request
 19:29:06.257094 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.257102 Are-we-friendly question received
 19:29:06.257129 Wrote request (93 bytes) input to log/17/server.input
 19:29:06.257145 Identifying ourselves as friends
 19:29:06.257203 Response sent (56 bytes) and written to log/17/server.response
 19:29:06.257212 special request received, no persistency
 19:29:06.257220 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 58852 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2064
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind2064
 ==179884== 
 ==179884== Process terminating with default action of signal 4 (SIGILL)
 ==179884==  Illegal opcode at address 0x492B75F
 ==179884==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179884==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179884==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179884==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179884==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179884==    by 0x49908EB: curl_version_info (version.c:600)
 ==179884==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179884==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179884==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179884==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2064
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2062 ../src/curl -q --output log/3/curl2062.out  --include --trace-ascii log/3/trace2062 --trace-time http://127.0.0.1:36161/2062 -u testuser:testpass --digest > log/3/stdout2062 2> log/3/stderr2062
test 2052 [--connect-to: do not mix connections with and w/o a "connect to host"]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2052 ../src/curl -q --include --trace-ascii log/13/trace2052 --trace-time http://www.example.com:38821/2052 --resolve www.example.com:38821:127.0.0.1 -w "%{num_connects}\n" --next --resolve -www.example.com:38821 --connect-to ::127.0.0.1:38821 http://www.example.com:38821/2052 -w "%{num_connects}\n" > log/13/stdout2052 2> log/13/stderr2052

 2052: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:29:07.749398125 +0000
+++ log/13/check-generated	2026-10-15 19:29:07.745928778 +0000
@@ -1,9 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 3[LF]
-Content-Type: text/plain[LF]
-[LF]
-OK[LF]
-1[LF]
-OK[LF]
-1[LF]
== Contents of files in the log/13/ directory after test 2052
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 3[LF]
 Content-Type: text/plain[LF]
 [LF]
 OK[LF]
 1[LF]
 OK[LF]
 1[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2052 ../src/curl -q --include --trace-ascii log/13/trace2052 --trace-time http://www.example.com:38821/2052 --resolve www.example.com:38821:127.0.0.1 -w "%{num_connects}\n" --next --resolve -www.example.com:38821 --connect-to ::127.0.0.1:38821 http://www.example.com:38821/2052 -w "%{num_connects}\n" > log/13/stdout2052 2> log/13/stderr2052
=== End of file commands.log
=== Start of file http_server.log
 19:29:04.637266 ====> Client connect
 19:29:04.637308 accept_connection 3 returned 4
 19:29:04.637332 Read 93 bytes
 19:29:04.637343 Process 93 bytes request
 19:29:04.637357 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.637367 Are-we-friendly question received
 19:29:04.637400 Wrote request (93 bytes) input to log/13/server.input
 19:29:04.637419 Identifying ourselves as friends
 19:29:04.637492 Response sent (56 bytes) and written to log/13/server.response
 19:29:04.637504 special request received, no persistency
 19:29:04.637512 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54820 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2052
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind2052
 ==179288== 
 ==179288== Process terminating with default action of signal 4 (SIGILL)
 ==179288==  Illegal opcode at address 0x492B75F
 ==179288==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179288==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179288==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179288==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179288==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179288==    by 0x49908EB: curl_version_info (version.c:600)
 ==179288==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179288==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179288==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179288==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2052
test 2053 [Connect to specific host with IP addresses]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2053 ../src/curl -q --output log/15/curl2053.out  --include --trace-ascii log/15/trace2053 --trace-time http://10.0.0.1:8081/2053  --connect-to 10.0.0.1:8081:127.0.0.1:40321 --next http://[fc00::1]:8081/2053 --connect-to [fc00::1]:8081:127.0.0.1:40321 > log/15/stdout2053 2> log/15/stderr2053

 2053: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 2053
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2053 ../src/curl -q --output log/15/curl2053.out  --include --trace-ascii log/15/trace2053 --trace-time http://10.0.0.1:8081/2053  --connect-to 10.0.0.1:8081:127.0.0.1:40321 --next http://[fc00::1]:8081/2053 --connect-to [fc00::1]:8081:127.0.0.1:40321 > log/15/stdout2053 2> log/15/stderr2053
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.658800 ====> Client connect
 19:29:05.658838 accept_connection 3 returned 4
 19:29:05.658861 Read 93 bytes
 19:29:05.658872 Process 93 bytes request
 19:29:05.658885 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.658893 Are-we-friendly question received
 19:29:05.658924 Wrote request (93 bytes) input to log/15/server.input
 19:29:05.658943 Identifying ourselves as friends
 19:29:05.659015 Response sent (56 bytes) and written to log/15/server.response
 19:29:05.659028 special request received, no persistency
 19:29:05.659038 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 39582 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2053
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind2053
 ==179294== 
 ==179294== Process terminating with default action of signal 4 (SIGILL)
 ==179294==  Illegal opcode at address 0x492B75F
 ==179294==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179294==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179294==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179294==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179294==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179294==    by 0x49908EB: curl_version_info (version.c:600)
 ==179294==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179294==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179294==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2053
test 2062 [HTTP with RFC7616 SHA-512-256 Digest authorization and userhash=false]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2062 ../src/curl -q --output log/3/curl2062.out  --include --trace-ascii log/3/trace2062 --trace-time http://127.0.0.1:36161/2062 -u testuser:testpass --digest > log/3/stdout2062 2> log/3/stderr2062

 2062: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 2062
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet -CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2066 ../src/curl -q --output log/21/curl2066.out  --include --trace-ascii log/21/trace2066 --trace-time http://127.0.0.1:39881/2066 -u testuser:test2pass --digest > log/21/stdout2066 2> log/21/stderr2066
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2058 ../src/curl -q --output log/14/curl2058.out  --include --trace-ascii log/14/trace2058 --trace-time http://127.0.0.1:45467/2058 -u auser:apasswd --digest -T log/14/2058 -x  http://127.0.0.1:45467 -X GET > log/14/stdout2058 2> log/14/stderr2058
-leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2062 ../src/curl -q --output log/3/curl2062.out  --include --trace-ascii log/3/trace2062 --trace-time http://127.0.0.1:36161/2062 -u testuser:testpass --digest > log/3/stdout2062 2> log/3/stderr2062
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.120979 ====> Client connect
 19:29:06.121020 accept_connection 3 returned 4
 19:29:06.121045 Read 93 bytes
 19:29:06.121055 Process 93 bytes request
 19:29:06.121067 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.121076 Are-we-friendly question received
 19:29:06.121105 Wrote request (93 bytes) input to log/3/server.input
 19:29:06.121125 Identifying ourselves as friends
 19:29:06.121205 Response sent (56 bytes) and written to log/3/server.response
 19:29:06.121218 special request received, no persistency
 19:29:06.121227 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 56398 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2062
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind2062
 ==179646== 
 ==179646== Process terminating with default action of signal 4 (SIGILL)
 ==179646==  Illegal opcode at address 0x492B75F
 ==179646==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179646==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179646==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179646==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179646==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179646==    by 0x49908EB: curl_version_info (version.c:600)
 ==179646==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179646==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179646==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179646==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2062
test 2066 [HTTP with RFC7616 Digest, bad password, SHA-256 and userhash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2066 ../src/curl -q --output log/21/curl2066.out  --include --trace-ascii log/21/trace2066 --trace-time http://127.0.0.1:39881/2066 -u testuser:test2pass --digest > log/21/stdout2066 2> log/21/stderr2066

 2066: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 2066
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2066 ../src/curl -q --output log/21/curl2066.out  --include --trace-ascii log/21/trace2066 --trace-time http://127.0.0.1:39881/2066 -u testuser:test2pass --digest > log/21/stdout2066 2> log/21/stderr2066
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.390646 ====> Client connect
 19:29:05.390690 accept_connection 3 returned 4
 19:29:05.390712 Read 93 bytes
 19:29:05.390722 Process 93 bytes request
 19:29:05.390734 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.390743 Are-we-friendly question received
 19:29:05.390771 Wrote request (93 bytes) input to log/21/server.input
 19:29:05.390788 Identifying ourselves as friends
 19:29:05.390855 Response sent (56 bytes) and written to log/21/server.response
 19:29:05.390864 special request received, no persistency
 19:29:05.390886 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 35100 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2066
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind2066
 ==180053== 
 ==180053== Process terminating with default action of signal 4 (SIGILL)
 ==180053==  Illegal opcode at address 0x492B75F
 ==180053==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180053==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180053==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180053==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180053==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180053==    by 0x49908EB: curl_version_info (version.c:600)
 ==180053==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180053==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180053==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180053==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2066
test 2058 [HTTP Digest upload with a modified method and SHA-256]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2058 ../src/curl -q --output log/14/curl2058.out  --include --trace-ascii log/14/trace2058 --trace-time http://127.0.0.1:45467/2058 -u auser:apasswd --digest -T log/14/2058 -x  http://127.0.0.1:45467 -X GET > log/14/stdout2058 2> log/14/stderr2058

 2058: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 2058
=== Start of file 2058
 test
=== End of file 2058
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2058 ../src/curl -q --output log/14/curl2058.out  --include --trace-ascii log/14/trace2058 --trace-time http://127.0.0.1:45467/2058 -u auser:apasswd --digest -T log/14/2058 -x  http://127.0.0.1:45467 -X GET > log/14/stdout2058 2> log/14/stderr2058
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.037726 ====> Client connect
 19:29:05.037777 accept_connection 3 returned 4
 19:29:05.037806 Read 93 bytes
 19:29:05.037815 Process 93 bytes request
 19:29:05.037828 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.037836 Are-we-friendly question received
 19:29:05.037863 Wrote request (93 bytes) input to log/14/server.input
 19:29:05.037878 Identifying ourselves as friends
 19:29:05.037962 Response sent (56 bytes) and written to log/14/server.response
 19:29:05.037972 special request received, no persistency
 19:29:05.037980 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 44796 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [1 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2059 ../src/curl -q --output log/1/curl2059.out  --include --trace-ascii log/1/trace2059 --trace-time http://127.0.0.1:38815/2059 -u auser:apasswd --digest -T log/1/2059 -x  http://127.0.0.1:38815 -X GET > log/1/stdout2059 2> log/1/stderr2059
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2065 ../src/curl -q --output log/20/curl2065.out  --include --trace-ascii log/20/trace2065 --trace-time http://127.0.0.1:41689/2065 -u testuser:test2pass --digest > log/20/stdout2065 2> log/20/stderr2065
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2061 ../src/curl -q --output log/6/curl2061.out  --include --trace-ascii log/6/trace2061 --trace-time http://127.0.0.1:33935/2061 -u testuser:testpass --digest > log/6/stdout2061 2> log/6/stderr2061
ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2058
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind2058
 ==179603== 
 ==179603== Process terminating with default action of signal 4 (SIGILL)
 ==179603==  Illegal opcode at address 0x492B75F
 ==179603==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179603==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179603==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179603==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179603==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179603==    by 0x49908EB: curl_version_info (version.c:600)
 ==179603==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179603==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179603==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179603==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2058
test 2059 [HTTP Digest upload with a modified method, SHA-256 and userhash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2059 ../src/curl -q --output log/1/curl2059.out  --include --trace-ascii log/1/trace2059 --trace-time http://127.0.0.1:38815/2059 -u auser:apasswd --digest -T log/1/2059 -x  http://127.0.0.1:38815 -X GET > log/1/stdout2059 2> log/1/stderr2059

 2059: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 2059
=== Start of file 2059
 test
=== End of file 2059
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2059 ../src/curl -q --output log/1/curl2059.out  --include --trace-ascii log/1/trace2059 --trace-time http://127.0.0.1:38815/2059 -u auser:apasswd --digest -T log/1/2059 -x  http://127.0.0.1:38815 -X GET > log/1/stdout2059 2> log/1/stderr2059
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.024830 ====> Client connect
 19:29:06.024868 accept_connection 3 returned 4
 19:29:06.024893 Read 93 bytes
 19:29:06.024903 Process 93 bytes request
 19:29:06.024917 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.024926 Are-we-friendly question received
 19:29:06.034557 Wrote request (93 bytes) input to log/1/server.input
 19:29:06.034589 Identifying ourselves as friends
 19:29:06.034665 Response sent (56 bytes) and written to log/1/server.response
 19:29:06.034676 special request received, no persistency
 19:29:06.034684 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 41892 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2059
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind2059
 ==179573== 
 ==179573== Process terminating with default action of signal 4 (SIGILL)
 ==179573==  Illegal opcode at address 0x492B75F
 ==179573==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179573==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179573==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179573==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179573==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179573==    by 0x49908EB: curl_version_info (version.c:600)
 ==179573==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179573==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179573==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179573==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2059
test 2065 [HTTP with RFC7616 Digest, bad password, SHA-512-256 and userhash]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2065 ../src/curl -q --output log/20/curl2065.out  --include --trace-ascii log/20/trace2065 --trace-time http://127.0.0.1:41689/2065 -u testuser:test2pass --digest > log/20/stdout2065 2> log/20/stderr2065

 2065: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 2065
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2065 ../src/curl -q --output log/20/curl2065.out  --include --trace-ascii log/20/trace2065 --trace-time http://127.0.0.1:41689/2065 -u testuser:test2pass --digest > log/20/stdout2065 2> log/20/stderr2065
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.330924 ====> Client connect
 19:29:05.330958 accept_connection 3 returned 4
 19:29:05.330980 Read 93 bytes
 19:29:05.330990 Process 93 bytes request
 19:29:05.331002 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.331010 Are-we-friendly question received
 19:29:05.331042 Wrote request (93 bytes) input to log/20/server.input
 19:29:05.331057 Identifying ourselves as friends
 19:29:05.331121 Response sent (57 bytes) and written to log/20/server.response
 19:29:05.331131 special request received, no persistency
 19:29:05.331140 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 46924 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2065
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind2065
 ==180011== 
 ==180011== Process terminating with default action of signal 4 (SIGILL)
 ==180011==  Illegal opcode at address 0x492B75F
 ==180011==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180011==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180011==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180011==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180011==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180011==    by 0x49908EB: curl_version_info (version.c:600)
 ==180011==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180011==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180011==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2065
test 2061 [HTTP with RFC7616 SHA256 Digest authorization]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2061 ../src/curl -q --output log/6/curl2061.out  --include --trace-ascii log/6/trace2061 --trace-time http://127.0.0.1:33935/2061 -u testuser:testpass --digest > log/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2063 ../src/curl -q --output log/2/curl2063.out  --include --trace-ascii log/2/trace2063 --trace-time http://127.0.0.1:34531/2063 -u testuser:testpass --digest > log/2/stdout2063 2> log/2/stderr2063
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2060 ../src/curl -q --output log/24/curl2060.out  --include --trace-ascii log/24/trace2060 --trace-time http://127.0.0.1:38895/2060 -u auser:apasswd --digest -T log/24/2060 -x  http://127.0.0.1:38895 -X GET > log/24/stdout2060 2> log/24/stderr2060
6/stdout2061 2> log/6/stderr2061

 2061: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 2061
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2061 ../src/curl -q --output log/6/curl2061.out  --include --trace-ascii log/6/trace2061 --trace-time http://127.0.0.1:33935/2061 -u testuser:testpass --digest > log/6/stdout2061 2> log/6/stderr2061
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.057330 ====> Client connect
 19:29:05.057632 accept_connection 3 returned 4
 19:29:05.057664 Read 93 bytes
 19:29:05.057676 Process 93 bytes request
 19:29:05.057690 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.057699 Are-we-friendly question received
 19:29:05.057729 Wrote request (93 bytes) input to log/6/server.input
 19:29:05.057748 Identifying ourselves as friends
 19:29:05.057821 Response sent (56 bytes) and written to log/6/server.response
 19:29:05.057833 special request received, no persistency
 19:29:05.057842 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 39500 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2061
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind2061
 ==179619== 
 ==179619== Process terminating with default action of signal 4 (SIGILL)
 ==179619==  Illegal opcode at address 0x492B75F
 ==179619==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179619==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179619==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179619==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179619==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179619==    by 0x49908EB: curl_version_info (version.c:600)
 ==179619==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179619==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179619==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179619==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2061
test 2063 [HTTP with RFC7616 SHA-256 Digest authorization and userhash=true]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2063 ../src/curl -q --output log/2/curl2063.out  --include --trace-ascii log/2/trace2063 --trace-time http://127.0.0.1:34531/2063 -u testuser:testpass --digest > log/2/stdout2063 2> log/2/stderr2063

 2063: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 2063
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2063 ../src/curl -q --output log/2/curl2063.out  --include --trace-ascii log/2/trace2063 --trace-time http://127.0.0.1:34531/2063 -u testuser:testpass --digest > log/2/stdout2063 2> log/2/stderr2063
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.257371 ====> Client connect
 19:29:06.257401 accept_connection 3 returned 4
 19:29:06.257418 Read 93 bytes
 19:29:06.257427 Process 93 bytes request
 19:29:06.257436 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.257444 Are-we-friendly question received
 19:29:06.257466 Wrote request (93 bytes) input to log/2/server.input
 19:29:06.257480 Identifying ourselves as friends
 19:29:06.257532 Response sent (56 bytes) and written to log/2/server.response
 19:29:06.257553 special request received, no persistency
 19:29:06.257560 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 32870 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2063
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind2063
 ==179891== 
 ==179891== Process terminating with default action of signal 4 (SIGILL)
 ==179891==  Illegal opcode at address 0x492B75F
 ==179891==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179891==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179891==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179891==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179891==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179891==    by 0x49908EB: curl_version_info (version.c:600)
 ==179891==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179891==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179891==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179891==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2063
test 2060 [HTTP Digest upload with a modified method and SHA-512-256]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2060 ../src/curl -q --output log/24/curl2060.out  --include --trace-ascii log/24/trace2060 --trace-time http://127.0.0.1:38895/2060 -u auser:apasswd --digest -T log/24/2060 -x  http://127.0.0.1:38895 -X GET > log/24/stdout2060 2> log/24/stderr2060

 2060: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 2060
=== Start of file 2060
 test
=== End of file 2060
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2060 ../src/curl -q --output log/24/curl2060.out  --include --trace-ascii log/24/trace2060 --trace-time http://127.0.0.1:38895/2060 -u auser:apasswd --digest -T log/24/2060 -x  http://127.0.0.1:38895 -X GET > log/24/stdout2060 2> log/24/stderr2060
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.039967 ====> Client connect
 19:29:05.039996 accept_connection 3 returned 4
 19:29:05.040014 Read 93 bytes
 19:29:05.040022 Process 93 bytes request
 19:29:05.040032 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.040040 Are-we-friendly question received
 19:29:05.040064 Wrote request (93 bytes) input to log/24/server.input
 19:29:05.040081 Identifying ourselves as friends
 19:29:05.040142 Response sent (56 bytes) and written to log/24/server.response
 19:29:05.040151 special request received, no persistency
 19:29:05.040160 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 55734 
 * using HTTP/1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2068 ../src/curl -q --output log/8/curl2068.out  --include --trace-ascii log/8/trace2068 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:44467/2068 > log/8/stdout2068 2> log/8/stderr2068
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2050 ../src/curl -q --output log/5/curl2050.out  --include --trace-ascii log/5/trace2050 --trace-time http://www.example.com.2050/2050 --connect-to ::connect.example.com.2050:37089 -x 127.0.0.1:35873 --next http://www.example.com.2050:37089/2050 --connect-to ::www.example.com.2050:37089 -x 127.0.0.1:35873 > log/5/stdout2050 2> log/5/stderr2050
.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2060
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind2060
 ==179575== 
 ==179575== Process terminating with default action of signal 4 (SIGILL)
 ==179575==  Illegal opcode at address 0x492B75F
 ==179575==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==179575==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==179575==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==179575==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==179575==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==179575==    by 0x49908EB: curl_version_info (version.c:600)
 ==179575==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==179575==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==179575==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==179575==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2060
test 2068 [HTTP POST Digest with SHA-512-256, userhash and set Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2068 ../src/curl -q --output log/8/curl2068.out  --include --trace-ascii log/8/trace2068 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:44467/2068 > log/8/stdout2068 2> log/8/stderr2068

 2068: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 2068
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2068 ../src/curl -q --output log/8/curl2068.out  --include --trace-ascii log/8/trace2068 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:44467/2068 > log/8/stdout2068 2> log/8/stderr2068
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.961009 ====> Client connect
 19:29:05.961063 accept_connection 3 returned 4
 19:29:05.961095 Read 93 bytes
 19:29:05.961107 Process 93 bytes request
 19:29:05.961120 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.961130 Are-we-friendly question received
 19:29:05.961327 Wrote request (93 bytes) input to log/8/server.input
 19:29:05.961352 Identifying ourselves as friends
 19:29:05.961415 Response sent (56 bytes) and written to log/8/server.response
 19:29:05.961424 special request received, no persistency
 19:29:05.961432 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 32928 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2068
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind2068
 ==180264== 
 ==180264== Process terminating with default action of signal 4 (SIGILL)
 ==180264==  Illegal opcode at address 0x492B75F
 ==180264==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180264==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180264==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180264==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180264==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180264==    by 0x49908EB: curl_version_info (version.c:600)
 ==180264==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180264==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180264==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180264==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2068
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/5/server/http2_server.pid" --logfile "log/5/http2_server.log" --logdir "log/5" --portfile log/5/server/http2_server.port --config log/5/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 179223 port 35873
* pid http-proxy => 179223 179223
test 2050 [--connect-to via HTTP proxy (tunnel mode automatically)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2050 ../src/curl -q --output log/5/curl2050.out  --include --trace-ascii log/5/trace2050 --trace-time http://www.example.com.2050/2050 --connect-to ::connect.example.com.2050:37089 -x 127.0.0.1:35873 --next http://www.example.com.2050:37089/2050 --connect-to ::www.example.com.2050:37089 -x 127.0.0.1:35873 > log/5/stdout2050 2> log/5/stderr2050

 2050: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 2050
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2050 ../src/curl -q --output log/5/curl2050.out  --include --trace-ascii log/5/trace2050 --trace-time http://www.example.com.2050/2050 --connect-to ::connect.example.com.2050:37089 -x 127.0.0.1:35873 --next http://www.example.com.2050:37089/2050 --connect-to ::www.example.com.2050:37089 -x 127.0.0.1:35873 > log/5/stdout2050 2> log/5/stderr2050
=== End of file commands.log
=== Start of file http2_server.log
 19:29:04.413118 Run as proxy, CONNECT to host 127.0.0.1
 19:29:04.413258 Running HTTP IPv4 version on port 35873
 19:29:04.413302 Wrote pid 179223 to log/5/server/http2_server.pid
 19:29:04.413332 Wrote port 35873 to log/5/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:29:04.334891 ====> Client connect
 19:29:04.334930 accept_connection 3 returned 4
 19:29:04.334952 Read 93 bytes
 19:29:04.334961 Process 93 bytes request
 19:29:04.334975 Got request: GET /verifiedserver HTTP/1.1
 19:29:04.334983 Are-we-friendly question received
 19:29:04.335011 Wrote request (93 bytes) input to log/5/server.input
 19:29:04.335028 Identifying ourselves as friends
 19:29:04.335096 Response sent (56 bytes) and written to log/5/server.response
 19:29:04.335106 special request received, no persistency
 19:29:04.335114 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 48766 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2050
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WECMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2067 ../src/curl -q --output log/7/curl2067.out  --include --trace-ascii log/7/trace2067 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:40859/2067 > log/7/stdout2067 2> log/7/stderr2067
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2069 ../src/curl -q --output log/18/curl2069.out  --include --trace-ascii log/18/trace2069 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:43739/2069 > log/18/stdout2069 2> log/18/stderr2069
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2055 ../src/curl -q --output log/16/curl2055.out  --include --trace-ascii log/16/trace2055 --trace-time http://www.example.com.2055/2055 --connect-to ::connect.example.com.2055:35903 -x 127.0.0.1:38407 --preproxy socks5://127.0.0.1:38511 --next http://www.example.com.2055:35903/2055 --connect-to ::www.example.com.2055:35903 -x 127.0.0.1:38407 --preproxy socks5://127.0.0.1:38511 > log/16/stdout2055 2> log/16/stderr2055
 ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind2050
 ==180004== 
 ==180004== Process terminating with default action of signal 4 (SIGILL)
 ==180004==  Illegal opcode at address 0x492B75F
 ==180004==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180004==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180004==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180004==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180004==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180004==    by 0x49908EB: curl_version_info (version.c:600)
 ==180004==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180004==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180004==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180004==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2050
test 2067 [HTTP POST --digest with SHA256 and user-specified Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2067 ../src/curl -q --output log/7/curl2067.out  --include --trace-ascii log/7/trace2067 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:40859/2067 > log/7/stdout2067 2> log/7/stderr2067

 2067: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 2067
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2067 ../src/curl -q --output log/7/curl2067.out  --include --trace-ascii log/7/trace2067 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:40859/2067 > log/7/stdout2067 2> log/7/stderr2067
=== End of file commands.log
=== Start of file http_server.log
 19:29:05.960967 ====> Client connect
 19:29:05.961013 accept_connection 3 returned 4
 19:29:05.961038 Read 93 bytes
 19:29:05.961049 Process 93 bytes request
 19:29:05.961063 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.961072 Are-we-friendly question received
 19:29:05.961104 Wrote request (93 bytes) input to log/7/server.input
 19:29:05.961122 Identifying ourselves as friends
 19:29:05.961207 Response sent (56 bytes) and written to log/7/server.response
 19:29:05.961218 special request received, no persistency
 19:29:05.961227 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39254 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2067
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind2067
 ==180270== 
 ==180270== Process terminating with default action of signal 4 (SIGILL)
 ==180270==  Illegal opcode at address 0x492B75F
 ==180270==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180270==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180270==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180270==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180270==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180270==    by 0x49908EB: curl_version_info (version.c:600)
 ==180270==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180270==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180270==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180270==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2067
test 2069 [HTTP POST Digest with SHA-256, userhash and set Content-Length header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2069 ../src/curl -q --output log/18/curl2069.out  --include --trace-ascii log/18/trace2069 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:43739/2069 > log/18/stdout2069 2> log/18/stderr2069

 2069: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 2069
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2069 ../src/curl -q --output log/18/curl2069.out  --include --trace-ascii log/18/trace2069 --trace-time -H "Content-Length: 11" -u auser:apasswd --digest -d "junkelijunk" http://127.0.0.1:43739/2069 > log/18/stdout2069 2> log/18/stderr2069
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.990059 ====> Client connect
 19:29:06.990096 accept_connection 3 returned 4
 19:29:06.990266 Read 93 bytes
 19:29:06.990280 Process 93 bytes request
 19:29:06.990293 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.990301 Are-we-friendly question received
 19:29:06.990331 Wrote request (93 bytes) input to log/18/server.input
 19:29:06.990347 Identifying ourselves as friends
 19:29:06.990406 Response sent (56 bytes) and written to log/18/server.response
 19:29:06.990414 special request received, no persistency
 19:29:06.990422 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 59726 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2069
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind2069
 ==180297== 
 ==180297== Process terminating with default action of signal 4 (SIGILL)
 ==180297==  Illegal opcode at address 0x492B75F
 ==180297==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180297==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180297==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180297==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180297==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180297==    by 0x49908EB: curl_version_info (version.c:600)
 ==180297==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180297==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180297==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180297==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2069
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/16/server/http2_server.pid" --logfile "log/16/http2_server.log" --logdir "log/16" --portfile log/16/server/http2_server.port --config log/16/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 179477 port 38407
* pid http-proxy => 179477 179477
test 2055 [--connect-to via SOCKS proxy and HTTP proxy (tunnel mode auto)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --lCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2073 ../src/curl -q --output log/9/curl2073.out  --include --trace-ascii log/9/trace2073 --trace-time http://127.0.0.1:43733/2073 -F 'name=a;filename=a.pdf' --next http://127.0.0.1:43733/2073 -F 'name=b;filename=b.jpg' > log/9/stdout2073 2> log/9/stderr2073
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2072 ../src/curl -q --output log/22/curl2072.out  --trace-ascii log/22/trace2072 --trace-time file://///startdir/src/build-curl/tests/log/22/test2072.txt > log/22/stdout2072 2> log/22/stderr2072
eak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2055 ../src/curl -q --output log/16/curl2055.out  --include --trace-ascii log/16/trace2055 --trace-time http://www.example.com.2055/2055 --connect-to ::connect.example.com.2055:35903 -x 127.0.0.1:38407 --preproxy socks5://127.0.0.1:38511 --next http://www.example.com.2055:35903/2055 --connect-to ::www.example.com.2055:35903 -x 127.0.0.1:38407 --preproxy socks5://127.0.0.1:38511 > log/16/stdout2055 2> log/16/stderr2055

 2055: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 2055
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2055 ../src/curl -q --output log/16/curl2055.out  --include --trace-ascii log/16/trace2055 --trace-time http://www.example.com.2055/2055 --connect-to ::connect.example.com.2055:35903 -x 127.0.0.1:38407 --preproxy socks5://127.0.0.1:38511 --next http://www.example.com.2055:35903/2055 --connect-to ::www.example.com.2055:35903 -x 127.0.0.1:38407 --preproxy socks5://127.0.0.1:38511 > log/16/stdout2055 2> log/16/stderr2055
=== End of file commands.log
=== Start of file http2_server.log
 19:29:05.024705 Run as proxy, CONNECT to host 127.0.0.1
 19:29:05.024841 Running HTTP IPv4 version on port 38407
 19:29:05.024889 Wrote pid 179477 to log/16/server/http2_server.pid
 19:29:05.024922 Wrote port 38407 to log/16/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:29:05.945110 ====> Client connect
 19:29:05.945143 accept_connection 3 returned 4
 19:29:05.945164 Read 93 bytes
 19:29:05.945173 Process 93 bytes request
 19:29:05.945186 Got request: GET /verifiedserver HTTP/1.1
 19:29:05.945195 Are-we-friendly question received
 19:29:05.945221 Wrote request (93 bytes) input to log/16/server.input
 19:29:05.945237 Identifying ourselves as friends
 19:29:05.945295 Response sent (56 bytes) and written to log/16/server.response
 19:29:05.945304 special request received, no persistency
 19:29:05.945312 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 57932 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2055
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind2055
 ==180275== 
 ==180275== Process terminating with default action of signal 4 (SIGILL)
 ==180275==  Illegal opcode at address 0x492B75F
 ==180275==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180275==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180275==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180275==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180275==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180275==    by 0x49908EB: curl_version_info (version.c:600)
 ==180275==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180275==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180275==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180275==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2055
test 2073 [HTTP form posts with handle reset]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2073 ../src/curl -q --output log/9/curl2073.out  --include --trace-ascii log/9/trace2073 --trace-time http://127.0.0.1:43733/2073 -F 'name=a;filename=a.pdf' --next http://127.0.0.1:43733/2073 -F 'name=b;filename=b.jpg' > log/9/stdout2073 2> log/9/stderr2073

 2073: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 2073
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2073 ../src/curl -q --output log/9/curl2073.out  --include --trace-ascii log/9/trace2073 --trace-time http://127.0.0.1:43733/2073 -F 'name=a;filename=a.pdf' --next http://127.0.0.1:43733/2073 -F 'name=b;filename=b.jpg' > log/9/stdout2073 2> log/9/stderr2073
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.454072 ====> Client connect
 19:29:06.454112 accept_connection 3 returned 4
 19:29:06.454137 Read 93 bytes
 19:29:06.454147 Process 93 bytes request
 19:29:06.454160 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.454169 Are-we-friendly question received
 19:29:06.454199 Wrote request (93 bytes) input to log/9/server.input
 19:29:06.454231 Identifying ourselves as friends
 19:29:06.454296 Response sent (56 bytes) and written to log/9/server.response
 19:29:06.454304 special request received, no persistency
 19:29:06.454312 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35638 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2073
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind2073
 ==180608== 
 ==180608== Process terminating with default action of signal 4 (SIGILL)
 ==180608==  Illegal opcode at address 0x492B75F
 ==180608==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180608==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180608==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180608==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180608==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180608==    by 0x49908EB: curl_version_info (version.c:600)
 ==180608==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180608==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180608==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180608==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2073
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2071 ../src/curl -q --output log/23/curl2071.out  --trace-ascii log/23/trace2071 --trace-time file://127.0.0.1/startdir/src/build-curl/tests/log/23/test2070.txt > log/23/stdout2071 2> log/23/stderr2071
test 2072 [file:// with Unix path for the case of extra slashes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2072 ../src/curl -q --output log/22/curl2072.out  --trace-ascii log/22/trace2072 --trace-time file://///startdir/src/build-curl/tests/log/22/test2072.txt > log/22/stdout2072 2> log/22/stderr2072

 2072: data FAILED:
--- log/22/check-expected	2026-10-15 19:29:08.910180696 +0000
+++ log/22/check-generated	2026-10-15 19:29:08.905922441 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/22/ directory after test 2072
=== Start of file check-expected
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2072 ../src/curl -q --output log/22/curl2072.out  --trace-ascii log/22/trace2072 --trace-time file://///startdir/src/build-curl/tests/log/22/test2072.txt > log/22/stdout2072 2> log/22/stderr2072
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2072
=== End of file server.cmd
=== Start of file test2072.txt
 foo
    bar
 bar
    foo
 moo
=== End of file test2072.txt
=== Start of file valgrind2072
 ==180443== 
 ==180443== Process terminating with default action of signal 4 (SIGILL)
 ==180443==  Illegal opcode at address 0x492B75F
 ==180443==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180443==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180443==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180443==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180443==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180443==    by 0x49908EB: curl_version_info (version.c:600)
 ==180443==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180443==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180443==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180443==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2072
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2074 ../src/curl -q --output log/10/curl2074.out  --include --trace-ascii log/10/trace2074 --trace-time http://127.0.0.1:40913/2074 --oauth2-bearer mF_9.B5f-4.1JqM > log/10/stdout2074 2> log/10/stderr2074
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2082 ./libtest/libtests lib2082 127.0.0.1:38821/2082 > log/13/stdout2082 2> log/13/stderr2082
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2078 ../src/curl -q --output log/11/curl2078.out  --include --trace-ascii log/11/trace2078 --trace-time http://127.0.0.1:40989/2078 --negotiate --data name=value > log/11/stdout2078 2> log/11/stderr2078
test 2071 [basic file:// file with "127.0.0.1" hostname]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2071 ../src/curl -q --output log/23/curl2071.out  --trace-ascii log/23/trace2071 --trace-time file://127.0.0.1/startdir/src/build-curl/tests/log/23/test2070.txt > log/23/stdout2071 2> log/23/stderr2071

 2071: data FAILED:
--- log/23/check-expected	2026-10-15 19:29:09.132686633 +0000
+++ log/23/check-generated	2026-10-15 19:29:09.129254391 +0000
@@ -1,5 +0,0 @@
-foo[LF]
-   bar[LF]
-bar[LF]
-   foo[LF]
-moo[LF]
== Contents of files in the log/23/ directory after test 2071
=== Start of file check-expected
 foo[LF]
    bar[LF]
 bar[LF]
    foo[LF]
 moo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2071 ../src/curl -q --output log/23/curl2071.out  --trace-ascii log/23/trace2071 --trace-time file://127.0.0.1/startdir/src/build-curl/tests/log/23/test2070.txt > log/23/stdout2071 2> log/23/stderr2071
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2071
=== End of file server.cmd
=== Start of file valgrind2071
 ==180446== 
 ==180446== Process terminating with default action of signal 4 (SIGILL)
 ==180446==  Illegal opcode at address 0x492B75F
 ==180446==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180446==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180446==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180446==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180446==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180446==    by 0x49908EB: curl_version_info (version.c:600)
 ==180446==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180446==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180446==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180446==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2071
test 2074 [HTTP with oauth2-bearer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2074 ../src/curl -q --output log/10/curl2074.out  --include --trace-ascii log/10/trace2074 --trace-time http://127.0.0.1:40913/2074 --oauth2-bearer mF_9.B5f-4.1JqM > log/10/stdout2074 2> log/10/stderr2074

 2074: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 2074
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2074 ../src/curl -q --output log/10/curl2074.out  --include --trace-ascii log/10/trace2074 --trace-time http://127.0.0.1:40913/2074 --oauth2-bearer mF_9.B5f-4.1JqM > log/10/stdout2074 2> log/10/stderr2074
=== End of file commands.log
=== Start of file http_server.log
 19:29:06.583355 ====> Client connect
 19:29:06.583388 accept_connection 3 returned 4
 19:29:06.583407 Read 93 bytes
 19:29:06.583416 Process 93 bytes request
 19:29:06.583428 Got request: GET /verifiedserver HTTP/1.1
 19:29:06.583436 Are-we-friendly question received
 19:29:06.583459 Wrote request (93 bytes) input to log/10/server.input
 19:29:06.583473 Identifying ourselves as friends
 19:29:06.583529 Response sent (56 bytes) and written to log/10/server.response
 19:29:06.583537 special request received, no persistency
 19:29:06.583544 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 39492 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2074
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind2074
 ==180664== 
 ==180664== Process terminating with default action of signal 4 (SIGILL)
 ==180664==  Illegal opcode at address 0x492B75F
 ==180664==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180664==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180664==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180664==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180664==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180664==    by 0x49908EB: curl_version_info (version.c:600)
 ==180664==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180664==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180664==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180664==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2074
test 2078 [curl --negotiate should not send empty POST request only]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2078 ../src/curl -q --output log/11/curl2078.out  --include --trace-ascii log/11/trace2078 --trace-time http://127.0.0.1:40989/2078 --negotiate --data name=value > log/11/stdout2078 2> log/11/stderr2078

 2078: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 2078
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2078 ../src/curl -q --output log/11/curl2078.out  --include --trace-ascii log/11/trace2078 --trace-time http://127.0.0.1:40989/2078 --negotiate --data name=value > log/11/stdout2078 2> log/11/stderr2078
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.096460 ====> Client connect
 19:29:07.096495 accept_connection 3 returned 4
 19:29:07.096516 Read 93 bytes
 19:29:07.096526 Process 93 bytes request
 19:29:07.096538 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.096547 Are-we-friendly question received
 19:29:07.096571 Wrote request (93 bytes) input to log/11/server.input
 19:29:07.096587 Identifying ourselves as friends
 19:29:07.096648 Response sent (56 bytes) and written to log/11/server.response
 19:29:07.096657 special request received, no persistency
 19:29:07.096665 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 43220 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2078
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind2078
 ==180866== 
 ==180866== Process terminating with default action of signal 4 (SIGILL)
 ==180866==  Illegal opcode at address 0x492B75F
 ==180866==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180866==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180866==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180866==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180866==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180866==    by 0x49908EB: curl_version_info (version.c:600)
 ==180866==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180866==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180866==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180866==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2078
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2075 ../src/curl -q --output log/4/curl2075.out  --include --trace-ascii log/4/trace2075 --trace-time --disallow-username-in-url http://username:password@example.com/ > log/4/stdout2075 2> log/4/stderr2075
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2084 ./libtest/libtests lib2082 127.0.0.1:39881/2084#err > log/21/stdout2084 2> log/21/stderr2084
test 2082 [Pre-request callback for HTTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2082 ./libtest/libtests lib2082 127.0.0.1:38821/2082 > log/13/stdout2082 2> log/13/stderr2082

 2082: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:29:09.459375686 +0000
+++ log/13/check-generated	2026-10-15 19:29:09.455918898 +0000
@@ -1,5 +0,0 @@
-Connected to 127.0.0.1[LF]
-Connected from 127.0.0.1[LF]
-Remote port = 38821[LF]
-Local port = stripped[LF]
-Returning = 0[LF]
== Contents of files in the log/13/ directory after test 2082
=== Start of file check-expected
 Connected to 127.0.0.1[LF]
 Connected from 127.0.0.1[LF]
 Remote port = 38821[LF]
 Local port = stripped[LF]
 Returning = 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2082 ./libtest/libtests lib2082 127.0.0.1:38821/2082 > log/13/stdout2082 2> log/13/stderr2082
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.579235 ====> Client connect
 19:29:07.579270 accept_connection 3 returned 4
 19:29:07.579291 Read 93 bytes
 19:29:07.579301 Process 93 bytes request
 19:29:07.579313 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.579322 Are-we-friendly question received
 19:29:07.579350 Wrote request (93 bytes) input to log/13/server.input
 19:29:07.579366 Identifying ourselves as friends
 19:29:07.579428 Response sent (56 bytes) and written to log/13/server.response
 19:29:07.579437 special request received, no persistency
 19:29:07.579445 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54832 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2082
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind2082
 ==181169== 
 ==181169== Process terminating with default action of signal 4 (SIGILL)
 ==181169==  Illegal opcode at address 0x51CC63F
 ==181169==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==181169==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==181169==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==181169==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2082
test 2075 [Verify usernames are not allowed in url]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2075 ../src/curl -q --output log/4/curl2075.out  --include --trace-ascii log/4/trace2075 --trace-time --disallow-username-in-url http://username:password@example.com/ > log/4/stdout2075 2> log/4/stderr2075

curl returned 132, when expecting 67
 2075: exit FAILED
== Contents of files in the log/4/ directory after test 2075
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2075 ../src/curl -q --output log/4/curl2075.out  --include --trace-ascii log/4/trace2075 --trace-time --disallow-username-in-url http://username:password@example.com/ > log/4/stdout2075 2> log/4/stderr2075
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2075
=== End of file server.cmd
=== Start of file valgrind2075
 ==180729== 
 ==180729== Process terminating with default action of signal 4 (SIGILL)
 ==180729==  Illegal opcode at address 0x492B75F
 ==180729==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180729==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180729==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180729==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180729==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180729==    by 0x49908EB: curl_version_info (version.c:600)
 ==180729==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180729==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180729==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180729==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2075
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2085 ./libtest/libtests lib2082 127.0.0.1:45467/2085#redir > log/14/stdout2085 2> log/14/stderr2085
test 2084 [Pre-request callback for HTTP with callback terminating transfer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2084 ./libtest/libtests lib2082 127.0.0.1:39881/2084#err > log/21/stdout2084 2> log/21/stderr2084

 2084: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:29:09.759459916 +0000
+++ log/21/check-generated	2026-10-15 19:29:09.755916917 +0000
@@ -1,5 +0,0 @@
-Connected to 127.0.0.1[LF]
-Connected from 127.0.0.1[LF]
-Remote port = 39881[LF]
-Local port = stripped[LF]
-Returning = 1[LF]
== Contents of files in the log/21/ directory after test 2084
=== Start of file check-expected
 Connected to 127.0.0.1[LF]
 Connected from 127.0.0.1[LF]
 Remote port = 39881[LF]
 Local port = stripped[LF]
 Returning = 1[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2084 ./libtest/libtests lib2082 127.0.0.1:39881/2084#err > log/21/stdout2084 2> log/21/stderr2084
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.620961 ====> Client connect
 19:29:07.621001 accept_connection 3 returned 4
 19:29:07.621023 Read 93 bytes
 19:29:07.621032 Process 93 bytes request
 19:29:07.621045 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.621052 Are-we-friendly question received
 19:29:07.621088 Wrote request (93 bytes) input to log/21/server.input
 19:29:07.621105 Identifying ourselves as friends
 19:29:07.621178 Response sent (56 bytes) and written to log/21/server.response
 19:29:07.621189 special request received, no persistency
 19:29:07.621197 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 35110 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2084
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind2084
 ==181185== 
 ==181185== Process terminating with default action of signal 4 (SIGILL)
 ==181185==  Illegal opcode at address 0x51CC63F
 ==181185==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==181185==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==181185==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==181185==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2084
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2083 ./libtest/libtests lib2082 ftp://127.0.0.1:42249/test-2083/ > log/3/stdout2083 2> log/3/stderr2083
test 2085 [Pre-request callback for HTTP with location following]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2085 ./libtest/libtests lib2082 127.0.0.1:45467/2085#redir > log/14/stdout2085 2> log/14/stderr2085

 2085: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:29:09.779446427 +0000
+++ log/14/check-generated	2026-10-15 19:29:09.775916783 +0000
@@ -1,10 +0,0 @@
-Connected to 127.0.0.1[LF]
-Connected from 127.0.0.1[LF]
-Remote port = 45467[LF]
-Local port = stripped[LF]
-Returning = 0[LF]
-Connected to 127.0.0.1[LF]
-Connected from 127.0.0.1[LF]
-Remote port = 45467[LF]
-Local port = stripped[LF]
-Returning = 0[LF]
== Contents of files in the log/14/ directory after test 2085
=== Start of file check-expected
 Connected to 127.0.0.1[LF]
 Connected from 127.0.0.1[LF]
 Remote port = 45467[LF]
 Local port = stripped[LF]
 Returning = 0[LF]
 Connected to 127.0.0.1[LF]
 Connected from 127.0.0.1[LF]
 Remote port = 45467[LF]
 Local port = stripped[LF]
 Returning = 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2085 ./libtest/libtests lib2082 127.0.0.1:45467/2085#redir > log/14/stdout2085 2> log/14/stderr2085
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.647413 ====> Client connect
 19:29:07.647448 accept_connection 3 returned 4
 19:29:07.647469 Read 93 bytes
 19:29:07.647478 Process 93 bytes request
 19:29:07.647489 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.647497 Are-we-friendly question received
 19:29:07.647523 Wrote request (93 bytes) input to log/14/server.input
 19:29:07.647539 Identifying ourselves as friends
 19:29:07.647634 Response sent (56 bytes) and written to log/14/server.response
 19:29:07.647645 special request received, no persistency
 19:29:07.647654 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 44806 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2085
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind2085
 ==181215== 
 ==181215== Process terminating with default action of signal 4 (SIGILL)
 ==181215==  Illegal opcode at address 0x51CC63F
 ==181215==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==181215==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==181215==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==181215==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2085
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2081 ../src/curl -q --include --trace-ascii log/15/trace2081 --trace-time http://user:pass@127.0.0.1:40321/we/want/our/2081#anchor --location --referer ';auto' --write-out '%{referer}\n' > log/15/stdout2081 2> log/15/stderr2081
test 2083 [Pre-request callback for FTP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2083 ./libtest/libtests lib2082 ftp://127.0.0.1:42249/test-2083/ > log/3/stdout2083 2> log/3/stderr2083

 2083: stdout FAILED:
--- log/3/check-expected	2026-10-15 19:29:10.014642170 +0000
+++ log/3/check-generated	2026-10-15 19:29:10.009248572 +0000
@@ -1,5 +0,0 @@
-Connected to 127.0.0.1[LF]
-Connected from 127.0.0.1[LF]
-Remote port = 42249[LF]
-Local port = stripped[LF]
-Returning = 0[LF]
== Contents of files in the log/3/ directory after test 2083
=== Start of file check-expected
 Connected to 127.0.0.1[LF]
 Connected from 127.0.0.1[LF]
 Remote port = 42249[LF]
 Local port = stripped[LF]
 Returning = 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2083 ./libtest/libtests lib2082 ftp://127.0.0.1:42249/test-2083/ > log/3/stdout2083 2> log/3/stderr2083
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:07.987837 ====> Client connect
 19:29:07.988057 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:07.988332 < "USER anonymous"
 19:29:07.988365 > "331 We are happy you popped in![CR][LF]"
 19:29:07.992082 < "PASS ftp@example.com"
 19:29:07.992119 > "230 Welcome you silly person[CR][LF]"
 19:29:07.992302 < "PWD"
 19:29:07.992335 > "257 "/" is current directory[CR][LF]"
 19:29:07.992500 < "EPSV"
 19:29:07.992526 ====> Passive DATA channel requested by client
 19:29:07.992540 DATA sockfilt for passive data channel starting...
 19:29:07.998881 DATA sockfilt for passive data channel started (pid 181145)
 19:29:07.999011 DATA sockfilt for passive data channel listens on port 44057
 19:29:07.999055 > "229 Entering Passive Mode (|||44057|)[CR][LF]"
 19:29:07.999075 Client has been notified that upcoming DATA connection is awaited on port 44057
 19:29:07.999377 Client connects to port 44057
 19:29:07.999408 ====> Client established passive DATA connection on port 44057
 19:29:07.999493 < "TYPE I"
 19:29:07.999523 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:07.999682 < "SIZE verifiedserver"
 19:29:07.999720 > "213 17[CR][LF]"
 19:29:07.999872 < "RETR verifiedserver"
 19:29:07.999906 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:07.999998 =====> Closing passive DATA connection...
 19:29:08.000016 Server disconnects passive DATA connection
 19:29:08.000241 Server disconnected passive DATA connection
 19:29:08.000269 DATA sockfilt for passive data channel quits (pid 181145)
 19:29:08.000553 DATA sockfilt for passive data channel quit (pid 181145)
 19:29:08.000577 =====> Closed passive DATA connection
 19:29:08.000605 > "226 File transfer complete[CR][LF]"
 19:29:08.045636 < "QUIT"
 19:29:08.045696 > "221 bye bye baby[CR][LF]"
 19:29:08.047054 MAIN sockfilt said DISC
 19:29:08.047093 ====> Client disconnected
 19:29:08.047174 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:08.589955 ====> Client connect
 19:29:08.590323 Received DATA (on stdin)
 19:29:08.590337 > 146 bytes data, server => client
 19:29:08.590349 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:08.590359 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:08.590369 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:08.590446 < 16 bytes data, client => server
 19:29:08.590457 'USER anonymous\r\n'
 19:29:08.590621 Received DATA (on stdin)
 19:29:08.590632 > 33 bytes data, server => client
 19:29:08.590642 '331 We are happy you popped in!\r\n'
 19:29:08.590689 < 22 bytes data, client => server
 19:29:08.590701 'PASS ftp@example.com\r\n'
 19:29:08.594378 Received DATA (on stdin)
 19:29:08.594392 > 30 bytes data, server => client
 19:29:08.594403 '230 Welcome you silly person\r\n'
 19:29:08.594471 < 5 bytes data, client => server
 19:29:08.594482 'PWD\r\n'
 19:29:08.594588 Received DATA (on stdin)
 19:29:08.594599 > 30 bytes data, server => client
 19:29:08.594609 '257 "/" is current directory\r\n'
 19:29:08.594670 < 6 bytes data, client => server
 19:29:08.594681 'EPSV\r\n'
 19:29:08.601336 Received DATA (on stdin)
 19:29:08.601351 > 39 bytes data, server => client
 19:29:08.601362 '229 Entering Passive Mode (|||44057|)\r\n'
 19:29:08.601548 < 8 bytes data, client => server
 19:29:08.601562 'TYPE I\r\n'
 19:29:08.601776 Received DATA (on stdin)
 19:29:08.601787 > 33 bytes data, server => client
 19:29:08.601798 '200 I modify TYPE as you wanted\r\n'
 19:29:08.601850 < 21 bytes data, client => server
 19:29:08.601861 'SIZE verifiedserver\r\n'
 19:29:08.601974 Received DATA (on stdin)
 19:29:08.601984 > 8 bytes data, server => client
 19:29:08.601994 '213 17\r\n'
 19:29:08.602045 < 21 bytes data, client => server
 19:29:08.602056 'RETR verifiedserver\r\n'
 19:29:08.602272 Received DATA (on stdin)
 19:29:08.602283 > 29 bytes data, server => client
 19:29:08.602293 '150 Binary junk (17 bytes).\r\n'
 19:29:08.602858 Received DATA (on stdin)
 19:29:08.602870 > 28 bytes data, server => client
 19:29:08.602880 '226 File transfer complete\r\n'
 19:29:08.647690 < 6 bytes data, client => server
 19:29:08.647720 'QUIT\r\n'
 19:29:08.647959 Received DATA (on stdin)
 19:29:08.647972 > 18 bytes data, server => client
 19:29:08.647983 '221 bye bye baby\r\n'
 19:29:08.649253 ====> Client disconnect
 19:29:08.649433 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:07.600446 Running IPv4 version
 19:29:07.600555 Listening on port 44057
 19:29:07.600602 Wrote pid 181145 to log/3/server/ftp_sockdata.pid
 19:29:07.601055 Received PING (on stdin)
 19:29:07.601169 Received PORT (on stdin)
 19:29:07.601584 ====> Client connect
 19:29:07.602319 Received DATA (on stdin)
 19:29:07.602330 > 17 bytes data, server => client
 19:29:07.602340 'WE ROOLZ: 84710\r\n'
 19:29:07.602363 Received DISC (on stdin)
 19:29:07.602374 ====> Client forcibly disconnected
 19:29:07.602530 Received QUIT (on stdin)
 19:29:07.602540 quits
 19:29:07.602607 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 2083
=== End of file server.cmd
=== Start of file valgrind2083
 ==181207== 
 ==181207== Process terminating with default action of signal 4 (SIGILL)
 ==181207==  Illegal opcode at address 0x51CC63F
 ==181207==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==181207==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==181207==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==181207==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2083
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2076 ../src/curl -q --output log/19/curl2076.out  --include --trace-ascii log/19/trace2076 --trace-time "http://127.0.0.1:37077/2076?query" -u testuser:testpass --digest > log/19/stdout2076 2> log/19/stderr2076
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2080 ../src/curl -q --output log/17/curl2080.out  --include --trace-ascii log/17/trace2080 --trace-time -K log/17/config2080 file://de\>v/null > log/17/stdout2080 2> log/17/stderr2080
test 2081 [Automatic referrer credential and anchor stripping check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2081 ../src/curl -q --include --trace-ascii log/15/trace2081 --trace-time http://user:pass@127.0.0.1:40321/we/want/our/2081#anchor --location --referer ';auto' --write-out '%{referer}\n' > log/15/stdout2081 2> log/15/stderr2081

 2081: stdout FAILED:
--- log/15/check-expected	2026-10-15 19:29:10.087451027 +0000
+++ log/15/check-generated	2026-10-15 19:29:10.082581353 +0000
@@ -1,10 +0,0 @@
-HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
-Location: data/20810002.txt?coolsite=yes[CR][LF]
-Content-Length: 62[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-HTTP/1.1 200 This is another weirdo text message swsclose[CR][LF]
-Connection: close[CR][LF]
-[CR][LF]
-Thanks for following.[LF]
-http://127.0.0.1:40321/we/want/our/2081[LF]
== Contents of files in the log/15/ directory after test 2081
=== Start of file check-expected
 HTTP/1.1 301 This is a weirdo text message swsclose[CR][LF]
 Location: data/20810002.txt?coolsite=yes[CR][LF]
 Content-Length: 62[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 HTTP/1.1 200 This is another weirdo text message swsclose[CR][LF]
 Connection: close[CR][LF]
 [CR][LF]
 Thanks for following.[LF]
 http://127.0.0.1:40321/we/want/our/2081[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2081 ../src/curl -q --include --trace-ascii log/15/trace2081 --trace-time http://user:pass@127.0.0.1:40321/we/want/our/2081#anchor --location --referer ';auto' --write-out '%{referer}\n' > log/15/stdout2081 2> log/15/stderr2081
=== End of file commands.log
=== Start of file http_server.log
 19:29:08.470964 ====> Client connect
 19:29:08.471002 accept_connection 3 returned 4
 19:29:08.471023 Read 93 bytes
 19:29:08.471033 Process 93 bytes request
 19:29:08.471047 Got request: GET /verifiedserver HTTP/1.1
 19:29:08.471056 Are-we-friendly question received
 19:29:08.471082 Wrote request (93 bytes) input to log/15/server.input
 19:29:08.471099 Identifying ourselves as friends
 19:29:08.471172 Response sent (56 bytes) and written to log/15/server.response
 19:29:08.471181 special request received, no persistency
 19:29:08.471189 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 39588 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2081
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind2081
 ==181108== 
 ==181108== Process terminating with default action of signal 4 (SIGILL)
 ==181108==  Illegal opcode at address 0x492B75F
 ==181108==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181108==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181108==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181108==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181108==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181108==    by 0x49908EB: curl_version_info (version.c:600)
 ==181108==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181108==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181108==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181108==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2081
test 2076 [HTTP with digest auth and URI contains query]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2076 ../src/curl -q --output log/19/curl2076.out  --include --trace-ascii log/19/trace2076 --trace-time "http://127.0.0.1:37077/2076?query" -u testuser:testpass --digest > log/19/stdout2076 2> log/19/stderr2076

 2076: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 2076
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2076 ../src/curl -q --output log/19/curl2076.out  --include --trace-ascii log/19/trace2076 --trace-time "http://127.0.0.1:37077/2076?query" -u testuser:testpass --digest > log/19/stdout2076 2> log/19/stderr2076
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.054290 ====> Client connect
 19:29:07.054336 accept_connection 3 returned 4
 19:29:07.054361 Read 93 bytes
 19:29:07.054373 Process 93 bytes request
 19:29:07.054387 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.054396 Are-we-friendly question received
 19:29:07.054438 Wrote request (93 bytes) input to log/19/server.input
 19:29:07.054459 Identifying ourselves as friends
 19:29:07.054537 Response sent (57 bytes) and written to log/19/server.response
 19:29:07.054550 special request received, no persistency
 19:29:07.054559 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 46482 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2076
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind2076
 ==180855== 
 ==180855== Process terminating with default action of signal 4 (SIGILL)
 ==180855==  Illegal opcode at address 0x492B75F
 ==180855==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180855==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180855==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180855==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180855==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180855==    by 0x49908EB: curl_version_info (version.c:600)
 ==180855==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180855==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180855==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180855==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2076
test 2080 [config file with overly long option]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2080 ../src/curl -q --output log/17/curl2080.out  --include --trace-ascii log/17/trace2080 --trace-time -K log/17/config2080 file://de\>v/null > log/17/stdout2080 2> log/17/stderr2080

curl returned 132, when expecting 2
 2080: exit FAILED
== Contents of files in the log/17/ directory after test 2080
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2080 ../src/curl -q --output log/17/curl2080.out  --include --trace-ascii log/17/trace2080 --trace-time -K log/17/config2080 file://de\>v/null > log/17/stdout2080 2> log/17/stderr2080
=== End of file commands.log
=== Start of file config2080
 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2086 ./libtest/libtests lib2082 [::1]:45455/2086#ipv6 > log/1/stdout2086 2> log/1/stderr2086
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
=== End of file config2080
=== Start of file server.cmd
 Testnum 2080
=== End of file server.cmd
=== Start of file valgrind2080
 ==180907== 
 ==180907== Process terminating with default action of signal 4 (SIGILL)
 ==180907==  Illegal opcode at address 0x492B75F
 ==180907==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180907==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180907==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180907==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180907==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180907==    by 0x49908EB: curl_version_info (version.c:600)
 ==180907==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180907==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180907==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180907==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2080
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2093 ../src/curl -q --output log/2/curl2093.out  --include --trace-ascii log/2/trace2093 --trace-time http://127.0.0.1:34531/2093 -# -d "sending data" > log/2/stdout2093 2> log/2/stderr2093
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2077 ../src/curl -q --output log/12/curl2077.out  --include --trace-ascii log/12/trace2077 --trace-time http://127.0.0.1:40921/2077 --fail --negotiate > log/12/stdout2077 2> log/12/stderr2077
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/1/server/http_ipv6_server.pid" --logfile "log/1/http_ipv6_server.log" --logdir "log/1" --portfile log/1/server/http_ipv6_server.port --config log/1/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 181133 port 45455
* pid http-ipv6 => 181133 181133
setenv MSYS2_ARG_CONV_EXCL = *
test 2086 [Pre-request callback for HTTP IPv6]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2086 ./libtest/libtests lib2082 [::1]:45455/2086#ipv6 > log/1/stdout2086 2> log/1/stderr2086

 2086: stdout FAILED:
--- log/1/check-expected	2026-10-15 19:29:10.428349097 +0000
+++ log/1/check-generated	2026-10-15 19:29:10.426850166 +0000
@@ -1,5 +0,0 @@
-Connected to [::1][LF]
-Connected from [::1][LF]
-Remote port = 45455[LF]
-Local port = stripped[LF]
-Returning = 0[LF]
== Contents of files in the log/1/ directory after test 2086
=== Start of file check-expected
 Connected to [::1][LF]
 Connected from [::1][LF]
 Remote port = 45455[LF]
 Local port = stripped[LF]
 Returning = 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2086 ./libtest/libtests lib2082 [::1]:45455/2086#ipv6 > log/1/stdout2086 2> log/1/stderr2086
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:29:08.644775 Running HTTP IPv6 version on port 45455
 19:29:08.644882 Wrote pid 181133 to log/1/server/http_ipv6_server.pid
 19:29:08.644920 Wrote port 45455 to log/1/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 2086
=== End of file server.cmd
=== Start of file valgrind2086
 ==181929== 
 ==181929== Process terminating with default action of signal 4 (SIGILL)
 ==181929==  Illegal opcode at address 0x51CC63F
 ==181929==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==181929==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==181929==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==181929==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2086
test 2093 [HTTP POST a few bytes with 2^63-1 bytes response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2093 ../src/curl -q --output log/2/curl2093.out  --include --trace-ascii log/2/trace2093 --trace-time http://127.0.0.1:34531/2093 -# -d "sending data" > log/2/stdout2093 2> log/2/stderr2093

 2093: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 2093
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2093 ../src/curl -q --output log/2/curl2093.out  --include --trace-ascii log/2/trace2093 --trace-time http://127.0.0.1:34531/2093 -# -d "sending data" > log/2/stdout2093 2> log/2/stderr2093
=== End of file commands.log
=== Start of file http_server.log
 19:29:08.920966 ====> Client connect
 19:29:08.921007 accept_connection 3 returned 4
 19:29:08.921178 Read 93 bytes
 19:29:08.921195 Process 93 bytes request
 19:29:08.921209 Got request: GET /verifiedserver HTTP/1.1
 19:29:08.921218 Are-we-friendly question received
 19:29:08.921253 Wrote request (93 bytes) input to log/2/server.input
 19:29:08.921271 Identifying ourselves as friends
 19:29:08.921337 Response sent (56 bytes) and written to log/2/server.response
 19:29:08.921348 special request received, no persistency
 19:29:08.921356 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 32882 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2093
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind2093
 ==181515== 
 ==181515== Process terminating with default action of signal 4 (SIGILL)
 ==181515==  Illegal opcode at address 0x492B75F
 ==181515==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181515==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181515==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181515==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181515==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181515==    by 0x49908EB: curl_version_info (version.c:600)
 ==181515==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181515==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181515==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181515==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2093
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2106 ../src/curl -q --output log/8/curl2106.out  --include --trace-ascii log/8/trace2106 --trace-time http://127.0.0.1:44467/2106 > log/8/stdout2106 2> log/8/stderr2106
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2091 ../src/curl -q --output log/20/curl2091.out  --include --trace-ascii log/20/trace2091 --trace-time http://127.0.0.1:41689/20910001 -u testuser:testpass --digest --next http://127.0.0.1:41689/20910003 -u testuser:testpass --digest > log/20/stdout2091 2> log/20/stderr2091
test 2077 [curl --fail --negotiate to unauthenticated service fails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2077 ../src/curl -q --output log/12/curl2077.out  --include --trace-ascii log/12/trace2077 --trace-time http://127.0.0.1:40921/2077 --fail --negotiate > log/12/stdout2077 2> log/12/stderr2077

 2077: data FAILED:
--- log/12/check-expected	2026-10-15 19:29:10.552493090 +0000
+++ log/12/check-generated	2026-10-15 19:29:10.550823701 +0000
@@ -1,4 +0,0 @@
-HTTP/1.1 200 OK swsclose[CR][LF]
-Content-Length: 23[CR][LF]
-[CR][LF]
-This IS the real page![LF]
== Contents of files in the log/12/ directory after test 2077
=== Start of file check-expected
 HTTP/1.1 200 OK swsclose[CR][LF]
 Content-Length: 23[CR][LF]
 [CR][LF]
 This IS the real page![LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2077 ../src/curl -q --output log/12/curl2077.out  --include --trace-ascii log/12/trace2077 --trace-time http://127.0.0.1:40921/2077 --fail --negotiate > log/12/stdout2077 2> log/12/stderr2077
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.087978 ====> Client connect
 19:29:07.088017 accept_connection 3 returned 4
 19:29:07.088192 Read 93 bytes
 19:29:07.088209 Process 93 bytes request
 19:29:07.088223 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.088232 Are-we-friendly question received
 19:29:07.088266 Wrote request (93 bytes) input to log/12/server.input
 19:29:07.088285 Identifying ourselves as friends
 19:29:07.088356 Response sent (56 bytes) and written to log/12/server.response
 19:29:07.088369 special request received, no persistency
 19:29:07.088378 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 53070 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2077
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind2077
 ==180857== 
 ==180857== Process terminating with default action of signal 4 (SIGILL)
 ==180857==  Illegal opcode at address 0x492B75F
 ==180857==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==180857==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==180857==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==180857==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==180857==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==180857==    by 0x49908EB: curl_version_info (version.c:600)
 ==180857==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==180857==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==180857==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==180857==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2077
test 2106 [HTTP chunked response with a NUL byte in the trailer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2106 ../src/curl -q --output log/8/curl2106.out  --include --trace-ascii log/8/trace2106 --trace-time http://127.0.0.1:44467/2106 > log/8/stdout2106 2> log/8/stderr2106

 2106: protocol FAILED!
 There was no content at all in the file log/8/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/8/ directory after test 2106
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2106 ../src/curl -q --output log/8/curl2106.out  --include --trace-ascii log/8/trace2106 --trace-time http://127.0.0.1:44467/2106 > log/8/stdout2106 2> log/8/stderr2106
=== End of file commands.log
=== Start of file http_server.log
 19:29:08.136996 ====> Client connect
 19:29:08.137032 accept_connection 3 returned 4
 19:29:08.137055 Read 93 bytes
 19:29:08.137066 Process 93 bytes request
 19:29:08.137078 Got request: GET /verifiedserver HTTP/1.1
 19:29:08.137087 Are-we-friendly question received
 19:29:08.137117 Wrote request (93 bytes) input to log/8/server.input
 19:29:08.137136 Identifying ourselves as friends
 19:29:08.137212 Response sent (56 bytes) and written to log/8/server.response
 19:29:08.137565 special request received, no persistency
 19:29:08.137582 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 32942 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2106
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind2106
 ==181668== 
 ==181668== Process terminating with default action of signal 4 (SIGILL)
 ==181668==  Illegal opcode at address 0x492B75F
 ==181668==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181668==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181668==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181668==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181668==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181668==    by 0x49908EB: curl_version_info (version.c:600)
 ==181668==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181668==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181668==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181668==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2106
test 2091 [HTTP Digest auth with OWS and escaped quotes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2091 ../src/curl -q --output log/20/curl2091.out  --include --trace-ascii log/20/trace2091 --trace-time http://127.0.0.1:41689/20910001 -u testuser:testpass --digest --next http://127.0.0.1:41689/20910003 -u testuser:testpass --digest > log/20/stdout2091 2> log/20/stderr2091

 2091: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 2091
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2091 ../src/curl -q --output log/20/curl2091.out  --include --trace-ascii log/20/trace2091 --trace-time http://127.0.0.1:41689/20910001 -u testuser:testpass --digest --next http://127.0.0.1:41689/20910003 -u testuser:testpass --digest > log/20/stdout2091 2> log/20/stderr2091
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.712093 ====> Client connect
 19:29:07.712122 accept_connection 3 returned 4
 19:29:07.712141 Read 93 bytes
 19:29:07.712150 Process 93 bytes reqCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2092 ../src/curl -q --output log/6/curl2092.out  --include --trace-ascii log/6/trace2092 --trace-time "127.0.0.1:33935/[0-1][9223372036854775806-9223372036854775807]/2092" > log/6/stdout2092 2> log/6/stderr2092
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2107 ../src/curl -q --output log/5/curl2107.out  --include --trace-ascii log/5/trace2107 --trace-time http://127.0.0.1:37089/2107 -p -x http://127.0.0.1:35873 > log/5/stdout2107 2> log/5/stderr2107
uest
 19:29:07.712161 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.712169 Are-we-friendly question received
 19:29:07.712197 Wrote request (93 bytes) input to log/20/server.input
 19:29:07.712211 Identifying ourselves as friends
 19:29:07.712262 Response sent (57 bytes) and written to log/20/server.response
 19:29:07.712270 special request received, no persistency
 19:29:07.712277 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 46936 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2091
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind2091
 ==181307== 
 ==181307== Process terminating with default action of signal 4 (SIGILL)
 ==181307==  Illegal opcode at address 0x492B75F
 ==181307==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181307==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181307==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181307==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181307==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181307==    by 0x49908EB: curl_version_info (version.c:600)
 ==181307==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181307==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181307==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181307==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2091
test 2092 [glob range that ends with 9223372036854775807]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2092 ../src/curl -q --output log/6/curl2092.out  --include --trace-ascii log/6/trace2092 --trace-time "127.0.0.1:33935/[0-1][9223372036854775806-9223372036854775807]/2092" > log/6/stdout2092 2> log/6/stderr2092

curl returned 132, when expecting 3
 2092: exit FAILED
== Contents of files in the log/6/ directory after test 2092
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2092 ../src/curl -q --output log/6/curl2092.out  --include --trace-ascii log/6/trace2092 --trace-time "127.0.0.1:33935/[0-1][9223372036854775806-9223372036854775807]/2092" > log/6/stdout2092 2> log/6/stderr2092
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.857633 ====> Client connect
 19:29:07.857669 accept_connection 3 returned 4
 19:29:07.857691 Read 93 bytes
 19:29:07.857701 Process 93 bytes request
 19:29:07.857714 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.857722 Are-we-friendly question received
 19:29:07.857750 Wrote request (93 bytes) input to log/6/server.input
 19:29:07.857767 Identifying ourselves as friends
 19:29:07.857837 Response sent (56 bytes) and written to log/6/server.response
 19:29:07.857848 special request received, no persistency
 19:29:07.857856 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 39508 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2092
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind2092
 ==181466== 
 ==181466== Process terminating with default action of signal 4 (SIGILL)
 ==181466==  Illegal opcode at address 0x492B75F
 ==181466==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181466==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181466==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181466==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181466==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181466==    by 0x49908EB: curl_version_info (version.c:600)
 ==181466==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181466==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181466==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181466==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2092
test 2107 [HTTP CONNECT response with a NUL byte in a header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2107 ../src/curl -q --output log/5/curl2107.out  --include --trace-ascii log/5/trace2107 --trace-time http://127.0.0.1:37089/2107 -p -x http://127.0.0.1:35873 > log/5/stdout2107 2> log/5/stderr2107

curl returned 132, when expecting 8
 2107: exit FAILED
== Contents of files in the log/5/ directory after test 2107
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2107 ../src/curl -q --output log/5/curl2107.out  --include --trace-ascii log/5/trace2107 --trace-time http://127.0.0.1:37089/2107 -p -x http://127.0.0.1:35873 > log/5/stdout2107 2> log/5/stderr2107
=== End of file commands.log
=== Start of file http2_server.log
 19:29:08.327781 ====> Client connect
 19:29:08.327820 accept_connection 3 returned 4
 19:29:08.327848 Read 93 bytes
 19:29:08.327859 Process 93 bytes request
 19:29:08.327883 Got request: GET /verifiedserver HTTP/1.1
 19:29:08.327892 Are-we-friendly question received
 19:29:08.327920 Wrote request (93 bytes) input to log/5/proxy.input
 19:29:08.327939 Identifying ourselves as friends
 19:29:08.328011 Response sent (57 bytes) and written to log/5/proxy.response
 19:29:08.328020 special request received, no persistency
 19:29:08.328029 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:35873...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35873) from 127.0.0.1 port 46484 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35873
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:35873 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 179223
=== End of file http2_verify.out
=== Start of file http_server.log
 19:29:08.251312 ====> Client connect
 19:29:08.251366 accept_connection 3 returned 4
 19:29:08.251385 Read 93 bytes
 19:29:08.251393 Process 93 bytes request
 19:29:08.251404 Got request: GET /verifiedserver HTTP/1.1
 19:29:08.251411 Are-we-friendly question received
 19:29:08.251431 Wrote request (93 bytes) input to log/5/server.input
 19:29:08.251444 Identifying ourselves as friends
 19:29:08.251501 Response sent (56 bytes) and written to log/5/server.response
 19:29:08.251508 special request received, no persistency
 19:29:08.251515 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 48770 
 * using HTCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2105 ../src/curl -q --output log/24/curl2105.out  --include --trace-ascii log/24/trace2105 --trace-time http://127.0.0.1:38895/2105 > log/24/stdout2105 2> log/24/stderr2105
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2110 ../src/curl -q --output log/16/curl2110.out  --include --trace-ascii log/16/trace2110 --trace-time smtp://127.0.0.1:33205/2110 --mail-rcpt recipient@example.com -K log/16/test2110.config -T log/16/test2110.eml > log/16/stdout2110 2> log/16/stderr2110
TP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 179223
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 2107
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind2107
 ==181768== 
 ==181768== Process terminating with default action of signal 4 (SIGILL)
 ==181768==  Illegal opcode at address 0x492B75F
 ==181768==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181768==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181768==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181768==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181768==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181768==    by 0x49908EB: curl_version_info (version.c:600)
 ==181768==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181768==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181768==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2107
test 2105 [HTTP with spurious CR in received header]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2105 ../src/curl -q --output log/24/curl2105.out  --include --trace-ascii log/24/trace2105 --trace-time http://127.0.0.1:38895/2105 > log/24/stdout2105 2> log/24/stderr2105

 2105: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 2105
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2105 ../src/curl -q --output log/24/curl2105.out  --include --trace-ascii log/24/trace2105 --trace-time http://127.0.0.1:38895/2105 > log/24/stdout2105 2> log/24/stderr2105
=== End of file commands.log
=== Start of file http_server.log
 19:29:07.931675 ====> Client connect
 19:29:07.931714 accept_connection 3 returned 4
 19:29:07.931738 Read 93 bytes
 19:29:07.931748 Process 93 bytes request
 19:29:07.931761 Got request: GET /verifiedserver HTTP/1.1
 19:29:07.931770 Are-we-friendly question received
 19:29:07.931796 Wrote request (93 bytes) input to log/24/server.input
 19:29:07.931811 Identifying ourselves as friends
 19:29:07.931881 Response sent (56 bytes) and written to log/24/server.response
 19:29:07.931891 special request received, no persistency
 19:29:07.931899 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 55750 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2105
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind2105
 ==181521== 
 ==181521== Process terminating with default action of signal 4 (SIGILL)
 ==181521==  Illegal opcode at address 0x492B75F
 ==181521==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181521==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181521==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181521==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181521==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181521==    by 0x49908EB: curl_version_info (version.c:600)
 ==181521==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181521==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181521==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181521==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2105
test 2110 [SMTP --mail-from with embedded CRLF is rejected]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2110 ../src/curl -q --output log/16/curl2110.out  --include --trace-ascii log/16/trace2110 --trace-time smtp://127.0.0.1:33205/2110 --mail-rcpt recipient@example.com -K log/16/test2110.config -T log/16/test2110.eml > log/16/stdout2110 2> log/16/stderr2110

 2110: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 2110
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2110 ../src/curl -q --output log/16/curl2110.out  --include --trace-ascii log/16/trace2110 --trace-time smtp://127.0.0.1:33205/2110 --mail-rcpt recipient@example.com -K log/16/test2110.config -T log/16/test2110.eml > log/16/stdout2110 2> log/16/stderr2110
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2110
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:08.899105 ====> Client connect
 19:29:08.899269 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:08.900557 < "EHLO verifiedserver"
 19:29:08.900610 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:08.900835 < "HELP"
 19:29:08.900879 > "214 WE ROOLZ: 127808[CR][LF]"
 19:29:08.900898 return proof we are we
 19:29:08.901162 < "QUIT"
 19:29:08.901197 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:08.902450 MAIN sockfilt said DISC
 19:29:08.902485 ====> Client disconnected
 19:29:08.902559 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:09.501248 ====> Client connect
 19:29:09.501543 Received DATA (on stdin)
 19:29:09.501559 > 146 bytes data, server => client
 19:29:09.501571 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:09.501581 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:09.501591 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:09.502640 < 21 bytes data, client => server
 19:29:09.502659 'EHLO verifiedserver\r\n'
 19:29:09.502877 Received DATA (on stdin)
 19:29:09.502890 > 53 bytes data, server => client
 19:29:09.502901 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:09.502972 < 6 bytes data, client => server
 19:29:09.502988 'HELP\r\n'
 19:29:09.503160 Received DATA (on stdin)
 19:29:09.503173 > 22 bytes data, server => client
 19:29:09.503183 '214 WE ROOLZ: 127808\r\n'
 19:29:09.503313 < 6 bytes data, client => server
 19:29:09.503328 'QUIT\r\n'
 19:29:09.503462 Received DATA (on stdin)
 19:29:09.503475 > 35 bytes data, server => client
 19:29:09.503486 '221 curl ESMTP server signing off\r\n'
 19:29:09.504655 ====> Client disconnect
 19:29:09.504822 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file test2110.config
 mail-from = "sender@example.com\r\nDATA"
=== End of file test2110.config
=== Start of file test2110.eml
 From: different
 To: another
 body
=== End of file test2110.eml
=== Start of file valgrind2110
 ==181889== 
 ==CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2113 ../src/curl -q --output log/9/curl2113.out  --include --trace-ascii log/9/trace2113 --trace-time http://first.host.it.is/we/want/that/page/2113 -x 127.0.0.1:43733 -H "Authorization : s3cr3t" --proxy-user testing:this --location > log/9/stdout2113 2> log/9/stderr2113
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2108 ../src/curl -q --output log/7/curl2108.out  --include --trace-ascii log/7/trace2108 --trace-time ftp://127.0.0.1:44283/2108 > log/7/stdout2108 2> log/7/stderr2108
181889== Process terminating with default action of signal 4 (SIGILL)
 ==181889==  Illegal opcode at address 0x492B75F
 ==181889==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181889==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181889==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181889==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181889==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181889==    by 0x49908EB: curl_version_info (version.c:600)
 ==181889==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181889==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181889==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2110
test 2113 [Authorization: with whitespace before colon and redir to new host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2113 ../src/curl -q --output log/9/curl2113.out  --include --trace-ascii log/9/trace2113 --trace-time http://first.host.it.is/we/want/that/page/2113 -x 127.0.0.1:43733 -H "Authorization : s3cr3t" --proxy-user testing:this --location > log/9/stdout2113 2> log/9/stderr2113

 2113: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 2113
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2113 ../src/curl -q --output log/9/curl2113.out  --include --trace-ascii log/9/trace2113 --trace-time http://first.host.it.is/we/want/that/page/2113 -x 127.0.0.1:43733 -H "Authorization : s3cr3t" --proxy-user testing:this --location > log/9/stdout2113 2> log/9/stderr2113
=== End of file commands.log
=== Start of file http_server.log
 19:29:08.567656 ====> Client connect
 19:29:08.567701 accept_connection 3 returned 4
 19:29:08.567727 Read 93 bytes
 19:29:08.567736 Process 93 bytes request
 19:29:08.567750 Got request: GET /verifiedserver HTTP/1.1
 19:29:08.567758 Are-we-friendly question received
 19:29:08.567785 Wrote request (93 bytes) input to log/9/server.input
 19:29:08.567801 Identifying ourselves as friends
 19:29:08.567883 Response sent (56 bytes) and written to log/9/server.response
 19:29:08.567892 special request received, no persistency
 19:29:08.567900 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35646 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2113
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind2113
 ==181957== 
 ==181957== Process terminating with default action of signal 4 (SIGILL)
 ==181957==  Illegal opcode at address 0x492B75F
 ==181957==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181957==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181957==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181957==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181957==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181957==    by 0x49908EB: curl_version_info (version.c:600)
 ==181957==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181957==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181957==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181957==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2113
test 2108 [FTP rejects a NUL byte in a server response line]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2108 ../src/curl -q --output log/7/curl2108.out  --include --trace-ascii log/7/trace2108 --trace-time ftp://127.0.0.1:44283/2108 > log/7/stdout2108 2> log/7/stderr2108

 2108: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 2108
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2108 ../src/curl -q --output log/7/curl2108.out  --include --trace-ascii log/7/trace2108 --trace-time ftp://127.0.0.1:44283/2108 > log/7/stdout2108 2> log/7/stderr2108
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:08.695446 ====> Client connect
 19:29:08.695862 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:08.696005 < "USER anonymous"
 19:29:08.696172 > "331 We are happy you popped in![CR][LF]"
 19:29:08.696246 < "PASS ftp@example.com"
 19:29:08.698676 > "230 Welcome you silly person[CR][LF]"
 19:29:08.702169 < "PWD"
 19:29:08.702212 > "257 "/" is current directory[CR][LF]"
 19:29:08.705565 < "EPSV"
 19:29:08.705599 ====> Passive DATA channel requested by client
 19:29:08.705613 DATA sockfilt for passive data channel starting...
 19:29:08.710055 DATA sockfilt for passive data channel started (pid 181753)
 19:29:08.718775 DATA sockfilt for passive data channel listens on port 34257
 19:29:08.718855 > "229 Entering Passive Mode (|||34257|)[CR][LF]"
 19:29:08.718874 Client has been notified that upcoming DATA connection is awaited on port 34257
 19:29:08.719165 Client connects to port 34257
 19:29:08.719194 ====> Client established passive DATA connection on port 34257
 19:29:08.719320 < "TYPE I"
 19:29:08.719356 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:08.719510 < "SIZE verifiedserver"
 19:29:08.719549 > "213 17[CR][LF]"
 19:29:08.719698 < "RETR verifiedserver"
 19:29:08.719733 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:08.719820 =====> Closing passive DATA connection...
 19:29:08.719837 Server disconnects passive DATA connection
 19:29:08.719945 Server disconnected passive DATA connection
 19:29:08.719967 DATA sockfilt for passive data channel quits (pid 181753)
 19:29:08.720245 DATA sockfilt for passive data channel quit (pid 181753)
 19:29:08.720270 =====> Closed passive DATA connection
 19:29:08.720295 > "226 File transfer complete[CR][LF]"
 19:29:08.772204 < "QUIT"
 19:29:08.772260 > "221 bye bye baby[CR][LF]"
 19:29:08.775380 MAIN sockfilt said DISC
 19:29:08.775432 ====> Client disconnected
 19:29:08.775522 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:09.297576 ====> Client connect
 19:29:09.297901 Received DATA (on stdin)
 19:29:09.297921 > 146 bytes data, server => client
 19:29:09.297941 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:09.297951 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:09.297960 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:09.298055 < 16 bytes data, client => server
 19:29:09.298069 'USER anonymous\r\n'
 19:29:09.298282 Received DATA (on stdin)
 19:29:09.298295 > 33 bytes data, server => client
 19:29:09.298314 '331 We are happy you popped in!\r\n'
 19:29:09.298371 < 22 bytes data, client => server
 19:29:09.298386 'PASS ftp@example.com\r\n'
 19:29:09.298514 Received DATA (on stdin)
 19:29:09.298527 > 30 bytes data, server => client
 19:29:09.304232 '230 Welcome you silly person\r\n'
 19:29:09.304315 < 5 bytes CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2114 ../src/curl -q --output log/22/curl2114.out  --include --trace-ascii log/22/trace2114 --trace-time ftp://127.0.0.1:33255/2114 -K log/22/test2114.config > log/22/stdout2114 2> log/22/stderr2114
data, client => server
 19:29:09.304328 'PWD\r\n'
 19:29:09.304471 Received DATA (on stdin)
 19:29:09.304482 > 30 bytes data, server => client
 19:29:09.304492 '257 "/" is current directory\r\n'
 19:29:09.304559 < 6 bytes data, client => server
 19:29:09.304572 'EPSV\r\n'
 19:29:09.321142 Received DATA (on stdin)
 19:29:09.321157 > 39 bytes data, server => client
 19:29:09.321167 '229 Entering Passive Mode (|||34257|)\r\n'
 19:29:09.321471 < 8 bytes data, client => server
 19:29:09.321481 'TYPE I\r\n'
 19:29:09.321614 Received DATA (on stdin)
 19:29:09.321624 > 33 bytes data, server => client
 19:29:09.321633 '200 I modify TYPE as you wanted\r\n'
 19:29:09.321686 < 21 bytes data, client => server
 19:29:09.321696 'SIZE verifiedserver\r\n'
 19:29:09.321806 Received DATA (on stdin)
 19:29:09.321816 > 8 bytes data, server => client
 19:29:09.321825 '213 17\r\n'
 19:29:09.321875 < 21 bytes data, client => server
 19:29:09.321885 'RETR verifiedserver\r\n'
 19:29:09.322554 Received DATA (on stdin)
 19:29:09.322564 > 29 bytes data, server => client
 19:29:09.322573 '150 Binary junk (17 bytes).\r\n'
 19:29:09.322596 Received DATA (on stdin)
 19:29:09.322605 > 28 bytes data, server => client
 19:29:09.322615 '226 File transfer complete\r\n'
 19:29:09.374259 < 6 bytes data, client => server
 19:29:09.374300 'QUIT\r\n'
 19:29:09.374521 Received DATA (on stdin)
 19:29:09.374532 > 18 bytes data, server => client
 19:29:09.374542 '221 bye bye baby\r\n'
 19:29:09.377567 ====> Client disconnect
 19:29:09.377786 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:08.311982 Running IPv4 version
 19:29:08.312176 Listening on port 34257
 19:29:08.312220 Wrote pid 181753 to log/7/server/ftp_sockdata.pid
 19:29:08.312240 Received PING (on stdin)
 19:29:08.317574 Received PORT (on stdin)
 19:29:08.321370 ====> Client connect
 19:29:08.322097 Received DATA (on stdin)
 19:29:08.322108 > 17 bytes data, server => client
 19:29:08.322117 'WE ROOLZ: 84721\r\n'
 19:29:08.322144 Received DISC (on stdin)
 19:29:08.322155 ====> Client forcibly disconnected
 19:29:08.322229 Received QUIT (on stdin)
 19:29:08.322238 quits
 19:29:08.322328 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 230 logged\x00 in
 Testnum 2108
=== End of file server.cmd
=== Start of file valgrind2108
 ==181791== 
 ==181791== Process terminating with default action of signal 4 (SIGILL)
 ==181791==  Illegal opcode at address 0x492B75F
 ==181791==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==181791==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==181791==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==181791==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==181791==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==181791==    by 0x49908EB: curl_version_info (version.c:600)
 ==181791==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==181791==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==181791==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==181791==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2108
test 2114 [FTP username with embedded CRLF is rejected]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2114 ../src/curl -q --output log/22/curl2114.out  --include --trace-ascii log/22/trace2114 --trace-time ftp://127.0.0.1:33255/2114 -K log/22/test2114.config > log/22/stdout2114 2> log/22/stderr2114

curl returned 132, when expecting 43
 2114: exit FAILED
== Contents of files in the log/22/ directory after test 2114
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2114 ../src/curl -q --output log/22/curl2114.out  --include --trace-ascii log/22/trace2114 --trace-time ftp://127.0.0.1:33255/2114 -K log/22/test2114.config > log/22/stdout2114 2> log/22/stderr2114
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:09.015485 ====> Client connect
 19:29:09.015686 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:09.015977 < "USER anonymous"
 19:29:09.016013 > "331 We are happy you popped in![CR][LF]"
 19:29:09.016180 < "PASS ftp@example.com"
 19:29:09.016206 > "230 Welcome you silly person[CR][LF]"
 19:29:09.016354 < "PWD"
 19:29:09.016388 > "257 "/" is current directory[CR][LF]"
 19:29:09.016539 < "EPSV"
 19:29:09.016562 ====> Passive DATA channel requested by client
 19:29:09.016576 DATA sockfilt for passive data channel starting...
 19:29:09.025347 DATA sockfilt for passive data channel started (pid 181949)
 19:29:09.025512 DATA sockfilt for passive data channel listens on port 37041
 19:29:09.025572 > "229 Entering Passive Mode (|||37041|)[CR][LF]"
 19:29:09.025598 Client has been notified that upcoming DATA connection is awaited on port 37041
 19:29:09.027072 Client connects to port 37041
 19:29:09.027114 ====> Client established passive DATA connection on port 37041
 19:29:09.027218 < "TYPE I"
 19:29:09.027256 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:09.027461 < "SIZE verifiedserver"
 19:29:09.027508 > "213 17[CR][LF]"
 19:29:09.027704 < "RETR verifiedserver"
 19:29:09.027760 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:09.027895 =====> Closing passive DATA connection...
 19:29:09.027921 Server disconnects passive DATA connection
 19:29:09.028178 Server disconnected passive DATA connection
 19:29:09.028204 DATA sockfilt for passive data channel quits (pid 181949)
 19:29:09.028632 DATA sockfilt for passive data channel quit (pid 181949)
 19:29:09.028672 =====> Closed passive DATA connection
 19:29:09.028714 > "226 File transfer complete[CR][LF]"
 19:29:09.082144 < "QUIT"
 19:29:09.082205 > "221 bye bye baby[CR][LF]"
 19:29:09.083564 MAIN sockfilt said DISC
 19:29:09.083607 ====> Client disconnected
 19:29:09.083697 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:09.617579 ====> Client connect
 19:29:09.617959 Received DATA (on stdin)
 19:29:09.617974 > 146 bytes data, server => client
 19:29:09.617986 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:09.617995 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:09.618004 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:09.618088 < 16 bytes data, client => server
 19:29:09.618099 'USER anonymous\r\n'
 19:29:09.618273 Received DATA (on stdin)
 19:29:09.618284 > 33 bytes data, server => client
 19:29:09.618293 '331 We are happy you popped in!\r\n'
 19:29:09.618346 < 22 bytes data, client => server
 19:29:09.618357 'PASS ftp@example.com\r\n'
 19:29:09.618464 Received DATA (on stdin)
 19:29:09.618474 > 30 bytes data, server => client
 19:29:09.618484 '230 Welcome you silly person\r\n'
 19:29:09.618532 < 5 bytes data, client => server
 19:29:09.618542 'PWD\r\n'
 19:29:09.618645 Received DATA (on stdin)
 19:29:09.618655 > 30 bytes data, server => client
 19:29:09.618665 '257 "/" is current directory\r\n'
 19:29:09.618720 < 6 bytes data, client => server
 19:29:09.618729 'EPSV\r\n'
 19:29:09.627872 Received DATA (on stdin)
 19:29:09.627891 > 39 bytes data, server => client
 19:29:09.627902 '229 Entering Passive Mode (|||37041|)\r\n'
 19:29:09.628580 < 8 bytes data, client => server
 19:29:09.628599 'TYPE I\r\n'
 19:29:09.629520 Received DATA (on stdin)
 19:29:09.629536 > 33 bytes data, server => client
 19:29:09.629546 '200 I modify TYPE as you wanted\r\n'
 19:29:09.629614 < 21 bytes data, client => server
 19:29:09.629629 'SIZE verifiedserver\r\n'
 19:29:09.629774 Received DATA (on stdin)
 19:29:09.629787 > 8 bytes data, server => client
 19:29:09.629797 '213 17\r\n'
 19:29:09.629860 < 21 bytes data, client => server
 19:29:09.629875 'RETR verifiedserver\r\n'
 19:29:09.630188 Received DATA (on stdin)
 19:29:09.630202 > 29 bytes data, server => client
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2115 ../src/curl -q --output log/23/curl2115.out  --include --trace-ascii log/23/trace2115 --trace-time ftp://127.0.0.1:35523/2115 -K log/23/test2115.config > log/23/stdout2115 2> log/23/stderr2115
 19:29:09.630213 '150 Binary junk (17 bytes).\r\n'
 19:29:09.630986 Received DATA (on stdin)
 19:29:09.631000 > 28 bytes data, server => client
 19:29:09.631010 '226 File transfer complete\r\n'
 19:29:09.677592 < 6 bytes data, client => server
 19:29:09.677628 'QUIT\r\n'
 19:29:09.684477 Received DATA (on stdin)
 19:29:09.684498 > 18 bytes data, server => client
 19:29:09.684509 '221 bye bye baby\r\n'
 19:29:09.685760 ====> Client disconnect
 19:29:09.685957 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:09.620404 Running IPv4 version
 19:29:09.620473 Listening on port 37041
 19:29:09.620518 Wrote pid 181949 to log/22/server/ftp_sockdata.pid
 19:29:09.625363 Received PING (on stdin)
 19:29:09.627665 Received PORT (on stdin)
 19:29:09.629272 ====> Client connect
 19:29:09.630296 Received DATA (on stdin)
 19:29:09.630315 > 17 bytes data, server => client
 19:29:09.630326 'WE ROOLZ: 84714\r\n'
 19:29:09.630361 Received DISC (on stdin)
 19:29:09.630376 ====> Client forcibly disconnected
 19:29:09.630557 Received QUIT (on stdin)
 19:29:09.630574 quits
 19:29:09.630663 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 2114
=== End of file server.cmd
=== Start of file test2114.config
 user = "anonymous\r\nSTOR: /2114"
=== End of file test2114.config
=== Start of file valgrind2114
 ==182037== 
 ==182037== Process terminating with default action of signal 4 (SIGILL)
 ==182037==  Illegal opcode at address 0x492B75F
 ==182037==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182037==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182037==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182037==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182037==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182037==    by 0x49908EB: curl_version_info (version.c:600)
 ==182037==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182037==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182037==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182037==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2114
test 2115 [FTP --ftp-account with embedded CRLF is rejected]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2115 ../src/curl -q --output log/23/curl2115.out  --include --trace-ascii log/23/trace2115 --trace-time ftp://127.0.0.1:35523/2115 -K log/23/test2115.config > log/23/stdout2115 2> log/23/stderr2115

 2115: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 2115
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2115 ../src/curl -q --output log/23/curl2115.out  --include --trace-ascii log/23/trace2115 --trace-time ftp://127.0.0.1:35523/2115 -K log/23/test2115.config > log/23/stdout2115 2> log/23/stderr2115
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:09.162999 ====> Client connect
 19:29:09.163207 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:09.163471 < "USER anonymous"
 19:29:09.163503 > "331 We are happy you popped in![CR][LF]"
 19:29:09.163660 < "PASS ftp@example.com"
 19:29:09.163684 > "230 Welcome you silly person[CR][LF]"
 19:29:09.163826 < "PWD"
 19:29:09.163854 > "257 "/" is current directory[CR][LF]"
 19:29:09.164003 < "EPSV"
 19:29:09.164027 ====> Passive DATA channel requested by client
 19:29:09.164041 DATA sockfilt for passive data channel starting...
 19:29:09.166453 DATA sockfilt for passive data channel started (pid 182102)
 19:29:09.166553 DATA sockfilt for passive data channel listens on port 40495
 19:29:09.166590 > "229 Entering Passive Mode (|||40495|)[CR][LF]"
 19:29:09.166606 Client has been notified that upcoming DATA connection is awaited on port 40495
 19:29:09.166865 Client connects to port 40495
 19:29:09.166895 ====> Client established passive DATA connection on port 40495
 19:29:09.168771 < "TYPE I"
 19:29:09.168806 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:09.174592 < "SIZE verifiedserver"
 19:29:09.174667 > "213 17[CR][LF]"
 19:29:09.189311 < "RETR verifiedserver"
 19:29:09.189424 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:09.189548 =====> Closing passive DATA connection...
 19:29:09.189567 Server disconnects passive DATA connection
 19:29:09.193963 Server disconnected passive DATA connection
 19:29:09.194021 DATA sockfilt for passive data channel quits (pid 182102)
 19:29:09.199005 DATA sockfilt for passive data channel quit (pid 182102)
 19:29:09.199058 =====> Closed passive DATA connection
 19:29:09.199100 > "226 File transfer complete[CR][LF]"
 19:29:09.235525 < "QUIT"
 19:29:09.235580 > "221 bye bye baby[CR][LF]"
 19:29:09.236833 MAIN sockfilt said DISC
 19:29:09.236925 ====> Client disconnected
 19:29:09.237098 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:09.765129 ====> Client connect
 19:29:09.765480 Received DATA (on stdin)
 19:29:09.765494 > 146 bytes data, server => client
 19:29:09.765505 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:09.765515 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:09.765524 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:09.765595 < 16 bytes data, client => server
 19:29:09.765606 'USER anonymous\r\n'
 19:29:09.765765 Received DATA (on stdin)
 19:29:09.765776 > 33 bytes data, server => client
 19:29:09.765786 '331 We are happy you popped in!\r\n'
 19:29:09.765836 < 22 bytes data, client => server
 19:29:09.765847 'PASS ftp@example.com\r\n'
 19:29:09.765942 Received DATA (on stdin)
 19:29:09.765952 > 30 bytes data, server => client
 19:29:09.765962 '230 Welcome you silly person\r\n'
 19:29:09.766008 < 5 bytes data, client => server
 19:29:09.766018 'PWD\r\n'
 19:29:09.766112 Received DATA (on stdin)
 19:29:09.766121 > 30 bytes data, server => client
 19:29:09.766131 '257 "/" is current directory\r\n'
 19:29:09.766187 < 6 bytes data, client => server
 19:29:09.766196 'EPSV\r\n'
 19:29:09.768871 Received DATA (on stdin)
 19:29:09.768882 > 39 bytes data, server => client
 19:29:09.768892 '229 Entering Passive Mode (|||40495|)\r\n'
 19:29:09.770908 < 8 bytes data, client => server
 19:29:09.770928 'TYPE I\r\n'
 19:29:09.771070 Received DATA (on stdin)
 19:29:09.771081 > 33 bytes data, server => client
 19:29:09.771091 '200 I modify TYPE as you wanted\r\n'
 19:29:09.776650 < 21 bytes data, client => server
 19:29:09.776682 'SIZE verifiedserver\r\n'
 19:29:09.776937 Received DATA (on stdin)
 19:29:09.776951 > 8 bytes data, server => client
 19:29:09.776962 '213 17\r\n'
 19:29:09.787601 < 21 bytes data, client => server
 19:29:09.787640 'RETR verifiedserver\r\n'
 19:29:09.791836 Received DATA (on stdin)
 19:29:09.791855 > 29 bytes data, server => client
 19:29:09.791865 '150 Binary junk (17 bytes).\r\n'
 19:29:09.801374 Received DATA (on stdin)
 19:29:09.801392 > 28 bytes data, server => client
 19:29:09.801402 '226 File transfer complete\r\n'
 19:29:09.837588 < 6 bytes data, client => server
 19:29:09.837624 'QUIT\r\n'
 19:29:09.837846 Received DATA (on stdin)
 19:29:09.837858 > 18 bytes data, server => client
 19:29:09.837868 '221 bye bye baby\r\n'
 19:29:09.839037 ====> Client disconnect
 19:29:09.839114 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:09.767840 Running IPv4 version
 19:29:09.768005 Listening on port 40495
 19:29:09.768045 Wrote pid 182102 to log/23/server/ftp_sockdata.pid
 19:29:09.768656 Received PING (on stdin)
 19:29:09.768733 Received PORT (on stdin)
 19:29:09.769066 ====> Client connect
 19:29:09.795090 Received DATA (on stdin)
 19:29:09.795116 > 17 bytes data, CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2109 ../src/curl -q --output log/18/curl2109.out  --include --trace log/18/trace2109 --trace-time mqtt://127.0.0.1:39995/aa%00bb > log/18/stdout2109 2> log/18/stderr2109
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2201 ../src/curl -q --output log/21/curl2201.out  --include --trace log/21/trace2201 --trace-time mqtt://127.0.0.1:39371/2201 -d something -u testuser:testpasswd > log/21/stdout2201 2> log/21/stderr2201
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2116 ../src/curl -q --output log/10/curl2116.out  --include --trace-ascii log/10/trace2116 --trace-time ftp://127.0.0.1:44817/2116/ -K log/10/test2116.config > log/10/stdout2116 2> log/10/stderr2116
server => client
 19:29:09.795126 'WE ROOLZ: 84709\r\n'
 19:29:09.795188 Received DISC (on stdin)
 19:29:09.795205 ====> Client forcibly disconnected
 19:29:09.800908 Received QUIT (on stdin)
 19:29:09.800940 quits
 19:29:09.801031 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PASS 332 please provide account name
 Testnum 2115
=== End of file server.cmd
=== Start of file test2115.config
 ftp-account = "one\r\nDELE 2115"
=== End of file test2115.config
=== Start of file valgrind2115
 ==182141== 
 ==182141== Process terminating with default action of signal 4 (SIGILL)
 ==182141==  Illegal opcode at address 0x492B75F
 ==182141==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182141==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182141==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182141==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182141==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182141==    by 0x49908EB: curl_version_info (version.c:600)
 ==182141==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182141==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182141==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182141==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2115
startnew: ./server/servers mqttd --port 0 --pidfile log/18/server/mqtt_server.pid --portfile log/18/server/mqtt_server.port --config log/18/server.cmd --logfile log/18/mqtt_server.log --logdir log/18
RUN: MQTT server is now running PID 181762 on PORT 39995
* pid mqtt => 181762 181762
test 2109 [MQTT rejects a control byte in the topic]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2109 ../src/curl -q --output log/18/curl2109.out  --include --trace log/18/trace2109 --trace-time mqtt://127.0.0.1:39995/aa%00bb > log/18/stdout2109 2> log/18/stderr2109

 2109: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 2109
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2109 ../src/curl -q --output log/18/curl2109.out  --include --trace log/18/trace2109 --trace-time mqtt://127.0.0.1:39995/aa%00bb > log/18/stdout2109 2> log/18/stderr2109
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:08.347006 Running IPv4 version
 19:29:08.347103 Listening on port 39995
 19:29:08.347146 Wrote pid 181762 to log/18/server/mqtt_server.pid
 19:29:08.347180 Wrote port 39995 to log/18/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 2109
=== End of file server.cmd
=== Start of file valgrind2109
 ==182428== 
 ==182428== Process terminating with default action of signal 4 (SIGILL)
 ==182428==  Illegal opcode at address 0x492B75F
 ==182428==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182428==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182428==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182428==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182428==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182428==    by 0x49908EB: curl_version_info (version.c:600)
 ==182428==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182428==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182428==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182428==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2109
test 2201 [MQTT PUBLISH with user and password valid]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2201 ../src/curl -q --output log/21/curl2201.out  --include --trace log/21/trace2201 --trace-time mqtt://127.0.0.1:39371/2201 -d something -u testuser:testpasswd > log/21/stdout2201 2> log/21/stderr2201

 2201: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 2201
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2201 ../src/curl -q --output log/21/curl2201.out  --include --trace log/21/trace2201 --trace-time mqtt://127.0.0.1:39371/2201 -d something -u testuser:testpasswd > log/21/stdout2201 2> log/21/stderr2201
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2201
=== End of file server.cmd
=== Start of file valgrind2201
 ==182454== 
 ==182454== Process terminating with default action of signal 4 (SIGILL)
 ==182454==  Illegal opcode at address 0x492B75F
 ==182454==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182454==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182454==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182454==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182454==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182454==    by 0x49908EB: curl_version_info (version.c:600)
 ==182454==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182454==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182454==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182454==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2201
test 2116 [FTP --ftp-alternative-to-user with embedded CRLF is rejected]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2116 ../src/curl -q --output log/10/curl2116.out  --include --trace-ascii log/10/trace2116 --trace-time ftp://127.0.0.1:44817/2116/ -K log/10/test2116.config > log/10/stdout2116 2> log/10/stderr2116

 2116: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 2116
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2116 ../src/curl -q --output log/10/curl2116.out  --include --trace-ascii log/10/trace2116 --trace-time ftp://127.0.0.1:44817/2116/ -K log/10/test2116.config > log/10/stdout2116 2> log/10/stderr2116
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:09.352161 ====> Client connect
 19:29:09.352408 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:09.360900 < "USER anonymous"
 19:29:09.360965 > "331 We are happy you popped in![CR][LF]"
 19:29:09.361247 < "PASS ftp@example.com"
 19:29:09.361291 > "230 Welcome you silly person[CR][LF]"
 19:29:09.361475 < "PWD"
 19:29:09.361513 > "257 "/" is current directory[CR][LF]"
 19:29:09.361711 < "EPSV"
 19:29:09.361741 ====> Passive DATA channel requested by client
 19:29:09.361758 DATA sockfilt for passive data channel starting...
 19:29:09.372121 DATA sockfilt for passive data channel started (pid 182194)
 19:29:09.372310 DATA sockfilt for passive data channel listens on port 38243
 19:29:09.372377 > "229 Entering Passive Mode (|||38243|)[CR][LF]"
 19:29:09.372398 Client has been notified that upcoming DATA connection is awaited on port 38243
 19:29:09.372721 Client connects to port 38243
 19:29:09.372761 ====> Client established passive DATA connection on port 38243
 19:29:09.372935 < "TYPE I"
 19:29:09.372985 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:09.373184 < "SIZE verifiedserver"
 19:29:09.373231 > "213CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2119 ../src/curl -q --output log/11/curl2119.out  --include --trace-ascii log/11/trace2119 --trace-time http://127.0.0.1:40989/2119 -sS > log/11/stdout2119 2> log/11/stderr2119
 17[CR][LF]"
 19:29:09.373409 < "RETR verifiedserver"
 19:29:09.373450 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:09.373551 =====> Closing passive DATA connection...
 19:29:09.373570 Server disconnects passive DATA connection
 19:29:09.373827 Server disconnected passive DATA connection
 19:29:09.373860 DATA sockfilt for passive data channel quits (pid 182194)
 19:29:09.374226 DATA sockfilt for passive data channel quit (pid 182194)
 19:29:09.374252 =====> Closed passive DATA connection
 19:29:09.374292 > "226 File transfer complete[CR][LF]"
 19:29:09.422304 < "QUIT"
 19:29:09.422361 > "221 bye bye baby[CR][LF]"
 19:29:09.423645 MAIN sockfilt said DISC
 19:29:09.423694 ====> Client disconnected
 19:29:09.423787 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:09.954260 ====> Client connect
 19:29:09.954694 Received DATA (on stdin)
 19:29:09.954714 > 146 bytes data, server => client
 19:29:09.954725 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:09.954735 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:09.954745 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:09.962913 < 16 bytes data, client => server
 19:29:09.962944 'USER anonymous\r\n'
 19:29:09.963242 Received DATA (on stdin)
 19:29:09.963258 > 33 bytes data, server => client
 19:29:09.963269 '331 We are happy you popped in!\r\n'
 19:29:09.963381 < 22 bytes data, client => server
 19:29:09.963398 'PASS ftp@example.com\r\n'
 19:29:09.963560 Received DATA (on stdin)
 19:29:09.963572 > 30 bytes data, server => client
 19:29:09.963581 '230 Welcome you silly person\r\n'
 19:29:09.963644 < 5 bytes data, client => server
 19:29:09.963655 'PWD\r\n'
 19:29:09.963775 Received DATA (on stdin)
 19:29:09.963786 > 30 bytes data, server => client
 19:29:09.963796 '257 "/" is current directory\r\n'
 19:29:09.963871 < 6 bytes data, client => server
 19:29:09.963886 'EPSV\r\n'
 19:29:09.974672 Received DATA (on stdin)
 19:29:09.974689 > 39 bytes data, server => client
 19:29:09.974700 '229 Entering Passive Mode (|||38243|)\r\n'
 19:29:09.975049 < 8 bytes data, client => server
 19:29:09.975063 'TYPE I\r\n'
 19:29:09.975254 Received DATA (on stdin)
 19:29:09.975269 > 33 bytes data, server => client
 19:29:09.975279 '200 I modify TYPE as you wanted\r\n'
 19:29:09.975344 < 21 bytes data, client => server
 19:29:09.975357 'SIZE verifiedserver\r\n'
 19:29:09.975495 Received DATA (on stdin)
 19:29:09.975510 > 8 bytes data, server => client
 19:29:09.975519 '213 17\r\n'
 19:29:09.975578 < 21 bytes data, client => server
 19:29:09.975589 'RETR verifiedserver\r\n'
 19:29:09.975928 Received DATA (on stdin)
 19:29:09.975940 > 29 bytes data, server => client
 19:29:09.975951 '150 Binary junk (17 bytes).\r\n'
 19:29:09.976560 Received DATA (on stdin)
 19:29:09.976572 > 28 bytes data, server => client
 19:29:09.976581 '226 File transfer complete\r\n'
 19:29:10.024370 < 6 bytes data, client => server
 19:29:10.024401 'QUIT\r\n'
 19:29:10.024627 Received DATA (on stdin)
 19:29:10.024640 > 18 bytes data, server => client
 19:29:10.024649 '221 bye bye baby\r\n'
 19:29:10.025846 ====> Client disconnect
 19:29:10.026056 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:09.966022 Running IPv4 version
 19:29:09.966125 Listening on port 38243
 19:29:09.966165 Wrote pid 182194 to log/10/server/ftp_sockdata.pid
 19:29:09.974253 Received PING (on stdin)
 19:29:09.974455 Received PORT (on stdin)
 19:29:09.974922 ====> Client connect
 19:29:09.975836 Received DATA (on stdin)
 19:29:09.975850 > 17 bytes data, server => client
 19:29:09.975860 'WE ROOLZ: 85153\r\n'
 19:29:09.975890 Received DISC (on stdin)
 19:29:09.975902 ====> Client forcibly disconnected
 19:29:09.976137 Received QUIT (on stdin)
 19:29:09.976150 quits
 19:29:09.976253 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY USER 530 go away
 Testnum 2116
=== End of file server.cmd
=== Start of file test2116.config
 ftp-alternative-to-user = "USER me\r\nDELE 2116"
=== End of file test2116.config
=== Start of file valgrind2116
 ==182227== 
 ==182227== Process terminating with default action of signal 4 (SIGILL)
 ==182227==  Illegal opcode at address 0x492B75F
 ==182227==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182227==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182227==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182227==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182227==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182227==    by 0x49908EB: curl_version_info (version.c:600)
 ==182227==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182227==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182227==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182227==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2116
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2270 ./libtest/libtests lib2270 http://127.0.0.1:44467/2270 > log/8/stdout2270 2> log/8/stderr2270
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2202 ../src/curl -q --output log/14/curl2202.out  --include --trace log/14/trace2202 --trace-time mqtt://127.0.0.1:45407/2202 -d something -u fakeuser:fakepasswd > log/14/stdout2202 2> log/14/stderr2202
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2173 ../src/curl -q --output log/13/curl2173.out  --include --trace-ascii log/13/trace2173 --trace-time http://test.2173:38821/we/want/that/page/2173 -p -x 127.0.0.1:38663 --user 'iam:my:;self' --anyauth > log/13/stdout2173 2> log/13/stderr2173
test 2119 [Reject unsolicited Transfer-Encoding token with an identity prefix]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2119 ../src/curl -q --output log/11/curl2119.out  --include --trace-ascii log/11/trace2119 --trace-time http://127.0.0.1:40989/2119 -sS > log/11/stdout2119 2> log/11/stderr2119

 2119: stderr FAILED:
--- log/11/check-expected	2026-10-15 19:29:12.039448933 +0000
+++ log/11/check-generated	2026-10-15 19:29:12.035898995 +0000
@@ -1 +0,0 @@
-curl: (61) Unsolicited Transfer-Encoding (identityx) found[CR][LF]
== Contents of files in the log/11/ directory after test 2119
=== Start of file check-expected
 curl: (61) Unsolicited Transfer-Encoding (identityx) found[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind2119 ../src/curl -q --output log/11/curl2119.out  --include --trace-ascii log/11/trace2119 --trace-time http://127.0.0.1:40989/2119 -sS > log/11/stdout2119 2> log/11/stderr2119
=== End of file commands.log
=== Start of file http_server.log
 19:29:09.103979 ====> Client connect
 19:29:09.104013 accept_connection 3 returned 4
 19:29:09.104034 Read 93 bytes
 19:29:09.104044 Process 93 bytes request
 19:29:09.104056 Got request: GET /verifiedserver HTTP/1.1
 19:29:09.104064 Are-we-friendly question received
 19:29:09.104089 Wrote request (93 bytes) input to log/11/server.input
 19:29:09.104104 Identifying ourselves as friends
 19:29:09.104166 Response sent (56 bytes) and written to log/11/server.response
 19:29:09.104175 special request received, no persistency
 19:29:09.104183 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 43226 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2119
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind2119
 ==182289== 
 ==182289== Process terminating with default action of signal 4 (SIGILL)
 ==182289==  Illegal opcode at address 0x492B75F
 ==182289==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182289==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182289==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182289==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182289==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182289==    by 0x49908EB: curl_version_info (version.c:600)
 ==182289==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182289==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182289==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182289==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2119
test 2270 [reject HTTP form and MIME upload resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2270 ./libtest/libtests lib2270 http://127.0.0.1:44467/2270 > log/8/stdout2270 2> log/8/stderr2270

libtests returned 132, when expecting 0
 2270: exit FAILED
== Contents of files in the log/8/ directory after test 2270
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind2270 ./libtest/libtests lib2270 http://127.0.0.1:44467/2270 > log/8/stdout2270 2> log/8/stderr2270
=== End of file commands.log
=== Start of file http_server.log
 19:29:10.260995 ====> Client connect
 19:29:10.261047 accept_connection 3 returned 4
 19:29:10.261072 Read 93 bytes
 19:29:10.261081 Process 93 bytes request
 19:29:10.261092 Got request: GET /verifiedserver HTTP/1.1
 19:29:10.261101 Are-we-friendly question received
 19:29:10.261124 Wrote request (93 bytes) input to log/8/server.input
 19:29:10.261138 Identifying ourselves as friends
 19:29:10.261227 Response sent (56 bytes) and written to log/8/server.response
 19:29:10.261235 special request received, no persistency
 19:29:10.261243 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 32946 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2270
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind2270
 ==182906== 
 ==182906== Process terminating with default action of signal 4 (SIGILL)
 ==182906==  Illegal opcode at address 0x51CC63F
 ==182906==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==182906==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==182906==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==182906==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2270
test 2202 [MQTT PUBLISH with invalid user and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2202 ../src/curl -q --output log/14/curl2202.out  --include --trace log/14/trace2202 --trace-time mqtt://127.0.0.1:45407/2202 -d something -u fakeuser:fakepasswd > log/14/stdout2202 2> log/14/stderr2202

 2202: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 2202
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind2202 ../src/curl -q --output log/14/curl2202.out  --include --trace log/14/trace2202 --trace-time mqtt://127.0.0.1:45407/2202 -d something -u fakeuser:fakepasswd > log/14/stdout2202 2> log/14/stderr2202
=== End of file commands.log
=== Start of file server.cmd
 error-CONNACK 5
 Testnum 2202
=== End of file server.cmd
=== Start of file valgrind2202
 ==182462== 
 ==182462== Process terminating with default action of signal 4 (SIGILL)
 ==182462==  Illegal opcode at address 0x492B75F
 ==182462==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182462==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182462==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182462==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182462==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182462==    by 0x49908EB: curl_version_info (version.c:600)
 ==182462==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182462==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182462==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182462==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2202
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2306 ./libtest/libtests lib2306 http://127.0.0.1:37089/2306 http://127.0.0.1:37089/23060002 > log/5/stdout2306 2> log/5/stderr2306
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2204 ../src/curl -q --output log/15/curl2204.out  --include --trace log/15/trace2204 --trace-time mqtt://127.0.0.1:33583/2204 -u testuser:testpasswd > log/15/stdout2204 2> log/15/stderr2204
test 2173 [HTTP over proxy-tunnel with site wrong 401 response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2173 ../src/curl -q --output log/13/curl2173.out  --include --trace-ascii log/13/trace2173 --trace-time http://test.2173:38821/we/want/that/page/2173 -p -x 127.0.0.1:38663 --user 'iam:my:;self' --anyauth > log/13/stdout2173 2> log/13/stderr2173

 2173: data FAILED:
--- log/13/check-expected	2026-10-15 19:29:12.373191924 +0000
+++ log/13/check-generated	2026-10-15 19:29:12.369229207 +0000
@@ -1,3 +0,0 @@
-HTTP/1.1 401 Tricking You[CR][LF]
-WWW-Authenticate: Basic[CR][LF]
-[CR][LF]
== Contents of files in the log/13/ directory after test 2173
=== Start of file check-expected
 HTTP/1.1 401 Tricking You[CR][LF]
 WWW-Authenticate: Basic[CR][LF]
 [CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2173 ../src/curl -q --output log/13/curl2173.out  --include --trace-ascii log/13/trace2173 --trace-time http://test.2173:38821/we/want/that/page/2173 -p -x 127.0.0.1:38663 --user 'iam:my:;self' --anyauth > log/13/stdout2173 2> log/13/stderr2173
=== End of file commands.log
=== Start of file http2_server.log
 19:29:09.199904 ====> Client connect
 19:29:09.199948 accept_connection 3 returned 4
 19:29:09.199973 Read 93 bytes
 19:29:09.199984 Process 93 bytes request
 19:29:09.199996 Got request: GET /verifiedserver HTTP/1.1
 19:29:09.200005 Are-we-friendly question received
 19:29:09.200038 Wrote request (93 bytes) input to log/13/proxy.input
 19:29:09.200057 Identifying ourselves as friends
 19:29:09.200133 Response sent (57 bytes) and written to log/13/proxy.response
 19:29:09.200146 special request received, no persistency
 19:29:09.200155 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:38663...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38663) from 127.0.0.1 port 50328 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38663
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:38663 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 146612
=== End of file http2_verify.out
=== Start of file http_server.log
 19:29:09.132213 ====> Client connect
 19:29:09.132250 accept_connection 3 returned 4
 19:29:09.132349 Read 93 bytes
 19:29:09.132362 Process 93 bytes request
 19:29:09.132374 Got request: GET /verifiedserver HTTP/1.1
 19:29:09.132383 Are-we-friendly question received
 19:29:09.132414 Wrote request (93 bytes) input to log/13/server.input
 19:29:09.132431 Identifying ourselves as friends
 19:29:09.132495 Response sent (56 bytes) and written to log/13/server.response
 19:29:09.132505 special request received, no persistency
 19:29:09.132514 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 54846 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 146612
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 2173
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind2173
 ==182355== 
 ==182355== Process terminating with default action of signal 4 (SIGILL)
 ==182355==  Illegal opcode at address 0x492B75F
 ==182355==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182355==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182355==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182355==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182355==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182355==    by 0x49908EB: curl_version_info (version.c:600)
 ==182355==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182355==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182355==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182355==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2173
test 2306 [HTTP GET reused handle with first header folded]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2306 ./libtest/libtests lib2306 http://127.0.0.1:37089/2306 http://127.0.0.1:37089/23060002 > log/5/stdout2306 2> log/5/stderr2306

 2306: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 2306
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind2306 ./libtest/libtests lib2306 http://127.0.0.1:37089/2306 http://127.0.0.1:37089/23060002 > log/5/stdout2306 2> log/5/stderr2306
=== End of file commands.log
=== Start of file http_server.log
 19:29:10.590998 ====> Client connect
 19:29:10.591037 accept_connection 3 returned 4
 19:29:10.591060 Read 93 bytes
 19:29:10.591070 Process 93 bytes request
 19:29:10.591082 Got request: GET /verifiedserver HTTP/1.1
 19:29:10.591091 Are-we-friendly question received
 19:29:10.591119 Wrote request (93 bytes) input to log/5/server.input
 19:29:10.591137 Identifying ourselves as friends
 19:29:10.591221 Response sent (56 bytes) and written to log/5/server.response
 19:29:10.591234 special request received, no persistency
 19:29:10.591244 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 48780 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2306
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind2306
 ==183177== 
 ==183177== Process terminating with default action of signal 4 (SIGILL)
 ==183177==  Illegal opcode at address 0x51CC63F
 ==183177==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==183177==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==183177==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==183177==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2306
test 2204 [MQTT SUBSCRIBE with user and password]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2204 ../src/curl -q --output log/15/curl2204.out  --include --trace log/15/trace2204 --trace-time mqtt://127.0.0.1:33583/2204 -u testuser:testpasswd > log/15/stdout2204 2> log/15/stderr2204

 2204: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failureCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2308 ./libtest/libtests lib2308 http://127.0.0.1:35903/2308 > log/16/stdout2308 2> log/16/stderr2308
? Returned: 132
== Contents of files in the log/15/ directory after test 2204
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2204 ../src/curl -q --output log/15/curl2204.out  --include --trace log/15/trace2204 --trace-time mqtt://127.0.0.1:33583/2204 -u testuser:testpasswd > log/15/stdout2204 2> log/15/stderr2204
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2204
=== End of file server.cmd
=== Start of file valgrind2204
 ==182604== 
 ==182604== Process terminating with default action of signal 4 (SIGILL)
 ==182604==  Illegal opcode at address 0x492B75F
 ==182604==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182604==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182604==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182604==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182604==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182604==    by 0x49908EB: curl_version_info (version.c:600)
 ==182604==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182604==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182604==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182604==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2204
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2200 ../src/curl -q --output log/4/curl2200.out  --include --trace log/4/trace2200 --trace-time mqtt://127.0.0.1:44187/2200 -u fakeuser:fakepasswd > log/4/stdout2200 2> log/4/stderr2200
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2205 ../src/curl -q --output log/19/curl2205.out  --include --trace log/19/trace2205 --trace-time mqtt://127.0.0.1:33933/2205 -K log/19/input2205 > log/19/stdout2205 2> log/19/stderr2205
test 2308 [verify return code when write callback returns error]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2308 ./libtest/libtests lib2308 http://127.0.0.1:35903/2308 > log/16/stdout2308 2> log/16/stderr2308

 2308: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:29:12.692658126 +0000
+++ log/16/check-generated	2026-10-15 19:29:12.691201497 +0000
@@ -1 +0,0 @@
-Returned 23, should be 23.[CR][LF]
== Contents of files in the log/16/ directory after test 2308
=== Start of file check-expected
 Returned 23, should be 23.[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2308 ./libtest/libtests lib2308 http://127.0.0.1:35903/2308 > log/16/stdout2308 2> log/16/stderr2308
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.874323 ====> Client connect
 19:29:11.874369 accept_connection 3 returned 4
 19:29:11.874396 Read 93 bytes
 19:29:11.874407 Process 93 bytes request
 19:29:11.874422 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.874431 Are-we-friendly question received
 19:29:11.874462 Wrote request (93 bytes) input to log/16/server.input
 19:29:11.874480 Identifying ourselves as friends
 19:29:11.874578 Response sent (56 bytes) and written to log/16/server.response
 19:29:11.874591 special request received, no persistency
 19:29:11.874600 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 57944 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2308
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind2308
 ==183337== 
 ==183337== Process terminating with default action of signal 4 (SIGILL)
 ==183337==  Illegal opcode at address 0x51CC63F
 ==183337==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==183337==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==183337==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==183337==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2308
startnew: ./server/servers mqttd --port 0 --pidfile log/4/server/mqtt_server.pid --portfile log/4/server/mqtt_server.port --config log/4/server.cmd --logfile log/4/mqtt_server.log --logdir log/4
RUN: MQTT server is now running PID 182274 on PORT 44187
* pid mqtt => 182274 182274
test 2200 [MQTT SUBSCRIBE with user and password, not authorized]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2200 ../src/curl -q --output log/4/curl2200.out  --include --trace log/4/trace2200 --trace-time mqtt://127.0.0.1:44187/2200 -u fakeuser:fakepasswd > log/4/stdout2200 2> log/4/stderr2200

 2200: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 2200
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2200 ../src/curl -q --output log/4/curl2200.out  --include --trace log/4/trace2200 --trace-time mqtt://127.0.0.1:44187/2200 -u fakeuser:fakepasswd > log/4/stdout2200 2> log/4/stderr2200
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:09.100494 Running IPv4 version
 19:29:09.100618 Listening on port 44187
 19:29:09.100673 Wrote pid 182274 to log/4/server/mqtt_server.pid
 19:29:09.100710 Wrote port 44187 to log/4/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 error-CONNACK 5
 Testnum 2200
=== End of file server.cmd
=== Start of file valgrind2200
 ==182713== 
 ==182713== Process terminating with default action of signal 4 (SIGILL)
 ==182713==  Illegal opcode at address 0x492B75F
 ==182713==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182713==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182713==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182713==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182713==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182713==    by 0x49908EB: curl_version_info (version.c:600)
 ==182713==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182713==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182713==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182713==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2200
test 2205 [MQTT with 64 KiB long username]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2205 ../src/curl -q --output log/19/curl2205.out  --include --trace log/19/trace2205 --trace-time mqtt://127.0.0.1:33933/2205 -K log/19/input2205 > log/19/stdout2205 2> log/19/stderr2205

curl returned 132, when expecting 8
 2205: exit FAILED
== Contents of files in the log/19/ directory after test 2205
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2205 ../src/curl -q --output log/19/curl2205.out  --include --trace log/19/trace2205 --trace-time mqtt://127.0.0.1:33933/2205 -K log/19/input2205 > log/19/stdout2205 2> log/19/stderr2205
=== End of file commands.log
=== Start of file input2205
 user = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2271 ../src/curl -q --output log/20/curl2271.out  --include --trace-ascii log/20/trace2271 --trace-time http://127.0.0.1:41689/2271 -d foobar -C - > log/20/stdout2271 2> log/20/stderr2271
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:fakepasswd
=== End of file input2205
=== Start of file server.cmd
 Testnum 2205
=== End of file server.cmd
=== Start of file valgrind2205
 ==182674== 
 ==182674== Process terminating with default action of signal 4 (SIGILL)
 ==182674==  Illegal opcode at address 0x492B75F
 ==182674==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182674==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182674==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182674==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182674==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182674==    by 0x49908EB: curl_version_info (version.c:600)
 ==182674==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182674==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182674==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182674==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2205
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2305 ../src/curl -q --output log/6/curl2305.out  --include --trace-ascii log/6/trace2305 --trace-time http://127.0.0.1:33935/2305 --compressed --silent --show-error > log/6/stdout2305 2> log/6/stderr2305
test 2271 [reject automatic HTTP data upload resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2271 ../src/curl -q --output log/20/curl2271.out  --include --trace-ascii log/20/trace2271 --trace-time http://127.0.0.1:41689/2271 -d foobar -C - > log/20/stdout2271 2> log/20/stderr2271

 2271: stderr FAILED:
--- log/20/check-expected	2026-10-15 19:29:12.794255868 +0000
+++ log/20/check-generated	2026-10-15 19:29:12.789719540 +0000
@@ -1 +0,0 @@
-curl: (43) HTTP upload cannot be resumed[CR][LF]
== Contents of files in the log/20/ directory after test 2271
=== Start of file check-expected
 curl: (43) HTTP upload cannot be resumed[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2271 ../src/curl -q --output log/20/curl2271.out  --include --trace-ascii log/20/trace2271 --trace-time http://127.0.0.1:41689/2271 -d foobar -C - > log/20/stdout2271 2> log/20/stderr2271
=== End of file commands.log
=== Start of file http_server.log
 19:29:10.240838 ====> Client connect
 19:29:10.240867 accept_connection 3 returned 4
 19:29:10.251348 Read 93 bytes
 19:29:10.251390 Process 93 bytes request
 19:29:10.251420 Got request: GET /verifiedserver HTTP/1.1
 19:29:10.251428 Are-we-friendly question received
 19:29:10.251461 Wrote request (93 bytes) input to log/20/server.input
 19:29:10.251477 Identifying ourselves as friends
 19:29:10.251545 Response sent (57 bytes) and written to log/20/server.response
 19:29:10.251554 special request received, no persistency
 19:29:10.251562 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 46938 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2271
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind2271
 ==182905== 
 ==182905== Process terminating with default action of signal 4 (SIGILL)
 ==182905==  Illegal opcode at address 0x492B75F
 ==182905==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182905==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182905==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182905==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182905==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182905==    by 0x49908EB: curl_version_info (version.c:600)
 ==182905==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182905==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182905==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182905==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2271
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2309 ./libtest/libtests lib2309 http://github.com log/9/netrc2309 http://127.0.0.1:43733/ > log/9/stdout2309 2> log/9/stderr2309
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2208 ../src/curl -q --output log/12/curl2208.out  --include --trace-ascii log/12/trace2208 --trace-time -x http://127.0.0.1:40921 http://firsthost.com -L -u joe:secret > log/12/stdout2208 2> log/12/stderr2208
test 2305 [HTTP GET gzip compressed content with two concatenated gzip members]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2305 ../src/curl -q --output log/6/curl2305.out  --include --trace-ascii log/6/trace2305 --trace-time http://127.0.0.1:33935/2305 --compressed --silent --show-error > log/6/stdout2305 2> log/6/stderr2305

 2305: stderr FAILED:
--- log/6/check-expected	2026-10-15 19:29:12.898259469 +0000
+++ log/6/check-generated	2026-10-15 19:29:12.894229127 +0000
@@ -1 +0,0 @@
-curl: (23) Multi-member gzip response not supported[CR][LF]
== Contents of files in the log/6/ directory after test 2305
=== Start of file check-expected
 curl: (23) Multi-member gzip response not supported[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2305 ../src/curl -q --output log/6/curl2305.out  --include --trace-ascii log/6/trace2305 --trace-time http://127.0.0.1:33935/2305 --compressed --silent --show-error > log/6/stdout2305 2> log/6/stderr2305
=== End of file commands.log
=== Start of file http_server.log
 19:29:10.387654 ====> Client connect
 19:29:10.387697 accept_connection 3 returned 4
 19:29:10.387724 Read 93 bytes
 19:29:10.387735 Process 93 bytes request
 19:29:10.387748 Got request: GET /verifiedserver HTTP/1.1
 19:29:10.387757 Are-we-friendly question received
 19:29:10.387788 Wrote request (93 bytes) input to log/6/server.input
 19:29:10.387807 Identifying ourselves as friends
 19:29:10.387898 Response sent (56 bytes) and written to log/6/server.response
 19:29:10.387909 special request received, no persistency
 19:29:10.387917 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 39518 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2305
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind2305
 ==183043== 
 ==183043== Process terminating with default action of signal 4 (SIGILL)
 ==183043==  Illegal opcode at address 0x492B75F
 ==183043==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183043==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183043==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183043==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183043==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183043==    by 0x49908EB: curl_version_info (version.c:600)
 ==183043==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183043==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183043==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183043==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2305
test 2309 [HTTP with .netrc using duped easy handle]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2309 ./libtest/libtests lib2309 http://github.com log/9/netrc2309 http://127.0.0.1:43733/ > log/9/stdout2309 2> log/9/stderr2309

 2309: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 2309
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2309 ./libtest/libtests lib2309 http://github.com log/9/netrc2309 http://127.0.0.1:43733/ > log/9/stdout2309 2> log/9/stderr2309
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.017667 ====> Client connect
 19:29:11.017714 accept_connection 3 returned 4
 19:29:11.017743 Read 93 bytes
 19:29:11.017755 Process 93 bytes request
 19:29:11.017769 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.017778 Are-we-friendly question received
 19:29:11.017810 Wrote request (93 bytes) input to log/9/server.input
 19:29:11.017829 Identifying ourselves as friends
 19:29:11.017922 Response sent (56 bytes) and written to log/9/server.response
 19:29:11.017933 special request received, no persistency
 19:29:11.017942 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 35656 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file netrc2309
 machine github.com
 login daniel
 password $y$j9T$WUVjiVvDbRAWafDLs6cab1$01NX.oaZKf5lw8MR2Nk9Yaxv4CqbE0IaDF.GpGxPul1
=== End of file netrc2309
=== Start of file server.cmd
 Testnum 2309
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind2309
 ==183428== 
 ==183428== Process terminating with default action of signal 4 (SIGILL)
 ==183428==  Illegal opcode at address 0x51CC63F
 ==183428==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==183428==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==183428==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==183428==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2309
test 2208 [HTTP auth on redirect with empty URL userinfo]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2208 ../src/curl -q --output log/12/curl2208.out  --include --trace-ascii log/12/trace2208 --trace-time -x http://127.0.0.1:40921 http://firsthost.com -L -u joe:secret > log/12/stdout2208 2> log/12/stderr2208

 2208: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 2208
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2208 ../src/curl -q --output log/12/curl2208.out  --include --trace-ascii log/12/trace2208 --trace-time -x http://127.0.0.1:40921 http://firsthost.com -L -u joe:secret > log/12/stdout2208 2> log/12/stderr2208
=== End of file commands.log
=== Start of file http_server.log
 19:29:10.236412 ====> Client connect
 19:29:10.236445 accept_connection 3 returned 4
 19:29:10.236466 Read 93 bytes
 19:29:10.236475 Process 93 bytes request
 19:29:10.236487 Got request: GET /verifiedserver HTTP/1.1
 19:29:10.236496 Are-we-friendly question received
 19:29:10.236522 Wrote request (93 bytes) input to log/12/server.input
 19:29:10.236538 Identifying ourselves as friends
 19:29:10.236599 Response sent (56 bytes) and written to log/12/server.response
 19:29:10.236608 special request received, no persistency
 19:29:10.236616 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2206 ../src/curl -q --output log/17/curl2206.out  --include --trace log/17/trace2206 --trace-time mqtt://127.0.0.1:36463/2206 > log/17/stdout2206 2> log/17/stderr2206
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2272 ../src/curl -q --output log/2/curl2272.out  --include --trace-ascii log/2/trace2272 --trace-time http://127.0.0.1:34531/2272 -F name=value -C - > log/2/stdout2272 2> log/2/stderr2272
.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 53084 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2208
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind2208
 ==182876== 
 ==182876== Process terminating with default action of signal 4 (SIGILL)
 ==182876==  Illegal opcode at address 0x492B75F
 ==182876==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182876==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182876==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182876==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182876==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182876==    by 0x49908EB: curl_version_info (version.c:600)
 ==182876==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182876==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182876==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182876==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2208
test 2206 [MQTT reject PINGRESP with nonzero remaining_length in place of CONNACK]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2206 ../src/curl -q --output log/17/curl2206.out  --include --trace log/17/trace2206 --trace-time mqtt://127.0.0.1:36463/2206 > log/17/stdout2206 2> log/17/stderr2206

 2206: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 2206
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2206 ../src/curl -q --output log/17/curl2206.out  --include --trace log/17/trace2206 --trace-time mqtt://127.0.0.1:36463/2206 > log/17/stdout2206 2> log/17/stderr2206
=== End of file commands.log
=== Start of file server.cmd
 PINGRESP-as-CONNACK TRUE
 Testnum 2206
=== End of file server.cmd
=== Start of file valgrind2206
 ==182681== 
 ==182681== Process terminating with default action of signal 4 (SIGILL)
 ==182681==  Illegal opcode at address 0x492B75F
 ==182681==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182681==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182681==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182681==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182681==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182681==    by 0x49908EB: curl_version_info (version.c:600)
 ==182681==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182681==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182681==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182681==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2206
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2380 ./libtest/libtests lib2380 log/21/write2380 > log/21/stdout2380 2> log/21/stderr2380
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2330 ./libtest/libtests cli_ev_download -n 1 -t 1000 -m 3000 ftp://127.0.0.1:36115/2330 > log/18/stdout2330 2> log/18/stderr2330
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2203 ../src/curl -q --output log/3/curl2203.out  --include --trace log/3/trace2203 --trace-time mqtt://127.0.0.1:42257/2203 > log/3/stdout2203 2> log/3/stderr2203
* kill pid for ftp-ctrl => 85378
RUN: Process with pid 85350 signalled to die
RUN: Process with pid 85350 gracefully died
test 2272 [reject automatic HTTP form upload resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2272 ../src/curl -q --output log/2/curl2272.out  --include --trace-ascii log/2/trace2272 --trace-time http://127.0.0.1:34531/2272 -F name=value -C - > log/2/stdout2272 2> log/2/stderr2272

 2272: stderr FAILED:
--- log/2/check-expected	2026-10-15 19:29:13.147136382 +0000
+++ log/2/check-generated	2026-10-15 19:29:13.142555176 +0000
@@ -1 +0,0 @@
-curl: (43) HTTP upload cannot be resumed[CR][LF]
== Contents of files in the log/2/ directory after test 2272
=== Start of file check-expected
 curl: (43) HTTP upload cannot be resumed[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2272 ../src/curl -q --output log/2/curl2272.out  --include --trace-ascii log/2/trace2272 --trace-time http://127.0.0.1:34531/2272 -F name=value -C - > log/2/stdout2272 2> log/2/stderr2272
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.324149 ====> Client connect
 19:29:11.324187 accept_connection 3 returned 4
 19:29:11.324211 Read 93 bytes
 19:29:11.324221 Process 93 bytes request
 19:29:11.324251 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.324260 Are-we-friendly question received
 19:29:11.324287 Wrote request (93 bytes) input to log/2/server.input
 19:29:11.324303 Identifying ourselves as friends
 19:29:11.324363 Response sent (56 bytes) and written to log/2/server.response
 19:29:11.324372 special request received, no persistency
 19:29:11.324380 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 32884 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2272
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind2272
 ==182967== 
 ==182967== Process terminating with default action of signal 4 (SIGILL)
 ==182967==  Illegal opcode at address 0x492B75F
 ==182967==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==182967==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==182967==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==182967==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==182967==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==182967==    by 0x49908EB: curl_version_info (version.c:600)
 ==182967==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==182967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==182967==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==182967==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2272
test 2380 [curl_mprintf errors on out of space]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2380 ./libtest/libtests lib2380 log/21/write2380 > log/21/stdout2380 2> log/21/stderr2380

libtests returned 132, when expecting 0
 2380: exit FAILED
== Contents of files in the log/21/ directory after test 2380
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind2380 ./libtest/libtests lib2380 log/21/write2380 > log/21/stdout2380 2> log/21/stderr2380
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2380
=== End of file server.cmd
=== Start of file valgrind2380
 ==183696== 
 ==183696== Process terminating with default action of signal 4 (SIGILL)
 ==183696==  Illegal opcode at address 0x51CC63F
 ==183696==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==183696==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==183696==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==183696==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2380
startnew: ./server/servers mqttd --port 0 --pidfile log/3/server/mqtt_server.pid --portfile log/3/server/mqtt_server.port --config log/3/server.cmd --logfile log/3/mqtt_server.log --logdir log/3
RUN: MQTT server is now running PID 182599 on PORT 42257
* pid mqtt => 182599 182599
test 2203 [MQTT with "no user or password" CONNACK]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2203 ../src/curl -q --output log/3/curl2203.out  --include --trace log/3/trace2203 --trace-time mqtt://127.0.0.1:42257/2203 > log/3/stdout2203 2> log/3/stderr2203

 2203: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 2203
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2203 ../src/curl -q --output log/3/curl2203.out  --include --trace log/3/trace2203 --trace-time mqtt://127.0.0.1:42257/2203 > log/3/stdout2203 2> log/3/stderr2203
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:10.653818 Running IPv4 version
 19:29:10.653901 Listening on port 42257
 19:29:10.653942 Wrote pid 182599 to log/3/server/mqtt_server.pid
 19:29:10.653973 Wrote port 42257 to log/3/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 error-CONNACK 5
 Testnum 2203
=== End of file server.cmd
=== Start of file valgrind2203
 ==183203== 
 ==183203== Process terminating with default action of signal 4 (SIGILL)
 ==183203==  Illegal opcode at address 0x492B75F
 ==183203==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183203==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183203==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183203==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183203==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183203==    by 0x49908EB: curl_version_info (version.c:600)
 ==183203==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183203==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183203==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183203==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2203
test 2330 [FTP server response timeout with the socket action API]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2330 ./libtest/libtests cli_ev_download -n 1 -t 1000 -m 3000 ftp://127.0.0.1:36115/2330 > log/18/stdout2330 2> log/18/stderr2330

libtests returned 132, when expecting 28
 2330: exit FAILED
== Contents of files in the log/18/ directory after test 2330
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2330 ./libtest/libtests cli_ev_download -n 1 -t 1000 -m 3000 ftp://127.0.0.1:36115/2330 > log/18/stdout2330 2> log/18/stderr2330
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:11.886760 ====> Client connect
 19:29:11.886999 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2307 ../src/curl -q --output log/24/curl2307.out  --include --trace-ascii log/24/trace2307 --trace-time -r 4-1000 ftp://127.0.0.1:37215/2307 > log/24/stdout2307 2> log/24/stderr2307
| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:11.890155 < "USER anonymous"
 19:29:11.890204 > "331 We are happy you popped in![CR][LF]"
 19:29:11.891049 < "PASS ftp@example.com"
 19:29:11.891090 > "230 Welcome you silly person[CR][LF]"
 19:29:11.891281 < "PWD"
 19:29:11.891325 > "257 "/" is current directory[CR][LF]"
 19:29:11.892724 < "EPSV"
 19:29:11.892753 ====> Passive DATA channel requested by client
 19:29:11.892768 DATA sockfilt for passive data channel starting...
 19:29:11.899739 DATA sockfilt for passive data channel started (pid 183688)
 19:29:11.899871 DATA sockfilt for passive data channel listens on port 38927
 19:29:11.899917 > "229 Entering Passive Mode (|||38927|)[CR][LF]"
 19:29:11.899934 Client has been notified that upcoming DATA connection is awaited on port 38927
 19:29:11.900258 Client connects to port 38927
 19:29:11.900289 ====> Client established passive DATA connection on port 38927
 19:29:11.900387 < "TYPE I"
 19:29:11.900425 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:11.900766 < "SIZE verifiedserver"
 19:29:11.900814 > "213 17[CR][LF]"
 19:29:11.901003 < "RETR verifiedserver"
 19:29:11.901043 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:11.901125 =====> Closing passive DATA connection...
 19:29:11.901140 Server disconnects passive DATA connection
 19:29:11.901355 Server disconnected passive DATA connection
 19:29:11.901381 DATA sockfilt for passive data channel quits (pid 183688)
 19:29:11.901596 DATA sockfilt for passive data channel quit (pid 183688)
 19:29:11.901621 =====> Closed passive DATA connection
 19:29:11.901648 > "226 File transfer complete[CR][LF]"
 19:29:11.945659 < "QUIT"
 19:29:11.945724 > "221 bye bye baby[CR][LF]"
 19:29:11.947724 MAIN sockfilt said DISC
 19:29:11.947775 ====> Client disconnected
 19:29:11.947865 Awaiting input
 19:29:13.314332 Failed to read input
 19:29:13.314383 Error: FTP server, read zero
 19:29:13.314402 Exited from sysread_or_die() at /startdir/src/curl/tests/ftpserver.pl line 3130. FTP server, read zero
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:11.488909 ====> Client connect
 19:29:11.489306 Received DATA (on stdin)
 19:29:11.489323 > 146 bytes data, server => client
 19:29:11.489335 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:11.489346 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:11.489355 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:11.492238 < 16 bytes data, client => server
 19:29:11.492259 'USER anonymous\r\n'
 19:29:11.492494 Received DATA (on stdin)
 19:29:11.492508 > 33 bytes data, server => client
 19:29:11.492518 '331 We are happy you popped in!\r\n'
 19:29:11.493195 < 22 bytes data, client => server
 19:29:11.493213 'PASS ftp@example.com\r\n'
 19:29:11.493376 Received DATA (on stdin)
 19:29:11.493388 > 30 bytes data, server => client
 19:29:11.493398 '230 Welcome you silly person\r\n'
 19:29:11.493458 < 5 bytes data, client => server
 19:29:11.493472 'PWD\r\n'
 19:29:11.494414 Received DATA (on stdin)
 19:29:11.494434 > 30 bytes data, server => client
 19:29:11.494446 '257 "/" is current directory\r\n'
 19:29:11.494900 < 6 bytes data, client => server
 19:29:11.494918 'EPSV\r\n'
 19:29:11.502222 Received DATA (on stdin)
 19:29:11.502238 > 39 bytes data, server => client
 19:29:11.502249 '229 Entering Passive Mode (|||38927|)\r\n'
 19:29:11.502457 < 8 bytes data, client => server
 19:29:11.502473 'TYPE I\r\n'
 19:29:11.502707 Received DATA (on stdin)
 19:29:11.502719 > 33 bytes data, server => client
 19:29:11.502729 '200 I modify TYPE as you wanted\r\n'
 19:29:11.502790 < 21 bytes data, client => server
 19:29:11.502804 'SIZE verifiedserver\r\n'
 19:29:11.503102 Received DATA (on stdin)
 19:29:11.503115 > 8 bytes data, server => client
 19:29:11.503125 '213 17\r\n'
 19:29:11.503188 < 21 bytes data, client => server
 19:29:11.503203 'RETR verifiedserver\r\n'
 19:29:11.503504 Received DATA (on stdin)
 19:29:11.503514 > 29 bytes data, server => client
 19:29:11.503523 '150 Binary junk (17 bytes).\r\n'
 19:29:11.503929 Received DATA (on stdin)
 19:29:11.503940 > 28 bytes data, server => client
 19:29:11.503950 '226 File transfer complete\r\n'
 19:29:11.547723 < 6 bytes data, client => server
 19:29:11.547756 'QUIT\r\n'
 19:29:11.548023 Received DATA (on stdin)
 19:29:11.548040 > 18 bytes data, server => client
 19:29:11.548050 '221 bye bye baby\r\n'
 19:29:11.549368 ====> Client disconnect
 19:29:11.550152 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:11.501822 Running IPv4 version
 19:29:11.501901 Listening on port 38927
 19:29:11.501939 Wrote pid 183688 to log/18/server/ftp_sockdata.pid
 19:29:11.501957 Received PING (on stdin)
 19:29:11.502053 Received PORT (on stdin)
 19:29:11.502494 ====> Client connect
 19:29:11.503421 Received DATA (on stdin)
 19:29:11.503433 > 17 bytes data, server => client
 19:29:11.503443 'WE ROOLZ: 85350\r\n'
 19:29:11.503470 Received DISC (on stdin)
 19:29:11.503480 ====> Client forcibly disconnected
 19:29:11.503668 Received QUIT (on stdin)
 19:29:11.503679 quits
 19:29:11.503735 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 DELAY USER 5
 Testnum 2330
=== End of file server.cmd
=== Start of file valgrind2330
 ==183759== 
 ==183759== Process terminating with default action of signal 4 (SIGILL)
 ==183759==  Illegal opcode at address 0x51CC63F
 ==183759==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==183759==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==183759==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==183759==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2330
test 2307 [FTP retrieve a byte-range with end larger than file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2307 ../src/curl -q --output log/24/curl2307.out  --include --trace-ascii log/24/trace2307 --trace-time -r 4-1000 ftp://127.0.0.1:37215/2307 > log/24/stdout2307 2> log/24/stderr2307

 2307: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 2307
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2307 ../src/curl -q --output log/24/curl2307.out  --include --trace-ascii log/24/trace2307 --trace-time -r 4-1000 ftp://127.0.0.1:37215/2307 > log/24/stdout2307 2> log/24/stderr2307
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:11.122154 ====> Client connect
 19:29:11.122374 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:11.122702 < "USER anonymous"
 19:29:11.122736 > "331 We are happy you popped in![CR][LF]"
 19:29:11.132162 < "PASS ftp@example.com"
 19:29:11.132223 > "230 Welcome you silly person[CR][LF]"
 19:29:11.132458 < "PWD"
 19:29:11.132492 > "257 "/" is current directory[CR][LF]"
 19:29:11.132657 < "EPSV"
 19:29:11.132681 ====> Passive DATA channel requested by client
 19:29:11.132695 DATA sockfilt for passive data channel starting...
 19:29:11.138732 DATA sockfilt for passive data channel started (pid 183246)
 19:29:11.138901 DATA sockfilt for passive data channel listens on port 36941
 19:29:11.138960 > "229 Entering Passive Mode (|||36941|)[CR][LF]"
 19:29:11.138978 Client has been notified that upcoming DATA connection is awaited on port 36941
 19:29:11.139314 Client connects to port 36941
 19:29:11.139348 ====> Client established passive DATA connection on port 36941
 19:29:11.139451 < "TYPE I"
 19:29:11.139488 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:11.139671 < "SIZE verifiedserver"
 19:29:11.139712 > "213 17[CR][LF]"
 19:29:11.139856 < "RETR verifiedserveCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2397 ./libtest/libtests lib2397 http://127.0.0.1:40913/2397 > log/10/stdout2397 2> log/10/stderr2397
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2310 ../src/curl -q --output log/7/curl2310.out  --include --trace-ascii log/7/trace2310 --trace-time --variable 'VAR=IA==' --expand-url 'http://127.0.0.1:40859/{{VAR:64dec:trim}}' > log/7/stdout2310 2> log/7/stderr2310
r"
 19:29:11.139888 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:11.139968 =====> Closing passive DATA connection...
 19:29:11.139983 Server disconnects passive DATA connection
 19:29:11.140165 Server disconnected passive DATA connection
 19:29:11.140189 DATA sockfilt for passive data channel quits (pid 183246)
 19:29:11.140474 DATA sockfilt for passive data channel quit (pid 183246)
 19:29:11.140497 =====> Closed passive DATA connection
 19:29:11.140524 > "226 File transfer complete[CR][LF]"
 19:29:11.182597 < "QUIT"
 19:29:11.182663 > "221 bye bye baby[CR][LF]"
 19:29:11.185378 MAIN sockfilt said DISC
 19:29:11.185424 ====> Client disconnected
 19:29:11.185511 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:11.724274 ====> Client connect
 19:29:11.724661 Received DATA (on stdin)
 19:29:11.724675 > 146 bytes data, server => client
 19:29:11.724687 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:11.724697 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:11.724707 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:11.724831 < 16 bytes data, client => server
 19:29:11.724843 'USER anonymous\r\n'
 19:29:11.725013 Received DATA (on stdin)
 19:29:11.725024 > 33 bytes data, server => client
 19:29:11.725034 '331 We are happy you popped in!\r\n'
 19:29:11.725087 < 22 bytes data, client => server
 19:29:11.725098 'PASS ftp@example.com\r\n'
 19:29:11.734511 Received DATA (on stdin)
 19:29:11.734530 > 30 bytes data, server => client
 19:29:11.734541 '230 Welcome you silly person\r\n'
 19:29:11.734648 < 5 bytes data, client => server
 19:29:11.734659 'PWD\r\n'
 19:29:11.734766 Received DATA (on stdin)
 19:29:11.734776 > 30 bytes data, server => client
 19:29:11.734786 '257 "/" is current directory\r\n'
 19:29:11.734849 < 6 bytes data, client => server
 19:29:11.734859 'EPSV\r\n'
 19:29:11.741263 Received DATA (on stdin)
 19:29:11.741279 > 39 bytes data, server => client
 19:29:11.741289 '229 Entering Passive Mode (|||36941|)\r\n'
 19:29:11.741500 < 8 bytes data, client => server
 19:29:11.741518 'TYPE I\r\n'
 19:29:11.741769 Received DATA (on stdin)
 19:29:11.741782 > 33 bytes data, server => client
 19:29:11.741792 '200 I modify TYPE as you wanted\r\n'
 19:29:11.741855 < 21 bytes data, client => server
 19:29:11.741864 'SIZE verifiedserver\r\n'
 19:29:11.741985 Received DATA (on stdin)
 19:29:11.741995 > 8 bytes data, server => client
 19:29:11.742004 '213 17\r\n'
 19:29:11.742051 < 21 bytes data, client => server
 19:29:11.742061 'RETR verifiedserver\r\n'
 19:29:11.742257 Received DATA (on stdin)
 19:29:11.742267 > 29 bytes data, server => client
 19:29:11.742276 '150 Binary junk (17 bytes).\r\n'
 19:29:11.742800 Received DATA (on stdin)
 19:29:11.742811 > 28 bytes data, server => client
 19:29:11.742821 '226 File transfer complete\r\n'
 19:29:11.784659 < 6 bytes data, client => server
 19:29:11.784692 'QUIT\r\n'
 19:29:11.784951 Received DATA (on stdin)
 19:29:11.784967 > 18 bytes data, server => client
 19:29:11.784979 '221 bye bye baby\r\n'
 19:29:11.787588 ====> Client disconnect
 19:29:11.787786 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:11.739006 Running IPv4 version
 19:29:11.739109 Listening on port 36941
 19:29:11.739159 Wrote pid 183246 to log/24/server/ftp_sockdata.pid
 19:29:11.740929 Received PING (on stdin)
 19:29:11.741060 Received PORT (on stdin)
 19:29:11.741539 ====> Client connect
 19:29:11.742333 Received DATA (on stdin)
 19:29:11.742345 > 17 bytes data, server => client
 19:29:11.742355 'WE ROOLZ: 85113\r\n'
 19:29:11.742379 Received DISC (on stdin)
 19:29:11.742390 ====> Client forcibly disconnected
 19:29:11.742517 Received QUIT (on stdin)
 19:29:11.742529 quits
 19:29:11.742595 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 2307
=== End of file server.cmd
=== Start of file valgrind2307
 ==183284== 
 ==183284== Process terminating with default action of signal 4 (SIGILL)
 ==183284==  Illegal opcode at address 0x492B75F
 ==183284==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183284==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183284==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183284==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183284==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183284==    by 0x49908EB: curl_version_info (version.c:600)
 ==183284==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183284==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183284==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183284==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2307
test 2397 [Get CURLINFO_REFERER set CURLOPT_REFERER]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2397 ./libtest/libtests lib2397 http://127.0.0.1:40913/2397 > log/10/stdout2397 2> log/10/stderr2397

 2397: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 2397
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2397 ./libtest/libtests lib2397 http://127.0.0.1:40913/2397 > log/10/stdout2397 2> log/10/stderr2397
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.644459 ====> Client connect
 19:29:11.644500 accept_connection 3 returned 4
 19:29:11.644524 Read 93 bytes
 19:29:11.644534 Process 93 bytes request
 19:29:11.644547 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.644556 Are-we-friendly question received
 19:29:11.644585 Wrote request (93 bytes) input to log/10/server.input
 19:29:11.644607 Identifying ourselves as friends
 19:29:11.644682 Response sent (56 bytes) and written to log/10/server.response
 19:29:11.644693 special request received, no persistency
 19:29:11.644702 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 43478 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2397
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind2397
 ==183837== 
 ==183837== Process terminating with default action of signal 4 (SIGILL)
 ==183837==  Illegal opcode at address 0x51CC63F
 ==183837==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==183837==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==183837==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==183837==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2397
test 2310 [variable decode and trim]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2310 ../src/curl -q --output log/7/curl2310.out  --include --trace-ascii log/7/trace2310 --trace-time --variable 'VAR=IA==' --expand-url 'http://127.0.0.1:40859/{{VAR:64dec:trim}}' > log/7/stdout2310 2> log/7/stderr2310

 2310: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 2310
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressionsCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2207 ../src/curl -q --output log/1/curl2207.out  --include --trace log/1/trace2207 --trace-time mqtt://127.0.0.1:39717/2207 > log/1/stdout2207 2> log/1/stderr2207
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2413 ./unit/units unit2413 - > log/6/stdout2413 2> log/6/stderr2413
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2412 ./libtest/libtests lib2412 http://127.0.0.1:41689/2412 > log/20/stdout2412 2> log/20/stderr2412
=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2310 ../src/curl -q --output log/7/curl2310.out  --include --trace-ascii log/7/trace2310 --trace-time --variable 'VAR=IA==' --expand-url 'http://127.0.0.1:40859/{{VAR:64dec:trim}}' > log/7/stdout2310 2> log/7/stderr2310
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.106206 ====> Client connect
 19:29:11.106239 accept_connection 3 returned 4
 19:29:11.111135 Read 93 bytes
 19:29:11.111158 Process 93 bytes request
 19:29:11.111172 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.111181 Are-we-friendly question received
 19:29:11.111221 Wrote request (93 bytes) input to log/7/server.input
 19:29:11.111239 Identifying ourselves as friends
 19:29:11.111298 Response sent (56 bytes) and written to log/7/server.response
 19:29:11.111307 special request received, no persistency
 19:29:11.111315 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 39260 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2310
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind2310
 ==183469== 
 ==183469== Process terminating with default action of signal 4 (SIGILL)
 ==183469==  Illegal opcode at address 0x492B75F
 ==183469==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183469==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183469==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183469==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183469==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183469==    by 0x49908EB: curl_version_info (version.c:600)
 ==183469==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183469==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2310
startnew: ./server/servers mqttd --port 0 --pidfile log/1/server/mqtt_server.pid --portfile log/1/server/mqtt_server.port --config log/1/server.cmd --logfile log/1/mqtt_server.log --logdir log/1
RUN: MQTT server is now running PID 182677 on PORT 39717
* pid mqtt => 182677 182677
test 2207 [MQTT reject DISCONNECT with nonzero remaining_length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2207 ../src/curl -q --output log/1/curl2207.out  --include --trace log/1/trace2207 --trace-time mqtt://127.0.0.1:39717/2207 > log/1/stdout2207 2> log/1/stderr2207

 2207: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 2207
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2207 ../src/curl -q --output log/1/curl2207.out  --include --trace log/1/trace2207 --trace-time mqtt://127.0.0.1:39717/2207 > log/1/stdout2207 2> log/1/stderr2207
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:10.056781 Running IPv4 version
 19:29:10.056867 Listening on port 39717
 19:29:10.056911 Wrote pid 182677 to log/1/server/mqtt_server.pid
 19:29:10.056947 Wrote port 39717 to log/1/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 DISCONNECT-malformed TRUE
 Testnum 2207
=== End of file server.cmd
=== Start of file valgrind2207
 ==183440== 
 ==183440== Process terminating with default action of signal 4 (SIGILL)
 ==183440==  Illegal opcode at address 0x492B75F
 ==183440==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183440==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183440==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183440==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183440==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183440==    by 0x49908EB: curl_version_info (version.c:600)
 ==183440==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183440==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183440==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183440==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2207
test 2413 [Curl_peer unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2413 ./unit/units unit2413 - > log/6/stdout2413 2> log/6/stderr2413

units returned 132, when expecting 0
 2413: exit FAILED
== Contents of files in the log/6/ directory after test 2413
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2413 ./unit/units unit2413 - > log/6/stdout2413 2> log/6/stderr2413
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2413
=== End of file server.cmd
=== Start of file valgrind2413
 ==184305== 
 ==184305== Process terminating with default action of signal 4 (SIGILL)
 ==184305==  Illegal opcode at address 0x4091F7F
 ==184305==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==184305==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==184305==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==184305==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2413
test 2412 [checking curl_multi_fdset on nothing to do]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2412 ./libtest/libtests lib2412 http://127.0.0.1:41689/2412 > log/20/stdout2412 2> log/20/stderr2412

libtests returned 132, when expecting 0
 2412: exit FAILED
== Contents of files in the log/20/ directory after test 2412
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2412 ./libtest/libtests lib2412 http://127.0.0.1:41689/2412 > log/20/stdout2412 2> log/20/stderr2412
=== End of file commands.log
=== Start of file http_server.log
 19:29:12.496162 ====> Client connect
 19:29:12.496195 accept_connection 3 returned 4
 19:29:12.496215 Read 93 bytes
 19:29:12.496223 Process 93 bytes request
 19:29:12.496235 Got request: GET /verifiedserver HTTP/1.1
 19:29:12.496244 Are-we-friendly question received
 19:29:12.496273 Wrote request (93 bytes) input to log/20/server.input
 19:29:12.496289 Identifying ourselves as friends
 19:29:12.496347 Response sent (57 bytes) and written to log/20/server.response
 19:29:12.496357 special request received, no persistency
 19:29:12.496365 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 39680 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file hCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2405 ./libtest/libtests lib2405 http://127.0.0.1:38821/2405 > log/13/stdout2405 2> log/13/stderr2405
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2318 ../src/curl -q --output log/23/curl2318.out  --include --trace-ascii log/23/trace2318 --trace-time --resolve github.io:44711:127.0.0.1 --resolve attacker.github.io:44711:127.0.0.1 -b "" http://github.io:44711/2318 http://attacker.github.io:44711/23180002 http://github.io:44711/2318 > log/23/stdout2318 2> log/23/stderr2318
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2311 ../src/curl -q --output log/22/curl2311.out  --include --trace-ascii log/22/trace2311 --trace-time http://example.fake/2311 -b log/22/injar2311 -x 127.0.0.1:35989 > log/22/stdout2311 2> log/22/stderr2311
ttp_verify.out
=== Start of file server.cmd
 Testnum 2412
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind2412
 ==184309== 
 ==184309== Process terminating with default action of signal 4 (SIGILL)
 ==184309==  Illegal opcode at address 0x51CC63F
 ==184309==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184309==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184309==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184309==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2412
test 2405 [checking curl_multi_waitfds functionality]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2405 ./libtest/libtests lib2405 http://127.0.0.1:38821/2405 > log/13/stdout2405 2> log/13/stderr2405

libtests returned 132, when expecting 0
 2405: exit FAILED
== Contents of files in the log/13/ directory after test 2405
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2405 ./libtest/libtests lib2405 http://127.0.0.1:38821/2405 > log/13/stdout2405 2> log/13/stderr2405
=== End of file commands.log
=== Start of file http_server.log
 19:29:12.069960 ====> Client connect
 19:29:12.069994 accept_connection 3 returned 4
 19:29:12.070015 Read 93 bytes
 19:29:12.070025 Process 93 bytes request
 19:29:12.070037 Got request: GET /verifiedserver HTTP/1.1
 19:29:12.070046 Are-we-friendly question received
 19:29:12.070073 Wrote request (93 bytes) input to log/13/server.input
 19:29:12.070090 Identifying ourselves as friends
 19:29:12.070152 Response sent (56 bytes) and written to log/13/server.response
 19:29:12.070161 special request received, no persistency
 19:29:12.070169 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 38292 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2405
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind2405
 ==184030== 
 ==184030== Process terminating with default action of signal 4 (SIGILL)
 ==184030==  Illegal opcode at address 0x51CC63F
 ==184030==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184030==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184030==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184030==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2405
test 2318 [Get cookies from PSL domain then use *.domain]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2318 ../src/curl -q --output log/23/curl2318.out  --include --trace-ascii log/23/trace2318 --trace-time --resolve github.io:44711:127.0.0.1 --resolve attacker.github.io:44711:127.0.0.1 -b "" http://github.io:44711/2318 http://attacker.github.io:44711/23180002 http://github.io:44711/2318 > log/23/stdout2318 2> log/23/stderr2318

 2318: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 2318
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2318 ../src/curl -q --output log/23/curl2318.out  --include --trace-ascii log/23/trace2318 --trace-time --resolve github.io:44711:127.0.0.1 --resolve attacker.github.io:44711:127.0.0.1 -b "" http://github.io:44711/2318 http://attacker.github.io:44711/23180002 http://github.io:44711/2318 > log/23/stdout2318 2> log/23/stderr2318
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.399844 ====> Client connect
 19:29:11.399880 accept_connection 3 returned 4
 19:29:11.399902 Read 93 bytes
 19:29:11.399911 Process 93 bytes request
 19:29:11.399923 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.399932 Are-we-friendly question received
 19:29:11.399957 Wrote request (93 bytes) input to log/23/server.input
 19:29:11.399974 Identifying ourselves as friends
 19:29:11.400039 Response sent (56 bytes) and written to log/23/server.response
 19:29:11.400048 special request received, no persistency
 19:29:11.400055 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 33998 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2318
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind2318
 ==183641== 
 ==183641== Process terminating with default action of signal 4 (SIGILL)
 ==183641==  Illegal opcode at address 0x492B75F
 ==183641==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183641==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183641==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183641==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183641==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183641==    by 0x49908EB: curl_version_info (version.c:600)
 ==183641==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183641==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183641==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183641==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2318
test 2311 [Cookie from file: control octet rejected, prefixes case sensitive]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2311 ../src/curl -q --output log/22/curl2311.out  --include --trace-ascii log/22/trace2311 --trace-time http://example.fake/2311 -b log/22/injar2311 -x 127.0.0.1:35989 > log/22/stdout2311 2> log/22/stderr2311

 2311: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 2311
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2311 ../src/curl -q --output log/22/curl2311.out  --include --trace-ascii log/22/trace2311 --trace-time http://example.fake/2311 -b log/22/injar2311 -x 127.0.0.1:35989 > log/22/stdout2311 2> log/22/stderr2311
=== End of file commands.log
=== Start of file http_server.log
 19:29:11.388315 ====> Client connect
 19:29:11.388350 accept_connection 3 returned 4
 19:29:11.388373 Read 93 bytes
 19:29:11.388382 Process 93 bytes request
 19:29:11.388396 Got request: GET /verifiedserver HTTP/1.1
 19:29:11.388404 Are-we-friendly question received
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2414 ./libtest/libtests lib2414 - > log/9/stdout2414 2> log/9/stderr2414
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2453 ./libtest/libtests lib2453 http://127.0.0.1:34531/2453 > log/2/stdout2453 2> log/2/stderr2453
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2408 ../src/curl -q --include --trace-ascii log/15/trace2408 --trace-time "127.0.0.1:40321/{<test>2408,24080002,24080003}" -o "log/15/dump-#<test>" > log/15/stdout2408 2> log/15/stderr2408
:29:11.388428 Wrote request (93 bytes) input to log/22/server.input
 19:29:11.388443 Identifying ourselves as friends
 19:29:11.388502 Response sent (56 bytes) and written to log/22/server.response
 19:29:11.388511 special request received, no persistency
 19:29:11.388519 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 58666 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file injar2311
 example.fake	FALSE	/	FALSE	0	clean	good
 example.fake	FALSE	/	FALSE	0	bad	bad
 example.fake	FALSE	/	FALSE	0	__secure-x	yes
 example.fake	FALSE	/	FALSE	0	__Secure-y	no
=== End of file injar2311
=== Start of file server.cmd
 Testnum 2311
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind2311
 ==183640== 
 ==183640== Process terminating with default action of signal 4 (SIGILL)
 ==183640==  Illegal opcode at address 0x492B75F
 ==183640==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==183640==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==183640==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==183640==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==183640==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==183640==    by 0x49908EB: curl_version_info (version.c:600)
 ==183640==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==183640==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==183640==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==183640==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2311
test 2414 [wakeup, perform and poll needs to exit]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2414 ./libtest/libtests lib2414 - > log/9/stdout2414 2> log/9/stderr2414

libtests returned 132, when expecting 0
 2414: exit FAILED
== Contents of files in the log/9/ directory after test 2414
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2414 ./libtest/libtests lib2414 - > log/9/stdout2414 2> log/9/stderr2414
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2414
=== End of file server.cmd
=== Start of file valgrind2414
 ==184363== 
 ==184363== Process terminating with default action of signal 4 (SIGILL)
 ==184363==  Illegal opcode at address 0x51CC63F
 ==184363==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184363==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184363==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184363==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2414
test 2453 [CURLMINFO_XFERS_DONE tracks unread completion messages]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2453 ./libtest/libtests lib2453 http://127.0.0.1:34531/2453 > log/2/stdout2453 2> log/2/stderr2453

 2453: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 2453
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2453 ./libtest/libtests lib2453 http://127.0.0.1:34531/2453 > log/2/stdout2453 2> log/2/stderr2453
=== End of file commands.log
=== Start of file http_server.log
 19:29:13.823129 ====> Client connect
 19:29:13.823166 accept_connection 3 returned 4
 19:29:13.823187 Read 93 bytes
 19:29:13.823197 Process 93 bytes request
 19:29:13.823211 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.823220 Are-we-friendly question received
 19:29:13.823247 Wrote request (93 bytes) input to log/2/server.input
 19:29:13.823263 Identifying ourselves as friends
 19:29:13.823324 Response sent (56 bytes) and written to log/2/server.response
 19:29:13.823333 special request received, no persistency
 19:29:13.823341 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44972 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2453
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind2453
 ==184562== 
 ==184562== Process terminating with default action of signal 4 (SIGILL)
 ==184562==  Illegal opcode at address 0x51CC63F
 ==184562==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184562==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184562==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184562==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2453
test 2408 [multiple requests using named {} globs in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2408 ../src/curl -q --include --trace-ascii log/15/trace2408 --trace-time "127.0.0.1:40321/{<test>2408,24080002,24080003}" -o "log/15/dump-#<test>" > log/15/stdout2408 2> log/15/stderr2408

 2408: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 2408
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2408 ../src/curl -q --include --trace-ascii log/15/trace2408 --trace-time "127.0.0.1:40321/{<test>2408,24080002,24080003}" -o "log/15/dump-#<test>" > log/15/stdout2408 2> log/15/stderr2408
=== End of file commands.log
=== Start of file http_server.log
 19:29:13.151240 ====> Client connect
 19:29:13.151280 accept_connection 3 returned 4
 19:29:13.151304 Read 93 bytes
 19:29:13.151314 Process 93 bytes request
 19:29:13.151328 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.151337 Are-we-friendly question received
 19:29:13.151365 Wrote request (93 bytes) input to log/15/server.input
 19:29:13.151382 Identifying ourselves as friends
 19:29:13.151447 Response sent (56 bytes) and written to log/15/server.response
 19:29:13.151457 special request received, no persistency
 19:29:13.151466 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 50638 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start ofCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2409 ../src/curl -q --include --trace-ascii log/16/trace2409 --trace-time "127.0.0.1:35903/hello[<test>7-9]" -o "log/16/dump-#<test>" > log/16/stdout2409 2> log/16/stderr2409
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2410 ../src/curl -q --include --trace-ascii log/4/trace2410 --trace-time "https://dummy.example/{<test>A,B}{<test>C,D}" -o "log/4/dump" > log/4/stdout2410 2> log/4/stderr2410
 file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2408
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind2408
 ==184065== 
 ==184065== Process terminating with default action of signal 4 (SIGILL)
 ==184065==  Illegal opcode at address 0x492B75F
 ==184065==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184065==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184065==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184065==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184065==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184065==    by 0x49908EB: curl_version_info (version.c:600)
 ==184065==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184065==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184065==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184065==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2408
test 2409 [multiple requests using named [] globs in URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2409 ../src/curl -q --include --trace-ascii log/16/trace2409 --trace-time "127.0.0.1:35903/hello[<test>7-9]" -o "log/16/dump-#<test>" > log/16/stdout2409 2> log/16/stderr2409

 2409: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 2409
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind2409 ../src/curl -q --include --trace-ascii log/16/trace2409 --trace-time "127.0.0.1:35903/hello[<test>7-9]" -o "log/16/dump-#<test>" > log/16/stdout2409 2> log/16/stderr2409
=== End of file commands.log
=== Start of file http_server.log
 19:29:13.362129 ====> Client connect
 19:29:13.362161 accept_connection 3 returned 4
 19:29:13.362257 Read 93 bytes
 19:29:13.362268 Process 93 bytes request
 19:29:13.362279 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.362288 Are-we-friendly question received
 19:29:13.362318 Wrote request (93 bytes) input to log/16/server.input
 19:29:13.362336 Identifying ourselves as friends
 19:29:13.362388 Response sent (56 bytes) and written to log/16/server.response
 19:29:13.362397 special request received, no persistency
 19:29:13.362405 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 56654 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2409
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind2409
 ==184178== 
 ==184178== Process terminating with default action of signal 4 (SIGILL)
 ==184178==  Illegal opcode at address 0x492B75F
 ==184178==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184178==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184178==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184178==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184178==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184178==    by 0x49908EB: curl_version_info (version.c:600)
 ==184178==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184178==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184178==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184178==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2409
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2504 ./libtest/libtests lib2504 http://127.0.0.1:36161 > log/3/stdout2504 2> log/3/stderr2504
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2601 ./unit/units unit2601 - > log/7/stdout2601 2> log/7/stderr2601
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2506 ./libtest/libtests lib2506 http://127.0.0.1:38895 http://site.example/ log/24/netrc2506 > log/24/stdout2506 2> log/24/stderr2506
test 2410 [duplicate named glob]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2410 ../src/curl -q --include --trace-ascii log/4/trace2410 --trace-time "https://dummy.example/{<test>A,B}{<test>C,D}" -o "log/4/dump" > log/4/stdout2410 2> log/4/stderr2410

 2410: stderr FAILED:
--- log/4/check-expected	2026-10-15 19:29:14.617441944 +0000
+++ log/4/check-generated	2026-10-15 19:29:14.612539536 +0000
@@ -1,3 +0,0 @@
-curl: (3) Duplicate glob name in position 40:[CR][LF]
-https://dummy.example/{<test>A,B}{<test>C,D}[CR][LF]
-                                       ^[CR][LF]
== Contents of files in the log/4/ directory after test 2410
=== Start of file check-expected
 curl: (3) Duplicate glob name in position 40:[CR][LF]
 https://dummy.example/{<test>A,B}{<test>C,D}[CR][LF]
                                        ^[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind2410 ../src/curl -q --include --trace-ascii log/4/trace2410 --trace-time "https://dummy.example/{<test>A,B}{<test>C,D}" -o "log/4/dump" > log/4/stdout2410 2> log/4/stderr2410
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2410
=== End of file server.cmd
=== Start of file valgrind2410
 ==184145== 
 ==184145== Process terminating with default action of signal 4 (SIGILL)
 ==184145==  Illegal opcode at address 0x492B75F
 ==184145==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184145==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184145==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184145==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184145==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184145==    by 0x49908EB: curl_version_info (version.c:600)
 ==184145==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184145==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184145==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184145==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2410
test 2504 [custom Host with cookie, handle reuse, no custom Host:]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2504 ./libtest/libtests lib2504 http://127.0.0.1:36161 > log/3/stdout2504 2> log/3/stderr2504

 2504: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 2504
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind2504 ./libtest/libtests lib2504 http://127.0.0.1:36161 > log/3/stdout2504 2> log/3/stderr2504
=== End of file commands.log
=== Start of file http_server.log
 19:29:14.030422 ====> Client connect
 19:29:14.030461 accept_connection 3 returned 4
 19:29:14.030482 Read 93 bytes
 19:29:14.030492 Process 93 bytes request
 19:29:14.030503 Got request: GET /verifiedserver HTTP/1.1
 19:29:14.030511 Are-we-friendly question received
 19:29:14.030535 Wrote request (93 bytes) input to log/3/server.input
 19:29:14.030549 Identifying ourselves as friends
 19:29:14.030606 Response sent (56 bytes) and written to log/3/server.response
 19:29:14.030615 special request received, no persistency
 19:29:14.030622 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 57858 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2504
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind2504
 ==184715== 
 ==184715== Process terminating with default action of signal 4 (SIGILL)
 ==184715==  Illegal opcode at address 0x51CC63F
 ==184715==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184715==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184715==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184715==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2504
test 2601 [bufq unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2601 ./unit/units unit2601 - > log/7/stdout2601 2> log/7/stderr2601

units returned 132, when expecting 0
 2601: exit FAILED
== Contents of files in the log/7/ directory after test 2601
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind2601 ./unit/units unit2601 - > log/7/stdout2601 2> log/7/stderr2601
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2601
=== End of file server.cmd
=== Start of file valgrind2601
 ==184844== 
 ==184844== Process terminating with default action of signal 4 (SIGILL)
 ==184844==  Illegal opcode at address 0x4091F7F
 ==184844==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==184844==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==184844==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==184844==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2601
test 2506 [netrc with redirect using proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2506 ./libtest/libtests lib2506 http://127.0.0.1:38895 http://site.example/ log/24/netrc2506 > log/24/stdout2506 2> log/24/stderr2506

 2506: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 2506
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind2506 ./libtest/libtests lib2506 http://127.0.0.1:38895 http://site.example/ log/24/netrc2506 > log/24/stdout2506 2> log/24/stderr2506
=== End of file commands.log
=== Start of file http_server.log
 19:29:13.207658 ====> Client connect
 19:29:13.207692 accept_connection 3 returned 4
 19:29:13.207714 Read 93 bytes
 19:29:13.207724 Process 93 bytes request
 19:29:13.207737 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.207745 Are-we-friendly question received
 19:29:13.207771 Wrote request (93 bytes) input to log/24/server.input
 19:29:13.207788 Identifying ourselves as friends
 19:29:13.207853 Response sent (56 bytes) and written to log/24/server.response
 19:29:13.207863 special request received, no persistency
 19:29:13.207871 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 33046 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of fCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2411 ../src/curl -q --include --trace-ascii log/19/trace2411 --trace-time "127.0.0.1:37077/{<test>A,B}{<moo>C,D}" -o "somewhere/#<foo>" > log/19/stdout2411 2> log/19/stderr2411
ile http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file netrc2506
 machine site.example login batman password robin
=== End of file netrc2506
=== Start of file server.cmd
 Testnum 2506
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind2506
 ==184819== 
 ==184819== Process terminating with default action of signal 4 (SIGILL)
 ==184819==  Illegal opcode at address 0x51CC63F
 ==184819==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184819==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184819==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184819==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2506
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2505 ./libtest/libtests lib2505 http://127.0.0.1:43739 > log/18/stdout2505 2> log/18/stderr2505
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2602 ./unit/units unit2602 - > log/1/stdout2602 2> log/1/stderr2602
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2415 ../src/curl -q --include --trace-ascii log/12/trace2415 --trace-time "127.0.0.1:40921/test" -o "somewhere/#<foo>" > log/12/stdout2415 2> log/12/stderr2415
test 2411 [reference a named glob not set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2411 ../src/curl -q --include --trace-ascii log/19/trace2411 --trace-time "127.0.0.1:37077/{<test>A,B}{<moo>C,D}" -o "somewhere/#<foo>" > log/19/stdout2411 2> log/19/stderr2411

 2411: stderr FAILED:
--- log/19/check-expected	2026-10-15 19:29:15.210360220 +0000
+++ log/19/check-generated	2026-10-15 19:29:15.209372760 +0000
@@ -1,3 +0,0 @@
-curl: (43) no glob exists with this name in position 16:[CR][LF]
-somewhere/#<foo>[CR][LF]
-               ^[CR][LF]
== Contents of files in the log/19/ directory after test 2411
=== Start of file check-expected
 curl: (43) no glob exists with this name in position 16:[CR][LF]
 somewhere/#<foo>[CR][LF]
                ^[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind2411 ../src/curl -q --include --trace-ascii log/19/trace2411 --trace-time "127.0.0.1:37077/{<test>A,B}{<moo>C,D}" -o "somewhere/#<foo>" > log/19/stdout2411 2> log/19/stderr2411
=== End of file commands.log
=== Start of file http_server.log
 19:29:12.476592 ====> Client connect
 19:29:12.476627 accept_connection 3 returned 4
 19:29:12.481072 Read 93 bytes
 19:29:12.481092 Process 93 bytes request
 19:29:12.481106 Got request: GET /verifiedserver HTTP/1.1
 19:29:12.481115 Are-we-friendly question received
 19:29:12.481152 Wrote request (93 bytes) input to log/19/server.input
 19:29:12.481170 Identifying ourselves as friends
 19:29:12.481235 Response sent (57 bytes) and written to log/19/server.response
 19:29:12.481245 special request received, no persistency
 19:29:12.481253 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 53100 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2411
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind2411
 ==184279== 
 ==184279== Process terminating with default action of signal 4 (SIGILL)
 ==184279==  Illegal opcode at address 0x492B75F
 ==184279==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184279==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184279==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184279==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184279==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184279==    by 0x49908EB: curl_version_info (version.c:600)
 ==184279==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184279==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184279==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184279==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2411
test 2505 [verify CURLOPT_AUTOREFERER switched off]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2505 ./libtest/libtests lib2505 http://127.0.0.1:43739 > log/18/stdout2505 2> log/18/stderr2505

 2505: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 2505
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind2505 ./libtest/libtests lib2505 http://127.0.0.1:43739 > log/18/stdout2505 2> log/18/stderr2505
=== End of file commands.log
=== Start of file http_server.log
 19:29:14.109366 ====> Client connect
 19:29:14.109406 accept_connection 3 returned 4
 19:29:14.109427 Read 93 bytes
 19:29:14.109437 Process 93 bytes request
 19:29:14.109450 Got request: GET /verifiedserver HTTP/1.1
 19:29:14.109458 Are-we-friendly question received
 19:29:14.109486 Wrote request (93 bytes) input to log/18/server.input
 19:29:14.109501 Identifying ourselves as friends
 19:29:14.109562 Response sent (56 bytes) and written to log/18/server.response
 19:29:14.109571 special request received, no persistency
 19:29:14.109578 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 44356 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2505
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind2505
 ==184752== 
 ==184752== Process terminating with default action of signal 4 (SIGILL)
 ==184752==  Illegal opcode at address 0x51CC63F
 ==184752==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==184752==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==184752==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==184752==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2505
test 2602 [dynhds unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2602 ./unit/units unit2602 - > log/1/stdout2602 2> log/1/stderr2602

units returned 132, when expecting 0
 2602: exit FAILED
== Contents of files in the log/1/ directory after test 2602
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind2602 ./unit/units unit2602 - > log/1/stdout2602 2> log/1/stderr2602
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2602
=== End of file server.cmd
=== Start of file valgrind2602
 ==184993== 
 ==184993== Process terminating with default action of signal 4 (SIGILL)
 ==184993==  Illegal opcode at address 0x4091F7F
 ==184993==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==184993==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==184993==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==184993==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2602
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2603 ./unit/units unit2603 - > log/6/stdout2603 2> log/6/stderr2603
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2604 ./unit/units unit2604 - > log/20/stdout2604 2> log/20/stderr2604
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2429 ../src/curl -q --output log/17/curl2429.out  --include --trace-ascii log/17/trace2429 --trace-time http://127.0.0.1:35993/2429 --netrc --netrc-file log/17/netrc > log/17/stdout2429 2> log/17/stderr2429
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2605 ./unit/units unit2605 - > log/13/stdout2605 2> log/13/stderr2605
test 2415 [reference a named glob with a literal URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2415 ../src/curl -q --include --trace-ascii log/12/trace2415 --trace-time "127.0.0.1:40921/test" -o "somewhere/#<foo>" > log/12/stdout2415 2> log/12/stderr2415

 2415: stderr FAILED:
--- log/12/check-expected	2026-10-15 19:29:15.299377429 +0000
+++ log/12/check-generated	2026-10-15 19:29:15.295864980 +0000
@@ -1,3 +0,0 @@
-curl: (43) no glob exists with this name in position 16:[CR][LF]
-somewhere/#<foo>[CR][LF]
-               ^[CR][LF]
== Contents of files in the log/12/ directory after test 2415
=== Start of file check-expected
 curl: (43) no glob exists with this name in position 16:[CR][LF]
 somewhere/#<foo>[CR][LF]
                ^[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind2415 ../src/curl -q --include --trace-ascii log/12/trace2415 --trace-time "127.0.0.1:40921/test" -o "somewhere/#<foo>" > log/12/stdout2415 2> log/12/stderr2415
=== End of file commands.log
=== Start of file http_server.log
 19:29:12.699754 ====> Client connect
 19:29:12.699792 accept_connection 3 returned 4
 19:29:12.699890 Read 93 bytes
 19:29:12.699905 Process 93 bytes request
 19:29:12.699918 Got request: GET /verifiedserver HTTP/1.1
 19:29:12.699927 Are-we-friendly question received
 19:29:12.699958 Wrote request (93 bytes) input to log/12/server.input
 19:29:12.699976 Identifying ourselves as friends
 19:29:12.700039 Response sent (56 bytes) and written to log/12/server.response
 19:29:12.700050 special request received, no persistency
 19:29:12.700059 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 60202 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2415
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind2415
 ==184481== 
 ==184481== Process terminating with default action of signal 4 (SIGILL)
 ==184481==  Illegal opcode at address 0x492B75F
 ==184481==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184481==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184481==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184481==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184481==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184481==    by 0x49908EB: curl_version_info (version.c:600)
 ==184481==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184481==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184481==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2415
test 2603 [http1 parser unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2603 ./unit/units unit2603 - > log/6/stdout2603 2> log/6/stderr2603

units returned 132, when expecting 0
 2603: exit FAILED
== Contents of files in the log/6/ directory after test 2603
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind2603 ./unit/units unit2603 - > log/6/stdout2603 2> log/6/stderr2603
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2603
=== End of file server.cmd
=== Start of file valgrind2603
 ==185008== 
 ==185008== Process terminating with default action of signal 4 (SIGILL)
 ==185008==  Illegal opcode at address 0x4091F7F
 ==185008==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==185008==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==185008==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==185008==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2603
test 2604 [Curl_get_pathname unit test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2604 ./unit/units unit2604 - > log/20/stdout2604 2> log/20/stderr2604

units returned 132, when expecting 0
 2604: exit FAILED
== Contents of files in the log/20/ directory after test 2604
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind2604 ./unit/units unit2604 - > log/20/stdout2604 2> log/20/stderr2604
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2604
=== End of file server.cmd
=== Start of file valgrind2604
 ==185070== 
 ==185070== Process terminating with default action of signal 4 (SIGILL)
 ==185070==  Illegal opcode at address 0x4091F7F
 ==185070==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==185070==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==185070==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==185070==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2604
test 2429 [use netrc file with only comments]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2429 ../src/curl -q --output log/17/curl2429.out  --include --trace-ascii log/17/trace2429 --trace-time http://127.0.0.1:35993/2429 --netrc --netrc-file log/17/netrc > log/17/stdout2429 2> log/17/stderr2429

 2429: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 2429
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind2429 ../src/curl -q --output log/17/curl2429.out  --include --trace-ascii log/17/trace2429 --trace-time http://127.0.0.1:35993/2429 --netrc --netrc-file log/17/netrc > log/17/stdout2429 2> log/17/stderr2429
=== End of file commands.log
=== Start of file http_server.log
 19:29:13.771980 ====> Client connect
 19:29:13.772017 accept_connection 3 returned 4
 19:29:13.772037 Read 93 bytes
 19:29:13.772047 Process 93 bytes request
 19:29:13.772059 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.772068 Are-we-friendly question received
 19:29:13.772094 Wrote request (93 bytes) input to log/17/server.input
 19:29:13.772109 Identifying ourselves as friends
 19:29:13.772174 Response sent (56 bytes) and written to log/17/server.response
 19:29:13.772184 special request received, no persistency
 19:29:13.772193 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 45484 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== ECMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2606 ./unit/units unit2606 - > log/23/stdout2606 2> log/23/stderr2606
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2582 ../src/curl -q --output log/10/curl2582.out  --include --trace-ascii log/10/trace2582 --trace-time --resolve my-machine:40913:127.0.0.1 -b "log/10/dump2582" http://my-machine:40913/2582 > log/10/stdout2582 2> log/10/stderr2582
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2924 ./libtest/libtests lib2924 http://127.0.0.1:40321/2924 > log/15/stdout2924 2> log/15/stderr2924
nd of file http_verify.out
=== Start of file netrc
 # only a comment line
=== End of file netrc
=== Start of file server.cmd
 Testnum 2429
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind2429
 ==184533== 
 ==184533== Process terminating with default action of signal 4 (SIGILL)
 ==184533==  Illegal opcode at address 0x492B75F
 ==184533==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184533==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184533==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184533==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184533==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184533==    by 0x49908EB: curl_version_info (version.c:600)
 ==184533==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184533==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184533==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184533==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2429
test 2605 [Curl_ssh_range unit test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2605 ./unit/units unit2605 - > log/13/stdout2605 2> log/13/stderr2605

units returned 132, when expecting 0
 2605: exit FAILED
== Contents of files in the log/13/ directory after test 2605
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind2605 ./unit/units unit2605 - > log/13/stdout2605 2> log/13/stderr2605
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2605
=== End of file server.cmd
=== Start of file valgrind2605
 ==185071== 
 ==185071== Process terminating with default action of signal 4 (SIGILL)
 ==185071==  Illegal opcode at address 0x4091F7F
 ==185071==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==185071==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==185071==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==185071==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2605
test 2606 [Curl_conn_adjust_pollset unit test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2606 ./unit/units unit2606 - > log/23/stdout2606 2> log/23/stderr2606

units returned 132, when expecting 0
 2606: exit FAILED
== Contents of files in the log/23/ directory after test 2606
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind2606 ./unit/units unit2606 - > log/23/stdout2606 2> log/23/stderr2606
=== End of file commands.log
=== Start of file server.cmd
 Testnum 2606
=== End of file server.cmd
=== Start of file valgrind2606
 ==185097== 
 ==185097== Process terminating with default action of signal 4 (SIGILL)
 ==185097==  Illegal opcode at address 0x4091F7F
 ==185097==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==185097==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==185097==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==185097==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind2606
test 2582 [Get cookies from jar using single-component domain name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2582 ../src/curl -q --output log/10/curl2582.out  --include --trace-ascii log/10/trace2582 --trace-time --resolve my-machine:40913:127.0.0.1 -b "log/10/dump2582" http://my-machine:40913/2582 > log/10/stdout2582 2> log/10/stderr2582

 2582: protocol FAILED!
 There was no content at all in the file log/10/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/10/ directory after test 2582
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind2582 ../src/curl -q --output log/10/curl2582.out  --include --trace-ascii log/10/trace2582 --trace-time --resolve my-machine:40913:127.0.0.1 -b "log/10/dump2582" http://my-machine:40913/2582 > log/10/stdout2582 2> log/10/stderr2582
=== End of file commands.log
=== Start of file dump2582
 # Netscape HTTP Cookie File
 # https://curl.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 my-machine	FALSE	/	FALSE	0	world	crazy
=== End of file dump2582
=== Start of file http_server.log
 19:29:13.307686 ====> Client connect
 19:29:13.307728 accept_connection 3 returned 4
 19:29:13.307752 Read 93 bytes
 19:29:13.307761 Process 93 bytes request
 19:29:13.307774 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.307782 Are-we-friendly question received
 19:29:13.307808 Wrote request (93 bytes) input to log/10/server.input
 19:29:13.307823 Identifying ourselves as friends
 19:29:13.307904 Response sent (56 bytes) and written to log/10/server.response
 19:29:13.307914 special request received, no persistency
 19:29:13.307922 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40913...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40913) from 127.0.0.1 port 43484 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40913
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40913 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79067
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2582
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79067
=== End of file server.response
=== Start of file valgrind2582
 ==184886== 
 ==184886== Process terminating with default action of signal 4 (SIGILL)
 ==184886==  Illegal opcode at address 0x492B75F
 ==184886==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==184886==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==184886==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==184886==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==184886==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==184886==    by 0x49908EB: curl_version_info (version.c:600)
 ==184886==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==184886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==184886==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==184886==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2582
test 2924 [CURLOPT_HTTP_TRANSFER_DECODING, chunked + Content-Length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2924 ./libtest/libtests lib2924 http://127.0.0.1:40321/2924 > log/15/stdout2924 2> log/15/stderr2924

 2924: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 2924
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind2924 ./libtest/libtests lib2924 http://127.0.0.1:40321/2924 > log/15/stdout2924 2> log/15/stderr2924
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.179016 ====> Client connect
 19:29:15.179056 accept_connection 3 returned 4
 19:29:15.179081 Read 93 bytes
 1CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2805 ./libtest/libtests lib2805 ftp://127.0.0.1:33255/fully_simulated/percen%74/*.txt > log/22/stdout2805 2> log/22/stderr2805
9:29:15.179092 Process 93 bytes request
 19:29:15.179105 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.179114 Are-we-friendly question received
 19:29:15.179143 Wrote request (93 bytes) input to log/15/server.input
 19:29:15.179162 Identifying ourselves as friends
 19:29:15.179232 Response sent (56 bytes) and written to log/15/server.response
 19:29:15.179244 special request received, no persistency
 19:29:15.179252 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40321...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40321) from 127.0.0.1 port 50654 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40321
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40321 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78991
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2924
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78991
=== End of file server.response
=== Start of file valgrind2924
 ==185330== 
 ==185330== Process terminating with default action of signal 4 (SIGILL)
 ==185330==  Illegal opcode at address 0x51CC63F
 ==185330==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==185330==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==185330==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==185330==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2924
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3010 ./libtest/libtests lib3010 127.0.0.1:40921/3010 > log/12/stdout3010 2> log/12/stderr3010
test 2805 [FTP wildcards with percent sign in file name]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2805 ./libtest/libtests lib2805 ftp://127.0.0.1:33255/fully_simulated/percen%74/*.txt > log/22/stdout2805 2> log/22/stderr2805

 2805: stdout FAILED:
--- log/22/check-expected	2026-10-15 19:29:15.942511318 +0000
+++ log/22/check-generated	2026-10-15 19:29:15.939190557 +0000
@@ -1,4 +0,0 @@
-match: 'someothertext.txt' against pattern '*.txt'[LF]
-match: 'some%2etxt' against pattern '*.txt'[LF]
-Some junk ;-) This file does not really exist.[LF]
-percent in file name.[LF]
== Contents of files in the log/22/ directory after test 2805
=== Start of file check-expected
 match: 'someothertext.txt' against pattern '*.txt'[LF]
 match: 'some%2etxt' against pattern '*.txt'[LF]
 Some junk ;-) This file does not really exist.[LF]
 percent in file name.[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind2805 ./libtest/libtests lib2805 ftp://127.0.0.1:33255/fully_simulated/percen%74/*.txt > log/22/stdout2805 2> log/22/stderr2805
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:14.324499 ====> Client connect
 19:29:14.324729 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:14.325075 < "USER anonymous"
 19:29:14.325118 > "331 We are happy you popped in![CR][LF]"
 19:29:14.325394 < "PASS ftp@example.com"
 19:29:14.325435 > "230 Welcome you silly person[CR][LF]"
 19:29:14.325626 < "PWD"
 19:29:14.325669 > "257 "/" is current directory[CR][LF]"
 19:29:14.325868 < "EPSV"
 19:29:14.325896 ====> Passive DATA channel requested by client
 19:29:14.325913 DATA sockfilt for passive data channel starting...
 19:29:14.338697 DATA sockfilt for passive data channel started (pid 185206)
 19:29:14.338883 DATA sockfilt for passive data channel listens on port 38253
 19:29:14.338936 > "229 Entering Passive Mode (|||38253|)[CR][LF]"
 19:29:14.338954 Client has been notified that upcoming DATA connection is awaited on port 38253
 19:29:14.339249 Client connects to port 38253
 19:29:14.339286 ====> Client established passive DATA connection on port 38253
 19:29:14.339393 < "TYPE I"
 19:29:14.339432 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:14.339636 < "SIZE verifiedserver"
 19:29:14.339684 > "213 17[CR][LF]"
 19:29:14.339875 < "RETR verifiedserver"
 19:29:14.339920 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:14.340025 =====> Closing passive DATA connection...
 19:29:14.340046 Server disconnects passive DATA connection
 19:29:14.340293 Server disconnected passive DATA connection
 19:29:14.340323 DATA sockfilt for passive data channel quits (pid 185206)
 19:29:14.340651 DATA sockfilt for passive data channel quit (pid 185206)
 19:29:14.340680 =====> Closed passive DATA connection
 19:29:14.340710 > "226 File transfer complete[CR][LF]"
 19:29:14.388858 < "QUIT"
 19:29:14.388914 > "221 bye bye baby[CR][LF]"
 19:29:14.395364 MAIN sockfilt said DISC
 19:29:14.395433 ====> Client disconnected
 19:29:14.395517 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:14.926668 ====> Client connect
 19:29:14.927059 Received DATA (on stdin)
 19:29:14.927077 > 146 bytes data, server => client
 19:29:14.927089 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:14.927099 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:14.927109 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:14.927219 < 16 bytes data, client => server
 19:29:14.927236 'USER anonymous\r\n'
 19:29:14.927432 Received DATA (on stdin)
 19:29:14.927445 > 33 bytes data, server => client
 19:29:14.927456 '331 We are happy you popped in!\r\n'
 19:29:14.927517 < 22 bytes data, client => server
 19:29:14.927531 'PASS ftp@example.com\r\n'
 19:29:14.927748 Received DATA (on stdin)
 19:29:14.927761 > 30 bytes data, server => client
 19:29:14.927771 '230 Welcome you silly person\r\n'
 19:29:14.927830 < 5 bytes data, client => server
 19:29:14.927844 'PWD\r\n'
 19:29:14.927980 Received DATA (on stdin)
 19:29:14.927996 > 30 bytes data, server => client
 19:29:14.928007 '257 "/" is current directory\r\n'
 19:29:14.928076 < 6 bytes data, client => server
 19:29:14.928090 'EPSV\r\n'
 19:29:14.941271 Received DATA (on stdin)
 19:29:14.941288 > 39 bytes data, server => client
 19:29:14.941299 '229 Entering Passive Mode (|||38253|)\r\n'
 19:29:14.941469 < 8 bytes data, client => server
 19:29:14.941483 'TYPE I\r\n'
 19:29:14.941741 Received DATA (on stdin)
 19:29:14.941754 > 33 bytes data, server => client
 19:29:14.941764 '200 I modify TYPE as you wanted\r\n'
 19:29:14.941832 < 21 bytes data, client => server
 19:29:14.941846 'SIZE verifiedserver\r\n'
 19:29:14.941996 Received DATA (on stdin)
 19:29:14.942009 > 8 bytes data, server => client
 19:29:14.942019 '213 17\r\n'
 19:29:14.942080 < 21 bytes data, client => server
 19:29:14.942094 'RETR verifiedserver\r\n'
 19:29:14.942356 Received DATA (on stdin)
 19:29:14.942368 > 29 bytes data, server => client
 19:29:14.942377 '150 Binary junk (17 bytes).\r\n'
 19:29:14.943020 Received DATA (on stdin)
 19:29:14.943032 > 28 bytes data, server => client
 19:29:14.943042 '226 File transfer complete\r\n'
 19:29:14.990969 < 6 bytes data, client => server
 19:29:14.990999 'QUIT\r\n'
 19:29:14.991226 Received DATA (on stdin)
 19:29:14.991238 > 18 bytes data, server => client
 19:29:14.991248 '221 bye bye baby\r\n'
 19:29:14.995345 ====> Client disconnect
 19:29:14.997827 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:14.932078 Running IPv4 version
 19:29:14.932155 Listening on port 38253
 19:29:14.932198 Wrote pid 185206 to log/22/server/ftp_sockdata.pid
 19:29:14.937618 Received PING (on stdin)
 19:29:14.941074 Received PORT (on stdin)
 19:29:14.941504 ====> Client connect
 19:29:14.942406 Received DATA (on stdin)
 19:29:14.942420 > 17 bytes data, server => client
 19:29:14.942430 'WE ROOLZ: 84714\r\n'
 19:29:14.942456 Received DISC (on stdin)
 19:29:14.942470 ====> Client forcibly disconnected
 19:29:14.942642 Received QUIT (on stdin)
 19:29:14.942654 quits
 19:29:14.942738 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 2805
=== End of file server.cmd
=== Start of file valgrind2805
 ==185255== 
 ==185255== Process terminating with default action of signal 4 (SIGILL)
 ==185255==  Illegal opcode at address 0x51CC63F
 ==185255==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==185255==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==185255==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==185255==    by 0x40041AF: main (first.c:264)
=== End of file valgrind2805
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2824 ../src/curl -q --output log/9/curl2824.out  --include --trace-ascii log/9/trace2824 --trace-time http://test.remote.example.com.2824:1024/path/28240003 --proxy http://127.0.0.1:43733 --proxy-user testuser:testpass --proxy-anyauth --proxytunnel --connect-timeout 10 > log/9/stdout2824 2> log/9/stderr2824
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2918 ../src/curl -q --output log/2/curl2918.out  --include --trace-ascii log/2/trace2918 --trace-time http://127.0.0.1:34531/2918 --raw > log/2/stdout2918 2> log/2/stderr2918
test 3010 [HTTP retry-after reset]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3010 ./libtest/libtests lib3010 127.0.0.1:40921/3010 > log/12/stdout3010 2> log/12/stderr3010

 3010: stdout FAILED:
--- log/12/check-expected	2026-10-15 19:29:16.419979216 +0000
+++ log/12/check-generated	2026-10-15 19:29:16.415851114 +0000
@@ -1,2 +0,0 @@
-Retry-After 2[LF]
-Retry-After 0[LF]
== Contents of files in the log/12/ directory after test 3010
=== Start of file check-expected
 Retry-After 2[LF]
 Retry-After 0[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3010 ./libtest/libtests lib3010 127.0.0.1:40921/3010 > log/12/stdout3010 2> log/12/stderr3010
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.006792 ====> Client connect
 19:29:15.006832 accept_connection 3 returned 4
 19:29:15.006992 Read 93 bytes
 19:29:15.007010 Process 93 bytes request
 19:29:15.007023 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.007032 Are-we-friendly question received
 19:29:15.007066 Wrote request (93 bytes) input to log/12/server.input
 19:29:15.007084 Identifying ourselves as friends
 19:29:15.007151 Response sent (56 bytes) and written to log/12/server.response
 19:29:15.007161 special request received, no persistency
 19:29:15.007169 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 60206 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3010
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind3010
 ==185958== 
 ==185958== Process terminating with default action of signal 4 (SIGILL)
 ==185958==  Illegal opcode at address 0x51CC63F
 ==185958==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==185958==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==185958==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==185958==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3010
test 2824 [HTTP proxy CONNECT 2 407s, chunked-encoded and 0-length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2824 ../src/curl -q --output log/9/curl2824.out  --include --trace-ascii log/9/trace2824 --trace-time http://test.remote.example.com.2824:1024/path/28240003 --proxy http://127.0.0.1:43733 --proxy-user testuser:testpass --proxy-anyauth --proxytunnel --connect-timeout 10 > log/9/stdout2824 2> log/9/stderr2824

 2824: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 2824
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind2824 ../src/curl -q --output log/9/curl2824.out  --include --trace-ascii log/9/trace2824 --trace-time http://test.remote.example.com.2824:1024/path/28240003 --proxy http://127.0.0.1:43733 --proxy-user testuser:testpass --proxy-anyauth --proxytunnel --connect-timeout 10 > log/9/stdout2824 2> log/9/stderr2824
=== End of file commands.log
=== Start of file http_server.log
 19:29:13.937695 ====> Client connect
 19:29:13.937747 accept_connection 3 returned 4
 19:29:13.937779 Read 93 bytes
 19:29:13.937791 Process 93 bytes request
 19:29:13.937805 Got request: GET /verifiedserver HTTP/1.1
 19:29:13.937814 Are-we-friendly question received
 19:29:13.937845 Wrote request (93 bytes) input to log/9/server.input
 19:29:13.937863 Identifying ourselves as friends
 19:29:13.937964 Response sent (56 bytes) and written to log/9/server.response
 19:29:13.937977 special request received, no persistency
 19:29:13.937986 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 36626 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 2824
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind2824
 ==185208== 
 ==185208== Process terminating with default action of signal 4 (SIGILL)
 ==185208==  Illegal opcode at address 0x492B75F
 ==185208==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185208==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185208==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185208==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185208==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185208==    by 0x49908EB: curl_version_info (version.c:600)
 ==185208==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185208==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185208==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185208==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2824
test 2918 [Ignore content-length with Transfer-Encoding]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2918 ../src/curl -q --output log/2/curl2918.out  --include --trace-ascii log/2/trace2918 --trace-time http://127.0.0.1:34531/2918 --raw > log/2/stdout2918 2> log/2/stderr2918

 2918: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 2918
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind2918 ../src/curl -q --output log/2/curl2918.out  --include --trace-ascii log/2/trace2918 --trace-time http://127.0.0.1:34531/2918 --raw > log/2/stdout2918 2> log/2/stderr2918
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.127750 ====> Client connect
 19:29:15.127790 accept_connection 3 returned 4
 19:29:15.127939 Read 93 bytes
 19:29:15.127953 Process 93 bytes request
 19:29:15.127965 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.127973 Are-we-friendly question received
 19:29:15.128003 Wrote request (93 bytes) input to log/2/server.input
 19:29:15.128018 Identifying ourselves as friends
 19:29:15.128073 Response sent (56 bytes) and written to log/2/server.response
 19:29:15.128081 special request received, no persistency
 19:29:15.128089 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44982 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3003 ../src/curl -q --output log/4/curl3003.out  --include --trace-ascii log/4/trace3003 --trace-time smtp://127.0.0.1:32885/3003 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/4/stdin-for-3003 > log/4/stdout3003 2> log/4/stderr3003
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3004 ../src/curl -q --output log/7/curl3004.out  --include --trace-ascii log/7/trace3004 --trace-time smtp://127.0.0.1:33449/3004 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/7/stdin-for-3004 > log/7/stdout3004 2> log/7/stderr3004
> Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 2918
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind2918
 ==185318== 
 ==185318== Process terminating with default action of signal 4 (SIGILL)
 ==185318==  Illegal opcode at address 0x492B75F
 ==185318==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185318==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185318==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185318==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185318==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185318==    by 0x49908EB: curl_version_info (version.c:600)
 ==185318==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185318==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185318==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185318==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind2918
test 3003 [SMTP invalid (last) --mail-rcpt and --mail-rcpt-allowfails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3003 ../src/curl -q --output log/4/curl3003.out  --include --trace-ascii log/4/trace3003 --trace-time smtp://127.0.0.1:32885/3003 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/4/stdin-for-3003 > log/4/stdout3003 2> log/4/stderr3003

 3003: protocol FAILED!
 There was no content at all in the file log/4/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/4/ directory after test 3003
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3003 ../src/curl -q --output log/4/curl3003.out  --include --trace-ascii log/4/trace3003 --trace-time smtp://127.0.0.1:32885/3003 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/4/stdin-for-3003 > log/4/stdout3003 2> log/4/stderr3003
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3003
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:14.698636 ====> Client connect
 19:29:14.698961 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:14.699972 < "EHLO verifiedserver"
 19:29:14.700027 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:14.700236 < "HELP"
 19:29:14.700269 > "214 WE ROOLZ: 113210[CR][LF]"
 19:29:14.700282 return proof we are we
 19:29:14.700476 < "QUIT"
 19:29:14.700504 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:14.701709 MAIN sockfilt said DISC
 19:29:14.701742 ====> Client disconnected
 19:29:14.701809 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:14.300171 ====> Client connect
 19:29:14.301298 Received DATA (on stdin)
 19:29:14.301321 > 146 bytes data, server => client
 19:29:14.301334 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:14.301345 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:14.301356 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:14.302066 < 21 bytes data, client => server
 19:29:14.302086 'EHLO verifiedserver\r\n'
 19:29:14.302350 Received DATA (on stdin)
 19:29:14.302364 > 53 bytes data, server => client
 19:29:14.302375 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:14.302439 < 6 bytes data, client => server
 19:29:14.302451 'HELP\r\n'
 19:29:14.302588 Received DATA (on stdin)
 19:29:14.302598 > 22 bytes data, server => client
 19:29:14.302609 '214 WE ROOLZ: 113210\r\n'
 19:29:14.302699 < 6 bytes data, client => server
 19:29:14.302709 'QUIT\r\n'
 19:29:14.302812 Received DATA (on stdin)
 19:29:14.302822 > 35 bytes data, server => client
 19:29:14.302832 '221 curl ESMTP server signing off\r\n'
 19:29:14.303540 ====> Client disconnect
 19:29:14.304118 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3003
 From: different
 To: another
 body
=== End of file stdin-for-3003
=== Start of file valgrind3003
 ==185468== 
 ==185468== Process terminating with default action of signal 4 (SIGILL)
 ==185468==  Illegal opcode at address 0x492B75F
 ==185468==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185468==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185468==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185468==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185468==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185468==    by 0x49908EB: curl_version_info (version.c:600)
 ==185468==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185468==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185468==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185468==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3003
test 3004 [SMTP invalid (middle) --mail-rcpt and --mail-rcpt-allowfails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3004 ../src/curl -q --output log/7/curl3004.out  --include --trace-ascii log/7/trace3004 --trace-time smtp://127.0.0.1:33449/3004 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/7/stdin-for-3004 > log/7/stdout3004 2> log/7/stderr3004

 3004: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 3004
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3004 ../src/curl -q --output log/7/curl3004.out  --include --trace-ascii log/7/trace3004 --trace-time smtp://127.0.0.1:33449/3004 --mail-rcpt-allowfails --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/7/stdin-for-3004 > log/7/stdout3004 2> log/7/stderr3004
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3004
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:14.827198 ====> Client connect
 19:29:14.827399 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:14.827793 < "EHLO verifiedserver"
 19:29:14.827853 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:14.832147 < "HELP"
 19:29:14.832230 > "214 WE ROOLZ: 127841[CR][LF]"
 19:29:14.832256 return proof we are we
 19:29:14.832635 < "QUIT"
 19:29:14.832690 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:14.834157 MAIN sockfilt said DISC
 19:29:14.834199 ====> Client disconnected
 19:29:14.834294 Awaiting input
=== EndCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3005 ../src/curl -q --output log/3/curl3005.out  --include --trace-ascii log/3/trace3005 --trace-time smtp://127.0.0.1:38593/3005 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/3/stdin-for-3005 > log/3/stdout3005 2> log/3/stderr3005
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3008 ../src/curl -q --trace-ascii log/18/trace3008 --trace-time http://127.0.0.1:43739/this/is/the/3008 -O --output-dir /startdir/src/build-curl/tests/log/18 > log/18/stdout3008 2> log/18/stderr3008
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3002 ../src/curl -q --output log/16/curl3002.out  --include --trace-ascii log/16/trace3002 --trace-time smtp://127.0.0.1:33205/3002 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/16/stdin-for-3002 > log/16/stdout3002 2> log/16/stderr3002
 of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:15.429362 ====> Client connect
 19:29:15.429738 Received DATA (on stdin)
 19:29:15.429758 > 146 bytes data, server => client
 19:29:15.429771 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:15.429781 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:15.429791 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:15.429928 < 21 bytes data, client => server
 19:29:15.429946 'EHLO verifiedserver\r\n'
 19:29:15.430177 Received DATA (on stdin)
 19:29:15.430190 > 53 bytes data, server => client
 19:29:15.430200 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:15.430272 < 6 bytes data, client => server
 19:29:15.430286 'HELP\r\n'
 19:29:15.434585 Received DATA (on stdin)
 19:29:15.434608 > 22 bytes data, server => client
 19:29:15.434620 '214 WE ROOLZ: 127841\r\n'
 19:29:15.434812 < 6 bytes data, client => server
 19:29:15.434832 'QUIT\r\n'
 19:29:15.435012 Received DATA (on stdin)
 19:29:15.435026 > 35 bytes data, server => client
 19:29:15.435038 '221 curl ESMTP server signing off\r\n'
 19:29:15.436408 ====> Client disconnect
 19:29:15.436619 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3004
 From: different
 To: another
 body
=== End of file stdin-for-3004
=== Start of file valgrind3004
 ==185568== 
 ==185568== Process terminating with default action of signal 4 (SIGILL)
 ==185568==  Illegal opcode at address 0x492B75F
 ==185568==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185568==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185568==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185568==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185568==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185568==    by 0x49908EB: curl_version_info (version.c:600)
 ==185568==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185568==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185568==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3004
test 3005 [SMTP invalid (all but one) --mail-rcpt and --mail-rcpt-allowfails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3005 ../src/curl -q --output log/3/curl3005.out  --include --trace-ascii log/3/trace3005 --trace-time smtp://127.0.0.1:38593/3005 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/3/stdin-for-3005 > log/3/stdout3005 2> log/3/stderr3005

 3005: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 3005
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3005 ../src/curl -q --output log/3/curl3005.out  --include --trace-ascii log/3/trace3005 --trace-time smtp://127.0.0.1:38593/3005 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/3/stdin-for-3005 > log/3/stdout3005 2> log/3/stderr3005
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3005
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:14.815371 ====> Client connect
 19:29:14.815667 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:14.819193 < "EHLO verifiedserver"
 19:29:14.819264 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:14.819491 < "HELP"
 19:29:14.819531 > "214 WE ROOLZ: 127734[CR][LF]"
 19:29:14.819548 return proof we are we
 19:29:14.819827 < "QUIT"
 19:29:14.819864 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:14.821276 MAIN sockfilt said DISC
 19:29:14.821313 ====> Client disconnected
 19:29:14.821397 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:14.415977 ====> Client connect
 19:29:14.420972 Received DATA (on stdin)
 19:29:14.421031 > 146 bytes data, server => client
 19:29:14.421047 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:14.421059 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:14.421068 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:14.421263 < 21 bytes data, client => server
 19:29:14.421282 'EHLO verifiedserver\r\n'
 19:29:14.421583 Received DATA (on stdin)
 19:29:14.421597 > 53 bytes data, server => client
 19:29:14.421607 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:14.421684 < 6 bytes data, client => server
 19:29:14.421696 'HELP\r\n'
 19:29:14.421858 Received DATA (on stdin)
 19:29:14.421870 > 22 bytes data, server => client
 19:29:14.421880 '214 WE ROOLZ: 127734\r\n'
 19:29:14.422029 < 6 bytes data, client => server
 19:29:14.422043 'QUIT\r\n'
 19:29:14.422174 Received DATA (on stdin)
 19:29:14.422184 > 35 bytes data, server => client
 19:29:14.422194 '221 curl ESMTP server signing off\r\n'
 19:29:14.423532 ====> Client disconnect
 19:29:14.423710 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3005
 From: different
 To: another
 body
=== End of file stdin-for-3005
=== Start of file valgrind3005
 ==185552== 
 ==185552== Process terminating with default action of signal 4 (SIGILL)
 ==185552==  Illegal opcode at address 0x492B75F
 ==185552==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185552==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185552==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185552==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185552==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185552==    by 0x49908EB: curl_version_info (version.c:600)
 ==185552==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185552==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185552==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185552==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3005
test 3008 [--output-dir]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3008 ../src/curl -q --trace-ascii log/18/trace3008 --trace-time http://127.0.0.1:43739/this/is/the/3008 -O --output-dir /startdir/src/build-curl/tests/log/18 > log/18/stdout3008 2> log/18/stderr3008

 3008: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 3008
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3008 ../src/curl -q --trace-ascii log/18/trace3008 --trace-time http://127.0.0.1:43739/this/is/the/3008 -O --output-dir /startdir/src/build-curl/tests/log/18 > log/18/stdout3008 2> log/18/stderr3008
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.913401 ====> Client connect
 19:29:15.913438 accept_connection 3 returned 4
 19:29:15.913463 Read 93 bytes
 19:29:15.913474 Process 93 bytes request
 19:29:15.913486 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.913496 Are-we-friendly question received
 19:29:15.913526 Wrote request (93 bytes) input to log/18/server.input
 19:29:15.913544 Identifying ourselves as friends
 19:29:15.913612 Response sent (56 bytes) and written to log/18/server.response
 19:29:15.913623 special request received, no persistency
 19CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3006 ../src/curl -q --output log/24/curl3006.out  --include --trace-ascii log/24/trace3006 --trace-time smtp://127.0.0.1:40147/3006 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt invalid.two --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/24/stdin-for-3006 > log/24/stdout3006 2> log/24/stderr3006
:29:15.913631 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 44372 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3008
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind3008
 ==185859== 
 ==185859== Process terminating with default action of signal 4 (SIGILL)
 ==185859==  Illegal opcode at address 0x492B75F
 ==185859==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185859==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185859==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185859==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185859==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185859==    by 0x49908EB: curl_version_info (version.c:600)
 ==185859==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185859==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185859==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185859==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3008
test 3002 [SMTP invalid (first) --mail-rcpt and --mail-rcpt-allowfails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3002 ../src/curl -q --output log/16/curl3002.out  --include --trace-ascii log/16/trace3002 --trace-time smtp://127.0.0.1:33205/3002 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/16/stdin-for-3002 > log/16/stdout3002 2> log/16/stderr3002

 3002: protocol FAILED!
 There was no content at all in the file log/16/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/16/ directory after test 3002
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3002 ../src/curl -q --output log/16/curl3002.out  --include --trace-ascii log/16/trace3002 --trace-time smtp://127.0.0.1:33205/3002 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T - <log/16/stdin-for-3002 > log/16/stdout3002 2> log/16/stderr3002
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3002
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:14.692024 ====> Client connect
 19:29:14.692271 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:14.692669 < "EHLO verifiedserver"
 19:29:14.692719 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:14.692925 < "HELP"
 19:29:14.692962 > "214 WE ROOLZ: 127808[CR][LF]"
 19:29:14.692977 return proof we are we
 19:29:14.693233 < "QUIT"
 19:29:14.693264 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:14.695121 MAIN sockfilt said DISC
 19:29:14.695155 ====> Client disconnected
 19:29:14.695224 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:15.290970 ====> Client connect
 19:29:15.294608 Received DATA (on stdin)
 19:29:15.294633 > 146 bytes data, server => client
 19:29:15.294644 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:15.294654 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:15.294664 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:15.294800 < 21 bytes data, client => server
 19:29:15.294815 'EHLO verifiedserver\r\n'
 19:29:15.295034 Received DATA (on stdin)
 19:29:15.295045 > 53 bytes data, server => client
 19:29:15.295056 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:15.295125 < 6 bytes data, client => server
 19:29:15.295138 'HELP\r\n'
 19:29:15.295286 Received DATA (on stdin)
 19:29:15.295296 > 22 bytes data, server => client
 19:29:15.295306 '214 WE ROOLZ: 127808\r\n'
 19:29:15.295422 < 6 bytes data, client => server
 19:29:15.295435 'QUIT\r\n'
 19:29:15.295572 Received DATA (on stdin)
 19:29:15.295583 > 35 bytes data, server => client
 19:29:15.295593 '221 curl ESMTP server signing off\r\n'
 19:29:15.296861 ====> Client disconnect
 19:29:15.297533 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3002
 From: different
 To: another
 body
=== End of file stdin-for-3002
=== Start of file valgrind3002
 ==185488== 
 ==185488== Process terminating with default action of signal 4 (SIGILL)
 ==185488==  Illegal opcode at address 0x492B75F
 ==185488==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185488==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185488==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185488==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185488==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185488==    by 0x49908EB: curl_version_info (version.c:600)
 ==185488==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185488==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185488==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185488==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3002
test 3006 [SMTP invalid (all) --mail-rcpt and --mail-rcpt-allowfails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3006 ../src/curl -q --output log/24/curl3006.out  --include --trace-ascii log/24/trace3006 --trace-time smtp://127.0.0.1:40147/3006 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt invalid.two --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/24/stdin-for-3006 > log/24/stdout3006 2> log/24/stderr3006

 3006: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 3006
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3006 ../src/curl -q --output log/24/curl3006.out  --include --trace-ascii log/24/trace3006 --trace-time smtp://127.0.0.1:40147/3006 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-rcpt invalid.two --mail-rcpt invalid.three --mail-rcpt invalid.four --mail-rcpt invalid.five --mail-from sender@example.com -T - <log/24/stdin-for-3006 > log/24/stdout3006 2> log/24/stderr3006
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3006
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:14.972127 ====> Client connect
 19:29:14.972347 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:14.975892 < "EHLO verifiedserver"
 19:29:14.975944 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:14.976132 < "HELP"
 19:29:14.976168 > "214 WE ROOLZ: 127811[CR][LF]"
 19:29:14.976183 return proof we are we
 19:29:14.976384 < "QCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3009 ../src/curl -q --trace-ascii log/1/trace3009 --trace-time http://127.0.0.1:38815/this/is/the/3009 -O --output-dir /startdir/src/build-curl/tests/not-there > log/1/stdout3009 2> log/1/stderr3009
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3007 ../src/curl -q --output log/19/curl3007.out  --include --trace-ascii log/19/trace3007 --trace-time smtp://127.0.0.1:33719/3007 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-from sender@example.com -T - <log/19/stdin-for-3007 > log/19/stdout3007 2> log/19/stderr3007
UIT"
 19:29:14.976412 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:14.977379 MAIN sockfilt said DISC
 19:29:14.977405 ====> Client disconnected
 19:29:14.977476 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:15.574305 ====> Client connect
 19:29:15.574688 Received DATA (on stdin)
 19:29:15.574707 > 146 bytes data, server => client
 19:29:15.574719 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:15.574729 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:15.574738 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:15.578018 < 21 bytes data, client => server
 19:29:15.578037 'EHLO verifiedserver\r\n'
 19:29:15.578260 Received DATA (on stdin)
 19:29:15.578271 > 53 bytes data, server => client
 19:29:15.578282 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:15.578342 < 6 bytes data, client => server
 19:29:15.578353 'HELP\r\n'
 19:29:15.578493 Received DATA (on stdin)
 19:29:15.578503 > 22 bytes data, server => client
 19:29:15.578512 '214 WE ROOLZ: 127811\r\n'
 19:29:15.578605 < 6 bytes data, client => server
 19:29:15.578616 'QUIT\r\n'
 19:29:15.578723 Received DATA (on stdin)
 19:29:15.578732 > 35 bytes data, server => client
 19:29:15.578742 '221 curl ESMTP server signing off\r\n'
 19:29:15.579644 ====> Client disconnect
 19:29:15.579785 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3006
 From: different
 To: another
 body
=== End of file stdin-for-3006
=== Start of file valgrind3006
 ==185695== 
 ==185695== Process terminating with default action of signal 4 (SIGILL)
 ==185695==  Illegal opcode at address 0x492B75F
 ==185695==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185695==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185695==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185695==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185695==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185695==    by 0x49908EB: curl_version_info (version.c:600)
 ==185695==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185695==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185695==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3006
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http2-server.pl --port 50063 --port2 51121 --nghttpx "nghttpx" --pidfile "log/11/server/http_v2_server.pid" --logfile "log/11/http_v2_server.log" --logdir "log/11" --connect 127.0.0.1:40989 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/2 server
test 2402 SKIPPED: failed starting HTTP/2 server
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http2-server.pl --port 48895 --port2 40089 --nghttpx "nghttpx" --pidfile "log/8/server/http_v2_server.pid" --logfile "log/8/http_v2_server.log" --logdir "log/8" --connect 127.0.0.1:44467 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/2 server
test 3009 [--output-dir a non-existing directory]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3009 ../src/curl -q --trace-ascii log/1/trace3009 --trace-time http://127.0.0.1:38815/this/is/the/3009 -O --output-dir /startdir/src/build-curl/tests/not-there > log/1/stdout3009 2> log/1/stderr3009

 3009: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 3009
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3009 ../src/curl -q --trace-ascii log/1/trace3009 --trace-time http://127.0.0.1:38815/this/is/the/3009 -O --output-dir /startdir/src/build-curl/tests/not-there > log/1/stdout3009 2> log/1/stderr3009
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.914409 ====> Client connect
 19:29:15.914451 accept_connection 3 returned 4
 19:29:15.914604 Read 93 bytes
 19:29:15.914618 Process 93 bytes request
 19:29:15.914629 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.914638 Are-we-friendly question received
 19:29:15.914669 Wrote request (93 bytes) input to log/1/server.input
 19:29:15.914686 Identifying ourselves as friends
 19:29:15.914749 Response sent (56 bytes) and written to log/1/server.response
 19:29:15.914759 special request received, no persistency
 19:29:15.914767 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 43458 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3009
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind3009
 ==185857== 
 ==185857== Process terminating with default action of signal 4 (SIGILL)
 ==185857==  Illegal opcode at address 0x492B75F
 ==185857==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185857==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185857==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185857==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185857==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185857==    by 0x49908EB: curl_version_info (version.c:600)
 ==185857==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185857==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185857==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185857==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3009
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http2-server.pl --port 57037 --port2 47001 --nghttpx "nghttpx" --pidfile "log/14/server/http_v2_server.pid" --logfile "log/14/http_v2_server.log" --logdir "log/14" --connect 127.0.0.1:45467 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/2 server
test 3007 [SMTP with invalid --mail-rcpt and --mail-rcpt-allowfails]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3007 ../src/curl -q --output log/19/curl3007.out  --include --trace-ascii log/19/trace3007 --trace-time smtp://127.0.0.1:33719/3007 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-from sender@example.com -T - <log/19/stdin-for-3007 > log/19/stdout3007 2> log/19/stderr3007

 3007: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 3007
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3007 ../src/curl -q --output log/19/curl3007.out  --include --trace-ascii log/19/trace3007 --trace-time smtp://127.0.0.1:33719/3007 --mail-rcpt-allowfails --mail-rcpt invalid.one --mail-from sender@example.com -T - <log/19/stdin-for-3007 > log/19/stdout3007 2> log/19/stderr3007
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3007
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:15.323976 ====> Client connect
 19:29:15.324147 > "220-        _   _ ____  _[CRCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3011 ../src/curl -q --trace-ascii log/6/trace3011 --trace-time http://127.0.0.1:33935/this/is/the/3011 -O --output-dir /startdir/src/build-curl/tests/log/6/tmp --create-dirs > log/6/stdout3011 2> log/6/stderr3011
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3014 ../src/curl -q --include --trace-ascii log/13/trace3014 --trace-time http://127.0.0.1:38821/3014 --write-out '%{num_headers}' > log/13/stdout3014 2> log/13/stderr3014
][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:15.324484 < "EHLO verifiedserver"
 19:29:15.324537 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:15.324755 < "HELP"
 19:29:15.324797 > "214 WE ROOLZ: 127656[CR][LF]"
 19:29:15.324818 return proof we are we
 19:29:15.325058 < "QUIT"
 19:29:15.325092 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:15.326347 MAIN sockfilt said DISC
 19:29:15.326381 ====> Client disconnected
 19:29:15.326454 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:15.926182 ====> Client connect
 19:29:15.926486 Received DATA (on stdin)
 19:29:15.926504 > 146 bytes data, server => client
 19:29:15.926517 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:15.926527 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:15.926536 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:15.926629 < 21 bytes data, client => server
 19:29:15.926645 'EHLO verifiedserver\r\n'
 19:29:15.926863 Received DATA (on stdin)
 19:29:15.926877 > 53 bytes data, server => client
 19:29:15.926888 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:15.926954 < 6 bytes data, client => server
 19:29:15.926970 'HELP\r\n'
 19:29:15.927137 Received DATA (on stdin)
 19:29:15.927150 > 22 bytes data, server => client
 19:29:15.927160 '214 WE ROOLZ: 127656\r\n'
 19:29:15.927271 < 6 bytes data, client => server
 19:29:15.927287 'QUIT\r\n'
 19:29:15.927414 Received DATA (on stdin)
 19:29:15.927426 > 35 bytes data, server => client
 19:29:15.927437 '221 curl ESMTP server signing off\r\n'
 19:29:15.928609 ====> Client disconnect
 19:29:15.928781 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3007
 From: different
 To: another
 body
=== End of file stdin-for-3007
=== Start of file valgrind3007
 ==185878== 
 ==185878== Process terminating with default action of signal 4 (SIGILL)
 ==185878==  Illegal opcode at address 0x492B75F
 ==185878==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185878==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185878==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185878==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185878==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185878==    by 0x49908EB: curl_version_info (version.c:600)
 ==185878==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185878==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185878==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185878==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3007
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http2-server.pl --port 54235 --port2 60189 --nghttpx "nghttpx" --pidfile "log/5/server/http_v2_server.pid" --logfile "log/5/http_v2_server.log" --logdir "log/5" --connect 127.0.0.1:37089 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/2 server
test 3011 [--output-dir with --create-dirs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3011 ../src/curl -q --trace-ascii log/6/trace3011 --trace-time http://127.0.0.1:33935/this/is/the/3011 -O --output-dir /startdir/src/build-curl/tests/log/6/tmp --create-dirs > log/6/stdout3011 2> log/6/stderr3011

 3011: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 3011
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3011 ../src/curl -q --trace-ascii log/6/trace3011 --trace-time http://127.0.0.1:33935/this/is/the/3011 -O --output-dir /startdir/src/build-curl/tests/log/6/tmp --create-dirs > log/6/stdout3011 2> log/6/stderr3011
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.001043 ====> Client connect
 19:29:15.001112 accept_connection 3 returned 4
 19:29:15.001138 Read 93 bytes
 19:29:15.001147 Process 93 bytes request
 19:29:15.001161 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.001169 Are-we-friendly question received
 19:29:15.001195 Wrote request (93 bytes) input to log/6/server.input
 19:29:15.001211 Identifying ourselves as friends
 19:29:15.001288 Response sent (56 bytes) and written to log/6/server.response
 19:29:15.001297 special request received, no persistency
 19:29:15.001305 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 58858 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3011
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind3011
 ==185964== 
 ==185964== Process terminating with default action of signal 4 (SIGILL)
 ==185964==  Illegal opcode at address 0x492B75F
 ==185964==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==185964==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==185964==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==185964==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==185964==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==185964==    by 0x49908EB: curl_version_info (version.c:600)
 ==185964==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==185964==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==185964==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==185964==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3011
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3012 ../src/curl -q --trace-ascii log/20/trace3012 --trace-time http://127.0.0.1:41689/this/is/the/3012 -OJR --output-dir /startdir/src/build-curl/tests/log/20 > log/20/stdout3012 2> log/20/stderr3012
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3013 ../src/curl -q --trace-ascii log/17/trace3013 --trace-time http://127.0.0.1:35993/this/is/the/3013 -O --output-dir /startdir/src/build-curl/tests/log/17 http://127.0.0.1:35993/another/3013 -o second3013 --output-dir /startdir/src/build-curl/tests/log/17 > log/17/stdout3013 2> log/17/stderr3013
test 3014 [Check if %{num_headers} returns correct number of headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3014 ../src/curl -q --include --trace-ascii log/13/trace3014 --trace-time http://127.0.0.1:38821/3014 --write-out '%{num_headers}' > log/13/stdout3014 2> log/13/stderr3014

 3014: stdout FAILED:
--- log/13/check-expected	2026-10-15 19:29:17.612452555 +0000
+++ log/13/check-generated	2026-10-15 19:29:17.609168475 +0000
@@ -1,8 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 9[LF]
-Connection: close[LF]
-Content-Type: text/plain[LF]
-[LF]
-testdata[LF]
-4
== Contents of files in the log/13/ directory after test 3014
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 9[LF]
 Connection: close[LF]
 Content-Type: text/plain[LF]
 [LF]
 testdata[LF]
 4
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3014 ../src/curl -q --include --trace-ascii log/13/trace3014 --trace-time http://127.0.0.1:38821/3014 --write-out '%{num_headers}' > log/13/stdout3014 2> log/13/stderr3014
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.229019 ====> Client connect
 19:29:15.229054 accept_connection 3 returned 4
 19:29:15.229075 Read 93 bytes
 19:29:15.229084 Process 93 bytes request
 19:29:15.229098 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.229106 Are-we-friendly question received
 19:29:15.229135 Wrote request (93 bytes) input to log/13/server.input
 19:29:15.229152 Identifying ourselves as friends
 19:29:15.229225 Response sent (56 bytes) and written to log/13/server.response
 19:29:15.229234 special request received, no persistency
 19:29:15.229242 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38821...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38821) from 127.0.0.1 port 38304 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38821
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38821 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79032
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3014
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79032
=== End of file server.response
=== Start of file valgrind3014
 ==186201== 
 ==186201== Process terminating with default action of signal 4 (SIGILL)
 ==186201==  Illegal opcode at address 0x492B75F
 ==186201==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186201==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186201==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186201==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186201==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186201==    by 0x49908EB: curl_version_info (version.c:600)
 ==186201==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186201==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186201==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186201==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3014
test 3012 [--output-dir with -J and -R]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3012 ../src/curl -q --trace-ascii log/20/trace3012 --trace-time http://127.0.0.1:41689/this/is/the/3012 -OJR --output-dir /startdir/src/build-curl/tests/log/20 > log/20/stdout3012 2> log/20/stderr3012

 3012: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 3012
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3012 ../src/curl -q --trace-ascii log/20/trace3012 --trace-time http://127.0.0.1:41689/this/is/the/3012 -OJR --output-dir /startdir/src/build-curl/tests/log/20 > log/20/stdout3012 2> log/20/stderr3012
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.096358 ====> Client connect
 19:29:15.096390 accept_connection 3 returned 4
 19:29:15.096412 Read 93 bytes
 19:29:15.096422 Process 93 bytes request
 19:29:15.096434 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.096443 Are-we-friendly question received
 19:29:15.096475 Wrote request (93 bytes) input to log/20/server.input
 19:29:15.096492 Identifying ourselves as friends
 19:29:15.096556 Response sent (57 bytes) and written to log/20/server.response
 19:29:15.096566 special request received, no persistency
 19:29:15.096574 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 39682 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3012
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind3012
 ==186059== 
 ==186059== Process terminating with default action of signal 4 (SIGILL)
 ==186059==  Illegal opcode at address 0x492B75F
 ==186059==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186059==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186059==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186059==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186059==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186059==    by 0x49908EB: curl_version_info (version.c:600)
 ==186059==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186059==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186059==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186059==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3012
test 3013 [Two --output-dir with --next in between]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3013 ../src/curl -q --trace-ascii log/17/trace3013 --trace-time http://127.0.0.1:35993/this/is/the/3013 -O --output-dir /startdir/src/build-curl/tests/log/17 http://127.0.0.1:35993/another/3013 -o second3013 --output-dir /startdir/src/build-curl/tests/log/17 > log/17/stdout3013 2> log/17/stderr3013

 3013: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 3013
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3013 ../src/curl -q --trace-ascii log/17/trace3013 --trace-time http://127.0.0.1:35993/this/is/the/3013 -O --output-dir /startdir/src/build-curl/tests/log/17 http://127.0.0.1:35993/another/3013 -o second3013 --output-dir /startdir/src/build-curl/tests/log/17 > log/17/stdout3013 2> log/17/stderr3013
=== End of file commands.log
=== Start of CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3015 ../src/curl -q --include --trace-ascii log/23/trace3015 --trace-time http://127.0.0.1:44711/3015 -w "%{num_headers}\n" -L -o/dev/null > log/23/stdout3015 2> log/23/stderr3015
file http_server.log
 19:29:16.221030 ====> Client connect
 19:29:16.221081 accept_connection 3 returned 4
 19:29:16.221109 Read 93 bytes
 19:29:16.221119 Process 93 bytes request
 19:29:16.221134 Got request: GET /verifiedserver HTTP/1.1
 19:29:16.221143 Are-we-friendly question received
 19:29:16.221173 Wrote request (93 bytes) input to log/17/server.input
 19:29:16.221191 Identifying ourselves as friends
 19:29:16.221276 Response sent (56 bytes) and written to log/17/server.response
 19:29:16.221288 special request received, no persistency
 19:29:16.221297 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 45492 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3013
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind3013
 ==186207== 
 ==186207== Process terminating with default action of signal 4 (SIGILL)
 ==186207==  Illegal opcode at address 0x492B75F
 ==186207==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186207==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186207==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186207==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186207==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186207==    by 0x49908EB: curl_version_info (version.c:600)
 ==186207==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186207==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186207==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186207==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3013
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3016 ../src/curl -q --output log/10/curl3016.out  --include --trace-ascii log/10/trace3016 --trace-time file:///startdir/src/build-curl/tests/ > log/10/stdout3016 2> log/10/stderr3016
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3025 ./libtest/libtests lib3025 http://127.0.0.1:34531/3025 > log/2/stdout3025 2> log/2/stderr3025
test 3015 [HTTP GET -w num_headers with redirected fetch (2 connects)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3015 ../src/curl -q --include --trace-ascii log/23/trace3015 --trace-time http://127.0.0.1:44711/3015 -w "%{num_headers}\n" -L -o/dev/null > log/23/stdout3015 2> log/23/stderr3015

 3015: stdout FAILED:
--- log/23/check-expected	2026-10-15 19:29:17.879329699 +0000
+++ log/23/check-generated	2026-10-15 19:29:17.877991147 +0000
@@ -1 +0,0 @@
-4[CR][LF]
== Contents of files in the log/23/ directory after test 3015
=== Start of file check-expected
 4[CR][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3015 ../src/curl -q --include --trace-ascii log/23/trace3015 --trace-time http://127.0.0.1:44711/3015 -w "%{num_headers}\n" -L -o/dev/null > log/23/stdout3015 2> log/23/stderr3015
=== End of file commands.log
=== Start of file http_server.log
 19:29:15.303922 ====> Client connect
 19:29:15.303956 accept_connection 3 returned 4
 19:29:15.304098 Read 93 bytes
 19:29:15.304110 Process 93 bytes request
 19:29:15.304123 Got request: GET /verifiedserver HTTP/1.1
 19:29:15.304132 Are-we-friendly question received
 19:29:15.304295 Wrote request (93 bytes) input to log/23/server.input
 19:29:15.304315 Identifying ourselves as friends
 19:29:15.304375 Response sent (56 bytes) and written to log/23/server.response
 19:29:15.304384 special request received, no persistency
 19:29:15.304392 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 34000 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3015
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind3015
 ==186275== 
 ==186275== Process terminating with default action of signal 4 (SIGILL)
 ==186275==  Illegal opcode at address 0x492B75F
 ==186275==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186275==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186275==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186275==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186275==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186275==    by 0x49908EB: curl_version_info (version.c:600)
 ==186275==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186275==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186275==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186275==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3015
test 3016 [Get current directory using file://]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3016 ../src/curl -q --output log/10/curl3016.out  --include --trace-ascii log/10/trace3016 --trace-time file:///startdir/src/build-curl/tests/ > log/10/stdout3016 2> log/10/stderr3016

curl returned 132, when expecting 0
 3016: exit FAILED
== Contents of files in the log/10/ directory after test 3016
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3016 ../src/curl -q --output log/10/curl3016.out  --include --trace-ascii log/10/trace3016 --trace-time file:///startdir/src/build-curl/tests/ > log/10/stdout3016 2> log/10/stderr3016
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3016
=== End of file server.cmd
=== Start of file valgrind3016
 ==186346== 
 ==186346== Process terminating with default action of signal 4 (SIGILL)
 ==186346==  Illegal opcode at address 0x492B75F
 ==186346==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186346==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186346==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186346==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186346==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186346==    by 0x49908EB: curl_version_info (version.c:600)
 ==186346==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186346==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186346==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186346==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3016
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3026 ./libtest/libtests lib3026 - > log/4/stdout3026 2> log/4/stderr3026
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3019 ../src/curl -q --output log/12/curl3019.out  --include --trace-ascii log/12/trace3019 --trace-time --resolve 40921:example.com:127.0.0.1 http://example.com:40921/3019 > log/12/stdout3019 2> log/12/stderr3019
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3017 ../src/curl -q --output log/15/curl3017.out  --include --trace log/15/trace3017 --trace-time mqtt://127.0.0.1:33583/3017 -m 3 > log/15/stdout3017 2> log/15/stderr3017
test 3025 [CURLOPT_HTTP200ALIASES]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3025 ./libtest/libtests lib3025 http://127.0.0.1:34531/3025 > log/2/stdout3025 2> log/2/stderr3025

 3025: data FAILED:
--- log/2/check-expected	2026-10-15 19:29:18.112856407 +0000
+++ log/2/check-generated	2026-10-15 19:29:18.109161477 +0000
@@ -1,4 +0,0 @@
-ICY 200 OK[LF]
-Content-Length: 7[LF]
-[LF]
-MooMoo[LF]
== Contents of files in the log/2/ directory after test 3025
=== Start of file check-expected
 ICY 200 OK[LF]
 Content-Length: 7[LF]
 [LF]
 MooMoo[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3025 ./libtest/libtests lib3025 http://127.0.0.1:34531/3025 > log/2/stdout3025 2> log/2/stderr3025
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.465870 ====> Client connect
 19:29:17.465907 accept_connection 3 returned 4
 19:29:17.466061 Read 93 bytes
 19:29:17.466076 Process 93 bytes request
 19:29:17.466089 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.466098 Are-we-friendly question received
 19:29:17.466159 Wrote request (93 bytes) input to log/2/server.input
 19:29:17.466179 Identifying ourselves as friends
 19:29:17.466248 Response sent (56 bytes) and written to log/2/server.response
 19:29:17.466258 special request received, no persistency
 19:29:17.466266 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44984 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3025
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind3025
 ==186673== 
 ==186673== Process terminating with default action of signal 4 (SIGILL)
 ==186673==  Illegal opcode at address 0x51CC63F
 ==186673==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==186673==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==186673==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==186673==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3025
test 3026 [curl_global_init thread-safety]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3026 ./libtest/libtests lib3026 - > log/4/stdout3026 2> log/4/stderr3026

libtests returned 132, when expecting 0
 3026: exit FAILED
== Contents of files in the log/4/ directory after test 3026
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3026 ./libtest/libtests lib3026 - > log/4/stdout3026 2> log/4/stderr3026
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3026
=== End of file server.cmd
=== Start of file valgrind3026
 ==186693== 
 ==186693== Process terminating with default action of signal 4 (SIGILL)
 ==186693==  Illegal opcode at address 0x51CC63F
 ==186693==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==186693==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==186693==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==186693==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3026
test 3019 [HTTP with invalid --resolve syntax]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3019 ../src/curl -q --output log/12/curl3019.out  --include --trace-ascii log/12/trace3019 --trace-time --resolve 40921:example.com:127.0.0.1 http://example.com:40921/3019 > log/12/stdout3019 2> log/12/stderr3019

curl returned 132, when expecting 49
 3019: exit FAILED
== Contents of files in the log/12/ directory after test 3019
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3019 ../src/curl -q --output log/12/curl3019.out  --include --trace-ascii log/12/trace3019 --trace-time --resolve 40921:example.com:127.0.0.1 http://example.com:40921/3019 > log/12/stdout3019 2> log/12/stderr3019
=== End of file commands.log
=== Start of file http_server.log
 19:29:16.131194 ====> Client connect
 19:29:16.131235 accept_connection 3 returned 4
 19:29:16.131260 Read 93 bytes
 19:29:16.131270 Process 93 bytes request
 19:29:16.131284 Got request: GET /verifiedserver HTTP/1.1
 19:29:16.131292 Are-we-friendly question received
 19:29:16.131319 Wrote request (93 bytes) input to log/12/server.input
 19:29:16.131336 Identifying ourselves as friends
 19:29:16.131402 Response sent (56 bytes) and written to log/12/server.response
 19:29:16.131413 special request received, no persistency
 19:29:16.131421 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 60208 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3019
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind3019
 ==186552== 
 ==186552== Process terminating with default action of signal 4 (SIGILL)
 ==186552==  Illegal opcode at address 0x492B75F
 ==186552==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186552==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186552==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186552==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186552==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186552==    by 0x49908EB: curl_version_info (version.c:600)
 ==186552==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186552==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186552==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186552==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3019
test 3017 [MQTT SUBSCRIBE with pathological PUBLISH length]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3017 ../src/curl -q --output log/15/curl3017.out  --include --trace log/15/trace3017 --trace-time mqtt://127.0.0.1:33583/3017 -m 3 > log/15/stdout3017 2> log/15/stderr3017

 3017: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 3017
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3017 ../src/curl -q --output log/15/curl3017.out  --include --trace log/15/CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3027 ./libtest/libtests lib3027 ftp://127.0.0.1:44283/3027 > log/7/stdout3027 2> log/7/stderr3027
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3033 ./libtest/libtests lib3033 http://127.0.0.1:44467/3033 > log/8/stdout3033 2> log/8/stderr3033
trace3017 --trace-time mqtt://127.0.0.1:33583/3017 -m 3 > log/15/stdout3017 2> log/15/stderr3017
=== End of file commands.log
=== Start of file server.cmd
 excessive-remaining TRUE
 Testnum 3017
=== End of file server.cmd
=== Start of file valgrind3017
 ==186416== 
 ==186416== Process terminating with default action of signal 4 (SIGILL)
 ==186416==  Illegal opcode at address 0x492B75F
 ==186416==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186416==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186416==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186416==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186416==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186416==    by 0x49908EB: curl_version_info (version.c:600)
 ==186416==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186416==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186416==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186416==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3017
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http3-server.pl --port 37239 --nghttpx "nghttpx" --pidfile "log/21/server/http_v3_server.pid" --logfile "log/21/http_v3_server.log" --logdir "log/21" --connect 127.0.0.1:39881 
startnew: child process has died, server might start up
RUN: failed to start the HTTP/3 server
test 2502 SKIPPED: failed starting HTTP/3 server
test 3027 [Get a file via FTP but 550 after MDTM command]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3027 ./libtest/libtests lib3027 ftp://127.0.0.1:44283/3027 > log/7/stdout3027 2> log/7/stderr3027

 3027: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 3027
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3027 ./libtest/libtests lib3027 ftp://127.0.0.1:44283/3027 > log/7/stdout3027 2> log/7/stderr3027
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:17.018498 ====> Client connect
 19:29:17.018753 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:17.019101 < "USER anonymous"
 19:29:17.019151 > "331 We are happy you popped in![CR][LF]"
 19:29:17.019382 < "PASS ftp@example.com"
 19:29:17.019418 > "230 Welcome you silly person[CR][LF]"
 19:29:17.019594 < "PWD"
 19:29:17.019635 > "257 "/" is current directory[CR][LF]"
 19:29:17.019827 < "EPSV"
 19:29:17.019858 ====> Passive DATA channel requested by client
 19:29:17.019875 DATA sockfilt for passive data channel starting...
 19:29:17.028921 DATA sockfilt for passive data channel started (pid 186773)
 19:29:17.029066 DATA sockfilt for passive data channel listens on port 45741
 19:29:17.029115 > "229 Entering Passive Mode (|||45741|)[CR][LF]"
 19:29:17.029132 Client has been notified that upcoming DATA connection is awaited on port 45741
 19:29:17.029451 Client connects to port 45741
 19:29:17.029486 ====> Client established passive DATA connection on port 45741
 19:29:17.029585 < "TYPE I"
 19:29:17.029624 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:17.029803 < "SIZE verifiedserver"
 19:29:17.029850 > "213 17[CR][LF]"
 19:29:17.030019 < "RETR verifiedserver"
 19:29:17.030058 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:17.030150 =====> Closing passive DATA connection...
 19:29:17.030169 Server disconnects passive DATA connection
 19:29:17.030399 Server disconnected passive DATA connection
 19:29:17.030428 DATA sockfilt for passive data channel quits (pid 186773)
 19:29:17.030702 DATA sockfilt for passive data channel quit (pid 186773)
 19:29:17.030728 =====> Closed passive DATA connection
 19:29:17.030757 > "226 File transfer complete[CR][LF]"
 19:29:17.076502 < "QUIT"
 19:29:17.076562 > "221 bye bye baby[CR][LF]"
 19:29:17.077881 MAIN sockfilt said DISC
 19:29:17.077925 ====> Client disconnected
 19:29:17.078018 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:17.620695 ====> Client connect
 19:29:17.621121 Received DATA (on stdin)
 19:29:17.621144 > 146 bytes data, server => client
 19:29:17.621156 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:17.621166 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:17.621176 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:17.621264 < 16 bytes data, client => server
 19:29:17.621280 'USER anonymous\r\n'
 19:29:17.621501 Received DATA (on stdin)
 19:29:17.621514 > 33 bytes data, server => client
 19:29:17.621525 '331 We are happy you popped in!\r\n'
 19:29:17.621605 < 22 bytes data, client => server
 19:29:17.621620 'PASS ftp@example.com\r\n'
 19:29:17.621758 Received DATA (on stdin)
 19:29:17.621769 > 30 bytes data, server => client
 19:29:17.621779 '230 Welcome you silly person\r\n'
 19:29:17.621835 < 5 bytes data, client => server
 19:29:17.621848 'PWD\r\n'
 19:29:17.621978 Received DATA (on stdin)
 19:29:17.621990 > 30 bytes data, server => client
 19:29:17.622001 '257 "/" is current directory\r\n'
 19:29:17.622065 < 6 bytes data, client => server
 19:29:17.622079 'EPSV\r\n'
 19:29:17.631479 Received DATA (on stdin)
 19:29:17.631497 > 39 bytes data, server => client
 19:29:17.631506 '229 Entering Passive Mode (|||45741|)\r\n'
 19:29:17.631700 < 8 bytes data, client => server
 19:29:17.631715 'TYPE I\r\n'
 19:29:17.631964 Received DATA (on stdin)
 19:29:17.631975 > 33 bytes data, server => client
 19:29:17.631985 '200 I modify TYPE as you wanted\r\n'
 19:29:17.632048 < 21 bytes data, client => server
 19:29:17.632058 'SIZE verifiedserver\r\n'
 19:29:17.632188 Received DATA (on stdin)
 19:29:17.632199 > 8 bytes data, server => client
 19:29:17.632208 '213 17\r\n'
 19:29:17.632266 < 21 bytes data, client => server
 19:29:17.632278 'RETR verifiedserver\r\n'
 19:29:17.632509 Received DATA (on stdin)
 19:29:17.632520 > 29 bytes data, server => client
 19:29:17.632530 '150 Binary junk (17 bytes).\r\n'
 19:29:17.633098 Received DATA (on stdin)
 19:29:17.633111 > 28 bytes data, server => client
 19:29:17.633122 '226 File transfer complete\r\n'
 19:29:17.678636 < 6 bytes data, client => server
 19:29:17.678663 'QUIT\r\n'
 19:29:17.678910 Received DATA (on stdin)
 19:29:17.678924 > 18 bytes data, server => client
 19:29:17.678934 '221 bye bye baby\r\n'
 19:29:17.680158 ====> Client disconnect
 19:29:17.680359 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:17.628545 Running IPv4 version
 19:29:17.628689 Listening on port 45741
 19:29:17.628736 Wrote pid 186773 to log/7/server/ftp_sockdata.pid
 19:29:17.631179 Received PING (on stdin)
 19:29:17.631299 Received PORT (on stdin)
 19:29:17.631737 ====> Client connect
 19:29:17.632560 Received DATA (on stdin)
 19:29:17.632574 > 17 bytes data, server => client
 19:29:17.632584 'WE ROOLZ: 84721\r\n'
 19:29:17.632608 Received DISC (on stdin)
 19:29:17.632619 ====> Client forcibly disconnected
 19:29:17.632773 Received QUIT (on stdin)
 19:29:17.632784 quits
 19:29:17.632868 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY MDTM 550 Permission denied
 Testnum 3027
=== End of file server.cmd
=== Start of file valgrind3027
 ==186835== 
 ==186835== Process terminating with default action of signal 4 (SIGILL)
 ==186835==  Illegal opcode at address 0x51CC63F
 ==186835==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==186835==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==186835==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==186835==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3027
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3018 ../src/curl -q --output log/22/curl3018.out  --include --trace log/22/trace3018 --trace-time mqtt://127.0.0.1:35527/3018 --max-filesize 11 > log/22/stdout3018 2> log/22/stderr3018
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3020 ../src/curl -q --output log/9/curl3020.out  --include --trace-ascii log/9/trace3020 --trace-time --connect-to ::example.com:example.com http://example.com:43733/3020 > log/9/stdout3020 2> log/9/stderr3020
test 3033 [CURLOPT_FRESH_CONNECT=2]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3033 ./libtest/libtests lib3033 http://127.0.0.1:44467/3033 > log/8/stdout3033 2> log/8/stderr3033

 3033: data FAILED:
--- log/8/check-expected	2026-10-15 19:29:18.662959391 +0000
+++ log/8/check-generated	2026-10-15 19:29:18.659153399 +0000
@@ -1,6 +0,0 @@
-[0] no network change[LF]
--foo-[LF]
-[1] signal network change[LF]
--foo-[LF]
-[2] no network change[LF]
--foo-[LF]
== Contents of files in the log/8/ directory after test 3033
=== Start of file check-expected
 [0] no network change[LF]
 -foo-[LF]
 [1] signal network change[LF]
 -foo-[LF]
 [2] no network change[LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3033 ./libtest/libtests lib3033 http://127.0.0.1:44467/3033 > log/8/stdout3033 2> log/8/stderr3033
=== End of file commands.log
=== Start of file http_server.log
 19:29:16.876825 ====> Client connect
 19:29:16.876859 accept_connection 3 returned 4
 19:29:16.876879 Read 93 bytes
 19:29:16.876889 Process 93 bytes request
 19:29:16.876901 Got request: GET /verifiedserver HTTP/1.1
 19:29:16.876909 Are-we-friendly question received
 19:29:16.876934 Wrote request (93 bytes) input to log/8/server.input
 19:29:16.876951 Identifying ourselves as friends
 19:29:16.877014 Response sent (56 bytes) and written to log/8/server.response
 19:29:16.877024 special request received, no persistency
 19:29:16.877033 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 38032 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3033
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind3033
 ==187014== 
 ==187014== Process terminating with default action of signal 4 (SIGILL)
 ==187014==  Illegal opcode at address 0x51CC63F
 ==187014==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187014==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187014==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187014==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3033
startnew: ./server/servers mqttd --port 0 --pidfile log/22/server/mqtt_server.pid --portfile log/22/server/mqtt_server.port --config log/22/server.cmd --logfile log/22/mqtt_server.log --logdir log/22
RUN: MQTT server is now running PID 186405 on PORT 35527
* pid mqtt => 186405 186405
test 3018 [MQTT SUBSCRIBE with PUBLISH larger than --max-filesize]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3018 ../src/curl -q --output log/22/curl3018.out  --include --trace log/22/trace3018 --trace-time mqtt://127.0.0.1:35527/3018 --max-filesize 11 > log/22/stdout3018 2> log/22/stderr3018

 3018: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 3018
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3018 ../src/curl -q --output log/22/curl3018.out  --include --trace log/22/trace3018 --trace-time mqtt://127.0.0.1:35527/3018 --max-filesize 11 > log/22/stdout3018 2> log/22/stderr3018
=== End of file commands.log
=== Start of file mqtt_server.log
 19:29:15.579858 Running IPv4 version
 19:29:15.579933 Listening on port 35527
 19:29:15.579971 Wrote pid 186405 to log/22/server/mqtt_server.pid
 19:29:15.580001 Wrote port 35527 to log/22/server/mqtt_server.port
=== End of file mqtt_server.log
=== Start of file server.cmd
 Testnum 3018
=== End of file server.cmd
=== Start of file valgrind3018
 ==186738== 
 ==186738== Process terminating with default action of signal 4 (SIGILL)
 ==186738==  Illegal opcode at address 0x492B75F
 ==186738==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186738==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186738==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186738==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186738==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186738==    by 0x49908EB: curl_version_info (version.c:600)
 ==186738==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186738==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186738==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186738==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3018
test 3020 [HTTP with invalid --connect-to syntax]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3020 ../src/curl -q --output log/9/curl3020.out  --include --trace-ascii log/9/trace3020 --trace-time --connect-to ::example.com:example.com http://example.com:43733/3020 > log/9/stdout3020 2> log/9/stderr3020

curl returned 132, when expecting 49
 3020: exit FAILED
== Contents of files in the log/9/ directory after test 3020
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3020 ../src/curl -q --output log/9/curl3020.out  --include --trace-ascii log/9/trace3020 --trace-time --connect-to ::example.com:example.com http://example.com:43733/3020 > log/9/stdout3020 2> log/9/stderr3020
=== End of file commands.log
=== Start of file http_server.log
 19:29:16.101045 ====> Client connect
 19:29:16.101085 accept_connection 3 returned 4
 19:29:16.101109 Read 93 bytes
 19:29:16.101120 Process 93 bytes request
 19:29:16.101133 Got request: GET /verifiedserver HTTP/1.1
 19:29:16.101141 Are-we-friendly question received
 19:29:16.101169 Wrote request (93 bytes) input to log/9/server.input
 19:29:16.101185 Identifying ourselves as friends
 19:29:16.101257 Response sent (56 bytes) and written to log/9/server.response
 19:29:16.101267 special request received, no persistency
 19:29:16.101275 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43733...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43733) from 127.0.0.1 port 36628 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43733
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43733 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79135
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3020
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79135
=== End of file server.response
=== Start of file valgrind3020
 ==186545== 
 ==186545== Process terminating with default action of signal 4 (SIGILL)
 ==186545==  Illegal opcode at address 0x492B75F
 ==186545==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186545==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186545==    by 0x492B67B: cCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3034 ./libtest/libtests lib3034 http://127.0.0.1:38815/3034 > log/1/stdout3034 2> log/1/stderr3034
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3101 ./libtest/libtests lib3101 http://127.0.0.1:41689/3101 > log/20/stdout3101 2> log/20/stderr3101
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3031 ../src/curl -q --output log/24/curl3031.out  --include --trace-ascii log/24/trace3031 --trace-time http://127.0.0.1:38895/this/is/the/3031 --dump-header /startdir/src/build-curl/tests/log/24/tmp/out.txt --create-dirs > log/24/stdout3031 2> log/24/stderr3031
url_msnprintf (mprintf.c:1277)
 ==186545==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186545==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186545==    by 0x49908EB: curl_version_info (version.c:600)
 ==186545==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186545==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186545==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186545==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3020
test 3034 [Test reset resolves rewind failure]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3034 ./libtest/libtests lib3034 http://127.0.0.1:38815/3034 > log/1/stdout3034 2> log/1/stderr3034

libtests returned 132, when expecting 0
 3034: exit FAILED
== Contents of files in the log/1/ directory after test 3034
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3034 ./libtest/libtests lib3034 http://127.0.0.1:38815/3034 > log/1/stdout3034 2> log/1/stderr3034
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.905845 ====> Client connect
 19:29:17.905879 accept_connection 3 returned 4
 19:29:17.905900 Read 93 bytes
 19:29:17.905908 Process 93 bytes request
 19:29:17.905921 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.905929 Are-we-friendly question received
 19:29:17.905955 Wrote request (93 bytes) input to log/1/server.input
 19:29:17.905971 Identifying ourselves as friends
 19:29:17.906031 Response sent (56 bytes) and written to log/1/server.response
 19:29:17.906040 special request received, no persistency
 19:29:17.906047 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38815...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38815) from 127.0.0.1 port 43468 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38815
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38815 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79446
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3034
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79446
=== End of file server.response
=== Start of file valgrind3034
 ==187063== 
 ==187063== Process terminating with default action of signal 4 (SIGILL)
 ==187063==  Illegal opcode at address 0x51CC63F
 ==187063==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187063==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187063==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187063==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3034
test 3101 [HTTP auth without redirection protocols]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3101 ./libtest/libtests lib3101 http://127.0.0.1:41689/3101 > log/20/stdout3101 2> log/20/stderr3101

 3101: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 3101
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3101 ./libtest/libtests lib3101 http://127.0.0.1:41689/3101 > log/20/stdout3101 2> log/20/stderr3101
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.308509 ====> Client connect
 19:29:17.308542 accept_connection 3 returned 4
 19:29:17.308706 Read 93 bytes
 19:29:17.308721 Process 93 bytes request
 19:29:17.308733 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.308743 Are-we-friendly question received
 19:29:17.308779 Wrote request (93 bytes) input to log/20/server.input
 19:29:17.308799 Identifying ourselves as friends
 19:29:17.308866 Response sent (57 bytes) and written to log/20/server.response
 19:29:17.308877 special request received, no persistency
 19:29:17.308885 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 39698 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3101
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file valgrind3101
 ==187522== 
 ==187522== Process terminating with default action of signal 4 (SIGILL)
 ==187522==  Illegal opcode at address 0x51CC63F
 ==187522==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187522==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187522==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187522==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3101
test 3031 [--dump-header with --create-dirs]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3031 ../src/curl -q --output log/24/curl3031.out  --include --trace-ascii log/24/trace3031 --trace-time http://127.0.0.1:38895/this/is/the/3031 --dump-header /startdir/src/build-curl/tests/log/24/tmp/out.txt --create-dirs > log/24/stdout3031 2> log/24/stderr3031

 3031: protocol FAILED!
 There was no content at all in the file log/24/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/24/ directory after test 3031
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3031 ../src/curl -q --output log/24/curl3031.out  --include --trace-ascii log/24/trace3031 --trace-time http://127.0.0.1:38895/this/is/the/3031 --dump-header /startdir/src/build-curl/tests/log/24/tmp/out.txt --create-dirs > log/24/stdout3031 2> log/24/stderr3031
=== End of file commands.log
=== Start of file http_server.log
 19:29:16.860364 ====> Client connect
 19:29:16.860397 accept_connection 3 returned 4
 19:29:16.860499 Read 93 bytes
 19:29:16.860512 Process 93 bytes request
 19:29:16.860525 Got request: GET /verifiedserver HTTP/1.1
 19:29:16.860534 Are-we-friendly question received
 19:29:16.860563 Wrote request (93 bytes) input to log/24/server.input
 19:29:16.860579 Identifying ourselves as friends
 19:29:16.860638 Response sent (56 bytes) and written to log/24/server.response
 19:29:16.860647 special request received, no persistency
 19:29:16.860655 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:38895...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38895) from 127.0.0.1 port 33058 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38895
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:38895 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78982
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3031
=== End of file serCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3200 ./unit/units unit3200 log/4/curl_get_line3200 > log/4/stdout3200 2> log/4/stderr3200
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3103 ./libtest/libtests lib3103 http://127.0.0.1:35993/3103 > log/17/stdout3103 2> log/17/stderr3103
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3029 ../src/curl -q --output log/18/curl3029.out  --include --trace-ascii log/18/trace3029 --trace-time -D log/18/heads3029 http://127.0.0.1:43739/3029 http://127.0.0.1:43739/3029 --next -D log/18/heads3029 http://127.0.0.1:43739/3029 > log/18/stdout3029 2> log/18/stderr3029
ver.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78982
=== End of file server.response
=== Start of file valgrind3031
 ==186978== 
 ==186978== Process terminating with default action of signal 4 (SIGILL)
 ==186978==  Illegal opcode at address 0x492B75F
 ==186978==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186978==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186978==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186978==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186978==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186978==    by 0x49908EB: curl_version_info (version.c:600)
 ==186978==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186978==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186978==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186978==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3031
test 3200 [curl_get_line unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3200 ./unit/units unit3200 log/4/curl_get_line3200 > log/4/stdout3200 2> log/4/stderr3200

units returned 132, when expecting 0
 3200: exit FAILED
== Contents of files in the log/4/ directory after test 3200
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3200 ./unit/units unit3200 log/4/curl_get_line3200 > log/4/stdout3200 2> log/4/stderr3200
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3200
=== End of file server.cmd
=== Start of file valgrind3200
 ==187953== 
 ==187953== Process terminating with default action of signal 4 (SIGILL)
 ==187953==  Illegal opcode at address 0x4091F7F
 ==187953==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==187953==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==187953==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==187953==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3200
test 3103 [CURLOPT_COOKIELIST without expiry]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3103 ./libtest/libtests lib3103 http://127.0.0.1:35993/3103 > log/17/stdout3103 2> log/17/stderr3103

 3103: protocol FAILED!
 There was no content at all in the file log/17/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/17/ directory after test 3103
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3103 ./libtest/libtests lib3103 http://127.0.0.1:35993/3103 > log/17/stdout3103 2> log/17/stderr3103
=== End of file commands.log
=== Start of file http_server.log
 19:29:18.511067 ====> Client connect
 19:29:18.511117 accept_connection 3 returned 4
 19:29:18.511147 Read 93 bytes
 19:29:18.511159 Process 93 bytes request
 19:29:18.511172 Got request: GET /verifiedserver HTTP/1.1
 19:29:18.511182 Are-we-friendly question received
 19:29:18.511216 Wrote request (93 bytes) input to log/17/server.input
 19:29:18.511239 Identifying ourselves as friends
 19:29:18.511356 Response sent (56 bytes) and written to log/17/server.response
 19:29:18.511369 special request received, no persistency
 19:29:18.511378 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 45502 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3103
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file valgrind3103
 ==187712== 
 ==187712== Process terminating with default action of signal 4 (SIGILL)
 ==187712==  Illegal opcode at address 0x51CC63F
 ==187712==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187712==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187712==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187712==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3103
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3032 ../src/curl -q --output log/11/curl3032.out  --include --trace-ascii log/11/trace3032 --trace-time --location http://127.0.0.1:40989/3032 > log/11/stdout3032 2> log/11/stderr3032
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3107 ./libtest/libtests lib3107 http://127.0.0.1:34531/3107 > log/2/stdout3107 2> log/2/stderr3107
test 3029 [HTTP with multiple -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3029 ../src/curl -q --output log/18/curl3029.out  --include --trace-ascii log/18/trace3029 --trace-time -D log/18/heads3029 http://127.0.0.1:43739/3029 http://127.0.0.1:43739/3029 --next -D log/18/heads3029 http://127.0.0.1:43739/3029 > log/18/stdout3029 2> log/18/stderr3029

 3029: data FAILED:
--- log/18/check-expected	2026-10-15 19:29:19.422789797 +0000
+++ log/18/check-generated	2026-10-15 19:29:19.419141880 +0000
@@ -1,5 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 6[LF]
-[LF]
--foo-[LF]
== Contents of files in the log/18/ directory after test 3029
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 6[LF]
 [LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3029 ../src/curl -q --output log/18/curl3029.out  --include --trace-ascii log/18/trace3029 --trace-time -D log/18/heads3029 http://127.0.0.1:43739/3029 http://127.0.0.1:43739/3029 --next -D log/18/heads3029 http://127.0.0.1:43739/3029 > log/18/stdout3029 2> log/18/stderr3029
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.857242 ====> Client connect
 19:29:17.857283 accept_connection 3 returned 4
 19:29:17.857307 Read 93 bytes
 19:29:17.857317 Process 93 bytes request
 19:29:17.857330 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.857338 Are-we-friendly question received
 19:29:17.857369 Wrote request (93 bytes) input to log/18/server.input
 19:29:17.857387 Identifying ourselves as friends
 19:29:17.857459 Response sent (56 bytes) and written to log/18/server.response
 19:29:17.857471 special request received, no persistency
 19:29:17.857480 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:43739...
 * Established connection to 127.0.0.1 (127.0.0.1 port 43739) from 127.0.0.1 port 44380 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:43739
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:43739 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78988
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3029
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78988
=== End of file server.response
=== Start of file valgrind3029
 ==186989== 
 ==186989== Process terminating with default action of signal 4 (SIGILL)
 ==186989==  Illegal opcode at address 0x492B75F
 ==186989==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186989==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186989==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186989==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186989==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186989==    by 0x49908EB: curl_version_info (version.c:600)
 ==186989==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186989==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186989==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186989==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3029
test 3032 [HTTP redirect loop 3x swsbounce test]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3032 ../src/curl -q --output log/11/curl3032.out  --include --trace-ascii log/11/trace3032 --trace-time --location http://127.0.0.1:40989/3032 > log/11/stdout3032 2> log/11/stderr3032

 3032: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 3032
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3032 ../src/curl -q --output log/11/curl3032.out  --include --trace-ascii log/11/trace3032 --trace-time --location http://127.0.0.1:40989/3032 > log/11/stdout3032 2> log/11/stderr3032
=== End of file commands.log
=== Start of file http_server.log
 19:29:16.875885 ====> Client connect
 19:29:16.876030 accept_connection 3 returned 4
 19:29:16.876056 Read 93 bytes
 19:29:16.876066 Process 93 bytes request
 19:29:16.876080 Got request: GET /verifiedserver HTTP/1.1
 19:29:16.876089 Are-we-friendly question received
 19:29:16.876118 Wrote request (93 bytes) input to log/11/server.input
 19:29:16.876135 Identifying ourselves as friends
 19:29:16.876200 Response sent (56 bytes) and written to log/11/server.response
 19:29:16.876212 special request received, no persistency
 19:29:16.876221 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40989) from 127.0.0.1 port 40234 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79065
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3032
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79065
=== End of file server.response
=== Start of file valgrind3032
 ==187035== 
 ==187035== Process terminating with default action of signal 4 (SIGILL)
 ==187035==  Illegal opcode at address 0x492B75F
 ==187035==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==187035==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==187035==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==187035==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==187035==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==187035==    by 0x49908EB: curl_version_info (version.c:600)
 ==187035==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==187035==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==187035==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==187035==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3032
test 3107 [reject internal easy handle passed to a notify callback]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3107 ./libtest/libtests lib3107 http://127.0.0.1:34531/3107 > log/2/stdout3107 2> log/2/stderr3107

 3107: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 3107
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3107 ./libtest/libtests lib3107 http://127.0.0.1:34531/3107 > log/2/stdout3107 2> log/2/stderr3107
=== End of file commands.log
=== Start of file http_server.log
 19:29:18.821510 ====> Client connect
 19:29:18.821560 accept_connection 3 returned 4
 19:29:18.821589 Read 93 bytes
 19:29:18.821599 Process 93 bytes request
 19:29:18.821611 Got request: GET /verifiedserver HTTP/1.1
 19:29:18.821620 Are-we-friendly question received
 19:29:18.821650 Wrote request (93 bytes) input to log/2/server.input
 19:2CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3100 ./libtest/libtests lib3100 rtsp://127.0.0.1:45539/3100 > log/13/stdout3100 2> log/13/stderr3100
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3105 ./libtest/libtests lib3105 - > log/10/stdout3105 2> log/10/stderr3105
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3104 ./libtest/libtests lib3104 http://127.0.0.1:44711/3104 > log/23/stdout3104 2> log/23/stderr3104
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3038 ../src/curl -q --include --trace-ascii log/6/trace3038 --trace-time http://127.0.0.1:33935/victim3038 -O -J -i --etag-save log/6/etag3038 --output-dir log/6 > log/6/stdout3038 2> log/6/stderr3038
9:18.821668 Identifying ourselves as friends
 19:29:18.821784 Response sent (56 bytes) and written to log/2/server.response
 19:29:18.821798 special request received, no persistency
 19:29:18.821806 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 44996 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3107
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind3107
 ==187925== 
 ==187925== Process terminating with default action of signal 4 (SIGILL)
 ==187925==  Illegal opcode at address 0x51CC63F
 ==187925==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187925==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187925==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187925==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3107
test 3100 [RTSP Authentication check]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3100 ./libtest/libtests lib3100 rtsp://127.0.0.1:45539/3100 > log/13/stdout3100 2> log/13/stderr3100

 3100: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 3100
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3100 ./libtest/libtests lib3100 rtsp://127.0.0.1:45539/3100 > log/13/stdout3100 2> log/13/stderr3100
=== End of file commands.log
=== Start of file rtsp_server.log
 19:29:17.305979 ====> Client connect
 19:29:17.306019 Read 93 bytes
 19:29:17.306031 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1
 Host: 127.0.0.1:45539
 User-Agent: curl/8.23.0
 Accept: */*
 ]
 19:29:17.306056 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.306065 Are-we-friendly question received
 19:29:17.306094 Wrote request (93 bytes) input to log/13/server.input
 19:29:17.306112 Send response number -2 part 0
 19:29:17.306121 Identifying ourselves as friends
 19:29:17.306166 Sent off 69 bytes
 19:29:17.306184 Response sent (69 bytes) and written to log/13/server.response
 19:29:17.306193 special request received, no persistency
 19:29:17.306201 ====> Client disconnect
=== End of file rtsp_server.log
=== Start of file rtsp_verify.log
 *   Trying 127.0.0.1:45539...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45539) from 127.0.0.1 port 45612 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45539
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 30
 < 
 { [30 bytes data]
 * Connection #0 to host 127.0.0.1:45539 left intact
=== End of file rtsp_verify.log
=== Start of file rtsp_verify.out
 RTSP_SERVER WE ROOLZ: 111131
=== End of file rtsp_verify.out
=== Start of file server.cmd
 Testnum 3100
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 30
 RTSP_SERVER WE ROOLZ: 111131
=== End of file server.response
=== Start of file valgrind3100
 ==187492== 
 ==187492== Process terminating with default action of signal 4 (SIGILL)
 ==187492==  Illegal opcode at address 0x51CC63F
 ==187492==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187492==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187492==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187492==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3100
test 3105 [curl_multi_remove_handle twice]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3105 ./libtest/libtests lib3105 - > log/10/stdout3105 2> log/10/stderr3105

libtests returned 132, when expecting 0
 3105: exit FAILED
== Contents of files in the log/10/ directory after test 3105
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3105 ./libtest/libtests lib3105 - > log/10/stdout3105 2> log/10/stderr3105
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3105
=== End of file server.cmd
=== Start of file valgrind3105
 ==187740== 
 ==187740== Process terminating with default action of signal 4 (SIGILL)
 ==187740==  Illegal opcode at address 0x51CC63F
 ==187740==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187740==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187740==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187740==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3105
test 3104 [CURLOPT_COOKIELIST with Netscape format]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3104 ./libtest/libtests lib3104 http://127.0.0.1:44711/3104 > log/23/stdout3104 2> log/23/stderr3104

 3104: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 3104
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3104 ./libtest/libtests lib3104 http://127.0.0.1:44711/3104 > log/23/stdout3104 2> log/23/stderr3104
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.590615 ====> Client connect
 19:29:17.590651 accept_connection 3 returned 4
 19:29:17.590671 Read 93 bytes
 19:29:17.590680 Process 93 bytes request
 19:29:17.590692 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.590700 Are-we-friendly question received
 19:29:17.590724 Wrote request (93 bytes) input to log/23/server.input
 19:29:17.590746 Identifying ourselves as friends
 19:29:17.590820 Response sent (56 bytes) and written to log/23/server.response
 19:29:17.590829 special request received, no persistency
 19:29:17.590836 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 34012 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3104
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind3104
 ==187736== 
 ==187736== Process terminating with default action of signal 4 (SIGILL)
 ==187736==  Illegal opcode at address 0x51CC63F
 ==187736==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==187736==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==187736==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==187736==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3104
test 3038 [Do not open CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3205 ./unit/units unit3205 - > log/8/stdout3205 2> log/8/stderr3205
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3036 ../src/curl -q --include --trace-ascii log/19/trace3036 --trace-time http://127.0.0.1:37077/ --no-clobber --output-dir log/19/present -OJ --retry 1 --retry-all-errors > log/19/stdout3036 2> log/19/stderr3036
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3030 ../src/curl -q --output log/16/curl3030.out  --include --trace-ascii log/16/trace3030 --trace-time -D log/16/heads3030 http://127.0.0.1:35903/3030 http://127.0.0.1:35903/3030 > log/16/stdout3030 2> log/16/stderr3030
output for ETag with -J, --show-headers, --etag-save]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3038 ../src/curl -q --include --trace-ascii log/6/trace3038 --trace-time http://127.0.0.1:33935/victim3038 -O -J -i --etag-save log/6/etag3038 --output-dir log/6 > log/6/stdout3038 2> log/6/stderr3038

 3038: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 3038
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3038 ../src/curl -q --include --trace-ascii log/6/trace3038 --trace-time http://127.0.0.1:33935/victim3038 -O -J -i --etag-save log/6/etag3038 --output-dir log/6 > log/6/stdout3038 2> log/6/stderr3038
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.284384 ====> Client connect
 19:29:17.284417 accept_connection 3 returned 4
 19:29:17.284437 Read 93 bytes
 19:29:17.284446 Process 93 bytes request
 19:29:17.284457 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.284465 Are-we-friendly question received
 19:29:17.284487 Wrote request (93 bytes) input to log/6/server.input
 19:29:17.284502 Identifying ourselves as friends
 19:29:17.284559 Response sent (56 bytes) and written to log/6/server.response
 19:29:17.284567 special request received, no persistency
 19:29:17.284574 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 58874 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3038
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind3038
 ==187469== 
 ==187469== Process terminating with default action of signal 4 (SIGILL)
 ==187469==  Illegal opcode at address 0x492B75F
 ==187469==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==187469==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==187469==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==187469==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==187469==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==187469==    by 0x49908EB: curl_version_info (version.c:600)
 ==187469==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==187469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==187469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==187469==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3038
=== Start of file victim3038
 original
=== End of file victim3038
test 3205 [cipher suite name lookup]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3205 ./unit/units unit3205 - > log/8/stdout3205 2> log/8/stderr3205

units returned 132, when expecting 0
 3205: exit FAILED
== Contents of files in the log/8/ directory after test 3205
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3205 ./unit/units unit3205 - > log/8/stdout3205 2> log/8/stderr3205
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3205
=== End of file server.cmd
=== Start of file valgrind3205
 ==188149== 
 ==188149== Process terminating with default action of signal 4 (SIGILL)
 ==188149==  Illegal opcode at address 0x4091F7F
 ==188149==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188149==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188149==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188149==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3205
test 3036 [--no-clobber, --retry and --output-dir identifying a file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3036 ../src/curl -q --include --trace-ascii log/19/trace3036 --trace-time http://127.0.0.1:37077/ --no-clobber --output-dir log/19/present -OJ --retry 1 --retry-all-errors > log/19/stdout3036 2> log/19/stderr3036

 3036: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 3036
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3036 ../src/curl -q --include --trace-ascii log/19/trace3036 --trace-time http://127.0.0.1:37077/ --no-clobber --output-dir log/19/present -OJ --retry 1 --retry-all-errors > log/19/stdout3036 2> log/19/stderr3036
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.124444 ====> Client connect
 19:29:17.124483 accept_connection 3 returned 4
 19:29:17.124506 Read 93 bytes
 19:29:17.124517 Process 93 bytes request
 19:29:17.124529 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.124538 Are-we-friendly question received
 19:29:17.124566 Wrote request (93 bytes) input to log/19/server.input
 19:29:17.124584 Identifying ourselves as friends
 19:29:17.124657 Response sent (57 bytes) and written to log/19/server.response
 19:29:17.124669 special request received, no persistency
 19:29:17.124677 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 53106 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file present
 present
=== End of file present
=== Start of file server.cmd
 Testnum 3036
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind3036
 ==187332== 
 ==187332== Process terminating with default action of signal 4 (SIGILL)
 ==187332==  Illegal opcode at address 0x492B75F
 ==187332==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==187332==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==187332==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==187332==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==187332==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==187332==    by 0x49908EB: curl_version_info (version.c:600)
 ==187332==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==187332==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==187332==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==187332==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3036
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind3035 ../src/curl -q --trace-ascii log/14/trace3035 --trace-time --continue-at - --retry 4 --retry-delay 1 --retry-all-errors -o log/14/outfile3035 http://127.0.0.1:45467/3035 > log/14/stdout3035 2> log/14/stderr3035
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3037 ../src/curl -q --include --trace-ascii log/5/trace3037 --trace-time http://127.0.0.1:37089/victim3037 -O -J -i --output-dir log/5 > log/5/stdout3037 2> log/5/stderr3037
test 3030 [HTTP with multiple transfers in one -D]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3030 ../src/curl -q --output log/16/curl3030.out  --include --trace-ascii log/16/trace3030 --trace-time -D log/16/heads3030 http://127.0.0.1:35903/3030 http://127.0.0.1:35903/3030 > log/16/stdout3030 2> log/16/stderr3030

 3030: data FAILED:
--- log/16/check-expected	2026-10-15 19:29:19.926069386 +0000
+++ log/16/check-generated	2026-10-15 19:29:19.922467387 +0000
@@ -1,5 +0,0 @@
-HTTP/1.1 200 OK[LF]
-Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
-Content-Length: 6[LF]
-[LF]
--foo-[LF]
== Contents of files in the log/16/ directory after test 3030
=== Start of file check-expected
 HTTP/1.1 200 OK[LF]
 Date: Tue, 09 Nov 2010 14:49:00 GMT[LF]
 Content-Length: 6[LF]
 [LF]
 -foo-[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3030 ../src/curl -q --output log/16/curl3030.out  --include --trace-ascii log/16/trace3030 --trace-time -D log/16/heads3030 http://127.0.0.1:35903/3030 http://127.0.0.1:35903/3030 > log/16/stdout3030 2> log/16/stderr3030
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.843293 ====> Client connect
 19:29:17.843328 accept_connection 3 returned 4
 19:29:17.843493 Read 93 bytes
 19:29:17.843508 Process 93 bytes request
 19:29:17.843522 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.843531 Are-we-friendly question received
 19:29:17.843562 Wrote request (93 bytes) input to log/16/server.input
 19:29:17.843579 Identifying ourselves as friends
 19:29:17.843640 Response sent (56 bytes) and written to log/16/server.response
 19:29:17.843651 special request received, no persistency
 19:29:17.843659 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 56658 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3030
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind3030
 ==186996== 
 ==186996== Process terminating with default action of signal 4 (SIGILL)
 ==186996==  Illegal opcode at address 0x492B75F
 ==186996==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==186996==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==186996==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==186996==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==186996==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==186996==    by 0x49908EB: curl_version_info (version.c:600)
 ==186996==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==186996==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==186996==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==186996==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3030
test 3035 [HTTP retry failed download with keep data and auto-resume]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind3035 ../src/curl -q --trace-ascii log/14/trace3035 --trace-time --continue-at - --retry 4 --retry-delay 1 --retry-all-errors -o log/14/outfile3035 http://127.0.0.1:45467/3035 > log/14/stdout3035 2> log/14/stderr3035

 3035: protocol FAILED!
 There was no content at all in the file log/14/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/14/ directory after test 3035
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind3035 ../src/curl -q --trace-ascii log/14/trace3035 --trace-time --continue-at - --retry 4 --retry-delay 1 --retry-all-errors -o log/14/outfile3035 http://127.0.0.1:45467/3035 > log/14/stdout3035 2> log/14/stderr3035
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.131077 ====> Client connect
 19:29:17.131122 accept_connection 3 returned 4
 19:29:17.131146 Read 93 bytes
 19:29:17.131155 Process 93 bytes request
 19:29:17.131168 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.131176 Are-we-friendly question received
 19:29:17.131202 Wrote request (93 bytes) input to log/14/server.input
 19:29:17.131217 Identifying ourselves as friends
 19:29:17.131287 Response sent (56 bytes) and written to log/14/server.response
 19:29:17.131296 special request received, no persistency
 19:29:17.131303 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 35708 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3035
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind3035
 ==187324== 
 ==187324== Process terminating with default action of signal 4 (SIGILL)
 ==187324==  Illegal opcode at address 0x492B75F
 ==187324==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==187324==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==187324==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==187324==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==187324==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==187324==    by 0x49908EB: curl_version_info (version.c:600)
 ==187324==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==187324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==187324==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==187324==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3035
test 3037 [Do not open output for 103 Early Hints with -J and --show-headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3037 ../src/curl -q --include --trace-ascii log/5/trace3037 --trace-time http://127.0.0.1:37089/victim3037 -O -J -i --output-dir log/5 > log/5/stdout3037 2> log/5/stderr3037

 3037: protocol FAILED!
 There was no content at all in the file log/5/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/5/ directory after test 3037
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3037 ../src/curl -q --include --trace-ascii log/5/trace3037 --trace-time http://127.0.0.1:37089/victim3037 -O -J -i --output-dir log/5 > log/5/stdout3037 2> log/5/stderr3037
=== End of file commands.log
=== Start of file http_server.log
 19:29:17.230586 ====> Client connect
 19:29:17.230623 accept_connection 3 returned 4
 19:29:17.230646 Read 93 bytes
 19:29:17.230656 Process 93 bytes request
 19:29:17.230669 Got request: GETCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3211 ./unit/units unit3211 - > log/20/stdout3211 2> log/20/stderr3211
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3214 ./unit/units unit3214 - > log/17/stdout3214 2> log/17/stderr3214
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3212 ./unit/units unit3212 - > log/24/stdout3212 2> log/24/stderr3212
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3206 ../src/curl -q --output log/22/curl3206.out  --include --trace-ascii log/22/trace3206 --trace-time imap://127.0.0.1:37605/3206/ -u user:secret -X 'FETCH 456 ("fake {50}" BODY[TEXT])' > log/22/stdout3206 2> log/22/stderr3206
 /verifiedserver HTTP/1.1
 19:29:17.230678 Are-we-friendly question received
 19:29:17.230707 Wrote request (93 bytes) input to log/5/server.input
 19:29:17.230726 Identifying ourselves as friends
 19:29:17.230796 Response sent (56 bytes) and written to log/5/server.response
 19:29:17.230808 special request received, no persistency
 19:29:17.230817 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37089...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37089) from 127.0.0.1 port 34468 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37089
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:37089 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 81869
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3037
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 81869
=== End of file server.response
=== Start of file valgrind3037
 ==187428== 
 ==187428== Process terminating with default action of signal 4 (SIGILL)
 ==187428==  Illegal opcode at address 0x492B75F
 ==187428==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==187428==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==187428==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==187428==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==187428==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==187428==    by 0x49908EB: curl_version_info (version.c:600)
 ==187428==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==187428==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==187428==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==187428==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3037
=== Start of file victim3037
 original
=== End of file victim3037
test 3211 [uint_bset, u8_strset, u32_ptrset and ptrarray unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3211 ./unit/units unit3211 - > log/20/stdout3211 2> log/20/stderr3211

units returned 132, when expecting 0
 3211: exit FAILED
== Contents of files in the log/20/ directory after test 3211
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3211 ./unit/units unit3211 - > log/20/stdout3211 2> log/20/stderr3211
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3211
=== End of file server.cmd
=== Start of file valgrind3211
 ==188333== 
 ==188333== Process terminating with default action of signal 4 (SIGILL)
 ==188333==  Illegal opcode at address 0x4091F7F
 ==188333==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188333==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188333==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188333==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3211
test 3214 [struct size checks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3214 ./unit/units unit3214 - > log/17/stdout3214 2> log/17/stderr3214

units returned 132, when expecting 0
 3214: exit FAILED
== Contents of files in the log/17/ directory after test 3214
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3214 ./unit/units unit3214 - > log/17/stdout3214 2> log/17/stderr3214
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3214
=== End of file server.cmd
=== Start of file valgrind3214
 ==188534== 
 ==188534== Process terminating with default action of signal 4 (SIGILL)
 ==188534==  Illegal opcode at address 0x4091F7F
 ==188534==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188534==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188534==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188534==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3214
test 3212 [uint32_tbl unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3212 ./unit/units unit3212 - > log/24/stdout3212 2> log/24/stderr3212

units returned 132, when expecting 0
 3212: exit FAILED
== Contents of files in the log/24/ directory after test 3212
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3212 ./unit/units unit3212 - > log/24/stdout3212 2> log/24/stderr3212
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3212
=== End of file server.cmd
=== Start of file valgrind3212
 ==188513== 
 ==188513== Process terminating with default action of signal 4 (SIGILL)
 ==188513==  Illegal opcode at address 0x4091F7F
 ==188513==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188513==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188513==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188513==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3212
test 3206 [IMAP custom FETCH with larger literal response (~7KB)]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3206 ../src/curl -q --output log/22/curl3206.out  --include --trace-ascii log/22/trace3206 --trace-time imap://127.0.0.1:37605/3206/ -u user:secret -X 'FETCH 456 ("fake {50}" BODY[TEXT])' > log/22/stdout3206 2> log/22/stderr3206

 3206: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 3206
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3206 ../src/curl -q --output log/22/curl3206.out  --include --trace-ascii log/22/trace3206 --trace-time imap://127.0.0.1:37605/3206/ -u user:secret -X 'FETCH 456 ("fake {50}" BODY[TEXT])' > log/22/stdout3206 2> log/22/stderr3206
=== End of file commands.log
=== Start of file imap_server.log
 19:29:18.868328 ====> Client connect
 19:29:18.868667 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:29:18.868926 < "A001 CAPABILITY"
 19:29:18.868972 > "A001 BAD Command[CR][LF]"
 19:29:18.869175 < "A002 LIST "verifiedserver" *"
 19:29:18.869206 LIST_imap got "verifiedserver" *
 19:29:18.869235 > "* LIST () "/" "WE ROOLZ: 121995"[CR][LF]"
 19:29:18.869253 > "A002 OK LIST Completed[CR][LF]"
 19:29:18.869267 return proof we are we
 19:29:18.915657 < "A003 LOGOUT"
 19:29:18.915715 > "* BYE curl IMAP server signing off[CR][LF]"
 19:29:18.915734 > "A003 OK LOGOUT completed[CR][LF]"
 19:29:18.917105 MAIN sockfilt said DISC
 19:29:18.917149 ====> Client disconnected
 19:29:18.917230 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:29:19.470541 ====> Client connect
 19:29:19.470860 Received DATA (on stdin)
 19:29:19.470881 > 164 bytes data, server => client
 19:29:19.470902 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:29:19.470913 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:29:19.470923 ' \_\_____|\r\n* OK curl IMAP server readyCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind3203 ../src/curl -q --trace-ascii log/21/trace3203 --trace-time file://localhost/startdir/src/build-curl/tests/log/21/test3203.dir/ > log/21/stdout3203 2> log/21/stderr3203
 to serve\r\n'
 19:29:19.471124 < 17 bytes data, client => server
 19:29:19.471139 'A001 CAPABILITY\r\n'
 19:29:19.471340 Received DATA (on stdin)
 19:29:19.471351 > 18 bytes data, server => client
 19:29:19.471362 'A001 BAD Command\r\n'
 19:29:19.471431 < 30 bytes data, client => server
 19:29:19.471443 'A002 LIST "verifiedserver" *\r\n'
 19:29:19.471630 Received DATA (on stdin)
 19:29:19.471641 > 34 bytes data, server => client
 19:29:19.471651 '* LIST () "/" "WE ROOLZ: 121995"\r\n'
 19:29:19.471672 Received DATA (on stdin)
 19:29:19.471682 > 24 bytes data, server => client
 19:29:19.471691 'A002 OK LIST Completed\r\n'
 19:29:19.517818 < 13 bytes data, client => server
 19:29:19.517854 'A003 LOGOUT\r\n'
 19:29:19.518101 Received DATA (on stdin)
 19:29:19.518113 > 36 bytes data, server => client
 19:29:19.518123 '* BYE curl IMAP server signing off\r\n'
 19:29:19.518150 Received DATA (on stdin)
 19:29:19.518159 > 26 bytes data, server => client
 19:29:19.518168 'A003 OK LOGOUT completed\r\n'
 19:29:19.519408 ====> Client disconnect
 19:29:19.519598 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 3206
=== End of file server.cmd
=== Start of file valgrind3206
 ==188277== 
 ==188277== Process terminating with default action of signal 4 (SIGILL)
 ==188277==  Illegal opcode at address 0x492B75F
 ==188277==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188277==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188277==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188277==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188277==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188277==    by 0x49908EB: curl_version_info (version.c:600)
 ==188277==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188277==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188277==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3206
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3216 ./unit/units unit3216 - > log/11/stdout3216 2> log/11/stderr3216
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3213 ./unit/units unit3213 - > log/4/stdout3213 2> log/4/stderr3213
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3219 ./unit/units unit3219 - > log/10/stdout3219 2> log/10/stderr3219
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3028 ../src/curl -q --output log/3/curl3028.out  --include --trace-ascii log/3/trace3028 --trace-time --haproxy-protocol http://127.0.0.1:36161/page --proxytunnel -x 127.0.0.1:38787 > log/3/stdout3028 2> log/3/stderr3028
test 3203 [Get a directory using file://]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind3203 ../src/curl -q --trace-ascii log/21/trace3203 --trace-time file://localhost/startdir/src/build-curl/tests/log/21/test3203.dir/ > log/21/stdout3203 2> log/21/stderr3203

 3203: stdout FAILED:
--- log/21/check-expected	2026-10-15 19:29:20.826568397 +0000
+++ log/21/check-generated	2026-10-15 19:29:20.822452694 +0000
@@ -1 +0,0 @@
-dir-listing-test.txt[LF]
== Contents of files in the log/21/ directory after test 3203
=== Start of file check-expected
 dir-listing-test.txt[LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind3203 ../src/curl -q --trace-ascii log/21/trace3203 --trace-time file://localhost/startdir/src/build-curl/tests/log/21/test3203.dir/ > log/21/stdout3203 2> log/21/stderr3203
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3203
=== End of file server.cmd
=== Start of file valgrind3203
 ==188027== 
 ==188027== Process terminating with default action of signal 4 (SIGILL)
 ==188027==  Illegal opcode at address 0x492B75F
 ==188027==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188027==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188027==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188027==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188027==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188027==    by 0x49908EB: curl_version_info (version.c:600)
 ==188027==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188027==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188027==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3203
test 3216 [ratelimit unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3216 ./unit/units unit3216 - > log/11/stdout3216 2> log/11/stderr3216

units returned 132, when expecting 0
 3216: exit FAILED
== Contents of files in the log/11/ directory after test 3216
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3216 ./unit/units unit3216 - > log/11/stdout3216 2> log/11/stderr3216
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3216
=== End of file server.cmd
=== Start of file valgrind3216
 ==188596== 
 ==188596== Process terminating with default action of signal 4 (SIGILL)
 ==188596==  Illegal opcode at address 0x4091F7F
 ==188596==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188596==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188596==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188596==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3216
test 3213 [uint_spbset unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3213 ./unit/units unit3213 - > log/4/stdout3213 2> log/4/stderr3213

units returned 132, when expecting 0
 3213: exit FAILED
== Contents of files in the log/4/ directory after test 3213
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3213 ./unit/units unit3213 - > log/4/stdout3213 2> log/4/stderr3213
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3213
=== End of file server.cmd
=== Start of file valgrind3213
 ==188525== 
 ==188525== Process terminating with default action of signal 4 (SIGILL)
 ==188525==  Illegal opcode at address 0x4091F7F
 ==188525==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188525==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188525==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188525==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3213
test 3219 [CURLPROTO_MASK checks]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3219 ./unit/units unit3219 - > log/10/stdout3219 2> log/10/stderr3219

units returned 132, when expecting 0
 3219: exit FAILED
== Contents of files in the log/10/ directory after test 3219
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3219 ./unit/units unit3219 - > log/10/stdout3219 2> log/10/stderr3219
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3219
=== End of file server.cmd
=== Start of file valgrind3219
 ==188743== 
 ==188743== Process terminating with default action of signal 4 (SIGILL)
 ==188743==  Illegal opcode at address 0x4091F7F
 ==188743==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==188743==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==188743==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==188743==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3219
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/3/server/http2_server.pid" --logfile "log/3/http2_server.log" --logdir "log/3" --portfile log/3/server/http2_server.port --config log/3/server.cmd --id 2 --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP2 server is on PID 186797 port 38787
* pid http-proxy => 186797 186797
test 3028 [HTTP GET when PROXY Protocol enabled behind a proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3028 ../src/curl -q --output log/3/curl3028.out  --include --trace-ascii log/3/trace3028 --trace-time --haproxy-protocol http://127.0.0.1:36161/page --proxytunnel -x 127.0.0.1:38787 > log/3/stdout3028 2> log/3/stderr3028

 3028: protocol FAILED!
 There was no content at all in the file log/3/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/3/ directory after test 3028
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3028 ../src/curl -q --output log/3/curl3028.out  --include --trace-ascii log/3/trace3028 --trace-time --haproxy-protocol http://127.0.0.1:36161/page --proxytunnel -x 127.0.0.1:38787 > log/3/stdout3028 2> log/3/stderr3028
=== End of file commands.log
=== Start of file http2_server.log
 19:29:17.691470 Run as proxy, CONNECT to host 127.0.0.1
 19:29:17.691594 Running HTTP IPv4 version on port 38787
 19:29:17.691640 Wrote pid 186797 to log/3/server/http2_server.pid
 19:29:17.691671 Wrote port 38787 to log/3/server/http2_server.port
=== End of file http2_server.log
=== Start of file http_server.log
 19:29:17.642968 ====> Client connect
 19:29:17.643002 accept_connection 3 returned 4
 19:29:17.643023 Read 93 bytes
 19:29:17.643033 Process 93 bytes request
 19:29:17.643047 Got request: GET /verifiedserver HTTP/1.1
 19:29:17.643055 Are-we-friendly question received
 19:29:17.643081 Wrote request (93 bytes) input to log/3/server.input
 19:29:17.643097 Identifying ourselves as friends
 19:29:17.643164 Response sent (56 bytes) and written to log/3/server.response
 19:29:17.643173 special request received, no persistency
 19:29:17.643181 ====> Client disconnect 0
=== End oCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3201 ../src/curl -q --output log/12/curl3201.out  --include --trace-ascii log/12/trace3201 --trace-time http://127.0.0.1:40921/3201 --haproxy-clientip "192.168.1.1" -H "Testno: 3201" > log/12/stdout3201 2> log/12/stderr3201
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3204 ../src/curl -q --output log/7/curl3204.out  --include --trace-ascii log/7/trace3204 --trace-time http://127.0.0.1:40859/3204 --etag-compare log/7/etag3204 --etag-save log/7/etag3204 > log/7/stdout3204 2> log/7/stderr3204
f file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:36161...
 * Established connection to 127.0.0.1 (127.0.0.1 port 36161) from 127.0.0.1 port 57860 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:36161
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:36161 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82533
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3028
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82533
=== End of file server.response
=== Start of file valgrind3028
 ==187778== 
 ==187778== Process terminating with default action of signal 4 (SIGILL)
 ==187778==  Illegal opcode at address 0x492B75F
 ==187778==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==187778==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==187778==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==187778==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==187778==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==187778==    by 0x49908EB: curl_version_info (version.c:600)
 ==187778==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==187778==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==187778==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==187778==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3028
test 3201 [HTTP GET when PROXY Protocol enabled and spoofed client IPv4]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3201 ../src/curl -q --output log/12/curl3201.out  --include --trace-ascii log/12/trace3201 --trace-time http://127.0.0.1:40921/3201 --haproxy-clientip "192.168.1.1" -H "Testno: 3201" > log/12/stdout3201 2> log/12/stderr3201

 3201: protocol FAILED!
 There was no content at all in the file log/12/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/12/ directory after test 3201
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3201 ../src/curl -q --output log/12/curl3201.out  --include --trace-ascii log/12/trace3201 --trace-time http://127.0.0.1:40921/3201 --haproxy-clientip "192.168.1.1" -H "Testno: 3201" > log/12/stdout3201 2> log/12/stderr3201
=== End of file commands.log
=== Start of file http_server.log
 19:29:18.074408 ====> Client connect
 19:29:18.074447 accept_connection 3 returned 4
 19:29:18.074473 Read 93 bytes
 19:29:18.074484 Process 93 bytes request
 19:29:18.074497 Got request: GET /verifiedserver HTTP/1.1
 19:29:18.074506 Are-we-friendly question received
 19:29:18.074537 Wrote request (93 bytes) input to log/12/server.input
 19:29:18.074558 Identifying ourselves as friends
 19:29:18.074645 Response sent (56 bytes) and written to log/12/server.response
 19:29:18.074658 special request received, no persistency
 19:29:18.074668 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40921...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40921) from 127.0.0.1 port 60216 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40921
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40921 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79038
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3201
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79038
=== End of file server.response
=== Start of file valgrind3201
 ==188060== 
 ==188060== Process terminating with default action of signal 4 (SIGILL)
 ==188060==  Illegal opcode at address 0x492B75F
 ==188060==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188060==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188060==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188060==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188060==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188060==    by 0x49908EB: curl_version_info (version.c:600)
 ==188060==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188060==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188060==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3201
test 3204 [Use --etag-compare and --etag-save on an existing file]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3204 ../src/curl -q --output log/7/curl3204.out  --include --trace-ascii log/7/trace3204 --trace-time http://127.0.0.1:40859/3204 --etag-compare log/7/etag3204 --etag-save log/7/etag3204 > log/7/stdout3204 2> log/7/stderr3204

 3204: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/7/ directory after test 3204
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3204 ../src/curl -q --output log/7/curl3204.out  --include --trace-ascii log/7/trace3204 --trace-time http://127.0.0.1:40859/3204 --etag-compare log/7/etag3204 --etag-save log/7/etag3204 > log/7/stdout3204 2> log/7/stderr3204
=== End of file commands.log
=== Start of file etag3204
 "21025-dc7-39462498"
=== End of file etag3204
=== Start of file http_server.log
 19:29:18.306099 ====> Client connect
 19:29:18.306132 accept_connection 3 returned 4
 19:29:18.306153 Read 93 bytes
 19:29:18.306162 Process 93 bytes request
 19:29:18.306175 Got request: GET /verifiedserver HTTP/1.1
 19:29:18.306183 Are-we-friendly question received
 19:29:18.306209 Wrote request (93 bytes) input to log/7/server.input
 19:29:18.306225 Identifying ourselves as friends
 19:29:18.306284 Response sent (56 bytes) and written to log/7/server.response
 19:29:18.306293 special request received, no persistency
 19:29:18.306301 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:40859...
 * Established connection to 127.0.0.1 (127.0.0.1 port 40859) from 127.0.0.1 port 47636 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:40859
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:40859 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79175
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3204
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79175
=== End of file server.response
=== Start of file valgrind3204
 ==188173== 
 ==188173== Process terminating with default action of signal 4 (SIGILL)
 ==188173==  Illegal opcode at address 0x492B75F
 ==188173==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188173==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188173==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188173==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188173==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188173==    by 0x49908EB: curl_version_info (version.c:600)
 ==188173==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188173==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188173==    by 0x400CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3209 ../src/curl -q --output log/9/curl3209.out  --include --trace-ascii log/9/trace3209 --trace-time imap://127.0.0.1:38847/3209 -T log/9/upload3209 -u user:secret --upload-flags answered,deleted,draft,flagged,seen > log/9/stdout3209 2> log/9/stderr3209
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3227 ./unit/units unit3227 - > log/5/stdout3227 2> log/5/stderr3227
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3210 ../src/curl -q --output log/1/curl3210.out  --include --trace-ascii log/1/trace3210 --trace-time imap://127.0.0.1:35739/3210 -T log/1/upload3210 -u user:secret --upload-flags -seen > log/1/stdout3210 2> log/1/stderr3210
3269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188173==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3204
test 3209 [Upload message via IMAP with upload flags]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3209 ../src/curl -q --output log/9/curl3209.out  --include --trace-ascii log/9/trace3209 --trace-time imap://127.0.0.1:38847/3209 -T log/9/upload3209 -u user:secret --upload-flags answered,deleted,draft,flagged,seen > log/9/stdout3209 2> log/9/stderr3209

 3209: protocol FAILED!
 There was no content at all in the file log/9/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/9/ directory after test 3209
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3209 ../src/curl -q --output log/9/curl3209.out  --include --trace-ascii log/9/trace3209 --trace-time imap://127.0.0.1:38847/3209 -T log/9/upload3209 -u user:secret --upload-flags answered,deleted,draft,flagged,seen > log/9/stdout3209 2> log/9/stderr3209
=== End of file commands.log
=== Start of file imap_server.log
 19:29:18.954925 ====> Client connect
 19:29:18.955090 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:29:18.955420 < "A001 CAPABILITY"
 19:29:18.955460 > "A001 BAD Command[CR][LF]"
 19:29:18.955653 < "A002 LIST "verifiedserver" *"
 19:29:18.955682 LIST_imap got "verifiedserver" *
 19:29:18.955710 > "* LIST () "/" "WE ROOLZ: 113573"[CR][LF]"
 19:29:18.955729 > "A002 OK LIST Completed[CR][LF]"
 19:29:18.955744 return proof we are we
 19:29:19.002322 < "A003 LOGOUT"
 19:29:19.002386 > "* BYE curl IMAP server signing off[CR][LF]"
 19:29:19.002411 > "A003 OK LOGOUT completed[CR][LF]"
 19:29:19.003742 MAIN sockfilt said DISC
 19:29:19.003780 ====> Client disconnected
 19:29:19.003862 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:29:18.557178 ====> Client connect
 19:29:18.557469 Received DATA (on stdin)
 19:29:18.557484 > 164 bytes data, server => client
 19:29:18.557496 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:29:18.557507 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:29:18.557517 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:29:18.557609 < 17 bytes data, client => server
 19:29:18.557625 'A001 CAPABILITY\r\n'
 19:29:18.557830 Received DATA (on stdin)
 19:29:18.557847 > 18 bytes data, server => client
 19:29:18.557858 'A001 BAD Command\r\n'
 19:29:18.557923 < 30 bytes data, client => server
 19:29:18.557935 'A002 LIST "verifiedserver" *\r\n'
 19:29:18.558109 Received DATA (on stdin)
 19:29:18.558121 > 34 bytes data, server => client
 19:29:18.558132 '* LIST () "/" "WE ROOLZ: 113573"\r\n'
 19:29:18.558155 Received DATA (on stdin)
 19:29:18.558165 > 24 bytes data, server => client
 19:29:18.558175 'A002 OK LIST Completed\r\n'
 19:29:18.604472 < 13 bytes data, client => server
 19:29:18.604510 'A003 LOGOUT\r\n'
 19:29:18.604781 Received DATA (on stdin)
 19:29:18.604794 > 36 bytes data, server => client
 19:29:18.604804 '* BYE curl IMAP server signing off\r\n'
 19:29:18.604833 Received DATA (on stdin)
 19:29:18.604844 > 26 bytes data, server => client
 19:29:18.604854 'A003 OK LOGOUT completed\r\n'
 19:29:18.606052 ====> Client disconnect
 19:29:18.606231 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 3209
=== End of file server.cmd
=== Start of file upload3209
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
 From: Fred Foobar <foobar@example.COM>
 Subject: afternoon meeting
 To: joe@example.com
 Message-Id: <B27397-0100000@example.COM>
 MIME-Version: 1.0
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
 Hello Joe, do you think we can meet at 3:30 tomorrow?
=== End of file upload3209
=== Start of file valgrind3209
 ==188332== 
 ==188332== Process terminating with default action of signal 4 (SIGILL)
 ==188332==  Illegal opcode at address 0x492B75F
 ==188332==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188332==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188332==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188332==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188332==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188332==    by 0x49908EB: curl_version_info (version.c:600)
 ==188332==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188332==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188332==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188332==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3209
test 3227 [reject CR and LF in mail mime part name and filename]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3227 ./unit/units unit3227 - > log/5/stdout3227 2> log/5/stderr3227

units returned 132, when expecting 0
 3227: exit FAILED
== Contents of files in the log/5/ directory after test 3227
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3227 ./unit/units unit3227 - > log/5/stdout3227 2> log/5/stderr3227
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3227
=== End of file server.cmd
=== Start of file valgrind3227
 ==189215== 
 ==189215== Process terminating with default action of signal 4 (SIGILL)
 ==189215==  Illegal opcode at address 0x4091F7F
 ==189215==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189215==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189215==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189215==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3227
test 3210 [Upload message unread via IMAP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3210 ../src/curl -q --output log/1/curl3210.out  --include --trace-ascii log/1/trace3210 --trace-time imap://127.0.0.1:35739/3210 -T log/1/upload3210 -u user:secret --upload-flags -seen > log/1/stdout3210 2> log/1/stderr3210

 3210: protocol FAILED!
 There was no content at all in the file log/1/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/1/ directory after test 3210
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3210 ../src/curl -q --output log/1/curl3210.out  --include --trace-ascii log/1/trace3210 --trace-time imap://127.0.0.1:35739/3210 -T log/1/upload3210 -u user:secret --upload-flags -seen > log/1/stdout3210 2> log/1/stderr3210
=== End of file commands.log
=== Start of file imap_server.log
 19:29:19.027817 ====> Client connect
 19:29:19.027974 > "        _   _ ____  _[CR][LF]    ___| | | |  _ \| |[CR][LF]   / __| | | | |_) | |[CR][LF]  | (__| |_| |  _ {| |___[CR][LF]   \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]"
 19:29:19.028262 < "A001 CAPABILITY"
 19:29:19.028414 > "A001 BAD Command[CR][LF]"
 19:29:19.028481 < "A002 LIST "verifiedserver" *"
 19:29:19.028505 LIST_imap got "verifiedserver" *
 19:29:19.032067 > "* LIST () "/" "WE ROOLZ: 122891"[CR][LF]"
 19:29:19.032107 > "A002 OK LIST Completed[CR][LF]"
 19:29:19.032122 return proof we are we
 19:29:19.079002 < "A003 LOGOUT"
 19:29:19.079063 > "* BYE curl IMAP server signing off[CR][LF]"
 19:29:19.079081 > "A003 OK LOGOUT completed[CR][LF]"
 19:29:19.080301 MAIN sockfilt said DISC
 19:29:19.08CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3202 ../src/curl -q --output log/15/curl3202.out  --include --trace-ascii log/15/trace3202 --trace-time -g "http://[::1]:41281/3202" --haproxy-clientip "2001:db8::" > log/15/stdout3202 2> log/15/stderr3202
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3215 ../src/curl -q --output log/18/curl3215.out  --include --trace-ascii log/18/trace3215 --trace-time smtp://127.0.0.1:33075/3215 --mail-rcpt "<recipient@example.com> NOTIFY=SUCCESS,FAILURE" --mail-from "<sender@example.com> RET=HDRS" -T - <log/18/stdin-for-3215 > log/18/stdout3215 2> log/18/stderr3215
0380 ====> Client disconnected
 19:29:19.080490 Awaiting input
=== End of file imap_server.log
=== Start of file imap_sockfilt.log
 19:29:18.630077 ====> Client connect
 19:29:18.630352 Received DATA (on stdin)
 19:29:18.630367 > 164 bytes data, server => client
 19:29:18.630377 '        _   _ ____  _\r\n    ___| | | |  _ \| |\r\n   / __| |'
 19:29:18.630387 ' | | |_) | |\r\n  | (__| |_| |  _ {| |___\r\n   \___|\___/|_|'
 19:29:18.630396 ' \_\_____|\r\n* OK curl IMAP server ready to serve\r\n'
 19:29:18.630479 < 17 bytes data, client => server
 19:29:18.630490 'A001 CAPABILITY\r\n'
 19:29:18.630643 Received DATA (on stdin)
 19:29:18.630654 > 18 bytes data, server => client
 19:29:18.630671 'A001 BAD Command\r\n'
 19:29:18.630722 < 30 bytes data, client => server
 19:29:18.630732 'A002 LIST "verifiedserver" *\r\n'
 19:29:18.634349 Received DATA (on stdin)
 19:29:18.634374 > 34 bytes data, server => client
 19:29:18.634487 '* LIST () "/" "WE ROOLZ: 122891"\r\n'
 19:29:18.634525 Received DATA (on stdin)
 19:29:18.634535 > 24 bytes data, server => client
 19:29:18.634545 'A002 OK LIST Completed\r\n'
 19:29:18.681166 < 13 bytes data, client => server
 19:29:18.681193 'A003 LOGOUT\r\n'
 19:29:18.681451 Received DATA (on stdin)
 19:29:18.681465 > 36 bytes data, server => client
 19:29:18.681475 '* BYE curl IMAP server signing off\r\n'
 19:29:18.681501 Received DATA (on stdin)
 19:29:18.681510 > 26 bytes data, server => client
 19:29:18.681519 'A003 OK LOGOUT completed\r\n'
 19:29:18.682603 ====> Client disconnect
 19:29:18.682694 Received ACKD (on stdin)
=== End of file imap_sockfilt.log
=== Start of file server.cmd
 Testnum 3210
=== End of file server.cmd
=== Start of file upload3210
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
 From: Fred Foobar <foobar@example.COM>
 Subject: afternoon meeting
 To: joe@example.com
 Message-Id: <B27397-0100000@example.COM>
 MIME-Version: 1.0
 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
=== End of file upload3210
=== Start of file valgrind3210
 ==188392== 
 ==188392== Process terminating with default action of signal 4 (SIGILL)
 ==188392==  Illegal opcode at address 0x492B75F
 ==188392==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188392==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188392==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188392==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188392==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188392==    by 0x49908EB: curl_version_info (version.c:600)
 ==188392==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188392==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188392==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188392==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3210
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/15/server/http_ipv6_server.pid" --logfile "log/15/http_ipv6_server.log" --logdir "log/15" --portfile log/15/server/http_ipv6_server.port --config log/15/server.cmd --ipv6 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: HTTP-IPv6 server is on PID 188008 port 41281
* pid http-ipv6 => 188008 188008
test 3202 [HTTP-IPv6 GET with PROXY protocol with spoofed client IP]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3202 ../src/curl -q --output log/15/curl3202.out  --include --trace-ascii log/15/trace3202 --trace-time -g "http://[::1]:41281/3202" --haproxy-clientip "2001:db8::" > log/15/stdout3202 2> log/15/stderr3202

 3202: protocol FAILED!
 There was no content at all in the file log/15/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/15/ directory after test 3202
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3202 ../src/curl -q --output log/15/curl3202.out  --include --trace-ascii log/15/trace3202 --trace-time -g "http://[::1]:41281/3202" --haproxy-clientip "2001:db8::" > log/15/stdout3202 2> log/15/stderr3202
=== End of file commands.log
=== Start of file http_ipv6_server.log
 19:29:18.051752 Running HTTP IPv6 version on port 41281
 19:29:18.052016 Wrote pid 188008 to log/15/server/http_ipv6_server.pid
 19:29:18.052053 Wrote port 41281 to log/15/server/http_ipv6_server.port
=== End of file http_ipv6_server.log
=== Start of file server.cmd
 Testnum 3202
=== End of file server.cmd
=== Start of file valgrind3202
 ==188533== 
 ==188533== Process terminating with default action of signal 4 (SIGILL)
 ==188533==  Illegal opcode at address 0x492B75F
 ==188533==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188533==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188533==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188533==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188533==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188533==    by 0x49908EB: curl_version_info (version.c:600)
 ==188533==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188533==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188533==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188533==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3202
test 3215 [SMTP DSN]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3215 ../src/curl -q --output log/18/curl3215.out  --include --trace-ascii log/18/trace3215 --trace-time smtp://127.0.0.1:33075/3215 --mail-rcpt "<recipient@example.com> NOTIFY=SUCCESS,FAILURE" --mail-from "<sender@example.com> RET=HDRS" -T - <log/18/stdin-for-3215 > log/18/stdout3215 2> log/18/stderr3215

 3215: protocol FAILED!
 There was no content at all in the file log/18/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/18/ directory after test 3215
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3215 ../src/curl -q --output log/18/curl3215.out  --include --trace-ascii log/18/trace3215 --trace-time smtp://127.0.0.1:33075/3215 --mail-rcpt "<recipient@example.com> NOTIFY=SUCCESS,FAILURE" --mail-from "<sender@example.com> RET=HDRS" -T - <log/18/stdin-for-3215 > log/18/stdout3215 2> log/18/stderr3215
=== End of file commands.log
=== Start of file server.cmd
 REPLY MAIL 250 Ok
 REPLY RCPT 250 Ok
 Testnum 3215
=== End of file server.cmd
=== Start of file smtp_server.log
 19:29:19.551845 ====> Client connect
 19:29:19.552026 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:19.552296 < "EHLO verifiedserver"
 19:29:19.552334 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]"
 19:29:19.552485 < "HELP"
 19:29:19.552511 > "214 WE ROOLZ: 127847[CR][LF]"
 19:29:19.552524 return proof we are we
 19:29:19.552696 < "QUIT"
 19:29:19.552720 > "221 curl ESMTP server signing off[CR][LF]"
 19:29:19.553659 MAIN sockfilt said DISC
 19:29:19.553687 ====> Client disconnected
 19:29:19.553750 Awaiting input
=== End of file smtp_server.log
=== Start of file smtp_sockfilt.log
 19:29:19.154072 ====> Client connect
 19:29:19.154412 Received DATA (on stdin)
 19:29:19.154425 > 146 bytes data, server => client
 19:29:19.154435 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:19.154444 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:19.154452 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:19.154523 < 21 bytes data, client => server
 19:29:19.154534 'ECMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3217 ../src/curl -q --output log/2/curl3217.out  --include --trace-ascii log/2/trace3217 --trace-time ftp://127.0.0.1:38033/3217 > log/2/stdout3217 2> log/2/stderr3217
HLO verifiedserver\r\n'
 19:29:19.154708 Received DATA (on stdin)
 19:29:19.154718 > 53 bytes data, server => client
 19:29:19.154727 '250 ESMTP pingpong test server Hello verifiedserver\r\n'
 19:29:19.154778 < 6 bytes data, client => server
 19:29:19.154788 'HELP\r\n'
 19:29:19.154894 Received DATA (on stdin)
 19:29:19.154903 > 22 bytes data, server => client
 19:29:19.154912 '214 WE ROOLZ: 127847\r\n'
 19:29:19.154992 < 6 bytes data, client => server
 19:29:19.155003 'QUIT\r\n'
 19:29:19.155091 Received DATA (on stdin)
 19:29:19.155101 > 35 bytes data, server => client
 19:29:19.155111 '221 curl ESMTP server signing off\r\n'
 19:29:19.155986 ====> Client disconnect
 19:29:19.156121 Received ACKD (on stdin)
=== End of file smtp_sockfilt.log
=== Start of file stdin-for-3215
 From: different
 To: another
 body
=== End of file stdin-for-3215
=== Start of file valgrind3215
 ==188712== 
 ==188712== Process terminating with default action of signal 4 (SIGILL)
 ==188712==  Illegal opcode at address 0x492B75F
 ==188712==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188712==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188712==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188712==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188712==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188712==    by 0x49908EB: curl_version_info (version.c:600)
 ==188712==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188712==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188712==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3215
test 3217 [FTP with control characters in PWD response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3217 ../src/curl -q --output log/2/curl3217.out  --include --trace-ascii log/2/trace3217 --trace-time ftp://127.0.0.1:38033/3217 > log/2/stdout3217 2> log/2/stderr3217

 3217: protocol FAILED!
 There was no content at all in the file log/2/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/2/ directory after test 3217
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3217 ../src/curl -q --output log/2/curl3217.out  --include --trace-ascii log/2/trace3217 --trace-time ftp://127.0.0.1:38033/3217 > log/2/stdout3217 2> log/2/stderr3217
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:19.597071 ====> Client connect
 19:29:19.597291 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:19.597588 < "USER anonymous"
 19:29:19.597626 > "331 We are happy you popped in![CR][LF]"
 19:29:19.597813 < "PASS ftp@example.com"
 19:29:19.597844 > "230 Welcome you silly person[CR][LF]"
 19:29:19.598016 < "PWD"
 19:29:19.598052 > "257 "/" is current directory[CR][LF]"
 19:29:19.598231 < "EPSV"
 19:29:19.598258 ====> Passive DATA channel requested by client
 19:29:19.598275 DATA sockfilt for passive data channel starting...
 19:29:19.605553 DATA sockfilt for passive data channel started (pid 188716)
 19:29:19.605691 DATA sockfilt for passive data channel listens on port 46877
 19:29:19.605740 > "229 Entering Passive Mode (|||46877|)[CR][LF]"
 19:29:19.605762 Client has been notified that upcoming DATA connection is awaited on port 46877
 19:29:19.606133 Client connects to port 46877
 19:29:19.606168 ====> Client established passive DATA connection on port 46877
 19:29:19.606259 < "TYPE I"
 19:29:19.606293 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:19.606481 < "SIZE verifiedserver"
 19:29:19.606729 > "213 17[CR][LF]"
 19:29:19.606797 < "RETR verifiedserver"
 19:29:19.606837 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:19.606938 =====> Closing passive DATA connection...
 19:29:19.606958 Server disconnects passive DATA connection
 19:29:19.607207 Server disconnected passive DATA connection
 19:29:19.607238 DATA sockfilt for passive data channel quits (pid 188716)
 19:29:19.607603 DATA sockfilt for passive data channel quit (pid 188716)
 19:29:19.607634 =====> Closed passive DATA connection
 19:29:19.607667 > "226 File transfer complete[CR][LF]"
 19:29:19.652346 < "QUIT"
 19:29:19.659245 > "221 bye bye baby[CR][LF]"
 19:29:19.659302 MAIN sockfilt said DISC
 19:29:19.659326 ====> Client disconnected
 19:29:19.659401 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:19.199327 ====> Client connect
 19:29:19.199684 Received DATA (on stdin)
 19:29:19.199700 > 146 bytes data, server => client
 19:29:19.199711 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:19.199721 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:19.199729 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:19.199808 < 16 bytes data, client => server
 19:29:19.199823 'USER anonymous\r\n'
 19:29:19.200006 Received DATA (on stdin)
 19:29:19.200018 > 33 bytes data, server => client
 19:29:19.200028 '331 We are happy you popped in!\r\n'
 19:29:19.200091 < 22 bytes data, client => server
 19:29:19.200103 'PASS ftp@example.com\r\n'
 19:29:19.200221 Received DATA (on stdin)
 19:29:19.200233 > 30 bytes data, server => client
 19:29:19.200243 '230 Welcome you silly person\r\n'
 19:29:19.200298 < 5 bytes data, client => server
 19:29:19.200310 'PWD\r\n'
 19:29:19.200428 Received DATA (on stdin)
 19:29:19.200440 > 30 bytes data, server => client
 19:29:19.200450 '257 "/" is current directory\r\n'
 19:29:19.200516 < 6 bytes data, client => server
 19:29:19.200529 'EPSV\r\n'
 19:29:19.208145 Received DATA (on stdin)
 19:29:19.208161 > 39 bytes data, server => client
 19:29:19.208170 '229 Entering Passive Mode (|||46877|)\r\n'
 19:29:19.208421 < 8 bytes data, client => server
 19:29:19.208438 'TYPE I\r\n'
 19:29:19.208671 Received DATA (on stdin)
 19:29:19.208682 > 33 bytes data, server => client
 19:29:19.208692 '200 I modify TYPE as you wanted\r\n'
 19:29:19.208759 < 21 bytes data, client => server
 19:29:19.208771 'SIZE verifiedserver\r\n'
 19:29:19.208876 Received DATA (on stdin)
 19:29:19.208886 > 8 bytes data, server => client
 19:29:19.208901 '213 17\r\n'
 19:29:19.208948 < 21 bytes data, client => server
 19:29:19.208959 'RETR verifiedserver\r\n'
 19:29:19.209336 Received DATA (on stdin)
 19:29:19.209348 > 29 bytes data, server => client
 19:29:19.209357 '150 Binary junk (17 bytes).\r\n'
 19:29:19.210046 Received DATA (on stdin)
 19:29:19.210059 > 28 bytes data, server => client
 19:29:19.210069 '226 File transfer complete\r\n'
 19:29:19.254519 < 6 bytes data, client => server
 19:29:19.254552 'QUIT\r\n'
 19:29:19.254760 Received DATA (on stdin)
 19:29:19.254774 > 18 bytes data, server => client
 19:29:19.254793 '221 bye bye baby\r\n'
 19:29:19.261046 ====> Client disconnect
 19:29:19.261774 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:19.202648 Running IPv4 version
 19:29:19.202718 Listening on port 46877
 19:29:19.202760 Wrote pid 188716 to log/2/server/ftp_sockdata.pid
 19:29:19.207844 Received PING (on stdin)
 19:29:19.207968 Received PORT (on stdin)
 19:29:19.208459 ====> Client connect
 19:29:19.209386 Received DATA (on stdin)
 19:29:19.209398 > 17 bytes data, server => client
 19:29:19.209407 'WE ROOLZ: 85208\r\n'
 19:29:19.209434 Received DISC (on stdin)
 19:29:19.209444 ====> Client forcibly disconnected
 19:29:19.209625 Received QUIT (on stdin)
 19:29:19.209637 quits
 19:29:19.209739 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 REPLY PWD 257 "/"
 Testnum 3217
=== End of file server.cmd
=== Start of file valgrind3217
 ==188811== 
 ==188811== Process terminating with default action of signal 4 (SIGILL)
 ==188811==  Illegal opcode at address 0x492B75F
 ==188811==    at 0x492B75F: formaCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3230 ./unit/units unit3230 - > log/24/stdout3230 2> log/24/stderr3230
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3220 ../src/curl -q --output log/23/curl3220.out  --include --trace-ascii log/23/trace3220 --trace-time http://127.0.0.1:44711/3220 --haproxy-clientip "2a04:4e42::347" -H "Testno: 3220" > log/23/stdout3220 2> log/23/stderr3220
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3224 ../src/curl -q --include --trace-ascii log/19/trace3224 --trace-time http://127.0.0.1:37077/3224 -u user1:password1 -o log/19/3224-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:37077/32240001 -u user2:password2 -o log/19/3224-2 -w "connects=%{num_connects}/" > log/19/stdout3224 2> log/19/stderr3224
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind3226 ../src/curl -q --include --trace-ascii log/14/trace3226 --trace-time http://127.0.0.1:45467/3226 -o log/14/3226-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:45467/32260001 -o log/14/3226-2 -w "connects=%{num_connects}/" > log/14/stdout3226 2> log/14/stderr3226
tf.constprop.2 (mprintf.c:1115)
 ==188811==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188811==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188811==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188811==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188811==    by 0x49908EB: curl_version_info (version.c:600)
 ==188811==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188811==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188811==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188811==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3217
test 3230 [multi timer unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3230 ./unit/units unit3230 - > log/24/stdout3230 2> log/24/stderr3230

units returned 132, when expecting 0
 3230: exit FAILED
== Contents of files in the log/24/ directory after test 3230
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind3230 ./unit/units unit3230 - > log/24/stdout3230 2> log/24/stderr3230
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3230
=== End of file server.cmd
=== Start of file valgrind3230
 ==189416== 
 ==189416== Process terminating with default action of signal 4 (SIGILL)
 ==189416==  Illegal opcode at address 0x4091F7F
 ==189416==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189416==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189416==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189416==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3230
test 3220 [HTTP GET when PROXY Protocol enabled and spoofed client IPv6]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3220 ../src/curl -q --output log/23/curl3220.out  --include --trace-ascii log/23/trace3220 --trace-time http://127.0.0.1:44711/3220 --haproxy-clientip "2a04:4e42::347" -H "Testno: 3220" > log/23/stdout3220 2> log/23/stderr3220

 3220: protocol FAILED!
 There was no content at all in the file log/23/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/23/ directory after test 3220
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind3220 ../src/curl -q --output log/23/curl3220.out  --include --trace-ascii log/23/trace3220 --trace-time http://127.0.0.1:44711/3220 --haproxy-clientip "2a04:4e42::347" -H "Testno: 3220" > log/23/stdout3220 2> log/23/stderr3220
=== End of file commands.log
=== Start of file http_server.log
 19:29:19.304410 ====> Client connect
 19:29:19.304443 accept_connection 3 returned 4
 19:29:19.304463 Read 93 bytes
 19:29:19.304472 Process 93 bytes request
 19:29:19.304485 Got request: GET /verifiedserver HTTP/1.1
 19:29:19.304492 Are-we-friendly question received
 19:29:19.304516 Wrote request (93 bytes) input to log/23/server.input
 19:29:19.304531 Identifying ourselves as friends
 19:29:19.304594 Response sent (56 bytes) and written to log/23/server.response
 19:29:19.304603 special request received, no persistency
 19:29:19.304610 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44711...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44711) from 127.0.0.1 port 34028 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44711
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44711 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78983
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3220
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78983
=== End of file server.response
=== Start of file valgrind3220
 ==188804== 
 ==188804== Process terminating with default action of signal 4 (SIGILL)
 ==188804==  Illegal opcode at address 0x492B75F
 ==188804==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188804==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188804==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188804==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188804==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188804==    by 0x49908EB: curl_version_info (version.c:600)
 ==188804==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188804==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188804==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188804==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3220
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3223 ../src/curl -q --include --trace-ascii log/8/trace3223 --trace-time http://127.0.0.1:44467/3223 -o log/8/3223-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:44467/32230001 -o log/8/3223-2 -w "connects=%{num_connects}/" > log/8/stdout3223 2> log/8/stderr3223
test 3224 [HTTP connection reused across different Basic auth credentials]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3224 ../src/curl -q --include --trace-ascii log/19/trace3224 --trace-time http://127.0.0.1:37077/3224 -u user1:password1 -o log/19/3224-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:37077/32240001 -u user2:password2 -o log/19/3224-2 -w "connects=%{num_connects}/" > log/19/stdout3224 2> log/19/stderr3224

 3224: stdout FAILED:
--- log/19/check-expected	2026-10-15 19:29:22.210083824 +0000
+++ log/19/check-generated	2026-10-15 19:29:22.205762144 +0000
@@ -1 +0,0 @@
-connects=1/connects=0/
== Contents of files in the log/19/ directory after test 3224
=== Start of file check-expected
 connects=1/connects=0/
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind3224 ../src/curl -q --include --trace-ascii log/19/trace3224 --trace-time http://127.0.0.1:37077/3224 -u user1:password1 -o log/19/3224-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:37077/32240001 -u user2:password2 -o log/19/3224-2 -w "connects=%{num_connects}/" > log/19/stdout3224 2> log/19/stderr3224
=== End of file commands.log
=== Start of file http_server.log
 19:29:19.599977 ====> Client connect
 19:29:19.600012 accept_connection 3 returned 4
 19:29:19.600033 Read 93 bytes
 19:29:19.600042 Process 93 bytes request
 19:29:19.600055 Got request: GET /verifiedserver HTTP/1.1
 19:29:19.600064 Are-we-friendly question received
 19:29:19.600091 Wrote request (93 bytes) input to log/19/server.input
 19:29:19.600108 Identifying ourselves as friends
 19:29:19.600181 Response sent (57 bytes) and written to log/19/server.response
 19:29:19.600191 special request received, no persistency
 19:29:19.600199 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 53120 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 3224
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind3224
 ==189042== 
 ==189042== Process terminating with default action of signal 4 (SIGILL)
 ==189042==  Illegal opcode at address 0x492B75F
 ==189042==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==189042==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==189042==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==189042==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==189042==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==189042==    by 0x49908EB: curl_version_info (version.c:600)
 ==189042==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==189042==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==189042==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==189042==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3224
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3221 ../src/curl -q --output log/6/curl3221.out  --include --trace-ascii log/6/trace3221 --trace-time http://hello%0a%0d:there@127.0.0.1:33935/ --digest > log/6/stdout3221 2> log/6/stderr3221
test 3223 [HTTP connection not reused after partial/aborted response]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3223 ../src/curl -q --include --trace-ascii log/8/trace3223 --trace-time http://127.0.0.1:44467/3223 -o log/8/3223-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:44467/32230001 -o log/8/3223-2 -w "connects=%{num_connects}/" > log/8/stdout3223 2> log/8/stderr3223

 3223: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:29:22.231277429 +0000
+++ log/8/check-generated	2026-10-15 19:29:22.225761782 +0000
@@ -1 +0,0 @@
-connects=1/connects=1/
== Contents of files in the log/8/ directory after test 3223
=== Start of file check-expected
 connects=1/connects=1/
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind3223 ../src/curl -q --include --trace-ascii log/8/trace3223 --trace-time http://127.0.0.1:44467/3223 -o log/8/3223-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:44467/32230001 -o log/8/3223-2 -w "connects=%{num_connects}/" > log/8/stdout3223 2> log/8/stderr3223
=== End of file commands.log
=== Start of file http_server.log
 19:29:19.517356 ====> Client connect
 19:29:19.517391 accept_connection 3 returned 4
 19:29:19.517416 Read 93 bytes
 19:29:19.517426 Process 93 bytes request
 19:29:19.517440 Got request: GET /verifiedserver HTTP/1.1
 19:29:19.517448 Are-we-friendly question received
 19:29:19.517477 Wrote request (93 bytes) input to log/8/server.input
 19:29:19.517495 Identifying ourselves as friends
 19:29:19.517564 Response sent (56 bytes) and written to log/8/server.response
 19:29:19.517575 special request received, no persistency
 19:29:19.517584 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 38040 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 3223
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind3223
 ==188994== 
 ==188994== Process terminating with default action of signal 4 (SIGILL)
 ==188994==  Illegal opcode at address 0x492B75F
 ==188994==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188994==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188994==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188994==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188994==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188994==    by 0x49908EB: curl_version_info (version.c:600)
 ==188994==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188994==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188994==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188994==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3223
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3271 ./unit/units unit3271 - > log/10/stdout3271 2> log/10/stderr3271
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3234 ./libtest/libtests lib3234 http://127.0.0.1:32943/3234 > log/4/stdout3234 2> log/4/stderr3234
test 3226 [HTTP connection is reused for same host]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind3226 ../src/curl -q --include --trace-ascii log/14/trace3226 --trace-time http://127.0.0.1:45467/3226 -o log/14/3226-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:45467/32260001 -o log/14/3226-2 -w "connects=%{num_connects}/" > log/14/stdout3226 2> log/14/stderr3226

 3226: stdout FAILED:
--- log/14/check-expected	2026-10-15 19:29:22.266939375 +0000
+++ log/14/check-generated	2026-10-15 19:29:22.262427784 +0000
@@ -1 +0,0 @@
-connects=1/connects=0/
== Contents of files in the log/14/ directory after test 3226
=== Start of file check-expected
 connects=1/connects=0/
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind3226 ../src/curl -q --include --trace-ascii log/14/trace3226 --trace-time http://127.0.0.1:45467/3226 -o log/14/3226-1 -w "connects=%{num_connects}/" --next http://127.0.0.1:45467/32260001 -o log/14/3226-2 -w "connects=%{num_connects}/" > log/14/stdout3226 2> log/14/stderr3226
=== End of file commands.log
=== Start of file http_server.log
 19:29:19.685716 ====> Client connect
 19:29:19.685751 accept_connection 3 returned 4
 19:29:19.685772 Read 93 bytes
 19:29:19.685781 Process 93 bytes request
 19:29:19.685794 Got request: GET /verifiedserver HTTP/1.1
 19:29:19.685803 Are-we-friendly question received
 19:29:19.685829 Wrote request (93 bytes) input to log/14/server.input
 19:29:19.685852 Identifying ourselves as friends
 19:29:19.685910 Response sent (56 bytes) and written to log/14/server.response
 19:29:19.685919 special request received, no persistency
 19:29:19.685927 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:45467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 45467) from 127.0.0.1 port 35716 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:45467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:45467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78993
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 3226
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78993
=== End of file server.response
=== Start of file valgrind3226
 ==189118== 
 ==189118== Process terminating with default action of signal 4 (SIGILL)
 ==189118==  Illegal opcode at address 0x492B75F
 ==189118==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==189118==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==189118==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==189118==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==189118==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==189118==    by 0x49908EB: curl_version_info (version.c:600)
 ==189118==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==189118==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==189118==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==189118==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3226
test 3221 [HTTP Digest with CRLF in username]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3221 ../src/curl -q --output log/6/curl3221.out  --include --trace-ascii log/6/trace3221 --trace-time http://hello%0a%0d:there@127.0.0.1:33935/ --digest > log/6/stdout3221 2> log/6/stderr3221

 3221: protocol FAILED!
 There was no content at all in the file log/6/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/6/ directory after test 3221
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind3221 ../src/curl -q --output log/6/curl3221.out  --include --trace-ascii log/6/trace3221 --trace-time http://hello%0a%0d:there@127.0.0.1:33935/ --digest > log/6/stdout3221 2> log/6/stderr3221
=== End of file commands.log
=== Start of file http_server.log
 19:29:19.521092 ====> Client connect
 19:29:19.521129 accept_connection 3 returned 4
 19:29:19.521150 Read 93 bytes
 19:29:19.521160 Process 93 bytes request
 19:29:19.521170 Got request: GET /verifiedserver HTTP/1.1
 19:29:19.521178 Are-we-friendly question received
 19:29:19.521203 Wrote request (93 bytes) input to log/6/server.input
 19:29:19.521218 Identifying ourselves as friends
 19:29:19.521294 Response sent (56 bytes) and written to log/6/server.response
 19:29:19.521304 special request received, no persistency
 19:29:19.521313 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:33935...
 * Established connection to 127.0.0.1 (127.0.0.1 port 33935) from 127.0.0.1 port 58882 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:33935
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:33935 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 82167
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3221
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 82167
=== End of file server.response
=== Start of file valgrind3221
 ==188989== 
 ==188989== Process terminating with default action of signal 4 (SIGILL)
 ==188989==  Illegal opcode at address 0x492B75F
 ==188989==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==188989==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==188989==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==188989==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==188989==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==188989==    by 0x49908EB: curl_version_info (version.c:600)
 ==188989==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==188989==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==188989==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==188989==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3221
test 3271 [CURLOPT_RESOLVE override]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3271 ./unit/units unit3271 - > log/10/stdout3271 2> log/10/stderr3271

units returned 132, when expecting 0
 3271: exit FAILED
== Contents of files in the log/10/ directory after test 3271
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind3271 ./unit/units unit3271 - > log/10/stdout3271 2> log/10/stderr3271
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3271
=== End of file server.cmd
=== Start of file valgrind3271
 ==189634== 
 ==189634== Process terminating with default action of signal 4 (SIGILL)
 ==189634==  Illegal opcode at address 0x4091F7F
 ==189634==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189634==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189634==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189634==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3271
test 3234 [CONNECT_ONLY forgets connection when attaching a shared pool]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leakCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3225 ../src/curl -q --include --trace-ascii log/16/trace3225 --trace-time http://host-a.example.test:35903/3225 --resolve host-a.example.test:35903:127.0.0.1 -o log/16/3225-1 -w "connects=%{num_connects}/" --next http://host-b.example.test:35903/32250001 --resolve host-b.example.test:35903:127.0.0.1 -o log/16/3225-2 -w "connects=%{num_connects}/" > log/16/stdout3225 2> log/16/stderr3225
-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3234 ./libtest/libtests lib3234 http://127.0.0.1:32943/3234 > log/4/stdout3234 2> log/4/stderr3234

libtests returned 132, when expecting 0
 3234: exit FAILED
== Contents of files in the log/4/ directory after test 3234
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind3234 ./libtest/libtests lib3234 http://127.0.0.1:32943/3234 > log/4/stdout3234 2> log/4/stderr3234
=== End of file commands.log
=== Start of file http_server.log
 19:29:21.618876 ====> Client connect
 19:29:21.618918 accept_connection 3 returned 4
 19:29:21.618942 Read 93 bytes
 19:29:21.618952 Process 93 bytes request
 19:29:21.618967 Got request: GET /verifiedserver HTTP/1.1
 19:29:21.618982 Are-we-friendly question received
 19:29:21.619014 Wrote request (93 bytes) input to log/4/server.input
 19:29:21.619032 Identifying ourselves as friends
 19:29:21.619105 Response sent (57 bytes) and written to log/4/server.response
 19:29:21.619114 special request received, no persistency
 19:29:21.619122 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:32943...
 * Established connection to 127.0.0.1 (127.0.0.1 port 32943) from 127.0.0.1 port 41048 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:32943
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:32943 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 165851
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3234
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 165851
=== End of file server.response
=== Start of file valgrind3234
 ==189635== 
 ==189635== Process terminating with default action of signal 4 (SIGILL)
 ==189635==  Illegal opcode at address 0x51CC63F
 ==189635==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==189635==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==189635==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==189635==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3234
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3231 ./libtest/libtests lib3231 http://127.0.0.1:35989/3231 > log/22/stdout3231 2> log/22/stderr3231
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3302 ./unit/units unit3302 - > log/7/stdout3302 2> log/7/stderr3302
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3218 ../src/curl -q --output log/13/curl3218.out  --include --trace-ascii log/13/trace3218 --trace-time ftp://127.0.0.1:46067/3218 > log/13/stdout3218 2> log/13/stderr3218
test 3225 [HTTP connection not reused when target host changes]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3225 ../src/curl -q --include --trace-ascii log/16/trace3225 --trace-time http://host-a.example.test:35903/3225 --resolve host-a.example.test:35903:127.0.0.1 -o log/16/3225-1 -w "connects=%{num_connects}/" --next http://host-b.example.test:35903/32250001 --resolve host-b.example.test:35903:127.0.0.1 -o log/16/3225-2 -w "connects=%{num_connects}/" > log/16/stdout3225 2> log/16/stderr3225

 3225: stdout FAILED:
--- log/16/check-expected	2026-10-15 19:29:22.597252244 +0000
+++ log/16/check-generated	2026-10-15 19:29:22.594620524 +0000
@@ -1 +0,0 @@
-connects=1/connects=1/
== Contents of files in the log/16/ directory after test 3225
=== Start of file check-expected
 connects=1/connects=1/
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind3225 ../src/curl -q --include --trace-ascii log/16/trace3225 --trace-time http://host-a.example.test:35903/3225 --resolve host-a.example.test:35903:127.0.0.1 -o log/16/3225-1 -w "connects=%{num_connects}/" --next http://host-b.example.test:35903/32250001 --resolve host-b.example.test:35903:127.0.0.1 -o log/16/3225-2 -w "connects=%{num_connects}/" > log/16/stdout3225 2> log/16/stderr3225
=== End of file commands.log
=== Start of file http_server.log
 19:29:20.593837 ====> Client connect
 19:29:20.593876 accept_connection 3 returned 4
 19:29:20.594039 Read 93 bytes
 19:29:20.594056 Process 93 bytes request
 19:29:20.594069 Got request: GET /verifiedserver HTTP/1.1
 19:29:20.594077 Are-we-friendly question received
 19:29:20.594110 Wrote request (93 bytes) input to log/16/server.input
 19:29:20.594129 Identifying ourselves as friends
 19:29:20.594196 Response sent (56 bytes) and written to log/16/server.response
 19:29:20.594207 special request received, no persistency
 19:29:20.594215 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35903...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35903) from 127.0.0.1 port 56664 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35903
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35903 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78990
=== End of file http_verify.out
=== Start of file server.cmd
 connection-monitor
 Testnum 3225
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78990
=== End of file server.response
=== Start of file valgrind3225
 ==189088== 
 ==189088== Process terminating with default action of signal 4 (SIGILL)
 ==189088==  Illegal opcode at address 0x492B75F
 ==189088==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==189088==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==189088==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==189088==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==189088==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==189088==    by 0x49908EB: curl_version_info (version.c:600)
 ==189088==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==189088==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==189088==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==189088==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3225
test 3231 [CONNECT_ONLY survives the per-host connection limit]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3231 ./libtest/libtests lib3231 http://127.0.0.1:35989/3231 > log/22/stdout3231 2> log/22/stderr3231

 3231: protocol FAILED!
 There was no content at all in the file log/22/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/22/ directory after test 3231
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind3231 ./libtest/libtests lib3231 http://127.0.0.1:35989/3231 > log/22/stdout3231 2> log/22/stderr3231
=== End of file commands.log
=== Start of file http_server.log
 19:29:20.518244 ====> Client connect
 19:29:20.518279 accept_connection 3 returned 4
 19:29:20.518302 Read 93 bytes
 19:29:20.518311 Process 93 bytes request
 19:29:20.518323 Got request: GET /verifiedserver HTTP/1.1
 19:29:20.518331 Are-we-friendly question received
 19:29:20.518354 Wrote request (93 bytes) input to log/22/server.input
 19:29:20.518368 Identifying ourselves as friends
 19:29:20.518445 Response sent (56 bytes) and written to log/22/server.response
 19:29:20.518454 special request received, no persistency
 19:29:20.518461 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35989...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35989) from 127.0.0.1 port 58670 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35989
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35989 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78984
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3231
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78984
=== End of file server.response
=== Start of file valgrind3231
 ==189559== 
 ==189559== Process terminating with default action of signal 4 (SIGILL)
 ==189559==  Illegal opcode at address 0x51CC63F
 ==189559==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==189559==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==189559==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==189559==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3231
test 3302 [CURLOPT_GSSAPI_DELEGATION stores flags in data->set]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3302 ./unit/units unit3302 - > log/7/stdout3302 2> log/7/stderr3302

units returned 132, when expecting 0
 3302: exit FAILED
== Contents of files in the log/7/ directory after test 3302
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind3302 ./unit/units unit3302 - > log/7/stdout3302 2> log/7/stderr3302
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3302
=== End of file server.cmd
=== Start of file valgrind3302
 ==189853== 
 ==189853== Process terminating with default action of signal 4 (SIGILL)
 ==189853==  Illegal opcode at address 0x4091F7F
 ==189853==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189853==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189853==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189853==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3302
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/ftpserver.pl --pidfile "log/13/server/ftp_server.pid" --logfile "log/13/ftp_server.log" --logdir "log/13" --portfile "log/13/server/ftp_server.port" --srcdir "/startdir/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1"
PINGPONG runs on port 46067 (log/13/server/ftp_server.port)
RUN: FTP server is PID 188726 port 46067
* pid ftp => 188726 188726
test 3CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3303 ./unit/units unit3303 - > log/9/stdout3303 2> log/9/stderr3303
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3301 ./unit/units unit3301 - > log/12/stdout3301 2> log/12/stderr3301
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind3232 ./libtest/libtests lib3231 http://127.0.0.1:39881/3232 > log/21/stdout3232 2> log/21/stderr3232
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3300 ./unit/units unit3300 - > log/3/stdout3300 2> log/3/stderr3300
218 [FTP with CR control character in PWD response path]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3218 ../src/curl -q --output log/13/curl3218.out  --include --trace-ascii log/13/trace3218 --trace-time ftp://127.0.0.1:46067/3218 > log/13/stdout3218 2> log/13/stderr3218

 3218: protocol FAILED!
 There was no content at all in the file log/13/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/13/ directory after test 3218
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind3218 ../src/curl -q --output log/13/curl3218.out  --include --trace-ascii log/13/trace3218 --trace-time ftp://127.0.0.1:46067/3218 > log/13/stdout3218 2> log/13/stderr3218
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:19.705046 FTP server listens on port IPv4/46067
 19:29:19.705149 logged pid 188726 in log/13/server/ftp_server.pid
 19:29:19.705180 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:19.307000 Running IPv4 version
 19:29:19.307095 Listening on port 46067
 19:29:19.307133 Wrote pid 188792 to log/13/server/ftp_sockctrl.pid
 19:29:19.307164 Wrote port 46067 to log/13/server/ftp_server.port
 19:29:19.307326 Received PING (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file server.cmd
 REPLY PWD 257 "/
 "
 Testnum 3218
=== End of file server.cmd
=== Start of file valgrind3218
 ==189336== 
 ==189336== Process terminating with default action of signal 4 (SIGILL)
 ==189336==  Illegal opcode at address 0x492B75F
 ==189336==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==189336==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==189336==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==189336==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==189336==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==189336==    by 0x49908EB: curl_version_info (version.c:600)
 ==189336==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==189336==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==189336==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==189336==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3218
test 3303 [conn-reuse distinguishes mTLS key, cert_type, key_type and key_passwd]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3303 ./unit/units unit3303 - > log/9/stdout3303 2> log/9/stderr3303

units returned 132, when expecting 0
 3303: exit FAILED
== Contents of files in the log/9/ directory after test 3303
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind3303 ./unit/units unit3303 - > log/9/stdout3303 2> log/9/stderr3303
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3303
=== End of file server.cmd
=== Start of file valgrind3303
 ==189894== 
 ==189894== Process terminating with default action of signal 4 (SIGILL)
 ==189894==  Illegal opcode at address 0x4091F7F
 ==189894==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189894==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189894==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189894==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3303
test 3301 [thrdqueue unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3301 ./unit/units unit3301 - > log/12/stdout3301 2> log/12/stderr3301

units returned 132, when expecting 0
 3301: exit FAILED
== Contents of files in the log/12/ directory after test 3301
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind3301 ./unit/units unit3301 - > log/12/stdout3301 2> log/12/stderr3301
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3301
=== End of file server.cmd
=== Start of file valgrind3301
 ==189671== 
 ==189671== Process terminating with default action of signal 4 (SIGILL)
 ==189671==  Illegal opcode at address 0x4091F7F
 ==189671==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189671==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189671==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189671==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3301
test 3232 [CONNECT_ONLY survives the total connection limit]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind3232 ./libtest/libtests lib3231 http://127.0.0.1:39881/3232 > log/21/stdout3232 2> log/21/stderr3232

 3232: protocol FAILED!
 There was no content at all in the file log/21/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/21/ directory after test 3232
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind3232 ./libtest/libtests lib3231 http://127.0.0.1:39881/3232 > log/21/stdout3232 2> log/21/stderr3232
=== End of file commands.log
=== Start of file http_server.log
 19:29:20.531070 ====> Client connect
 19:29:20.531132 accept_connection 3 returned 4
 19:29:20.531168 Read 93 bytes
 19:29:20.531179 Process 93 bytes request
 19:29:20.531193 Got request: GET /verifiedserver HTTP/1.1
 19:29:20.531203 Are-we-friendly question received
 19:29:20.531237 Wrote request (93 bytes) input to log/21/server.input
 19:29:20.531255 Identifying ourselves as friends
 19:29:20.531360 Response sent (56 bytes) and written to log/21/server.response
 19:29:20.531374 special request received, no persistency
 19:29:20.531383 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:39881...
 * Established connection to 127.0.0.1 (127.0.0.1 port 39881) from 127.0.0.1 port 54712 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:39881
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:39881 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78985
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3232
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78985
=== End of file server.response
=== Start of file valgrind3232
 ==189560== 
 ==189560== Process terminating with default action of signal 4 (SIGILL)
 ==189560==  Illegal opcode at address 0x51CC63F
 ==189560==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==189560==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==189560==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==189560==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3232
test 3300 [thrdpool unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3300 ./unit/units unit3300 - > log/3/stdout3300 2> log/3/stderr3300

units returned 132, when expecting 0
 3300: exit FAILED
== Contents of files in the log/3/ directory after test 3300
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/srCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3304 ./unit/units unit3304 - > log/5/stdout3304 2> log/5/stderr3304
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3400 ./unit/units unit3400 - > log/1/stdout3400 2> log/1/stderr3400
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3229 ../src/curl -q --output log/17/curl3229.out  --include --trace-ascii log/17/trace3229 --trace-time -K - http://127.0.0.1:35993/3229 <log/17/stdin-for-3229 > log/17/stdout3229 2> log/17/stderr3229
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3233 ./libtest/libtests lib3233 rtsp://127.0.0.1:40431/32330001 example.com:40431:127.0.0.1 > log/11/stdout3233 2> log/11/stderr3233
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3596 ./libtest/libtests lib3596 http://127.0.0.1:34531/3596 > log/2/stdout3596 2> log/2/stderr3596
c/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind3300 ./unit/units unit3300 - > log/3/stdout3300 2> log/3/stderr3300
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3300
=== End of file server.cmd
=== Start of file valgrind3300
 ==189642== 
 ==189642== Process terminating with default action of signal 4 (SIGILL)
 ==189642==  Illegal opcode at address 0x4091F7F
 ==189642==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189642==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189642==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189642==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3300
test 3304 [TLS session cache peer key uses mTLS key, key_type and cert_type]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3304 ./unit/units unit3304 - > log/5/stdout3304 2> log/5/stderr3304

units returned 132, when expecting 0
 3304: exit FAILED
== Contents of files in the log/5/ directory after test 3304
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind3304 ./unit/units unit3304 - > log/5/stdout3304 2> log/5/stderr3304
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3304
=== End of file server.cmd
=== Start of file valgrind3304
 ==189913== 
 ==189913== Process terminating with default action of signal 4 (SIGILL)
 ==189913==  Illegal opcode at address 0x4091F7F
 ==189913==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189913==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189913==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189913==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3304
test 3400 [capsule protocol encode and decode unit tests]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3400 ./unit/units unit3400 - > log/1/stdout3400 2> log/1/stderr3400

units returned 132, when expecting 0
 3400: exit FAILED
== Contents of files in the log/1/ directory after test 3400
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind3400 ./unit/units unit3400 - > log/1/stdout3400 2> log/1/stderr3400
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3400
=== End of file server.cmd
=== Start of file valgrind3400
 ==189987== 
 ==189987== Process terminating with default action of signal 4 (SIGILL)
 ==189987==  Illegal opcode at address 0x4091F7F
 ==189987==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==189987==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==189987==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==189987==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind3400
test 3229 [Reject a custom request header larger than the request buffer]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3229 ../src/curl -q --output log/17/curl3229.out  --include --trace-ascii log/17/trace3229 --trace-time -K - http://127.0.0.1:35993/3229 <log/17/stdin-for-3229 > log/17/stdout3229 2> log/17/stderr3229

curl returned 132, when expecting 100
 3229: exit FAILED
== Contents of files in the log/17/ directory after test 3229
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind3229 ../src/curl -q --output log/17/curl3229.out  --include --trace-ascii log/17/trace3229 --trace-time -K - http://127.0.0.1:35993/3229 <log/17/stdin-for-3229 > log/17/stdout3229 2> log/17/stderr3229
=== End of file commands.log
=== Start of file http_server.log
 19:29:21.416227 ====> Client connect
 19:29:21.416263 accept_connection 3 returned 4
 19:29:21.416282 Read 93 bytes
 19:29:21.416291 Process 93 bytes request
 19:29:21.416304 Got request: GET /verifiedserver HTTP/1.1
 19:29:21.416312 Are-we-friendly question received
 19:29:21.416335 Wrote request (93 bytes) input to log/17/server.input
 19:29:21.416350 Identifying ourselves as friends
 19:29:21.416404 Response sent (56 bytes) and written to log/17/server.response
 19:29:21.416412 special request received, no persistency
 19:29:21.416423 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:35993...
 * Established connection to 127.0.0.1 (127.0.0.1 port 35993) from 127.0.0.1 port 45506 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:35993
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:35993 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 78989
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3229
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 78989
=== End of file server.response
=== Start of file stdin-for-3229
 header "X-Large: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3595 ./libtest/libtests lib3595 - > log/15/stdout3595 2> log/15/stderr3595
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3228 ../src/curl -q --output log/20/curl3228.out  --include --trace-ascii log/20/trace3228 --trace-time -K - http://127.0.0.1:41689/3228 <log/20/stdin-for-3228 > log/20/stdout3228 2> log/20/stderr3228
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
=== End of file stdin-for-3229
=== Start of file valgrind3229
 ==189469== 
 ==189469== Process terminating with default action of signal 4 (SIGILL)
 ==189469==  Illegal opcode at address 0x492B75F
 ==189469==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==189469==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==189469==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==189469==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==189469==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==189469==    by 0x49908EB: curl_version_info (version.c:600)
 ==189469==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==189469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==189469==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==189469==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3229
test 3596 [Curl_mime_prepare_headers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3596 ./libtest/libtests lib3596 http://127.0.0.1:34531/3596 > log/2/stdout3596 2> log/2/stderr3596

libtests returned 132, when expecting 0
 3596: exit FAILED
== Contents of files in the log/2/ directory after test 3596
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind3596 ./libtest/libtests lib3596 http://127.0.0.1:34531/3596 > log/2/stdout3596 2> log/2/stderr3596
=== End of file commands.log
=== Start of file http_server.log
 19:29:22.614469 ====> Client connect
 19:29:22.614510 accept_connection 3 returned 4
 19:29:22.614536 Read 93 bytes
 19:29:22.614545 Process 93 bytes request
 19:29:22.614558 Got request: GET /verifiedserver HTTP/1.1
 19:29:22.614567 Are-we-friendly question received
 19:29:22.614592 Wrote request (93 bytes) input to log/2/server.input
 19:29:22.614608 Identifying ourselves as friends
 19:29:22.614696 Response sent (56 bytes) and written to log/2/server.response
 19:29:22.614706 special request received, no persistency
 19:29:22.614714 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:34531...
 * Established connection to 127.0.0.1 (127.0.0.1 port 34531) from 127.0.0.1 port 60046 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:34531
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:34531 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79439
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3596
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79439
=== End of file server.response
=== Start of file valgrind3596
 ==190133== 
 ==190133== Process terminating with default action of signal 4 (SIGILL)
 ==190133==  Illegal opcode at address 0x51CC63F
 ==190133==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==190133==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==190133==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==190133==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3596
startnew: /usr/bin/perl -I. -I/startdir/src/curl/tests /startdir/src/curl/tests/rtspserver.pl --pidfile "log/11/server/rtsp_server.pid" --portfile "log/11/server/rtsp_server.port" --logfile "log/11/rtsp_server.log" --logdir "log/11" --ipv4 --port 0 --srcdir "/startdir/src/curl/tests"
RUN: RTSP server PID 189495 port 40431
* pid rtsp => 189495 189495
test 3233 [RTSP session id is not sent to another origin after a redirect]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3233 ./libtest/libtests lib3233 rtsp://127.0.0.1:40431/32330001 example.com:40431:127.0.0.1 > log/11/stdout3233 2> log/11/stderr3233

 3233: protocol FAILED!
 There was no content at all in the file log/11/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/11/ directory after test 3233
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind3233 ./libtest/libtests lib3233 rtsp://127.0.0.1:40431/32330001 example.com:40431:127.0.0.1 > log/11/stdout3233 2> log/11/stderr3233
=== End of file commands.log
=== Start of file rtsp_server.log
 19:29:20.538369 Running IPv4 version on port 40431
 19:29:20.538469 Wrote pid 189495 to log/11/server/rtsp_server.pid
 19:29:20.538504 Wrote port 40431 to log/11/server/rtsp_server.port
=== End of file rtsp_server.log
=== Start of file server.cmd
 Testnum 3233
=== End of file server.cmd
=== Start of file valgrind3233
 ==190071== 
 ==190071== Process terminating with default action of signal 4 (SIGILL)
 ==190071==  Illegal opcode at address 0x51CC63F
 ==190071==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==190071==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==190071==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==190071==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3233
test 3595 [curl_mime_free]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3595 ./libtest/libtests lib3595 - > log/15/stdout3595 2> log/15/stderr3595

libtests returned 132, when expecting 0
 3595: exit FAILED
== Contents of files in the log/15/ directory after test 3595
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind3595 ./libtest/libtests lib3595 - > log/15/stdout3595 2> log/15/stderr3595
=== End of file commands.log
=== Start of file server.cmd
 Testnum 3595
=== End of file server.cmd
=== Start of file valgrind3595
 ==190040== 
 ==190040== Process terminating with default action of signal 4 (SIGILL)
 ==190040==  Illegal opcode at address 0x51CC63F
 ==190040==    at 0x51CC63F: formatf.constprop.1 (mprintf.c:1115)
 ==190040==    by 0x51D058B: curl_mvfprintf (mprintf.c:1482)
 ==190040==    by 0x51D0662: curl_mfprintf (mprintf.c:1493)
 ==190040==    by 0x40041AF: main (first.c:264)
=== End of file valgrind3595
test 3228 [Send custom request headers larger than the response header limit]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3228 ../src/curl -q --output log/20/curl3228.out  --include --trace-ascii log/20/trace3228 --trace-time -K - http://127.0.0.1:41689/3228 <log/20/stdin-for-3228 > log/20/stdout3228 2> log/20/stderr3228

 3228: protocol FAILED!
 There was no content at all in the file log/20/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/20/ directory after test 3228
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind3228 ../src/curl -q --output log/20/curl3228.out  --include --trace-ascii log/20/trace3228 --trace-time -K - http://127.0.0.1:41689/3228 <log/20/stdin-for-3228 > log/20/stdout3228 2> log/20/stderr3228
=== End of file commands.log
=== Start of file http_server.log
 19:29:20.357782 ====> Client connect
 19:29:20.357825 accept_connection 3 returned 4
 19:29:20.357851 Read 93 bytes
 19:29:20.357860 Process 93 bytes request
 19:29:20.357873 Got request: GET /verifiedserver HTTP/1.1
 19:29:20.357882 Are-we-friendly question received
 19:29:20.357913 Wrote request (93 bytes) input to log/20/server.input
 19:29:20.357928 Identifying ourselves as friends
 19:29:20.358011 Response sent (57 bytes) and written to log/20/server.response
 19:29:20.358020 special request received, no persistency
 19:29:20.358028 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:41689...
 * Established connection to 127.0.0.1 (127.0.0.1 port 41689) from 127.0.0.1 port 39702 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:41689
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:41689 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 162978
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 3228
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 162978
=== End of file server.response
=== Start of file stdin-for-3228
 header "X-Large: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 header "Connection: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 header "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind4781 ./unit/units unit4781 - > log/6/stdout4781 2> log/6/stderr4781
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind4040 ../src/curl -q --output log/23/curl4040.out  --include --trace-ascii log/23/trace4040 --trace-time --proto-default file remote.example/etc/passwd > log/23/stdout4040 2> log/23/stderr4040
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind4039 ../src/curl -q --output log/24/curl4039.out  --include --trace-ascii log/24/trace4039 --trace-time /example.com/ --proto-default http > log/24/stdout4039 2> log/24/stderr4039
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;"
=== End of file stdin-for-3228
=== Start of file valgrind3228
 ==189412== 
 ==189412== Process terminating with default action of signal 4 (SIGILL)
 ==189412==  Illegal opcode at address 0x492B75F
 ==189412==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==189412==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==189412==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==189412==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==189412==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==189412==    by 0x49908EB: curl_version_info (version.c:600)
 ==189412==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==189412==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==189412==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==189412==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3228
test 4781 [weekday, month name and timezone parsers]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind4781 ./unit/units unit4781 - > log/6/stdout4781 2> log/6/stderr4781

units returned 132, when expecting 0
 4781: exit FAILED
== Contents of files in the log/6/ directory after test 4781
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind4781 ./unit/units unit4781 - > log/6/stdout4781 2> log/6/stderr4781
=== End of file commands.log
=== Start of file server.cmd
 Testnum 4781
=== End of file server.cmd
=== Start of file valgrind4781
 ==190301== 
 ==190301== Process terminating with default action of signal 4 (SIGILL)
 ==190301==  Illegal opcode at address 0x4091F7F
 ==190301==    at 0x4091F7F: formatf.constprop.2 (mprintf.c:1115)
 ==190301==    by 0x40997B6: UnknownInlinedFun (mprintf.c:1482)
 ==190301==    by 0x40997B6: curl_mfprintf (mprintf.c:1493)
 ==190301==    by 0x400B1A9: main (first.c:264)
=== End of file valgrind4781
test 4040 [--proto-default file and invalid URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind4040 ../src/curl -q --output log/23/curl4040.out  --include --trace-ascii log/23/trace4040 --trace-time --proto-default file remote.example/etc/passwd > log/23/stdout4040 2> log/23/stderr4040

curl returned 132, when expecting 3
 4040: exit FAILED
== Contents of files in the log/23/ directory after test 4040
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind4040 ../src/curl -q --output log/23/curl4040.out  --include --trace-ascii log/23/trace4040 --trace-time --proto-default file remote.example/etc/passwd > log/23/stdout4040 2> log/23/stderr4040
=== End of file commands.log
=== Start of file server.cmd
 Testnum 4040
=== End of file server.cmd
=== Start of file valgrind4040
 ==190191== 
 ==190191== Process terminating with default action of signal 4 (SIGILL)
 ==190191==  Illegal opcode at address 0x492B75F
 ==190191==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==190191==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==190191==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==190191==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==190191==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==190191==    by 0x49908EB: curl_version_info (version.c:600)
 ==190191==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==190191==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==190191==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==190191==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind4040
test 4039 [--proto-default http with an invalid URL]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind4039 ../src/curl -q --output log/24/curl4039.out  --include --trace-ascii log/24/trace4039 --trace-time /example.com/ --proto-default http > log/24/stdout4039 2> log/24/stderr4039

curl returned 132, when expecting 3
 4039: exit FAILED
== Contents of files in the log/24/ directory after test 4039
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind4039 ../src/curl -q --output log/24/curl4039.out  --include --trace-ascii log/24/trace4039 --trace-time /example.com/ --proto-default http > log/24/stdout4039 2> log/24/stderr4039
=== End of file commands.log
=== Start of file server.cmd
 Testnum 4039
=== End of file server.cmd
=== Start of file valgrind4039
 ==190190== 
 ==190190== Process terminating with default action of signal 4 (SIGILL)
 ==190190==  Illegal opcode at address 0x492B75F
 ==190190==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==190190==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==190190==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==190190==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==190190==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==190190==    by 0x49908EB: curl_version_info (version.c:600)
 ==190190==    by 0x4003269: UnknownInlinedFun (tool_libinfoCMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind4644 ../src/curl -q --trace-ascii log/19/trace4644 --trace-time http://127.0.0.1:37077/4644 -o log/19/save.txt --no-clobber > log/19/stdout4644 2> log/19/stderr4644
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind5029 ../src/curl -q --include --trace-ascii log/8/trace5029 --trace-time -k https://127.0.0.1:44467/5029 --connect-timeout 2 -w 'remote_ip == %{remote_ip}\nremote_port == %{remote_port}\nlocal ip == %{local_ip}\ntime_connect == %{time_connect}\n' > log/8/stdout5029 2> log/8/stderr5029
.c:140)
 ==190190==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==190190==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==190190==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind4039
test 4644 [--no-clobber with extension and an added number]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind4644 ../src/curl -q --trace-ascii log/19/trace4644 --trace-time http://127.0.0.1:37077/4644 -o log/19/save.txt --no-clobber > log/19/stdout4644 2> log/19/stderr4644

 4644: protocol FAILED!
 There was no content at all in the file log/19/server.input.
 Server glitch? Total curl failure? Returned: 132
== Contents of files in the log/19/ directory after test 4644
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind4644 ../src/curl -q --trace-ascii log/19/trace4644 --trace-time http://127.0.0.1:37077/4644 -o log/19/save.txt --no-clobber > log/19/stdout4644 2> log/19/stderr4644
=== End of file commands.log
=== Start of file http_server.log
 19:29:21.946357 ====> Client connect
 19:29:21.946396 accept_connection 3 returned 4
 19:29:21.946422 Read 93 bytes
 19:29:21.946431 Process 93 bytes request
 19:29:21.946444 Got request: GET /verifiedserver HTTP/1.1
 19:29:21.946452 Are-we-friendly question received
 19:29:21.946479 Wrote request (93 bytes) input to log/19/server.input
 19:29:21.946495 Identifying ourselves as friends
 19:29:21.946583 Response sent (57 bytes) and written to log/19/server.response
 19:29:21.946593 special request received, no persistency
 19:29:21.946601 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:37077...
 * Established connection to 127.0.0.1 (127.0.0.1 port 37077) from 127.0.0.1 port 35652 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:37077
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:37077 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 152965
=== End of file http_verify.out
=== Start of file save-1.txt
 exists before command runs
=== End of file save-1.txt
=== Start of file save.txt
 exists before command runs
=== End of file save.txt
=== Start of file server.cmd
 Testnum 4644
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 152965
=== End of file server.response
=== Start of file valgrind4644
 ==190382== 
 ==190382== Process terminating with default action of signal 4 (SIGILL)
 ==190382==  Illegal opcode at address 0x492B75F
 ==190382==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==190382==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==190382==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==190382==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==190382==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==190382==    by 0x49908EB: curl_version_info (version.c:600)
 ==190382==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==190382==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==190382==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==190382==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind4644
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind5030 ../src/curl -q --include --trace-ascii log/10/trace5030 --trace-time -k https://127.0.0.1:44817/5030 -w 'remote_ip == %{remote_ip}\nremote_port == %{remote_port}\nlocal ip == %{local_ip}\ntime_connect == %{time_connect}\n' > log/10/stdout5030 2> log/10/stderr5030
test 5029 [-w IP info and connect time after TLS handshake timeout]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind5029 ../src/curl -q --include --trace-ascii log/8/trace5029 --trace-time -k https://127.0.0.1:44467/5029 --connect-timeout 2 -w 'remote_ip == %{remote_ip}\nremote_port == %{remote_port}\nlocal ip == %{local_ip}\ntime_connect == %{time_connect}\n' > log/8/stdout5029 2> log/8/stderr5029

 5029: stdout FAILED:
--- log/8/check-expected	2026-10-15 19:29:24.016687128 +0000
+++ log/8/check-generated	2026-10-15 19:29:24.012395265 +0000
@@ -1,4 +0,0 @@
-remote_ip == 127.0.0.1[LF]
-remote_port == 44467[LF]
-local ip == 127.0.0.1[LF]
-time_connect == [non-zero][LF]
== Contents of files in the log/8/ directory after test 5029
=== Start of file check-expected
 remote_ip == 127.0.0.1[LF]
 remote_port == 44467[LF]
 local ip == 127.0.0.1[LF]
 time_connect == [non-zero][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind5029 ../src/curl -q --include --trace-ascii log/8/trace5029 --trace-time -k https://127.0.0.1:44467/5029 --connect-timeout 2 -w 'remote_ip == %{remote_ip}\nremote_port == %{remote_port}\nlocal ip == %{local_ip}\ntime_connect == %{time_connect}\n' > log/8/stdout5029 2> log/8/stderr5029
=== End of file commands.log
=== Start of file http_server.log
 19:29:21.981123 ====> Client connect
 19:29:21.981155 accept_connection 3 returned 4
 19:29:21.981176 Read 93 bytes
 19:29:21.981186 Process 93 bytes request
 19:29:21.981199 Got request: GET /verifiedserver HTTP/1.1
 19:29:21.981208 Are-we-friendly question received
 19:29:21.981232 Wrote request (93 bytes) input to log/8/server.input
 19:29:21.981248 Identifying ourselves as friends
 19:29:21.981314 Response sent (56 bytes) and written to log/8/server.response
 19:29:21.981324 special request received, no persistency
 19:29:21.981332 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file http_verify.log
 *   Trying 127.0.0.1:44467...
 * Established connection to 127.0.0.1 (127.0.0.1 port 44467) from 127.0.0.1 port 50308 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:44467
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 17
 < 
 { [17 bytes data]
 * Connection #0 to host 127.0.0.1:44467 left intact
=== End of file http_verify.log
=== Start of file http_verify.out
 WE ROOLZ: 79137
=== End of file http_verify.out
=== Start of file server.cmd
 Testnum 5029
=== End of file server.cmd
=== Start of file server.response
 HTTP/1.1 200 OK
 Content-Length: 17
 WE ROOLZ: 79137
=== End of file server.response
=== Start of file valgrind5029
 ==190417== 
 ==190417== Process terminating with default action of signal 4 (SIGILL)
 ==190417==  Illegal opcode at address 0x492B75F
 ==190417==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==190417==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==190417==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==190417==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==190417==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==190417==    by 0x49908EB: curl_version_info (version.c:600)
 ==190417==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==190417==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==190417==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==190417==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind5029
CMD (33792): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3555 ../src/curl -q --include --trace-ascii log/18/trace3555 --trace-time telnet://127.0.0.1:42805 --upload-file - -p -x http://127.0.0.1:38183/3555 <log/18/stdin-for-3555 > log/18/stdout3555 2> log/18/stderr3555
test 5030 [-w IP info and connect time after failed TLS handshake]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind5030 ../src/curl -q --include --trace-ascii log/10/trace5030 --trace-time -k https://127.0.0.1:44817/5030 -w 'remote_ip == %{remote_ip}\nremote_port == %{remote_port}\nlocal ip == %{local_ip}\ntime_connect == %{time_connect}\n' > log/10/stdout5030 2> log/10/stderr5030

 5030: stdout FAILED:
--- log/10/check-expected	2026-10-15 19:29:24.074307934 +0000
+++ log/10/check-generated	2026-10-15 19:29:24.069060811 +0000
@@ -1,4 +0,0 @@
-remote_ip == 127.0.0.1[LF]
-remote_port == 44817[LF]
-local ip == 127.0.0.1[LF]
-time_connect == [non-zero][LF]
== Contents of files in the log/10/ directory after test 5030
=== Start of file check-expected
 remote_ip == 127.0.0.1[LF]
 remote_port == 44817[LF]
 local ip == 127.0.0.1[LF]
 time_connect == [non-zero][LF]
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind5030 ../src/curl -q --include --trace-ascii log/10/trace5030 --trace-time -k https://127.0.0.1:44817/5030 -w 'remote_ip == %{remote_ip}\nremote_port == %{remote_port}\nlocal ip == %{local_ip}\ntime_connect == %{time_connect}\n' > log/10/stdout5030 2> log/10/stderr5030
=== End of file commands.log
=== Start of file ftp_server.log
 19:29:22.416106 ====> Client connect
 19:29:22.416350 > "220-        _   _ ____  _[CR][LF]220-    ___| | | |  _ \| |[CR][LF]220-   / __| | | | |_) | |[CR][LF]220-  | (__| |_| |  _ {| |___[CR][LF]220    \___|\___/|_| \_\_____|[CR][LF]"
 19:29:22.416707 < "USER anonymous"
 19:29:22.416747 > "331 We are happy you popped in![CR][LF]"
 19:29:22.416964 < "PASS ftp@example.com"
 19:29:22.417006 > "230 Welcome you silly person[CR][LF]"
 19:29:22.417212 < "PWD"
 19:29:22.417255 > "257 "/" is current directory[CR][LF]"
 19:29:22.417455 < "EPSV"
 19:29:22.417483 ====> Passive DATA channel requested by client
 19:29:22.417500 DATA sockfilt for passive data channel starting...
 19:29:22.425538 DATA sockfilt for passive data channel started (pid 190418)
 19:29:22.425668 DATA sockfilt for passive data channel listens on port 44829
 19:29:22.425715 > "229 Entering Passive Mode (|||44829|)[CR][LF]"
 19:29:22.425732 Client has been notified that upcoming DATA connection is awaited on port 44829
 19:29:22.426038 Client connects to port 44829
 19:29:22.426071 ====> Client established passive DATA connection on port 44829
 19:29:22.426163 < "TYPE I"
 19:29:22.426196 > "200 I modify TYPE as you wanted[CR][LF]"
 19:29:22.426354 < "SIZE verifiedserver"
 19:29:22.426397 > "213 17[CR][LF]"
 19:29:22.426536 < "RETR verifiedserver"
 19:29:22.426569 > "150 Binary junk (17 bytes).[CR][LF]"
 19:29:22.426653 =====> Closing passive DATA connection...
 19:29:22.426668 Server disconnects passive DATA connection
 19:29:22.426873 Server disconnected passive DATA connection
 19:29:22.426896 DATA sockfilt for passive data channel quits (pid 190418)
 19:29:22.427158 DATA sockfilt for passive data channel quit (pid 190418)
 19:29:22.427179 =====> Closed passive DATA connection
 19:29:22.427207 > "226 File transfer complete[CR][LF]"
 19:29:22.475558 < "QUIT"
 19:29:22.475630 > "221 bye bye baby[CR][LF]"
 19:29:22.476989 MAIN sockfilt said DISC
 19:29:22.477034 ====> Client disconnected
 19:29:22.477137 Awaiting input
=== End of file ftp_server.log
=== Start of file ftp_sockctrl.log
 19:29:23.018383 ====> Client connect
 19:29:23.018802 Received DATA (on stdin)
 19:29:23.018822 > 146 bytes data, server => client
 19:29:23.018834 '220-        _   _ ____  _\r\n220-    ___| | | |  _ \| |\r\n22'
 19:29:23.018845 '0-   / __| | | | |_) | |\r\n220-  | (__| |_| |  _ {| |___\r\n'
 19:29:23.018854 '220    \___|\___/|_| \_\_____|\r\n'
 19:29:23.018949 < 16 bytes data, client => server
 19:29:23.018966 'USER anonymous\r\n'
 19:29:23.019184 Received DATA (on stdin)
 19:29:23.019196 > 33 bytes data, server => client
 19:29:23.019206 '331 We are happy you popped in!\r\n'
 19:29:23.019268 < 22 bytes data, client => server
 19:29:23.019282 'PASS ftp@example.com\r\n'
 19:29:23.019437 Received DATA (on stdin)
 19:29:23.019450 > 30 bytes data, server => client
 19:29:23.019461 '230 Welcome you silly person\r\n'
 19:29:23.019528 < 5 bytes data, client => server
 19:29:23.019543 'PWD\r\n'
 19:29:23.019683 Received DATA (on stdin)
 19:29:23.019696 > 30 bytes data, server => client
 19:29:23.019706 '257 "/" is current directory\r\n'
 19:29:23.019778 < 6 bytes data, client => server
 19:29:23.019793 'EPSV\r\n'
 19:29:23.028161 Received DATA (on stdin)
 19:29:23.028176 > 39 bytes data, server => client
 19:29:23.028186 '229 Entering Passive Mode (|||44829|)\r\n'
 19:29:23.028377 < 8 bytes data, client => server
 19:29:23.028391 'TYPE I\r\n'
 19:29:23.028617 Received DATA (on stdin)
 19:29:23.028628 > 33 bytes data, server => client
 19:29:23.028637 '200 I modify TYPE as you wanted\r\n'
 19:29:23.028694 < 21 bytes data, client => server
 19:29:23.028703 'SIZE verifiedserver\r\n'
 19:29:23.028816 Received DATA (on stdin)
 19:29:23.028826 > 8 bytes data, server => client
 19:29:23.028834 '213 17\r\n'
 19:29:23.028881 < 21 bytes data, client => server
 19:29:23.028890 'RETR verifiedserver\r\n'
 19:29:23.029088 Received DATA (on stdin)
 19:29:23.029098 > 29 bytes data, server => client
 19:29:23.029107 '150 Binary junk (17 bytes).\r\n'
 19:29:23.029630 Received DATA (on stdin)
 19:29:23.029641 > 28 bytes data, server => client
 19:29:23.029651 '226 File transfer complete\r\n'
 19:29:23.077752 < 6 bytes data, client => server
 19:29:23.077792 'QUIT\r\n'
 19:29:23.078069 Received DATA (on stdin)
 19:29:23.078086 > 18 bytes data, server => client
 19:29:23.078097 '221 bye bye baby\r\n'
 19:29:23.079351 ====> Client disconnect
 19:29:23.079573 Received ACKD (on stdin)
=== End of file ftp_sockctrl.log
=== Start of file ftp_sockdata.log
 19:29:22.025356 Running IPv4 version
 19:29:22.025446 Listening on port 44829
 19:29:22.025491 Wrote pid 190418 to log/10/server/ftp_sockdata.pid
 19:29:22.027891 Received PING (on stdin)
 19:29:22.027996 Received PORT (on stdin)
 19:29:22.028410 ====> Client connect
 19:29:22.029131 Received DATA (on stdin)
 19:29:22.029142 > 17 bytes data, server => client
 19:29:22.029151 'WE ROOLZ: 85153\r\n'
 19:29:22.029174 Received DISC (on stdin)
 19:29:22.029183 ====> Client forcibly disconnected
 19:29:22.029324 Received QUIT (on stdin)
 19:29:22.029334 quits
 19:29:22.029399 ========> sockfilt quits
=== End of file ftp_sockdata.log
=== Start of file server.cmd
 Testnum 5030
=== End of file server.cmd
=== Start of file valgrind5030
 ==190475== 
 ==190475== Process terminating with default action of signal 4 (SIGILL)
 ==190475==  Illegal opcode at address 0x492B75F
 ==190475==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==190475==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==190475==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==190475==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==190475==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==190475==    by 0x49908EB: curl_version_info (version.c:600)
 ==190475==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==190475==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==190475==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==190475==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind5030
* kill pid for ftp-ctrl => 154131
* kill pid for ftp-ctrl => 85111
* kill pid for ftp-ctrl => 84719
* kill pid for ftp-ctrl => 84711
* kill pid for ftp-ctrl => 84757
* kill pid for ftp-ctrl => 84850
* kill pid for ftp-ctrl => 85189
* kill pid for ftp-ctrl => 84652
* kill pid for ftp-ctrl => 84700
* kill pid for ftp-ctrl => 84707
* kill pid for ftp-ctrl => 85201
* kill pid for ftp-ctrl => 84699
* kill pid for ftp-ctrl => 85278
* kill pid for ftp-ctrl => 84761
* kill pid for ftp-ctrl => 85263
* kill pid for ftp-ctrl => 85274
* kill pid for ftp-ctrl => 84855
* kill pid for ftp-ctrl => 84725
* kill pid for ftp-ctrl => 188792
* kill pid for ftp-ctrl => 85573
* kill pid for ftp-ctrl => 85181
* kill pid for ftp-ctrl => 84974
* kill pid for ftp-ctrl => 84715
* kill pid for imap-filt => 158421
* kill pid for pop3-filt => 132062
* kill pid for smtp-filt => 127692
RUN: Process with pid 84587 signalled to die
RUN: Process with pid 93199 signalled to die
RUN: Process with pid 115289 signalled to die
RUN: Process with pid 127656 signalled to die
RUN: Process with pid 132050 signalled to die
RUN: Process with pid 144624 signalled to die
RUN: Process with pid 152965 signalled to die
* kill pid for imap-filt => 122219
* kill pid for pop3-filt => 124954
* kill pid for smtp-filt => 127928
RUN: Process with pid 78985 signalled to die
RUN: Process with pid 84694 signalled to die
RUN: Process with pid 95850 signalled to die
RUN: Process with pid 115986 signalled to die
RUN: Process with pid 122217 signalled to die
RUN: Process with pid 124951 signalled to die
RUN: Process with pid 127888 signalled to die
RUN: Process with pid 137984 signalled to die
RUN: Process with pid 144680 signalled to die
* kill pid for ftp-ipv6-ctrl => 93964
* kill pid for imap-filt => 122861
* kill pid for pop3-filt => 125300
* kill pid for smtp-filt => 127824
RUN: Process with pid 78990 signalled to die
RUN: Process with pid 84702 signalled to die
RUN: Process with pid 116731 signalled to die
RUN: Process with pid 122830 signalled to die
RUN: Process with pid 125269 signalled to die
RUN: Process with pid 127808 signalled to die
RUN: Process with pid 144575 signalled to die
RUN: Process with pid 152116 signalled to die
RUN: Process with pid 159360 signalled to die
RUN: Process with pid 179477 signalled to die
* kill pid for ftp-ipv6-ctrl => 93728
* kill pid for imap-filt => 113640
* kill pid for imap-filt => 114838
* kill pid for pop3-filt => 125277
* kill pid for smtp-filt => 127754
RUN: Process with pid 79439 signalled to die
RUN: Process with pid 85208 signalled to die
RUN: Process with pid 111139 signalled to die
RUN: Process with pid 114810 signalled to die
RUN: Process with pid 116357 signalled to die
RUN: Process with pid 125244 signalled to die
RUN: Process with pid 127750 signalled to die
RUN: Process with pid 144654 signalled to die
RUN: Process with pid 150157 signalled to die
RUN: Process with pid 159327 signalled to die
RUN: Process with pid 161068 signalled to die
* kill pid for imap-filt => 166048
* kill pid for imap-filt => 122799
* kill pid for pop3-filt => 125323
* kill pid for smtp-filt => 127856
RUN: Process with pid 78988 signalled to die
RUN: Process with pid 93140 signalled to die
RUN: Process with pid 116818 signalled to die
RUN: Process with pid 122785 signalled to die
RUN: Process with pid 125319 signalled to die
RUN: Process with pid 127847 signalled to die
RUN: Process with pid 139095 signalled to die
RUN: Process with pid 164586 signalled to die
RUN: Process with pid 181762 signalled to die
RUN: Process with pid 190006 signalled to die
* kill pid for imap-filt => 122102
* kill pid for pop3-filt => 124876
* kill pid for smtp-filt => 127962
RUN: Process with pid 79067 signalled to die
RUN: Process with pid 85153 signalled to die
RUN: Process with pid 93908 signalled to die
RUN: Process with pid 95886 signalled to die
RUN: Process with pid 116160 signalled to die
RUN: Process with pid 121977 signalled to die
RUN: Process with pid 124839 signalled to die
RUN: Process with pid 127917 signalled to die
RUN: Process with pid 135779 signalled to die
* kill pid for imap-filt => 122163
* kill pid for pop3-filt => 125271
* kill pid for pop3-filt => 124923
* kill pid for smtp-filt => 127745
RUN: Process with pid 82167 signalled to die
RUN: Process with pid 84342 signalled to die
RUN: Process with pid 85558 signalled to die
RUN: Process with pid 116766 signalled to die
RUN: Process with pid 127735 signalled to die
RUN: Process with pid 133608 signalled to die
RUN: Process with pid 169038 signalled to die
* kill pid for imap-filt => 122211
* kill pid for pop3-filt => 124898
* kill pid for smtp-filt => 127848
RUN: Process with pid 79032 signalled to die
RUN: Process with pid 94937 signalled to die
RUN: Process with pid 111131 signalled to die
RUN: Process with pid 116536 signalled to die
RUN: Process with pid 122183 signalled to die
RUN: Process with pid 124858 signalled to die
RUN: Process with pid 127845 signalled to die
RUN: Process with pid 146612 signalled to die
RUN: Process with pid 147503 signalled to die
RUN: Process with pid 188726 signalled to die
* kill pid for imap-filt => 122900
* kill pid for pop3-filt => 125307
* kill pid for smtp-filt => 127834
RUN: Process with pid 79446 signalled to die
RUN: Process with pid 84935 signalled to die
RUN: Process with pid 116732 signalled to die
RUN: Process with pid 122891 signalled to die
RUN: Process with pid 125278 signalled to die
RUN: Process with pid 127810 signalled to die
RUN: Process with pid 133606 signalled to die
RUN: Process with pid 181133 signalled to die
RUN: Process with pid 182677 signalled to die
* kill pid for ftp-ipv6-ctrl => 135863
* kill pid for imap-filt => 113209
* kill pid for pop3-filt => 125117
* kill pid for smtp-filt => 127835
RUN: Process with pid 78982 signalled to die
RUN: Process with pid 85113 signalled to die
RUN: Process with pid 97864 signalled to die
RUN: Process with pid 113205 signalled to die
RUN: Process with pid 116104 signalled to die
RUN: Process with pid 125054 signalled to die
RUN: Process with pid 127811 signalled to die
RUN: Process with pid 135809 signalled to die
RUN: Process with pid 164475 signalled to die
RUN: Process with pid 175834 signalled to die
* kill pid for ftp-ipv6-ctrl => 136031
* kill pid for imap-filt => 122100
* kill pid for pop3-filt => 125310
* kill pid for smtp-filt => 127846
RUN: Process with pid 79175 signalled to die
RUN: Process with pid 84721 signalled to die
RUN: Process with pid 111137 signalled to die
RUN: Process with pid 122008 signalled to die
RUN: Process with pid 125292 signalled to die
RUN: Process with pid 127841 signalled to die
RUN: Process with pid 135955 signalled to die
RUN: Process with pid 144626 signalled to die
* kill pid for ftp-ipv6-ctrl => 93754
* kill pid for imap-filt => 122672
* kill pid for pop3-filt => 125122
* kill pid for smtp-filt => 127757
RUN: Process with pid 81869 signalled to die
RUN: Process with pid 85245 signalled to die
RUN: Process with pid 93651 signalled to die
RUN: Process with pid 116827 signalled to die
RUN: Process with pid 122670 signalled to die
RUN: Process with pid 125086 signalled to die
RUN: Process with pid 127748 signalled to die
RUN: Process with pid 141441 signalled to die
RUN: Process with pid 160335 signalled to die
RUN: Process with pid 179223 signalled to die
* kill pid for imap-filt => 121926
* kill pid for pop3-filt => 105996
* kill pid for smtp-filt => 130788
RUN: Process with pid 79065 signalled to die
RUN: Process with pid 105846 signalled to die
RUN: Process with pid 130773 signalled to die
RUN: Process with pid 136302 signalled to die
RUN: Process with pid 144791 signalled to die
RUN: Process with pid 150163 signalled to die
RUN: Process with pid 154115 signalled to die
RUN: Process with pid 165995 signalled to die
RUN: Process with pid 189495 signalled to die
RUN: Process with pid 122217 gracefully died
* kill pid for smtp-filt => 127843
RUN: Process with pid 78983 signalled to die
RUN: Process with pid 84709 signalled to die
RUN: Process with pid 116717 signalled to die
RUN: Process with pid 122113 signalled to die
RUN: Process with pid 124910 signalled to die
RUN: Process with pid 127840 signalled to die
RUN: Process with pid 160156 signalled to die
RUN: Process with pid 164412 signalled to die
RUN: Process with pid 177818 signalled to die
* kill pid for imap-filt => 122256
* kill pid for pop3-filt => 124961
* kill pid for smtp-filt => 113211
RUN: Process with pid 83777 signalled to die
RUN: Process with pid 85249 signalled to die
RUN: Process with pid 111069 signalled to die
RUN: Process with pid 113210 signalled to die
RUN: Process with pid 116118 signalled to die
RUN: Process with pid 122222 signalled to die
RUN: Process with pid 124955 signalled to die
RUN: Process with pid 160969 signalled to die
RUN: Process with pid 165851 signalled to die
RUN: Process with pid 177739 signalled to die
RUN: Process with pid 182274 signalled to die
RUN: Process with pid 79439 gracefully died
* kill pid for ftp-ipv6-ctrl => 93885
* kill pid for imap-filt => 122065
RUN: Process with pid 78988 gracefully died
* kill pid for pop3-filt => 125165
* kill pid for smtp-filt => 127747
* kill pid for smtp-filt => 127839
RUN: Process with pid 79135 signalled to die
RUN: Process with pid 84695 signalled to die
RUN: Process with pid 93636 signalled to die
RUN: Process with pid 95851 signalled to die
RUN: Process with pid 111274 signalled to die
RUN: Process with pid 113573 signalled to die
RUN: Process with pid 125253 signalled to die
RUN: Process with pid 127818 signalled to die
RUN: Process with pid 144434 signalled to die
RUN: Process with pid 149029 signalled to die
RUN: Process with pid 85153 gracefully died
* kill pid for imap-filt => 122645
* kill pid for pop3-filt => 124992
* kill pid for smtp-filt => 127741
RUN: Process with pid 82533 signalled to die
RUN: Process with pid 84710 signalled to die
RUN: Process with pid 111152 signalled to die
RUN: Process with pid 116629 signalled to die
RUN: Process with pid 122611 signalled to die
RUN: Process with pid 124988 signalled to die
RUN: Process with pid 127734 signalled to die
RUN: Process with pid 144821 signalled to die
RUN: Process with pid 182599 signalled to die
RUN: Process with pid 186797 signalled to die
RUN: Process with pid 122891 gracefully died
RUN: Process with pid 94937 gracefully died
RUN: Process with pid 82167 gracefully died
RUN: Process with pid 127811 gracefully died
RUN: Process with pid 127656 gracefully died
* kill pid for imap-filt => 122550
* kill pid for pop3-filt => 125109
* kill pid for smtp-filt => 127777
RUN: Process with pid 78991 signalled to die
RUN: Process with pid 84744 signalled to die
RUN: Process with pid 116704 signalled to die
RUN: Process with pid 122502 signalled to die
RUN: Process with pid 125072 signalled to die
RUN: Process with pid 127773 signalled to die
RUN: Process with pid 144664 signalled to die
RUN: Process with pid 188008 signalled to die
* kill pid for imap-filt => 122810
* kill pid for pop3-filt => 125321
* kill pid for smtp-filt => 127949
RUN: Process with pid 78989 signalled to die
RUN: Process with pid 84749 signalled to die
RUN: Process with pid 95852 signalled to die
RUN: Process with pid 116436 signalled to die
RUN: Process with pid 122784 signalled to die
RUN: Process with pid 125317 signalled to die
RUN: Process with pid 127892 signalled to die
RUN: Process with pid 144655 signalled to die
RUN: Process with pid 154115 gracefully died
RUN: Process with pid 78985 gracefully died
RUN: Process with pid 85208 gracefully died
RUN: Process with pid 122830 gracefully died
RUN: Process with pid 122785 gracefully died
RUN: Process with pid 93651 gracefully died
RUN: Process with pid 78984 signalled to die
RUN: Process with pid 84714 signalled to die
RUN: Process with pid 93790 signalled to die
RUN: Process with pid 116373 signalled to die
RUN: Process with pid 121995 signalled to die
RUN: Process with pid 125142 signalled to die
RUN: Process with pid 127746 signalled to die
RUN: Process with pid 144893 signalled to die
RUN: Process with pid 177694 signalled to die
RUN: Process with pid 186405 signalled to die
RUN: Process with pid 93908 gracefully died
* kill pid for imap-filt => 122307
* kill pid for pop3-filt => 124963
* kill pid for smtp-filt => 113281
RUN: Process with pid 84833 signalled to die
RUN: Process with pid 94590 signalled to die
RUN: Process with pid 113262 signalled to die
RUN: Process with pid 116438 signalled to die
RUN: Process with pid 122291 signalled to die
RUN: Process with pid 124956 signalled to die
RUN: Process with pid 162978 signalled to die
RUN: Process with pid 84710 gracefully died
RUN: Process with pid 122183 gracefully died
RUN: Process with pid 84935 gracefully died
RUN: Process with pid 84342 gracefully died
RUN: Process with pid 132050 gracefully died
RUN: Process with pid 125054 gracefully died
RUN: Process with pid 84744 gracefully died
RUN: Process with pid 84749 gracefully died
RUN: Process with pid 130773 gracefully died
RUN: Process with pid 122222 gracefully died
RUN: Process with pid 84709 gracefully died
RUN: Process with pid 84694 gracefully died
RUN: Process with pid 114810 gracefully died
RUN: Process with pid 125319 gracefully died
RUN: Process with pid 116827 gracefully died
RUN: Process with pid 121977 gracefully died
RUN: Process with pid 84695 gracefully died
RUN: Process with pid 84714 gracefully died
RUN: Process with pid 82533 gracefully died
* kill pid for pop3-filt => 125322
RUN: Process with pid 79446 gracefully died
RUN: Process with pid 124858 gracefully died
RUN: Process with pid 85558 gracefully died
* kill pid for smtp-filt => 130785
RUN: Process with pid 79038 signalled to die
RUN: Process with pid 85158 signalled to die
RUN: Process with pid 111141 signalled to die
RUN: Process with pid 130713 signalled to die
RUN: Process with pid 158265 signalled to die
RUN: Process with pid 160188 signalled to die
RUN: Process with pid 78982 gracefully died
RUN: Process with pid 84587 gracefully died
RUN: Process with pid 122502 gracefully died
RUN: Process with pid 124955 gracefully died
RUN: Process with pid 122113 gracefully died
RUN: Process with pid 79065 gracefully died
* kill pid for smtp-filt => 113208
RUN: Process with pid 115986 gracefully died
RUN: Process with pid 159360 gracefully died
RUN: Process with pid 125244 gracefully died
RUN: Process with pid 111137 gracefully died
RUN: Process with pid 116818 gracefully died
RUN: Process with pid 81869 gracefully died
RUN: Process with pid 79067 gracefully died
RUN: Process with pid 113573 gracefully died
RUN: Process with pid 84833 gracefully died
RUN: Process with pid 78984 gracefully died
RUN: Process with pid 111152 gracefully died
RUN: Process with pid 116732 gracefully died
RUN: Process with pid 79032 gracefully died
RUN: Process with pid 79137 signalled to die
RUN: Process with pid 84824 signalled to die
RUN: Process with pid 95309 signalled to die
RUN: Process with pid 113206 signalled to die
RUN: Process with pid 116716 signalled to die
RUN: Process with pid 138203 signalled to die
RUN: Process with pid 144906 signalled to die
RUN: Process with pid 147340 signalled to die
RUN: Process with pid 116766 gracefully died
RUN: Process with pid 85158 gracefully died
RUN: Process with pid 116704 gracefully died
RUN: Process with pid 95852 gracefully died
RUN: Process with pid 93199 gracefully died
RUN: Process with pid 85113 gracefully died
* kill pid for smtp-filt => 113207
RUN: Process with pid 78993 signalled to die
RUN: Process with pid 83621 signalled to die
RUN: Process with pid 85053 signalled to die
RUN: Process with pid 93258 signalled to die
RUN: Process with pid 113204 signalled to die
RUN: Process with pid 116853 signalled to die
RUN: Process with pid 121906 signalled to die
RUN: Process with pid 125320 signalled to die
RUN: Process with pid 175830 signalled to die
RUN: Process with pid 111069 gracefully died
RUN: Process with pid 116717 gracefully died
RUN: Process with pid 105846 gracefully died
RUN: Process with pid 124951 gracefully died
RUN: Process with pid 84702 gracefully died
RUN: Process with pid 93140 gracefully died
RUN: Process with pid 79175 gracefully died
RUN: Process with pid 111139 gracefully died
RUN: Process with pid 95886 gracefully died
RUN: Process with pid 85245 gracefully died
RUN: Process with pid 93636 gracefully died
RUN: Process with pid 116629 gracefully died
RUN: Process with pid 94590 gracefully died
RUN: Process with pid 93790 gracefully died
RUN: Process with pid 84824 gracefully died
RUN: Process with pid 125278 gracefully died
RUN: Process with pid 111131 gracefully died
RUN: Process with pid 79038 gracefully died
RUN: Process with pid 127735 gracefully died
RUN: Process with pid 78989 gracefully died
RUN: Process with pid 115289 gracefully died
RUN: Process with pid 78991 gracefully died
RUN: Process with pid 85249 gracefully died
RUN: Process with pid 97864 gracefully died
RUN: Process with pid 85053 gracefully died
RUN: Process with pid 124910 gracefully died
RUN: Process with pid 136302 gracefully died
RUN: Process with pid 95850 gracefully died
RUN: Process with pid 78990 gracefully died
RUN: Process with pid 84721 gracefully died
RUN: Process with pid 116160 gracefully died
RUN: Process with pid 127847 gracefully died
RUN: Process with pid 116357 gracefully died
RUN: Process with pid 122670 gracefully died
RUN: Process with pid 79135 gracefully died
RUN: Process with pid 122611 gracefully died
RUN: Process with pid 116373 gracefully died
RUN: Process with pid 116536 gracefully died
RUN: Process with pid 113262 gracefully died
RUN: Process with pid 127810 gracefully died
RUN: Process with pid 133608 gracefully died
RUN: Process with pid 111141 gracefully died
RUN: Process with pid 79137 gracefully died
RUN: Process with pid 116436 gracefully died
RUN: Process with pid 125072 gracefully died
RUN: Process with pid 83777 gracefully died
RUN: Process with pid 78983 gracefully died
RUN: Process with pid 144791 gracefully died
RUN: Process with pid 144624 gracefully died
RUN: Process with pid 113205 gracefully died
RUN: Process with pid 78993 gracefully died
RUN: Process with pid 116731 gracefully died
RUN: Process with pid 124839 gracefully died
RUN: Process with pid 122008 gracefully died
RUN: Process with pid 139095 gracefully died
RUN: Process with pid 127888 gracefully died
RUN: Process with pid 127750 gracefully died
RUN: Process with pid 125086 gracefully died
RUN: Process with pid 95851 gracefully died
RUN: Process with pid 124988 gracefully died
RUN: Process with pid 127845 gracefully died
RUN: Process with pid 133606 gracefully died
RUN: Process with pid 116438 gracefully died
RUN: Process with pid 121995 gracefully died
RUN: Process with pid 169038 gracefully died
RUN: Process with pid 95309 gracefully died
RUN: Process with pid 130713 gracefully died
RUN: Process with pid 122784 gracefully died
RUN: Process with pid 113210 gracefully died
RUN: Process with pid 150163 gracefully died
RUN: Process with pid 127840 gracefully died
RUN: Process with pid 152965 gracefully died
RUN: Process with pid 127773 gracefully died
RUN: Process with pid 116104 gracefully died
RUN: Process with pid 83621 gracefully died
RUN: Process with pid 127917 gracefully died
RUN: Process with pid 125292 gracefully died
RUN: Process with pid 125269 gracefully died
RUN: Process with pid 137984 gracefully died
RUN: Process with pid 164586 gracefully died
RUN: Process with pid 144654 gracefully died
RUN: Process with pid 127748 gracefully died
RUN: Process with pid 111274 gracefully died
RUN: Process with pid 146612 gracefully died
RUN: Process with pid 181133 gracefully died
RUN: Process with pid 122291 gracefully died
RUN: Process with pid 125142 gracefully died
RUN: Process with pid 127734 gracefully died
RUN: Process with pid 158265 gracefully died
RUN: Process with pid 113206 gracefully died
RUN: Process with pid 125317 gracefully died
RUN: Process with pid 116118 gracefully died
RUN: Process with pid 164412 gracefully died
RUN: Process with pid 144664 gracefully died
RUN: Process with pid 165995 gracefully died
RUN: Process with pid 135809 gracefully died
RUN: Process with pid 135779 gracefully died
RUN: Process with pid 93258 gracefully died
RUN: Process with pid 127841 gracefully died
RUN: Process with pid 127808 gracefully died
RUN: Process with pid 144680 gracefully died
RUN: Process with pid 181762 gracefully died
RUN: Process with pid 150157 gracefully died
RUN: Process with pid 141441 gracefully died
RUN: Process with pid 125253 gracefully died
RUN: Process with pid 127746 gracefully died
RUN: Process with pid 147503 gracefully died
RUN: Process with pid 182677 gracefully died
RUN: Process with pid 124956 gracefully died
RUN: Process with pid 144821 gracefully died
RUN: Process with pid 116716 gracefully died
RUN: Process with pid 160969 gracefully died
RUN: Process with pid 177818 gracefully died
RUN: Process with pid 188008 gracefully died
RUN: Process with pid 189495 gracefully died
RUN: Process with pid 127892 gracefully died
RUN: Process with pid 164475 gracefully died
RUN: Process with pid 144575 gracefully died
RUN: Process with pid 135955 gracefully died
RUN: Process with pid 113204 gracefully died
RUN: Process with pid 159327 gracefully died
RUN: Process with pid 160335 gracefully died
RUN: Process with pid 127818 gracefully died
RUN: Process with pid 162978 gracefully died
RUN: Process with pid 144893 gracefully died
RUN: Process with pid 188726 gracefully died
RUN: Process with pid 138203 gracefully died
RUN: Process with pid 182599 gracefully died
RUN: Process with pid 144655 gracefully died
RUN: Process with pid 165851 gracefully died
RUN: Process with pid 175834 gracefully died
RUN: Process with pid 152116 gracefully died
RUN: Process with pid 144626 gracefully died
RUN: Process with pid 116853 gracefully died
RUN: Process with pid 161068 gracefully died
RUN: Process with pid 179223 gracefully died
RUN: Process with pid 144434 gracefully died
RUN: Process with pid 177694 gracefully died
RUN: Process with pid 144906 gracefully died
RUN: Process with pid 186797 gracefully died
RUN: Process with pid 179477 gracefully died
RUN: Process with pid 177739 gracefully died
RUN: Process with pid 121906 gracefully died
RUN: Process with pid 149029 gracefully died
RUN: Process with pid 186405 gracefully died
RUN: Process with pid 147340 gracefully died
RUN: Process with pid 182274 gracefully died
RUN: Process with pid 125320 gracefully died
RUN: Process with pid 175830 gracefully died
RUN: Process with pid 190006 forced to die with SIGKILL
RUN: Process with pid 160156 forced to die with SIGKILL
RUN: Process with pid 160188 forced to die with SIGKILL
startnew: /startdir/src/curl/tests/negtelnetserver.py --port 42805 --pidfile "log/18/server/telnet_server.pid" --logfile "log/18/telnet_server.log" --srcdir "/startdir/src/curl/tests"
RUN: TELNET server PID 190006 port 42805
* pid neg TELNET => 190006 190006
test 3555 [Basic TELNET negotiation over HTTP proxy]
../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3555 ../src/curl -q --include --trace-ascii log/18/trace3555 --trace-time telnet://127.0.0.1:42805 --upload-file - -p -x http://127.0.0.1:38183/3555 <log/18/stdin-for-3555 > log/18/stdout3555 2> log/18/stderr3555

 3555: stdout FAILED:
--- log/18/check-expected	2026-10-15 19:29:24.359548169 +0000
+++ log/18/check-generated	2026-10-15 19:29:24.355721813 +0000
@@ -1 +0,0 @@
-test3555
== Contents of files in the log/18/ directory after test 3555
=== Start of file check-expected
 test3555
=== End of file check-expected
=== Start of file commands.log
 ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/startdir/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind3555 ../src/curl -q --include --trace-ascii log/18/trace3555 --trace-time telnet://127.0.0.1:42805 --upload-file - -p -x http://127.0.0.1:38183/3555 <log/18/stdin-for-3555 > log/18/stdout3555 2> log/18/stderr3555
=== End of file commands.log
=== Start of file http2_server.log
 19:29:22.437837 ====> Client connect
 19:29:22.437884 accept_connection 3 returned 4
 19:29:22.437914 Read 93 bytes
 19:29:22.437925 Process 93 bytes request
 19:29:22.437939 Got request: GET /verifiedserver HTTP/1.1
 19:29:22.437948 Are-we-friendly question received
 19:29:22.437977 Wrote request (93 bytes) input to log/18/proxy.input
 19:29:22.437995 Identifying ourselves as friends
 19:29:22.438086 Response sent (57 bytes) and written to log/18/proxy.response
 19:29:22.438097 special request received, no persistency
 19:29:22.438106 ====> Client disconnect 0
=== End of file http2_server.log
=== Start of file http2_verify.log
 *   Trying 127.0.0.1:38183...
 * Established connection to 127.0.0.1 (127.0.0.1 port 38183) from 127.0.0.1 port 57024 
 * using HTTP/1.x
 > GET /verifiedserver HTTP/1.1
 > Host: 127.0.0.1:38183
 > User-Agent: curl/8.23.0
 > Accept: */*
 > 
 * Request completely sent off
 < HTTP/1.1 200 OK
 < Content-Length: 18
 < 
 { [18 bytes data]
 * Connection #0 to host 127.0.0.1:38183 left intact
=== End of file http2_verify.log
=== Start of file http2_verify.out
 WE ROOLZ: 164586
=== End of file http2_verify.out
=== Start of file proxy.response
 HTTP/1.1 200 OK
 Content-Length: 18
 WE ROOLZ: 164586
=== End of file proxy.response
=== Start of file server.cmd
 Testnum 3555
=== End of file server.cmd
=== Start of file stdin-for-3555
 test3555
=== End of file stdin-for-3555
=== Start of file telnet_server.log
 2026-10-15 19:29:21,916 INFO  [NTEL] Listening on ('localhost', 42805)
=== End of file telnet_server.log
=== Start of file valgrind3555
 ==190601== 
 ==190601== Process terminating with default action of signal 4 (SIGILL)
 ==190601==  Illegal opcode at address 0x492B75F
 ==190601==    at 0x492B75F: formatf.constprop.2 (mprintf.c:1115)
 ==190601==    by 0x492C53A: curl_mvsnprintf (mprintf.c:1257)
 ==190601==    by 0x492B67B: curl_msnprintf (mprintf.c:1277)
 ==190601==    by 0x49A9B9E: Curl_ossl_version (openssl.c:5473)
 ==190601==    by 0x49908EB: UnknownInlinedFun (vtls.c:292)
 ==190601==    by 0x49908EB: curl_version_info (version.c:600)
 ==190601==    by 0x4003269: UnknownInlinedFun (tool_libinfo.c:140)
 ==190601==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:339)
 ==190601==    by 0x4003269: UnknownInlinedFun (tool_cfgable.c:310)
 ==190601==    by 0x4003269: main (tool_main.c:195)
=== End of file valgrind3555
* kill pid for smtp => 127917
* kill pid for ftp-ipv6 => 93908
* kill pid for imap => 121977
* kill pid for http => 79067
* kill pid for socks => 116160
* kill pid for pop3 => 124839
* kill pid for http-ipv6 => 135779
* kill pid for tftp => 95886
* kill pid for ftp => 85153
* kill pid for http-proxy => 150157
* kill pid for socks5unix => 161068
* kill pid for ftp => 85208
* kill pid for smtp => 127750
* kill pid for http => 79439
* kill pid for mqtt => 144654
* kill pid for imap => 114810
* kill pid for rtsp => 111139
* kill pid for pop3 => 125244
* kill pid for socks => 116357
* kill pid for http-unix => 159327
* kill pid for telnet => 190006
* kill pid for tftp => 139095
* kill pid for http-proxy => 164586
* kill pid for pop3 => 125319
* kill pid for socks => 116818
* kill pid for http-ipv6 => 93140
* kill pid for smtp => 127847
* kill pid for imap => 122785
* kill pid for http => 78988
* kill pid for mqtt => 181762
* kill pid for socks => 116827
* kill pid for pop3 => 125086
* kill pid for http-ipv6 => 160335
* kill pid for imap => 122670
* kill pid for http => 81869
* kill pid for mqtt => 141441
* kill pid for smtp => 127748
* kill pid for ftp-ipv6 => 93651
* kill pid for ftp => 85245
* kill pid for http-proxy => 179223
* kill pid for smtp => 127656
* kill pid for mqtt => 144624
* kill pid for http => 152965
* kill pid for http-ipv6 => 93199
* kill pid for rtsp => 115289
* kill pid for pop3 => 132050
* kill pid for ftp => 84587
* kill pid for http-proxy => 83621
* kill pid for ftp => 85053
* kill pid for smtp => 113204
* kill pid for http => 78993
* kill pid for mqtt => 175830
* kill pid for imap => 121906
* kill pid for http-ipv6 => 93258
* kill pid for pop3 => 125320
* kill pid for socks => 116853
* kill pid for ftp => 84702
* kill pid for http-proxy => 179477
* kill pid for http-unix => 159360
* kill pid for http-ipv6 => 152116
* kill pid for socks => 116731
* kill pid for pop3 => 125269
* kill pid for mqtt => 144575
* kill pid for http => 78990
* kill pid for imap => 122830
* kill pid for smtp => 127808
* kill pid for telnet => 160188
* kill pid for rtsp => 111141
* kill pid for ftp => 85158
* kill pid for smtp => 130713
* kill pid for imap => 158265
* kill pid for http => 79038
* kill pid for rtsp => 111069
* kill pid for imap => 122222
* kill pid for mqtt => 182274
* kill pid for socks5unix => 160969
* kill pid for http-proxy => 83777
* kill pid for pop3 => 124955
* kill pid for socks => 116118
* kill pid for http => 165851
* kill pid for smtp => 113210
* kill pid for ftp => 85249
* kill pid for tftp => 177739
* kill pid for ftp => 188726
* kill pid for tftp => 94937
* kill pid for http-proxy => 146612
* kill pid for rtsp => 111131
* kill pid for http-ipv6 => 147503
* kill pid for socks => 116536
* kill pid for pop3 => 124858
* kill pid for smtp => 127845
* kill pid for http => 79032
* kill pid for imap => 122183
* kill pid for imap => 165995
* kill pid for http => 79065
* kill pid for smtp => 130773
* kill pid for pop3 => 105846
* kill pid for http-ipv6 => 136302
* kill pid for rtsp => 189495
* kill pid for http-proxy => 150163
* kill pid for ftp => 154115
* kill pid for gopher => 144791
* kill pid for ftp => 84721
* kill pid for pop3 => 125292
* kill pid for rtsp => 111137
* kill pid for smtp => 127841
* kill pid for ftp-ipv6 => 135955
* kill pid for imap => 122008
* kill pid for mqtt => 144626
* kill pid for http => 79175
* kill pid for rtsp => 111152
* kill pid for socks => 116629
* kill pid for pop3 => 124988
* kill pid for smtp => 127734
* kill pid for mqtt => 182599
* kill pid for http => 82533
* kill pid for imap => 122611
* kill pid for gopher => 144821
* kill pid for ftp => 84710
* kill pid for http-proxy => 186797
* kill pid for smtp => 113262
* kill pid for imap => 122291
* kill pid for http => 162978
* kill pid for socks => 116438
* kill pid for pop3 => 124956
* kill pid for http-ipv6 => 94590
* kill pid for ftp => 84833
* kill pid for http-ipv6 => 138203
* kill pid for socks => 116716
* kill pid for gopher-ipv6 => 144906
* kill pid for smtp => 113206
* kill pid for http => 79137
* kill pid for ftp => 84824
* kill pid for tftp => 147340
* kill pid for http-proxy => 95309
* kill pid for ftp => 84744
* kill pid for smtp => 127773
* kill pid for imap => 122502
* kill pid for mqtt => 144664
* kill pid for http Runner 78959 exiting
Runner 78967 exiting
Runner 78975 exiting
Runner 78962 exiting
Runner 78976 exiting
Runner 78971 exiting
Runner 78973 exiting
Runner 78969 exiting
Runner 78961 exiting
Runner 78970 exiting
Runner 78968 exiting
Runner 78977 exiting
Runner 78964 exiting
Runner 78965 exiting
Runner 78960 exiting
Runner 78972 exiting
Runner 78958 exiting
Runner 78963 exiting
Runner 78981 exiting
Runner 78978 exiting
Runner 78979 exiting
Runner 78966 exiting
Runner 78980 exiting
Runner 78974 exiting
=> 78991
* kill pid for pop3 => 125072
* kill pid for socks => 116704
* kill pid for http-ipv6 => 188008
* kill pid for socks => 116766
* kill pid for smtp => 127735
* kill pid for http => 82167
* kill pid for gopher => 169038
* kill pid for ftp => 85558
* kill pid for tftp => 133608
* kill pid for http-proxy => 84342
* kill pid for http-proxy => 116732
* kill pid for tftp => 133606
* kill pid for ftp => 84935
* kill pid for smtp => 127810
* kill pid for mqtt => 182677
* kill pid for http => 79446
* kill pid for imap => 122891
* kill pid for http-ipv6 => 181133
* kill pid for pop3 => 125278
* kill pid for pop3 => 125054
* kill pid for socks => 116104
* kill pid for mqtt => 175834
* kill pid for http => 78982
* kill pid for imap => 113205
* kill pid for ftp-ipv6 => 135809
* kill pid for smtp => 127811
* kill pid for ftp => 85113
* kill pid for tftp => 97864
* kill pid for http-proxy => 164475
* kill pid for smtp => 127746
* kill pid for ftp-ipv6 => 93790
* kill pid for imap => 121995
* kill pid for http => 78984
* kill pid for mqtt => 186405
* kill pid for socks => 116373
* kill pid for pop3 => 125142
* kill pid for tftp => 177694
* kill pid for gopher => 144893
* kill pid for ftp => 84714
* kill pid for http => 78985
* kill pid for mqtt => 144680
* kill pid for imap => 122217
* kill pid for smtp => 127888
* kill pid for pop3 => 124951
* kill pid for socks => 115986
* kill pid for http-proxy => 137984
* kill pid for tftp => 95850
* kill pid for ftp => 84694
* kill pid for ftp-ipv6 => 93636
* kill pid for smtp => 127818
* kill pid for http => 79135
* kill pid for mqtt => 144434
* kill pid for imap => 113573
* kill pid for rtsp => 111274
* kill pid for http-ipv6 => 149029
* kill pid for pop3 => 125253
* kill pid for tftp => 95851
* kill pid for ftp => 84695
* kill pid for tftp => 177818
* kill pid for http-proxy => 164412
* kill pid for ftp => 84709
* kill pid for imap => 122113
* kill pid for http => 78983
* kill pid for smtp => 127840
* kill pid for dict => 160156
* kill pid for socks => 116717
* kill pid for pop3 => 124910
* kill pid for smtp => 127892
* kill pid for mqtt => 144655
* kill pid for http => 78989
* kill pid for imap => 122784
* kill pid for socks => 116436
* kill pid for pop3 => 125317
* kill pid for tftp => 95852
* kill pid for ftp => 84749
TESTDONE: 2138 tests were considered during 207 seconds.
TESTINFO: 386 tests were skipped due to these restraints:
TESTINFO: "curl lacks Debug support" 145 times (355, 356, 358, 359, 363, 412, 413, 437, 438 and 136 more)
TESTINFO: "no stunnel" 75 times (300, 301, 302, 303, 304, 305, 306, 307, 308 and 66 more)
TESTINFO: "failed starting SSH server" 56 times (582, 583, 600, 601, 602, 603, 604, 605, 606 and 47 more)
TESTINFO: "curl lacks NTLM support" 53 times (67, 68, 69, 70, 76, 81, 89, 90, 91 and 44 more)
TESTINFO: "configured as DISABLED" 15 times (433, 594, 836, 882, 938, 1182, 1184, 1209, 1211 and 6 more)
TESTINFO: "curl lacks manual support" 7 times (1026, 1179, 1461, 1707, 1708, 1709, 1710)
TESTINFO: "curl lacks Schannel support" 7 times (2033, 2070, 2079, 2087, 3023, 3024, 4782)
TESTINFO: "failed starting HTTP/2 server" 6 times (1700, 1702, 2402, 2403, 2404, 2407)
TESTINFO: "curl has IDN support" 3 times (959, 960, 961)
TESTINFO: "curl lacks override-dns support" 3 times (2102, 2103, 2104)
TESTINFO: "curl lacks TrackMemory support" 3 times (96, 558, 1330)
TESTINFO: "curl lacks ECH support" 2 times (4000, 4001)
TESTINFO: "curl lacks nghttpx-h3 support" 2 times (2500, 2503)
TESTINFO: "curl has IPv6 support" 1 time (1454)
TESTINFO: "curl has proxy support" 1 time (375)
TESTINFO: "curl has threaded-resolver support" 1 time (506)
TESTINFO: "curl lacks ldap support" 1 time (445)
TESTINFO: "curl lacks ssl-sessions support" 1 time (777)
TESTINFO: "curl lacks SSLS-EXPORT support" 1 time (1678)
TESTINFO: "curl lacks Unicode support" 1 time (1703)
TESTINFO: "curl lacks win32 support" 1 time (1451)
TESTINFO: "failed starting HTTP/3 server" 1 time (2502)
FAIL-IGNORED 573: 'verify connect time with multi interface' HTTP, multi, flaky, libtest
FAIL-IGNORED 587: 'HTTP multi-part formpost with aborted read callback' HTTP, HTTP POST, FORM, flaky, libtest
FAIL-IGNORED 766: 'FTP PORT with sockopt callback refusing the accept' FTP, PORT, CURLOPT_SOCKOPTFUNCTION, timing-dependent, libtest
FAIL-IGNORED 1086: 'FTP download with strict timeout and slow data transfer' FTP, EPSV, RETR, timeout, SLOWDOWNDATA, flaky, timing-dependent
FAIL-IGNORED 1113: 'FTP wildcard download - changed fnmatch, 2x perform (DOS LIST)' FTP, RETR, LIST, wildcardmatch, ftplistparser, flaky, libtest
FAIL-IGNORED 1162: 'FTP wildcard with crazy pattern' FTP, RETR, LIST, wildcardmatch, ftplistparser, flaky, libtest
FAIL-IGNORED 1163: 'FTP wildcard with pattern ending with an open-bracket' FTP, RETR, LIST, wildcardmatch, ftplistparser, flaky, libtest
FAIL-IGNORED 1208: 'FTP PORT download, no data conn and no transient negative reply' FTP, PORT, RETR, NODATACONN150, timeout, flaky, timing-dependent
FAIL-IGNORED 1510: 'HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)' HTTP, verbose logs, flaky, libtest
FAIL-IGNORED 1592: 'HTTP request, remove handle while resolving, do not block' HTTP, multi, resolve, speedcheck, flaky, timing-dependent, libtest
IGNORED: failed tests: 573 587 766 1086 1113 1162 1163 1208 1510 1592
TESTDONE: 25 tests out of 1752 reported OK: 1%

FAIL 1: 'HTTP GET' HTTP, HTTP GET
FAIL 2: 'HTTP GET with user and password' HTTP, HTTP GET, HTTP Basic auth
FAIL 3: 'HTTP POST with auth and contents but with content-length set to 0' HTTP, HTTP POST, HTTP Basic auth
FAIL 4: 'Replaced internal and added custom HTTP headers' HTTP, HTTP GET, HTTP added headers, HTTP replaced headers
FAIL 5: 'HTTP over proxy' HTTP, HTTP GET, HTTP proxy
FAIL 6: 'HTTP with simple cookie send' HTTP, HTTP GET, HTTP set cookie, cookies
FAIL 7: 'HTTP with cookie parser and header recording' HTTP, HTTP GET, cookies, header dump
FAIL 8: 'HTTP with cookie parsing from header file' HTTP, HTTP GET, cookies
FAIL 9: 'HTTP RFC1867-type formposting' HTTP, HTTP FORMPOST, HTTP file upload
FAIL 10: 'simple HTTP PUT from file' HTTP, HTTP PUT
FAIL 11: 'simple HTTP Location: following' HTTP, HTTP GET, followlocation
FAIL 12: 'HTTP range support' HTTP, HTTP GET, Content-Range
FAIL 13: 'HTTP custom request 'DELETE'' HTTP, HTTP custom request
FAIL 14: 'HTTP HEAD with Connection: close' HTTP, HTTP HEAD
FAIL 15: '--write-out test' HTTP, HTTP GET, --write-out
FAIL 16: 'HTTP with proxy authorization' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth
FAIL 17: 'HTTP with config file on stdin' HTTP, HTTP custom request, config file
FAIL 18: 'multiple requests using {} in URL' HTTP, HTTP GET, globbing, {} list
FAIL 19: 'attempt connect to non-listening socket' HTTP, connect to non-listen
FAIL 20: 'attempt connect to non-existing hostname' HTTP, non-existing host
FAIL 21: 'use curl with multiple request methods' multiple HTTP requests
FAIL 22: 'get HTTP with URL > 10000 bytes' HTTP, long URL
FAIL 23: 'unsupported protocol:// URL' unsupported scheme
FAIL 24: 'HTTP GET fail silently on HTTP error return' HTTP, HTTP GET, --fail
FAIL 25: 'looping HTTP Location: following with --max-redirs' HTTP, HTTP GET, followlocation, --max-redirs
FAIL 26: 'specify more -o than URLs' HTTP, HTTP GET
FAIL 27: 'Get same cookie page several times' HTTP, HTTP GET, cookies
FAIL 28: 'HTTP Location: following with extra spaces in header' HTTP, HTTP GET
FAIL 29: 'HTTP with 2 secs timeout' HTTP, HTTP GET, timeout
FAIL 30: 'HTTP with no data in server reply' HTTP, HTTP GET
FAIL 31: 'HTTP with weirdly formatted cookies and cookiejar storage' HTTP, HTTP GET, cookies, cookiejar, --resolve
FAIL 32: 'HTTP with -d and -G' HTTP, HTTP GET, -G
FAIL 33: 'HTTP PUT rejects upload resume' HTTP, HTTP PUT, Resume
FAIL 34: 'HTTP GET with chunked Transfer-Encoding' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 35: 'HTTP POST binary data with embedded NUL byte' HTTP, HTTP POST, --data-binary
FAIL 36: 'HTTP GET with bad chunked Transfer-Encoding' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 37: 'HTTP GET with nothing returned from server' HTTP, HTTP GET
FAIL 38: 'HTTP resume request without server supporting it' HTTP, HTTP GET, Resume
FAIL 39: 'HTTP RFC1867-type formposting with filename= and type=' HTTP, HTTP FORMPOST
FAIL 40: 'HTTP redirect with whitespace after ? (and conversion)' HTTP, HTTP GET, followlocation
FAIL 41: 'HTTP formpost with missing file' HTTP, HTTP FORMPOST
FAIL 42: 'HTTP redirect with whitespace in path (and conversion)' HTTP, HTTP GET, followlocation
FAIL 43: 'HTTP Location: following over HTTP proxy' HTTP, HTTP GET, followlocation, HTTP proxy
FAIL 44: 'HTTP RFC1867-type formposting without Expect: header' HTTP, HTTP FORMPOST, HTTP replaced headers
FAIL 45: 'simple HTTP Location: without protocol in initial URL' HTTP, HTTP GET, followlocation
FAIL 46: 'HTTP with bad domain name, get cookies and store in cookie jar' HTTP, HTTP GET, cookies, cookiejar, --resolve
FAIL 47: 'simple HTTP 1.0 GET' HTTP, HTTP GET, HTTP/1.0
FAIL 48: 'HTTP with -d and -G and -I' HTTP, HTTP HEAD, -G
FAIL 49: 'HTTP follow redirect with ../' HTTP, HTTP GET, followlocation
FAIL 50: 'HTTP follow redirect with ../../' HTTP, HTTP GET, followlocation
FAIL 51: 'HTTP follow redirect with excessive ../' HTTP, HTTP GET, followlocation
FAIL 52: 'HTTP follow redirect with ./-prefix' HTTP, HTTP GET, followlocation
FAIL 53: 'HTTP, junk session cookies' HTTP, HTTP GET, cookies
FAIL 54: 'HTTP with blank Location:' HTTP, HTTP GET, followlocation
FAIL 55: 'HTTP follow redirect with single slash in path' HTTP, HTTP GET, followlocation
FAIL 56: 'HTTP POST with *HUGE* request and chunked transfer-encoding' HTTP, HTTP POST, chunked Transfer-Encoding, config file, -A
FAIL 57: 'HTTP content-type with spaces in' HTTP, HTTP GET, --write-out
FAIL 58: 'HTTP PUT from file with weird letters' HTTP, HTTP PUT
FAIL 59: 'HTTP URL with slash but with "parameter"' HTTP, HTTP GET
FAIL 60: 'HTTP PUT from stdin with wrong content-length' HTTP, HTTP PUT, chunked Transfer-Encoding
FAIL 61: 'HTTP with various cookies and custom Host:' HTTP, HTTP GET, cookies, cookiejar, HTTP replaced headers, httponly
FAIL 62: 'HTTP, send cookies when using custom Host:' HTTP, HTTP GET, HTTP replaced headers, cookies, httponly
FAIL 63: 'HTTP with proxy authorization set in environment' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth, http_proxy
FAIL 64: 'HTTP with Digest authorization' HTTP, HTTP GET, HTTP Digest auth
FAIL 65: 'HTTP with Digest authorization with bad password' HTTP, HTTP GET, HTTP Digest auth
FAIL 66: 'HTTP GET without headers in the response' HTTP, HTTP GET, HTTP/0.9
FAIL 71: 'HTTP and -F upload in config file' HTTP, HTTP FORMPOST, config file
FAIL 72: 'HTTP with Digest *OR* Basic authorization' HTTP, HTTP GET, HTTP Digest auth
FAIL 73: 'HTTP cookies when using custom Host:, domain using only two dots' HTTP, HTTP GET, cookies, cookiejar
FAIL 74: 'HTTP, urlglob {}-retrieval and -o #[num] usage' HTTP, HTTP GET, globbing, {} list
FAIL 75: 'HTTP, urlglob retrieval with bad range' HTTP, HTTP GET, globbing
FAIL 77: 'HTTP with -z "older date"' HTTP, HTTP GET, If-Modified-Since, -z
FAIL 78: 'HTTP with -z "newer date"' HTTP, HTTP GET, If-Modified-Since, -z
FAIL 79: 'FTP over HTTP proxy' FTP, HTTP, HTTP GET, HTTP proxy
FAIL 80: 'HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication' HTTP, HTTP GET, HTTP CONNECT, HTTP Basic auth, HTTP proxy, HTTP proxy Basic auth, proxytunnel
FAIL 82: 'HTTP with proxy requiring NTLM, but we send Basic' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth, HTTP proxy NTLM auth
FAIL 83: 'HTTP over proxy-tunnel with site authentication' HTTP, HTTP GET, HTTP CONNECT, HTTP Basic auth, proxytunnel
FAIL 84: 'HTTP over proxy with site authentication' HTTP, HTTP GET, HTTP Basic auth, HTTP proxy
FAIL 85: 'HTTP over proxy with site and proxy authentication' HTTP, HTTP GET, HTTP Basic auth, HTTP proxy, HTTP proxy Basic auth
FAIL 86: 'HTTP, urlglob []-retrieval and -o #[num] usage' HTTP, HTTP GET, globbing, [] range
FAIL 87: 'urlglob with out of range -o #[num] usage' HTTP, HTTP GET, globbing, [] range
FAIL 88: 'HTTP PUT with Digest authorization' HTTP, HTTP PUT, HTTP Digest auth
FAIL 92: 'HTTP resume transfer with the whole file already downloaded' HTTP, HTTP GET, Content-Range, Resume
FAIL 93: 'HTTP GET with failed proxy auth' HTTP, HTTP GET, HTTP proxy
FAIL 94: 'HTTPS GET with failed proxy auth (CONNECT 1.0)' HTTPS, HTTP GET, HTTP CONNECT, HTTP proxy
FAIL 95: 'HTTP over proxytunnel using POST' HTTP, HTTP POST, HTTP CONNECT, proxytunnel
FAIL 97: 'HTTP POST with custom content-type' HTTP, HTTP POST, HTTP replaced headers
FAIL 98: 'HTTP PUT from stdin with set size, disabling chunked transfer-encoding' HTTP, HTTP PUT, chunked Transfer-Encoding
FAIL 99: 'HTTP GET with large-file resume point and failed resume' HTTP, HTTP GET, Resume, Largefile
FAIL 100: 'FTP dir list PASV' FTP, PASV, LIST
FAIL 101: 'FTP dir list, PORT with specified IP' FTP, PORT, LIST
FAIL 102: 'FTP RETR PASV' FTP, PASV, RETR
FAIL 103: 'FTP RETR PORT with CWD' FTP, PORT, RETR
FAIL 104: 'FTP --head to get file size only' FTP, NOBODY
FAIL 105: 'FTP user+password in URL and ASCII transfer' FTP, PASV, TYPE A, RETR
FAIL 106: 'FTP GET with type=A style ASCII URL using %20 codes' FTP, EPSV, TYPE A, RETR, type=
FAIL 107: 'FTP PASV upload file' FTP, EPSV, STOR
FAIL 108: 'FTP PORT upload with CWD' FTP, PORT, STOR
FAIL 109: 'FTP PASV upload append' FTP, EPSV, APPE
FAIL 110: 'FTP download resume with set limit' FTP, PASV, RETR, Resume
FAIL 111: 'FTP download resume beyond file size' FTP, EPSV, Resume
FAIL 112: 'FTP PASV upload resume' FTP, EPSV, APPE, Resume
FAIL 113: 'FTP download, failed login: USER not valid' FTP
FAIL 114: 'FTP download, failed login: PASS not valid' FTP
FAIL 115: 'FTP download, failed PASV' FTP, PASV
FAIL 116: 'FTP download, failed PORT' FTP, EPRT, PORT, EPRT refused
FAIL 117: 'FTP download, failed TYPE' FTP
FAIL 118: 'FTP download, failed RETR' FTP, PASV, RETR
FAIL 119: 'FTP download, failed RETR with PORT' FTP, PORT, RETR
FAIL 120: 'ftp download with post-quote delete operation' FTP, PASV, RETR, post-quote
FAIL 121: 'ftp download with post- and pre-transfer delete operations' FTP, EPSV, RETR, post-quote, pre-quote
FAIL 122: 'FTP download resume with whole file already downloaded' FTP, PASV, Resume
FAIL 123: 'FTP upload resume with whole file already downloaded' FTP, EPSV, Resume
FAIL 124: 'FTP download, failed PWD' FTP, PASV, RETR
FAIL 125: 'FTP download, failed CWD' FTP
FAIL 126: 'FTP download with multiple replies at once in RETR' FTP, EPSV, RETR, RETRWEIRDO
FAIL 127: 'FTP --disable-epsv' FTP, PASV, RETR, --disable-epsv
FAIL 128: 'FTP upload with --crlf' FTP, EPSV, STOR, --crlf
FAIL 129: 'HTTP/1.2 is rejected' HTTP, HTTP GET
FAIL 130: 'FTP (optional .netrc; no user/pass) dir list PASV' FTP, EPSV, LIST, netrc
FAIL 131: 'FTP (optional .netrc; user/no pass) dir list PASV' FTP, EPSV, LIST, netrc
FAIL 132: 'FTP (optional .netrc; user/passwd supplied) dir list PASV' FTP, EPSV, LIST, netrc
FAIL 133: 'FTP compulsory .netrc; ignore passwd in URL' FTP, EPSV, LIST, netrc
FAIL 134: 'FTP (optional .netrc; programmatic user/passwd) dir list PASV' FTP, EPSV, LIST, netrc
FAIL 135: 'FTP retrieve a byte-range' FTP, EPSV, RETR, Range
FAIL 136: 'FTP with user and no password' FTP, EPSV, RETR
FAIL 137: 'FTP download without size in RETR string' FTP, RETR, --data-binary
FAIL 138: 'FTP download without size in RETR string and no SIZE command' FTP, RETR
FAIL 139: 'FTP download a newer file with -z' FTP, RETR, -z
FAIL 140: 'FTP download file with -z, expected to not transfer' FTP, -z, --data-binary
FAIL 141: 'FTP download info with -I' FTP, NOBODY
FAIL 142: 'FTP URL with 150 dir levels' FTP
FAIL 143: 'FTP URL with type=a' FTP, RETR, type=
FAIL 144: 'FTP NLST dir list without contents, using PORT' FTP, PORT, NLST, --data-binary
FAIL 145: 'FTP NLST dir list with weird reply code, using PORT' FTP, NLST, PORT
FAIL 146: 'persistent FTP with different paths' FTP, RETR, persistent connection
FAIL 147: 'FTP with --ftp-create-dirs (failing CWD)' FTP
FAIL 148: 'FTP with --ftp-create-dirs (failing MKD)' FTP
FAIL 149: 'FTP with multiple uploads' FTP
FAIL 151: 'HTTP GET with an error code that might trick authentication' HTTP, HTTP GET
FAIL 152: 'HTTP GET with an error code that might trick authentication and --fail' HTTP, HTTP GET, --fail
FAIL 153: 'HTTP with Digest authorization with stale=true' HTTP, HTTP GET, HTTP Digest auth
FAIL 154: 'HTTP PUT with --anyauth authorization (picking Digest)' HTTP, HTTP PUT, HTTP Digest auth, --anyauth
FAIL 156: 'HTTP PUT with --anyauth (when the server requires none)' HTTP, HTTP PUT, --anyauth
FAIL 157: 'HTTP GET with --anyauth (when the server requires none)' HTTP, HTTP GET, --anyauth
FAIL 158: 'HTTP multipart formpost with zero resume offset and only a 100 reply' HTTP, HTTP POST, Resume
FAIL 160: 'HTTP with delayed close, conn reuse, connection reset and retry' HTTP, HTTP GET, DELAY
FAIL 161: 'FTP RETR partial file' FTP, CURLE_PARTIAL_FILE, RETR, PASV
FAIL 163: 'HTTP multipart formpost with contents from a file' HTTP, HTTP POST
FAIL 164: 'HTTP range with multiple ranges' HTTP, HTTP GET
FAIL 165: 'HTTP over proxy with IDN hostname' HTTP, HTTP GET, HTTP proxy, IDN
FAIL 166: 'HTTP formpost a file with spaces in name' HTTP, HTTP POST
FAIL 167: 'HTTP with proxy-requiring-Basic to site-requiring-Digest' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth, HTTP Digest auth
FAIL 168: 'HTTP with proxy-requiring-Digest to site-requiring-Digest' HTTP, HTTP GET, HTTP proxy, HTTP proxy Digest auth, HTTP Digest auth
FAIL 171: 'HTTP, get cookie with dot prefixed full domain' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 172: 'HTTP with cookies file and custom added cookie' HTTP, HTTP GET, cookies
FAIL 173: 'HTTP RFC1867-formpost a file from stdin with "faked" filename' HTTP, HTTP POST
FAIL 174: 'HTTP POST --anyauth to server not requiring any auth at all' HTTP, HTTP POST
FAIL 175: 'HTTP POST --digest to server not requiring any auth at all' HTTP, HTTP POST, HTTP Digest auth
FAIL 177: 'HTTP POST --digest to server doing a 302-location response' HTTP, HTTP POST, HTTP Digest auth, followlocation
FAIL 178: 'HTTP response with negative Content-Length' HTTP, HTTP GET
FAIL 179: 'HTTP using proxy and cookies with path checks' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 180: 'HTTP 1.0 PUT' HTTP, HTTP PUT, HTTP/1.0
FAIL 181: 'HTTP 1.0 POST' HTTP, HTTP POST, HTTP/1.0
FAIL 182: 'FTP download an empty file' FTP
FAIL 183: 'HTTP GET two URLs over a single proxy with persistent connection' HTTP, HTTP GET, HTTP proxy, persistent connection
FAIL 184: 'HTTP replace Host: when following Location: to new host' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 185: 'HTTP replace Host: when following Location: on the same host' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 186: 'HTTP RFC1867-type formposting with types on text fields' HTTP, HTTP POST
FAIL 187: 'HTTP redirect with bad hostname separation and slash in parameters' HTTP, HTTP GET, followlocation
FAIL 188: 'HTTP GET with resume and redirect' HTTP, HTTP GET, Content-Range, Resume, followlocation
FAIL 189: 'HTTP GET with resume and redirect (to a page that does not resume)' HTTP, HTTP GET
FAIL 190: 'FTP download with strict timeout and slow CWD' FTP, timeout, DELAY
FAIL 191: 'FTP URL with ?-letters in username and password' FTP
FAIL 192: 'HTTP GET -w num_connects with one simple connect' HTTP, HTTP GET
FAIL 193: 'HTTP GET -w num_connects with redirected fetch (2 connects)' HTTP, HTTP GET, followlocation, --write-out
FAIL 194: 'HTTP resume transfer with the whole file already downloaded and --fail' HTTP, HTTP GET, Content-Range, Resume
FAIL 195: 'FTP response 530 after PASS, temporarily not allowed access' FTP
FAIL 196: 'FTP transient error, retry request once' FTP, retry
FAIL 197: 'HTTP GET --retry on 503 error with output to stdout' HTTP, HTTP GET, retry
FAIL 198: 'HTTP GET --retry on 503 error with output to file' HTTP, HTTP GET, retry
FAIL 199: 'HTTP with -d, -G and {}' HTTP, HTTP GET, globbing
FAIL 200: 'basic file:// file' FILE
FAIL 201: 'missing file:// file' FILE
FAIL 202: 'two file:// URLs to stdout' FILE
FAIL 203: 'file:/path URL with a single slash' FILE
FAIL 204: '"upload" with file://' FILE
FAIL 205: '"upload" nonexisting with file://' FILE
FAIL 206: 'HTTP proxy CONNECT auth Digest' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, HTTP proxy Digest auth
FAIL 207: 'HTTP GET with chunked Transfer-Encoding closed prematurely' HTTP, HTTP GET, CURLE_PARTIAL_FILE, chunked Transfer-Encoding
FAIL 208: 'HTTP PUT to an FTP URL with username+password - over HTTP proxy' FTP, HTTP, HTTP PUT, HTTP proxy
FAIL 210: 'Get two FTP files from the same remote dir: no second CWD' FTP
FAIL 211: 'Get two FTP files with no remote EPSV support' FTP
FAIL 212: 'Get two FTP files with no remote EPRT support' FTP, EPRT
FAIL 214: 'HTTP URL with escaped { and }' HTTP, HTTP GET
FAIL 215: 'Get two FTP dir listings from the same remote dir: no second CWD' FTP
FAIL 216: 'FTP upload two files to the same dir' FTP
FAIL 217: 'HTTP proxy CONNECT to proxy returning 405' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, followlocation, --write-out
FAIL 218: 'HTTP PUT from a file but enforce chunked transfer-encoding' HTTP, HTTP PUT, chunked Transfer-Encoding
FAIL 219: 'try using proxy with unsupported scheme' proxy, unsupported scheme
FAIL 220: 'HTTP GET gzip compressed content' HTTP, HTTP GET, compressed
FAIL 221: 'HTTP GET gzip compressed content with broken gzip header' HTTP, HTTP GET, compressed
FAIL 222: 'HTTP GET deflate compressed content' HTTP, HTTP GET, compressed
FAIL 223: 'HTTP GET deflate compressed content with broken deflate header' HTTP, HTTP GET, compressed
FAIL 224: 'HTTP GET gzip compressed content with huge comment and extra field' HTTP, HTTP GET, compressed
FAIL 225: 'FTP %0a-code in URL's name part' FTP
FAIL 226: 'FTP %0d-code in URL's CWD part' FTP
FAIL 227: 'FTP with quote ops' FTP, post-quote, pre-quote
FAIL 228: 'FTP RETR with ACCT' FTP, ACCT
FAIL 229: 'FTP RETR with bad ACCT' FTP, ACCT
FAIL 230: 'HTTP GET multiply compressed content' HTTP, HTTP GET, compressed
FAIL 231: 'file:// with resume' FILE
FAIL 232: 'HTTP GET deflate raw-compressed content' HTTP, HTTP GET, compressed
FAIL 233: 'HTTP, proxy, site+proxy auth and Location: to new host' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation
FAIL 234: 'HTTP, proxy, site+proxy auth and Location: --location-trusted' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth, followlocation, --location-trusted
FAIL 235: 'FTP resumed upload but no file present remotely' FTP, STOR
FAIL 236: 'FTP resume upload but denied access to remote file' FTP
FAIL 237: 'FTP getting bad host in 227-response to PASV' FTP
FAIL 238: 'FTP getting bad port in response to EPSV' FTP
FAIL 240: 'HTTP-IPv6 GET' HTTP, HTTP GET, IPv6
FAIL 241: 'HTTP-IPv6 GET (using ip6-localhost)' HTTP, HTTP GET, IPv6, IPv6-hostname
FAIL 242: 'HTTP-IPv6 GET with username+password in URL' HTTP, HTTP GET, IPv6, HTTP Basic auth
FAIL 244: 'FTP dir listing with nocwd and URL encoded path' FTP, PASV, CWD, --ftp-method, nocwd
FAIL 245: 'HTTP POST --digest' HTTP, HTTP POST, HTTP Digest auth
FAIL 246: 'HTTP POST --digest with server doing a 100 before 401 response' HTTP, HTTP POST, HTTP Digest auth
FAIL 247: 'FTP upload time condition evaluates TRUE => skip upload' FTP, MDTM
FAIL 248: 'FTP upload time condition evaluates FALSE => upload anyway' FTP, STOR, MDTM
FAIL 249: 'HTTP 304 response with "illegal" Content-Length: header' HTTP, HTTP GET, -z
FAIL 250: 'FTP dir list PASV with slow response' FTP, SLOWDOWN
FAIL 251: 'FTP dir list, PORT with specified IP and slow response' FTP, SLOWDOWN
FAIL 252: 'FTP IPv6 dir list PASV' FTP, FTP-ipv6, IPv6, EPSV
FAIL 253: 'FTP IPv6 dir list with EPRT' FTP, FTP-ipv6, IPv6, EPRT
FAIL 254: 'FTP IPv6 dir list PASV and --disable-epsv' FTP, FTP-ipv6, IPv6, EPSV, --disable-epsv
FAIL 255: 'FTP IPv6 dir list with EPRT and --disable-eprt' FTP, FTP-ipv6, IPv6, EPRT, --disable-eprt
FAIL 256: 'HTTP resume request over proxy with auth without server supporting it' HTTP, HTTP GET, HTTP proxy, Resume
FAIL 257: 'HTTP Location: following with --netrc-optional' HTTP, HTTP GET, HTTP proxy, HTTP Basic auth, followlocation, netrc
FAIL 258: 'HTTP multipart POST without Expect: using proxy anyauth (Digest)' HTTP, HTTP FORMPOST, HTTP replaced headers, HTTP proxy, HTTP proxy Digest auth, --proxy-anyauth
FAIL 259: 'HTTP POST multipart with Expect: header using proxy anyauth (Digest)' HTTP, HTTP FORMPOST, HTTP proxy, HTTP proxy Digest auth, --proxy-anyauth
FAIL 260: 'HTTP GET URL without slash but with question mark' HTTP, HTTP GET
FAIL 261: 'FTP RETR with 226 response code to TYPE' FTP, EPSV, RETR
FAIL 262: 'Reject HTTP response with binary zero in header' HTTP, HTTP GET
FAIL 263: 'HTTP-IPv6 GET with proxy specified using IPv6-numerical address' HTTP, HTTP GET, IPv6, HTTP proxy
FAIL 264: 'HTTP with proxy string including http:// and user+password' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth
FAIL 266: 'HTTP GET with chunked Transfer-Encoding and chunked trailer' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 268: 'JSON encoding of Unicode string' HTTP, variables
FAIL 269: 'HTTP --ignore-content-length' HTTP, HTTP GET
FAIL 270: 'FTP RETR PASV --ftp-skip-pasv-ip' FTP, PASV, RETR
FAIL 271: 'TFTP retrieve' TFTP, TFTP RRQ
FAIL 272: 'FTP timed conditioned get file with identical time stamp' FTP, PASV, RETR
FAIL 273: 'HTTP with two Digest authorization headers' HTTP, HTTP GET, HTTP Digest auth
FAIL 274: 'HTTP Location: following with --max-redirs 0' HTTP, HTTP GET, followlocation, --max-redirs
FAIL 275: 'HTTP CONNECT with proxytunnel getting two URLs from the same host' HTTP, HTTP GET, HTTP CONNECT, HTTP Basic auth, HTTP proxy, HTTP proxy Basic auth, proxytunnel
FAIL 276: 'HTTP Location: following with multiple question marks in URLs' HTTP, HTTP GET, followlocation
FAIL 277: 'HTTP RFC1867-type formposting with custom Content-Type' HTTP, HTTP FORMPOST
FAIL 278: 'HTTP with proxy string including http:// and user+empty password' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth
FAIL 279: 'HTTP with proxy string including http:// and user only' HTTP, HTTP GET, HTTP proxy, HTTP proxy Basic auth
FAIL 280: 'FTP --ftp-alternative-to-user on USER failure' FTP, PASV, LIST, --ftp-alternative-to-user
FAIL 281: 'HTTP PUT from file with 100 + 401 responses and -f without auth given' HTTP, HTTP PUT
FAIL 282: 'HTTP GET with no response body or headers' HTTP, HTTP GET
FAIL 283: 'TFTP retrieve on invalid file' TFTP, TFTP RRQ
FAIL 284: 'TFTP retrieve of boundary case 512-byte file' TFTP, TFTP RRQ
FAIL 285: 'TFTP send' TFTP, TFTP WRQ
FAIL 286: 'TFTP send of boundary case 512-byte file' TFTP, TFTP WRQ
FAIL 287: 'HTTP proxy CONNECT with custom User-Agent header' HTTP, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 288: 'file:// with (unsupported) proxy, authentication and range' FILE
FAIL 289: 'FTP resume upload but denied access to local file' FTP, STOR, Resume
FAIL 290: 'FTP download maximum filesize exceeded' FTP, --max-filesize
FAIL 291: 'FTP download maximum filesize not exceeded' FTP, RETR, --max-filesize
FAIL 292: 'HTTP GET with maximum filesize not exceeded' HTTP, HTTP GET, --max-filesize
FAIL 293: 'HTTP GET with maximum filesize exceeded' HTTP, HTTP GET, --max-filesize
FAIL 294: 'FTP --ftp-account on ACCT request' FTP, PASV, LIST, ACCT, --ftp-account
FAIL 295: 'FTP ACCT request without --ftp-account' FTP, PASV, LIST, ACCT
FAIL 296: 'FTP CWD with --ftp-method multicwd' FTP, PASV, CWD, --ftp-method, multicwd
FAIL 297: 'FTP CWD with --ftp-method singlecwd' FTP, PASV, CWD, --ftp-method, singlecwd
FAIL 298: 'FTP CWD with --ftp-method nocwd' FTP, PASV, CWD, --ftp-method, nocwd
FAIL 299: 'FTP over HTTP proxy with user:pass not in url' FTP, HTTP, CURLOPT_USERPWD, HTTP proxy
FAIL 314: 'HTTP GET brotli compressed content' HTTP, HTTP GET, compressed
FAIL 315: 'HTTP GET brotli compressed content with broken header' HTTP, HTTP GET, compressed
FAIL 316: 'HTTP brotli compressed content of size more than CURL_MAX_WRITE_SIZE' HTTP, HTTP GET, compressed
FAIL 317: 'HTTP with custom Authorization: and redirect to new host' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation
FAIL 318: 'HTTP with custom Authorization: then trusted redirect to new host' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation
FAIL 319: 'HTTP GET gobbledigook transfer-encoded data in raw mode' HTTP, HTTP GET, Transfer-Encoding, --raw
FAIL 320: 'Load cookies from file for localhost' HTTP, cookies
FAIL 321: '--etag-save to stdout append to file' etags
FAIL 322: '--proto with multiple modifiers' --proto
FAIL 326: 'HTTP GET chunked data in raw mode' HTTP, HTTP GET
FAIL 327: 'HTTP with cookiejar without cookies left' HTTP, HTTP GET, cookies, header dump
FAIL 328: 'HTTP with "Content-Encoding: none' HTTP, HTTP GET, Content-Encoding
FAIL 329: 'HTTP cookie with Max-Age=0' HTTP, HTTP GET, cookies
FAIL 330: 'HTTP with custom Cookie: and redirect to new host' HTTP, HTTP proxy, followlocation, cookies
FAIL 331: 'HTTP with cookie using hostname 'moo'' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 332: 'TFTP retrieve with blksize 400' TFTP, TFTP RRQ
FAIL 333: 'Try a non-boolean command line option with --no-' cmdline
FAIL 334: 'HTTP 204 No content with chunked header' HTTP, 204
FAIL 335: 'HTTP with proxy Digest and site Digest with creds in URLs' HTTP, HTTP GET, HTTP proxy, HTTP proxy Digest auth, HTTP Digest auth, HTTP auth in URL
FAIL 336: 'FTP range download when SIZE does not work' FTP, PASV, TYPE A, RETR
FAIL 337: 'FTP range download with SIZE returning extra crap' FTP, PASV, TYPE A, RETR
FAIL 338: 'ANYAUTH connection reuse of non-authed connection' HTTP, HTTP GET
FAIL 339: 'Check if --etag-save saved correct etag to a file' HTTP, HTTP GET
FAIL 340: 'FTP using %00 in path with singlecwd' FTP, PASV, CWD, --ftp-method, singlecwd
FAIL 341: 'A non existing file with --etag-compare is a blank' HTTP, HTTP GET
FAIL 342: 'Check if --etag-compare set correct etag in header' HTTP, HTTP GET
FAIL 343: 'Both --etag-compare and --etag-save to save new Etag' HTTP, HTTP GET
FAIL 344: 'Both --etag-compare and -save store new Etag using non-existing file' HTTP, HTTP GET
FAIL 345: 'Both --etag-compare and -save store new Etag in pre-existing file' HTTP, HTTP GET
FAIL 346: 'HTTP GET over proxy with credentials using blank passwords' HTTP, proxy
FAIL 347: '--etag-save with blank incoming header' HTTP, HTTP GET
FAIL 348: 'FTP upload file with 552 disk full response' FTP, EPSV, STOR
FAIL 349: 'HTTP GET --fail-with-body on HTTP error return' HTTP, HTTP GET, --fail-with-body
FAIL 350: 'FTP root dir list multicwd' FTP, PASV, LIST
FAIL 351: 'FTP root dir list nocwd' FTP, PASV, LIST
FAIL 352: 'FTP root dir list singlecwd' FTP, PASV, LIST
FAIL 353: 'FTP home dir list singlecwd' FTP, PASV, LIST
FAIL 354: 'FTP without password' FTP, PASV, RETR
FAIL 357: 'HTTP PUT with Expect: 100-continue and 417 response' HTTP, HTTP PUT, Expect: 100-continue
FAIL 360: 'Error on both --fail-with-body and --fail' --fail, --fail-with-body
FAIL 361: 'HTTP GET --fail-with-body on HTTP error return - twice' HTTP, HTTP GET, --fail-with-body
FAIL 362: 'FTP resume upload file with nothing to start from' FTP, EPSV, STOR
FAIL 365: 'HTTP/1.1 with chunked AND Content-Length headers' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 366: 'HTTP --retry-max-time with too long Retry-After' HTTP, HTTP GET, retry
FAIL 367: 'Empty username provided in URL' HTTP, HTTP GET, HTTP Basic auth
FAIL 368: 'Append dash if -r range specified without one' HTTP, HTTP GET, Range
FAIL 369: '--etag-save with bad path then working transfer' HTTP, HTTP GET, etag
FAIL 370: '--etag-save with bad path - no transfer' HTTP, HTTP GET, etag
FAIL 371: 'using more -o than URLs in the command line' HTTP, HTTP GET
FAIL 372: 'Binary zero in data element.' HTTP, HTTP GET
FAIL 373: 'Chunked transfer encoding - Multiple valid chunks with binary zeros.' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 374: 'Valid gif with two frames. No new line in data section.' HTTP, HTTP GET, gif data
FAIL 376: '--remove-on-error' HTTP, HTTP GET
FAIL 378: 'Reject using -T and -d at once' HTTP PUT, HTTP POST
FAIL 379: '--remove-on-error with --no-clobber and an added number' HTTP, HTTP GET
FAIL 380: 'pick netrc password based on username in URL' FTP, EPSV, LIST, netrc
FAIL 381: 'netrc-optional lets URL creds override netrc' FTP, EPSV, LIST, netrc
FAIL 383: 'HTTP with --json' HTTP, HTTP POST, --json
FAIL 384: 'HTTP with --json from stdin' HTTP, HTTP POST, --json
FAIL 385: 'HTTP with --json x 2' HTTP, HTTP POST, --json
FAIL 386: 'HTTP with --json + --next' HTTP, HTTP POST, --json
FAIL 387: 'Response with overly long compression chain' HTTP, gzip
FAIL 388: 'HTTP with Digest and multiple qop values with leading space' HTTP, HTTP GET, HTTP Digest auth
FAIL 389: '*.localhost is a local host' HTTP, .localhost
FAIL 390: 'curl HTTP, FILE and FTP in parallel' HTTP, FILE, FTP, parallel
FAIL 391: '--path-as-is with redirect, keeping dotdots' HTTP, HTTP GET, --path-as-is
FAIL 392: 'HTTP secure cookies over localhost' HTTP, HTTP GET, cookies, secure
FAIL 393: 'HTTP max-filesize and out-of-range Content-Length' HTTP, HTTP GET, --max-filesize
FAIL 394: 'HTTP with rubbish in Content-Length' HTTP, HTTP GET
FAIL 395: 'HTTP and out-of-range Content-Length' HTTP, HTTP GET
FAIL 396: 'HTTP GET zstd compressed content' HTTP, HTTP GET, compressed
FAIL 397: 'HTTP GET zstd compressed content of size more than CURL_MAX_WRITE_SIZE' HTTP, HTTP GET, compressed
FAIL 398: 'Reject HTTP/1.1 response with colon-less header' HTTP, HTTP GET
FAIL 399: '65536-byte-long hostname in URL' URL
FAIL 402: 'FTP SSL required on non-SSL server' FTP, FTPS
FAIL 405: 'FTPS operation to FTP port' FTP, FTPS
FAIL 409: 'Load cookies from file where some are PSL domains' HTTP, cookies
FAIL 411: '-K with missing file causes error' -K
FAIL 415: 'HTTP response with control code then negative Content-Length' HTTP, HTTP GET
FAIL 416: 'FTP growing file support' FTP, EPSV, RETR, Range
FAIL 418: 'Response with multiple Transfer-Encoding headers' HTTP, gzip
FAIL 419: '--dump-header to file that cannot be created' --dump-header
FAIL 420: 'Setting cookies set with expired dates that were loaded from jar' HTTP, HTTP GET, cookies
FAIL 421: 'HTTP GET multiple headers and %{header_json}' header_json
FAIL 422: 'use --next with missing URL before it' cmdline, --next
FAIL 423: '-w with url.* variables' -w, --write-out
FAIL 424: '-w with urle.* variables' -w, --write-out
FAIL 425: 'HTTP PUT with path ending with slash + query' HTTP, HTTP PUT
FAIL 426: 'try --data with --continue-at' Resume, error detection
FAIL 427: 'Keep Cookie: header within 8190 bytes' HTTP, HTTP GET, cookies
FAIL 428: 'Expand environment variables within config file' HTTP, variables, --config
FAIL 429: 'Expand environment variable in config file - too long name' HTTP, HTTP POST, variables
FAIL 430: 'Three -K uses with --next and --data in each' --next, --config, POST
FAIL 431: 'Two -K uses with --next and then one on cmdline' --next, --config, POST
FAIL 432: 'Use -K with --next and --config from within' --next, --config, POST
FAIL 434: '-K with a single line without newline' HTTP, --config
FAIL 435: 'verify -w local/remote port+ip after connection reuse' HTTP, HTTP GET
FAIL 436: 'Find .curlrc in .config/curlrc via CURL_HOME' --config
FAIL 440: 'HSTS with trailing-dot hostname in URL but none in hsts file' HTTP, HTTP proxy, HSTS, trailing-dot
FAIL 441: 'HSTS with no t-dot hostname in URL but t-dot in file' HTTP, HTTP proxy, HSTS, trailing-dot
FAIL 442: 'Send capped huge number of matching cookies' HTTP, cookies, --resolve
FAIL 443: 'Cookie header in request no longer than 8K' HTTP, cookies, --resolve
FAIL 444: 'Many Set-Cookie response headers' HTTP, cookies, --resolve
FAIL 448: 'Environment variables within config file, unbalanced braces' HTTP, variables, --config
FAIL 449: 'Environment variables in config file w/o [expand]' HTTP, variables, --config
FAIL 450: 'Variable from file that is trimmed and URL encoded' HTTP, variables
FAIL 451: 'Variable from file that is JSON and URL encoded (with NUL byte)' HTTP, variables
FAIL 452: 'Variable using illegal function in expansion' variables
FAIL 453: 'Variable output containing NUL byte' HTTP, variables
FAIL 454: 'Variable using illegal function separator' variables
FAIL 455: 'Variable using base64' variables
FAIL 456: 'Variable output starting with NUL byte' HTTP, variables
FAIL 457: 'chunked Transfer-Encoding with --max-filesize' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 458: 'variable expand the filename with --expand-output' HTTP, variables
FAIL 459: 'config file with argument using whitespace missing quotes' HTTP, --config
FAIL 460: 'try --expand without an argument' variables, expand
FAIL 461: 'disable Host: when specified as lower case' HTTP, HTTP GET, --header
FAIL 462: 'Missing environment variables in config file' variables, --config
FAIL 463: 'HTTP with -d @file with file containing CR, LF and NUL byte' HTTP, HTTP POST, -d
FAIL 467: 'non-existing short option letter (after one that exists)' cmdline
FAIL 468: 'set -w in config, then reset -w to blank on cmdline' HTTP, --write-out, --config
FAIL 469: 'warn about Unicode quote character' HTTP
FAIL 470: 'warn about Unicode quote character read from config file' HTTP
FAIL 471: 'Reject HTTP/1.1 to HTTP/2 switch on the same connection' HTTP, HTTP GET, globbing, {} list
FAIL 473: 'Check if --etag-save saved correct etag to a file on 301' HTTP, HTTP GET
FAIL 475: 'FTP PASV upload ASCII file' FTP, EPSV, STOR, TYPE A
FAIL 476: 'FTP PASV upload ASCII file already using CRLF' FTP, EPSV, STOR, TYPE A
FAIL 477: 'HTTP GET with maximum filesize with a redirect sending data' HTTP, HTTP GET, --max-filesize
FAIL 478: '.netrc with multiple accounts for same host' netrc, HTTP
FAIL 479: '.netrc with redirect and default without password' netrc, HTTP
FAIL 480: 'Reject .netrc with credentials using CRLF for POP3' netrc, POP3
FAIL 481: '--no-clobber with --continue-at' HTTP, HTTP GET, --no-clobber, --continue-at
FAIL 482: '--remove-on-error with --continue-at' HTTP, --remove-on-error, --continue-at
FAIL 483: 'HTTP cookies with long expire dates' HTTP, HTTP GET, cookies
FAIL 484: 'Use --etag-compare and -save with more than one URL' HTTP, etag
FAIL 485: '--etag-compare and -save with more than one URL, URLs specified first' HTTP, etag
FAIL 486: '.netrc with redirect and "default" with no password or login' netrc, HTTP
FAIL 487: 'Variable using 64dec with bad base64' variables
FAIL 488: 'Download two URLs provided on stdin' HTTP, HTTP GET, --url
FAIL 489: 'Download two URLs provided in a file' HTTP, HTTP GET, --url
FAIL 490: 'Two globbed HTTP PUTs' HTTP, HTTP PUT
FAIL 491: 'Two globbed HTTP PUTs, the second upload file is missing' HTTP, HTTP PUT
FAIL 492: 'Two globbed HTTP PUTs to two globbed URLs' HTTP, HTTP PUT
FAIL 493: 'HSTS and %{url_effective} after upgrade' HTTP, HTTP proxy, HSTS, url_effective
FAIL 494: 'skip 'macdef' when parsing netrc' FTP, EPSV, netrc, macdef
FAIL 495: 'user+password in URL with optional netrc' HTTP, netrc
FAIL 496: 'parallel upload missing file' curl tool, cmdline, parallel
FAIL 497: 'Reject too large accumulated HTTP response headers' HTTP, HTTP GET
FAIL 498: 'Reject too large HTTP response headers on endless redirects' HTTP, HTTP GET
FAIL 499: 'HTTP HEAD to server still sending a body' HTTP, HTTP GET
FAIL 500: 'simple libcurl HTTP GET tool' HTTP, HTTP GET, libtest
FAIL 501: 'simple libcurl attempt operation without URL set' missing URL, libtest
FAIL 502: 'simple multi file:// get' FILE, libtest
FAIL 503: 'simple multi http:// through proxytunnel with authentication info' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, HTTP proxy Basic auth, proxytunnel, multi, libtest
FAIL 504: 'simple multi through local proxy without listener' HTTP, HTTP GET, HTTP proxy, multi, connect to non-listen, libtest
FAIL 505: 'FTP upload with rename after transfer' FTP, STOR, libtest
FAIL 507: 'multi interface get with non-existing hostname' HTTP, multi, non-existing host, libtest
FAIL 508: 'send HTTP POST using read callback' HTTP, POST, POST callback, libtest
FAIL 509: 'initialization with memory callbacks and actual usage' memory callbacks, libtest
FAIL 510: 'send HTTP POST using read callback, using chunked transfer-encoding' HTTP, HTTP POST, chunked Transfer-Encoding, libtest
FAIL 511: 'FTP with FILETIME and NOBODY but missing file' FTP, libtest
FAIL 512: 'simple curl_easy_duplicate() test' HTTP, HTTP GET, libtest
FAIL 513: 'send HTTP POST using read callback that returns CURL_READFUNC_ABORT' HTTP, HTTP POST, libtest
FAIL 514: 'First set options to POST and then to make HEAD' HTTP, HTTP HEAD, libtest
FAIL 515: 'make a POSTFIELDS set to NULL with POSTFIELDSIZE set to zero' HTTP, HTTP POST, libtest
FAIL 516: 'make an HTTPPOST set to NULL' HTTP, HTTP POST, FORM, libtest
FAIL 517: 'curl_getdate() testing' getdate, libtest
FAIL 519: 'GET same URL twice with different users' HTTP, HTTP GET, libtest
FAIL 520: 'FTP RETR with FILETIME' FTP, libtest
FAIL 521: 'FTP dir list PASV with CURLOPT_PORT' FTP, PASV, CURLOPT_PORT, libtest
FAIL 522: 'HTTP GET with CURLOPT_PORT' HTTP, HTTP GET, CURLOPT_PORT, libtest
FAIL 523: 'HTTP GET with proxy and CURLOPT_PORT' HTTP, HTTP GET, HTTP proxy, CURLOPT_PORT, CURLOPT_PROXY, libtest
FAIL 524: 'FTP upload with target URL ending with slash' FTP, UPLOAD, libtest
FAIL 525: 'FTP PORT upload using multi interface' FTP, PORT, STOR, multi, libtest
FAIL 526: 'FTP RETR same file using different handles but same connection' FTP, PASV, RETR, multi, libtest
FAIL 527: 'FTP RETR same file using different handles and closed connections' FTP, PASV, RETR, multi, libtest
FAIL 528: 'HTTP GET same file using different handles but same connection' HTTP, HTTP GET, multi, libtest
FAIL 529: 'FTP PORT upload using multi interface (weird cleanup function seq)' FTP, PORT, STOR, multi, libtest
FAIL 530: 'multi_socket interface transfer with callbacks returning error' multi, HTTP, libtest
FAIL 531: 'FTP PORT upload using multi interface and get 425 response' FTP, PORT, STOR, multi, libtest
FAIL 532: 'FTP RETR same file using reset handles between each transfer' FTP, PASV, RETR, multi, libtest
FAIL 533: 'FTP RETR a non-existing file twice using the multi interface' FTP, PASV, RETR, multi, libtest
FAIL 534: 'FTP RETR twice using multi: non-existing host and non-existing file' FTP, PASV, RETR, multi, non-existing host, libtest
FAIL 535: 'HTTP GET multi two files with FAILONERROR' HTTP, HTTP GET, multi, libtest
FAIL 536: 'CURLINFO_USED_PROXY' HTTP, HTTP GET, HTTP proxy, CURLOPT_PROXY, CURLOPT_NOBODY, CURLINFO_USED_PROXY, libtest
FAIL 537: 'HTTP GET with a HUGE number of file descriptors open' HTTP, HTTP GET, libtest
FAIL 538: 'FTP multi-interface download, failed login: PASS not valid' FTP, multi, libtest
FAIL 539: 'Two FTP fetches using different CURLOPT_FTP_FILEMETHOD' FTP, libtest
FAIL 540: 'HTTP proxy auth Digest multi API reusing connection' HTTP, HTTP GET, HTTP proxy, HTTP proxy Digest auth, multi, libtest
FAIL 541: 'FTP upload and upload same file again without rewind' FTP, STOR, libtest
FAIL 542: 'FTP a file with NOBODY yes and HEADER no' FTP, PASV, RETR, libtest
FAIL 543: 'curl_easy_escape' curl_easy_escape, libtest
FAIL 544: 'HTTP POST text data using CURLOPT_COPYPOSTFIELDS' HTTP, HTTP POST, libtest
FAIL 545: 'HTTP POST binary with embedded NUL byte and no null-terminator' HTTP, HTTP POST, libtest
FAIL 546: 'FTP RETR non-existing file then a found one using multi' FTP, PASV, RETR, multi, libtest
FAIL 549: 'FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE' FTP, CURLOPT_PROXY_TRANSFER_MODE, CURLOPT_PROXY, HTTP proxy, libtest
FAIL 550: 'FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE using ASCII' FTP, HTTP proxy, CURLOPT_PROXY_TRANSFER_MODE, CURLOPT_PROXY, libtest
FAIL 551: 'HTTP proxy auth Digest with POST data from read callback' HTTP, HTTP POST, POST callback, HTTP proxy, HTTP proxy Digest auth, libtest
FAIL 552: 'HTTP proxy auth Digest with 70K POST data from read callback' HTTP, HTTP POST, POST callback, HTTP proxy, HTTP proxy Digest auth, libtest
FAIL 553: 'HTTP post with huge request headers and post data from callback' HTTP, HTTP POST, POST callback, huge request header, libtest
FAIL 554: 'HTTP multi-part formpost using read callback for the file part' HTTP, HTTP POST, FORM, libtest
FAIL 556: 'send and recv HTTP' HTTP, HTTP GET, libtest
FAIL 557: 'curl_mprintf() testing' printf, libtest
FAIL 559: 'use tiny CURLOPT_BUFFERSIZE' CURLOPT_BUFFERSIZE, HTTP, libtest
FAIL 561: 'FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i' FTP, HTTP proxy, CURLOPT_PROXY_TRANSFER_MODE, CURLOPT_PROXY, type=, libtest
FAIL 562: 'FTP a type=A URL and CURLOPT_PORT set' FTP, PASV, RETR, libtest
FAIL 563: 'FTP type=A URL and CURLOPT_PORT set and proxy' FTP, CURLOPT_PORT, HTTP proxy, libtest
FAIL 564: 'FTP RETR a file over a SOCKS proxy using the multi interface' FTP, PASV, RETR, multi, SOCKS4, libtest
FAIL 565: 'HTTP POST using read callback, chunked transfer-encoding and Digest' HTTP, HTTP POST, HTTP Digest auth, chunked Transfer-Encoding, libtest
FAIL 566: 'HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer' HTTP, HTTP GET, libtest
FAIL 567: 'simple RTSP OPTIONS command' RTSP, OPTIONS, libtest
FAIL 568: 'RTSP Announce (PUT and POST style) test' RTSP, ANNOUNCE, libtest
FAIL 569: 'RTSP Session ID parsing' RTSP, SESSION_ID, libtest
FAIL 570: 'RTSP CSeq and Session Mismatch checks' RTSP, Mismatch checking, libtest
FAIL 571: 'RTSP RTP Interleaving Test' RTSP, RTP, libtest
FAIL 572: 'RTSP GET_PARAMETER (Put/Heartbeat/Post)' RTSP, GET_PARAMETER, libtest
FAIL 574: 'FTP wildcard download - changed fnmatch, 2x perform (Unix LIST)' FTP, LIST, RETR, wildcardmatch, ftplistparser, libtest
FAIL 575: 'FTP wildcard download - dup_handle and multi interface' FTP, RETR, multi, wildcardmatch, ftplistparser, libtest
FAIL 576: 'FTP wildcard - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)' FTP, wildcardmatch, ftplistparser, libtest
FAIL 577: 'Funny RTSP version in response' RTSP, OPTIONS, libtest
FAIL 578: 'HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback' HTTP, HTTP POST, libtest
FAIL 579: 'small chunked HTTP POSTs with digest auth and progress callback' HTTP, HTTP POST, HTTP Digest auth, libtest
FAIL 580: 'multi interface, multiple Location: headers' HTTP, HTTP GET, multi, Duplicate-header, libtest
FAIL 581: 'multi interface, multiple Content-Type: headers' HTTP, HTTP GET, multi, Duplicate-header, libtest
FAIL 584: 'CURLOPT_MIMEPOST first set then set to NULL' HTTP, HTTP POST, HTTP MIME, libtest
FAIL 585: 'socket open/close callbacks' HTTP, HTTP GET, multi, CURLOPT_OPENSOCKETFUNCTION, CURLOPT_CLOSESOCKETFUNCTION, libtest
FAIL 586: 'FTP and open/close socket callbacks' FTP, PASV, CURLOPT_PORT, libtest
FAIL 588: 'FTP PORT upload using multi interface, EPRT does not work' FTP, PORT, STOR, multi, EPRT refused, libtest
FAIL 589: 'make an HTTP MIME POST set to NULL' HTTP, HTTP POST, HTTP MIME, libtest
FAIL 591: 'FTP multi PORT and 425 on upload' FTP, PORT, STOR, multi, EPRT refused, NODATACONN425, libtest
FAIL 592: 'FTP multi PORT and 421 on upload' FTP, PORT, STOR, multi, EPRT refused, NODATACONN421, libtest
FAIL 593: 'FTP multi PORT upload, no data conn and no transient neg. reply' FTP, PORT, STOR, multi, EPRT refused, NODATACONN150, libtest
FAIL 595: 'verify close callbacks with passive FTP' FTP, libtest
FAIL 596: 'verify close callbacks with active FTP' FTP, libtest
FAIL 597: 'FTP connect only option' FTP, CONNECT_ONLY, libtest
FAIL 598: 'curl_easy_reset with referer and other strings set' HTTP, HTTP GET, HTTP set cookie, cookies, CURLOPT_REFERER, curl_easy_reset, libtest
FAIL 599: 'HTTP GET with progress callback and redirects changing content sizes' HTTP, HTTP POST, chunked Transfer-Encoding, libtest
FAIL 632: 'SFTP syntactically invalid host key' SFTP, server key check
FAIL 643: 'HTTP multi-part mimepost using read callback for the file part' HTTP, HTTP POST, HTTP MIME POST, libtest
FAIL 645: 'HTTP multi-part chunked mimepost using read callback for the file part' HTTP, HTTP POST, HTTP MIME POST, libtest
FAIL 646: 'SMTP multipart using mime API' SMTP, MULTIPART
FAIL 647: 'IMAP APPEND multipart using mime API' IMAP, APPEND, UPLOAD, MULTIPART
FAIL 648: 'SMTP multipart with transfer content encoders' SMTP, MULTIPART
FAIL 649: 'SMTP multipart with 7-bit encoder error' SMTP, MULTIPART
FAIL 650: 'HTTP formpost using form API - with redirect and re-POST' HTTP, HTTP POST, FORM, libtest
FAIL 651: 'curl_formadd with huge COPYCONTENTS' HTTP, HTTP POST, FORM, libtest
FAIL 652: 'SMTP with encoded huge mime data contents' SMTP, MIME, libtest
FAIL 653: 'Reuse of handle after altering mime data' HTTP, HTTP POST, MIME, libtest
FAIL 654: 'HTTP duplicate easy handle with mime data' HTTP, HTTP POST, HTTP MIME POST, libtest
FAIL 655: 'resolver start callback' HTTP, libtest
FAIL 657: 'RTSP OPTIONS response with a body' RTSP, OPTIONS, libtest
FAIL 658: 'Pass URL to libcurl with CURLOPT_CURLU' HTTP, HTTP GET, CURLOPT_CURLU, libtest
FAIL 659: 'CURLOPT_CURLU without the path set - over proxy' HTTP, HTTP GET, CURLOPT_CURLU, proxy, libtest
FAIL 660: 'IMAP CONNECT_ONLY option' IMAP, CONNECT_ONLY, libtest
FAIL 661: 'Avoid redundant CWDs' FTP, libtest
FAIL 662: 'HTTP redirect with whitespace in absolute Location: URL' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 663: 'HTTP redirect with dotdots and whitespaces in absolute Location: URL' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 666: 'HTTP mime post with binary-encoded huge data contents' HTTP, HTTP POST, HTTP MIME POST, MIME, libtest
FAIL 667: 'HTTP chunked mimepost using single-byte read callback with encoder' HTTP, HTTP POST, HTTP MIME POST, libtest
FAIL 668: 'HTTP mimepost early end of data detection' HTTP, HTTP POST, HTTP MIME POST, libtest
FAIL 669: 'HTTP custom Content-Type with parameter' HTTP, HTTP POST, HTTP MIME POST, HTTP FORMPOST
FAIL 670: 'Request pause from mime read callback: multi' HTTP, HTTP POST, MIME, libtest
FAIL 671: 'Request pause from mime read callback: easy' HTTP, HTTP POST, MIME, libtest
FAIL 672: 'Request pause from form read callback: multi' HTTP, HTTP POST, FORM, libtest
FAIL 673: 'Request pause from form read callback: easy' HTTP, HTTP POST, FORM, libtest
FAIL 674: 'Set CURLOPT_CURLU and dupe the handle' HTTP, HTTP GET, CURLOPT_CURLU, curl_easy_duphandle, libtest
FAIL 675: 'HTTP connection reuse and different credentials' HTTP, HTTP GET, HTTP Basic auth
FAIL 676: 'verify setting CURLOPT_COOKIEFILE to NULL again' HTTP, HTTP GET, HTTP set cookie, cookies, CURLOPT_REFERER, curl_easy_reset, libtest
FAIL 677: 'IMAP with CONNECT_ONLY, custom command then exit' IMAP, CONNECT_ONLY, libtest
FAIL 679: 'netrc with quoted username and password' HTTP, netrc
FAIL 680: 'netrc with quoted password but missing end quote' HTTP, netrc
FAIL 681: '--remote-name-all with --no-remote-name' HTTP, HTTP GET
FAIL 682: 'netrc with multiple logins - pick first' HTTP, netrc
FAIL 683: 'netrc with multiple logins - pick second' HTTP, netrc
FAIL 684: 'netrc with no login' HTTP, netrc
FAIL 685: 'netrc with no login - but provided user in URL' HTTP, netrc
FAIL 686: 'verify return code for missing URL after --next' errorcode
FAIL 689: 'fuzzing crash issue #12701' RTSP, OPTIONS, libtest
FAIL 690: '-O with URL without path using trailing slash' HTTP, HTTP GET
FAIL 691: '-O with URL with path using trailing slash' HTTP, HTTP GET
FAIL 692: '-JO with URL without path using trailing slash' HTTP, HTTP GET
FAIL 693: '--etag-save with --create-dirs' HTTP, HTTP GET, etag
FAIL 695: 'MIME parts reuse as a child part' MIME, libtest
FAIL 696: 'CONNECT_ONLY and doing a second curl_easy_perform' HTTP, HTTP GET, libtest
FAIL 697: 'netrc with missing netrc file' HTTP, netrc
FAIL 698: 'FTP with ACCT and connection reuse' FTP, ACCT
FAIL 699: '--config with single-letter options plus one that is cleared' HTTP, --config
FAIL 700: 'HTTP GET via SOCKS4 proxy' HTTP, HTTP GET, SOCKS4
FAIL 701: 'HTTP GET via SOCKS5 proxy' HTTP, HTTP GET, SOCKS5
FAIL 702: 'Attempt connect to non-listening HTTP server via SOCKS4 proxy' HTTP, SOCKS4, connect to non-listen
FAIL 703: 'Attempt connect to non-listening HTTP server via SOCKS5 proxy' HTTP, SOCKS5, connect to non-listen
FAIL 704: 'Attempt connect to non-listening SOCKS4 proxy' HTTP, SOCKS4, connect to non-listen
FAIL 705: 'Attempt connect to non-listening SOCKS5 proxy' HTTP, SOCKS5, connect to non-listen
FAIL 706: 'FTP dir list PASV via SOCKS4' FTP, PASV, LIST, SOCKS4
FAIL 707: 'FTP dir list PASV via SOCKS5' FTP, PASV, LIST, SOCKS5
FAIL 708: 'HTTP GET via SOCKS4 all_proxy' HTTP, HTTP GET, SOCKS4
FAIL 709: 'HTTP GET via SOCKS5 set in http_proxy environment variable' HTTP, HTTP GET, SOCKS5, http_proxy
FAIL 710: 'HTTP GET via SOCKS5 set with --proxy' HTTP, HTTP GET, SOCKS5
FAIL 711: 'FTP fetch with all_proxy set to socks5' FTP, PASV, RETR, SOCKS5, all_proxy
FAIL 712: 'FTP fetch with --proxy set to socks5://' FTP, PASV, RETR, SOCKS5
FAIL 713: 'FTP fetch with --proxy set to socks5:// and with --connect-to' FTP, PASV, RETR, SOCKS5, CURLOPT_CONNECT_TO
FAIL 714: 'FTP fetch with --proxy set to http:// and with --connect-to' FTP, PASV, RETR, HTTP, HTTP CONNECT, proxytunnel, CURLOPT_CONNECT_TO
FAIL 715: 'FTP fetch with --preproxy, --proxy and --connect-to' FTP, PASV, RETR, HTTP, HTTP CONNECT, proxytunnel, SOCKS5, CURLOPT_CONNECT_TO
FAIL 716: 'SOCKS5 proxy with too long username' HTTP, SOCKS5, all_proxy
FAIL 717: 'SOCKS5 proxy auth' HTTP, SOCKS5, all_proxy
FAIL 718: 'HTTP proxy CONNECT (no auth) with proxy returning 407 and closing' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, HTTP proxy Digest auth
FAIL 719: 'HTTP GET with IPv6 numerical via SOCKS5h' HTTP, HTTP GET, SOCKS5, SOCKS5h
FAIL 720: 'HTTP GET with IPv4 numerical via SOCKS5h' HTTP, HTTP GET, SOCKS5, SOCKS5h
FAIL 721: 'HTTP GET with hostname using SOCKS5h' HTTP, HTTP GET, SOCKS5, SOCKS5h
FAIL 722: 'IPFS' IPFS
FAIL 723: 'IPFS with malformed gateway URL (bad function argument error)' IPFS
FAIL 724: 'IPFS with gateway URL from gateway file' IPFS
FAIL 725: 'IPFS with malformed gateway URL from gateway file' IPFS
FAIL 726: 'IPFS with no gateway URL (no environment or home file either)' IPFS
FAIL 727: 'IPNS' IPNS
FAIL 728: 'SOCKS5h with HTTP redirect to hostname too long' HTTP, HTTP GET, SOCKS5, SOCKS5h, followlocation
FAIL 729: 'SOCKS4 with long proxy username' HTTP, HTTP GET, SOCKS4
FAIL 730: 'IPFS arg gateway with path' IPFS
FAIL 731: 'IPFS with gateway URL and path from gateway file' IPFS
FAIL 732: 'IPFS with path' IPFS
FAIL 733: 'IPFS with path and query args' IPFS
FAIL 734: 'IPFS with path, query args and gateway with path' IPFS
FAIL 735: 'IPNS with path, query args and gateway with path' IPFS
FAIL 736: 'IPFS with IPFS_PATH set, no trailing slash' IPFS
FAIL 737: 'IPFS with IPFS_PATH set, with trailing slash' IPFS
FAIL 738: 'IPFS with IPFS_PATH, no gateway file' IPFS
FAIL 739: 'IPNS path and query args for gw and IPFS URL (malformed gw URL)' IPFS
FAIL 740: 'IPFS with gateway URL from multiline gateway file' IPFS
FAIL 741: 'IPFS malformed gw URL from multiline gateway file, first line no URL' IPFS
FAIL 742: 'SOCKS5-hostname with max length credentials and max hostname length' HTTP, SOCKS5, all_proxy
FAIL 743: '--config with a 127-byte line' HTTP, --config
FAIL 744: '--netrc-file with a 127-byte line' HTTP, --netrc-file, netrc
FAIL 746: 'too large numerical value passed to -m' cmdline
FAIL 747: 'Reject too many HTTP response headers' HTTP, HTTP GET
FAIL 748: 'A --config file that uses -h and no URL' --config
FAIL 749: 'HTTP CONNECT with proxy returning 400 and closing' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 750: 'HTTP CONNECT with proxy returning HTML and closing' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 751: 'multi - add many easy handles' MULTI, libtest
FAIL 752: '--retry and -f on an HTTP 404 response' HTTP, HTTP GET, -f, --retry
FAIL 754: 'FTP list with quote ops' FTP, list, post-quote, pre-quote
FAIL 755: 'netrc with NETRC pointing out the file' HTTP, netrc
FAIL 756: 'mix --output and --out-null' HTTP
FAIL 757: 'MIME parts reused as a child part, using data_cb' MIME, libtest
FAIL 759: 'glob '{,'' globbing
FAIL 760: 'more cmdline options than URLs and --next' globbing
FAIL 761: 'too many {} globs' globbing
FAIL 762: 'HTTP GET with --remote-time with file date from 1940' HTTP, HTTP GET, --remote-time
FAIL 763: 'Unicode hostname ending up in a blank name' IDN
FAIL 764: '-w with multiple header output' HTTP, HTTP GET, -w, %header
FAIL 765: '-w with multiple header output using } in separator' HTTP, HTTP GET, -w, %header
FAIL 767: 'HTTP with two Content-Length response header fields same size' HTTP, HTTP GET
FAIL 768: 'HTTP with letters after the number in Content-Length' HTTP, HTTP GET
FAIL 769: 'HTTP with space after Content-Length number' HTTP, HTTP GET
FAIL 770: 'HTTP with Content-Length headers using comma separated list' HTTP, HTTP GET
FAIL 771: 'HTTP with two Content-Length headers using different sizes' HTTP, HTTP GET
FAIL 772: 'HTTP with two Location: headers triggers error' HTTP, HTTP GET, Location
FAIL 773: 'HTTP with two identical Location: headers triggers no error' HTTP, HTTP GET, Location
FAIL 774: 'config file recursively including itself' --config
FAIL 778: 'HTTP --oauth2-bearer redirect to new host (not passed on)' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation, oauth2-bearer
FAIL 779: 'HTTP --oauth2-bearer redirects to IMAP' HTTP, IMAP, oauth2-bearer, followlocation, --resolve
FAIL 784: '--variable with a file byte range' HTTP, --variable
FAIL 785: '--variable with a file byte range without end' HTTP, --variable
FAIL 786: '--variable with a file byte range, reading from stdin' HTTP, --variable
FAIL 787: '--variable with a file byte range, bad range' HTTP, --variable
FAIL 788: '--variable with a file and single-byte byte range' HTTP, --variable
FAIL 789: '--variable with a file and byte range out of file' HTTP, --variable
FAIL 790: '--variable with a byte range using plain assign' HTTP, --variable
FAIL 791: '--variable with a byte range using plain assign, out of range' HTTP, --variable
FAIL 792: '.netrc with embedded NUL byte' netrc, FTP
FAIL 793: '.netrc with embedded NUL byte, with quoted token' netrc, FTP
FAIL 794: '--follow + --location with custom POST method, 302 => GET' --follow, --location
FAIL 795: 'HTTP with credentials redirects to IMAP' HTTP, IMAP, followlocation, --resolve
FAIL 796: '--follow with custom POST method, 302 => GET' --follow, --location
FAIL 797: '--follow with custom POST method, 308 => custom' --follow, --location
FAIL 798: 'HTTP cookies in a folded header' HTTP, HTTP GET, cookies, cookiejar
FAIL 799: 'IMAP with --login-options 'AUTH=+LOGIN'' IMAP, Clear Text, SASL AUTH +LOGIN
FAIL 800: 'IMAP FETCH message with MAILINDEX' IMAP, Clear Text, FETCH
FAIL 801: 'IMAP FETCH message by MAILINDEX and SECTION' IMAP, Clear Text, FETCH
FAIL 802: 'IMAP SELECT UIDVALIDITY Success' IMAP, Clear Text, SELECT, UIDVALIDITY
FAIL 803: 'IMAP SELECT UIDVALIDITY Failure' IMAP, Clear Text, SELECT, UIDVALIDITY
FAIL 804: 'IMAP selects a mailbox when its case changes' IMAP, Clear Text, SELECT
FAIL 805: 'IMAP APPEND message' IMAP, Clear Text, APPEND, UPLOAD
FAIL 806: 'IMAP LIST mailbox' IMAP, Clear Text, LIST
FAIL 807: 'IMAP LSUB mailbox' IMAP, Clear Text, LSUB, CUSTOMREQUEST
FAIL 808: 'IMAP EXAMINE mailbox (CUSTOMREQUEST)' IMAP, Clear Text, EXAMINE, CUSTOMREQUEST
FAIL 809: 'IMAP mailbox STATUS (CUSTOMREQUEST)' IMAP, Clear Text, STATUS, CUSTOMREQUEST
FAIL 810: 'IMAP SEARCH for NEW messages' IMAP, Clear Text, SEARCH
FAIL 811: 'IMAP CREATE mailbox (CUSTOMREQUEST)' IMAP, Clear Text, CREATE, CUSTOMREQUEST
FAIL 812: 'IMAP DELETE mailbox (CUSTOMREQUEST)' IMAP, Clear Text, DELETE, CUSTOMREQUEST
FAIL 813: 'IMAP RENAME mailbox (CUSTOMREQUEST)' IMAP, Clear Text, RENAME, CUSTOMREQUEST
FAIL 814: 'IMAP CHECK mailbox (CUSTOMREQUEST)' IMAP, Clear Text, CHECK, CUSTOMREQUEST
FAIL 815: 'IMAP STORE - delete message (CUSTOMREQUEST)' IMAP, Clear Text, STORE, CLOSE, CUSTOMREQUEST
FAIL 816: 'IMAP STORE - delete message with confirmation (CUSTOMREQUEST)' IMAP, Clear Text, STORE, EXPUNGE, CUSTOMREQUEST
FAIL 817: 'IMAP COPY message to mailbox (CUSTOMREQUEST)' IMAP, Clear Text, COPY, CUSTOMREQUEST
FAIL 818: 'IMAP NOOP (CUSTOMREQUEST)' IMAP, Clear Text, NOOP, CUSTOMREQUEST
FAIL 819: 'IMAP plain authentication' IMAP, SASL, SASL AUTH PLAIN, RFC4616
FAIL 820: 'IMAP login authentication' IMAP, SASL, SASL AUTH LOGIN
FAIL 821: 'IMAP CRAM-MD5 authentication' IMAP, SASL, SASL AUTH CRAM-MD5, RFC2195
FAIL 824: 'IMAP OAuth 2.0 (XOAUTH2) authentication' IMAP, SASL, SASL AUTH OAUTH2, RFC6749
FAIL 825: 'IMAP plain authentication with initial response' IMAP, SASL, SASL AUTH PLAIN, SASL-IR, RFC4616
FAIL 826: 'IMAP login authentication with initial response' IMAP, SASL, SASL AUTH LOGIN, SASL-IR
FAIL 828: 'IMAP OAuth 2.0 (XOAUTH2) authentication with initial response' IMAP, SASL, SASL AUTH OAUTH2, SASL-IR, RFC6749
FAIL 829: 'IMAP with URL-encoded CR LF in the URL' IMAP, CRLF-in-URL
FAIL 830: 'IMAP CRAM-MD5 graceful cancellation' IMAP, SASL, SASL AUTH CRAM-MD5, SASL CANCELLATION, RFC2195
FAIL 833: 'IMAP CRAM-MD5 authentication with SASL downgrade' IMAP, SASL, SASL AUTH CRAM-MD5, SASL AUTH PLAIN, SASL DOWNGRADE, RFC2195
FAIL 837: 'IMAP external authentication' IMAP, SASL, SASL AUTH EXTERNAL, RFC4422
FAIL 838: 'IMAP external authentication without credentials' IMAP, SASL, SASL AUTH EXTERNAL, RFC4422
FAIL 839: 'IMAP external authentication with initial response' IMAP, SASL, SASL AUTH EXTERNAL, SASL-IR, RFC4422
FAIL 840: 'IMAP external authentication with initial response without credentials' IMAP, SASL, SASL AUTH EXTERNAL, SASL-IR, RFC4422
FAIL 841: 'IMAP custom request does not check continuation data' IMAP, Clear Text, FETCH, CUSTOMREQUEST
FAIL 842: 'IMAP OAuth 2.0 (OAUTHBEARER) authentication' IMAP, SASL, SASL AUTH OAUTH2, RFC6749, RFC7628
FAIL 843: 'IMAP OAuth 2.0 (OAUTHBEARER) authentication with initial response' IMAP, SASL, SASL AUTH OAUTH2, SASL-IR, RFC6749, RFC7628
FAIL 844: 'IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation' IMAP, SASL, SASL AUTH OAUTH2, RFC6749, RFC7628
FAIL 845: 'IMAP OAuth failure as continuation with initial response' IMAP, SASL, SASL AUTH OAUTH2, SASL-IR, RFC6749, RFC7628
FAIL 846: 'IMAP PREAUTH response' IMAP
FAIL 847: 'IMAP FETCH message with UID' IMAP, Clear Text, FETCH
FAIL 848: 'IMAP plain authentication with alternative authorization identity' IMAP, SASL, SASL AUTH PLAIN, RFC4616
FAIL 849: 'IMAP plain auth with alt authorization identity (Not authorized)' IMAP, SASL, SASL AUTH PLAIN, RFC4616
FAIL 850: 'POP3 RETR message' POP3, Clear Text, RETR
FAIL 851: 'POP3 LIST one message' POP3, Clear Text, LIST
FAIL 852: 'POP3 LIST invalid message' POP3, Clear Text, LIST
FAIL 853: 'POP3 LIST messages from *SLOW* server' POP3, Clear Text, LIST, SLOWDOWN
FAIL 854: 'POP3 LIST no messages available' POP3, Clear Text, LIST
FAIL 855: 'POP3 RETR invalid message' POP3, Clear Text, RETR
FAIL 856: 'POP3 invalid login' POP3, Clear Text
FAIL 857: 'POP3 RETR message with dot-prefixed line' POP3, Clear Text, RETR
FAIL 858: 'POP3 DELE message (CUSTOMREQUEST)' POP3, Clear Text, DELE, CUSTOMREQUEST
FAIL 859: 'POP3 STAT (CUSTOMREQUEST)' POP3, Clear Text, STAT, CUSTOMREQUEST
FAIL 860: 'POP3 NOOP (CUSTOMREQUEST)' POP3, Clear Text, NOOP, CUSTOMREQUEST
FAIL 861: 'POP3 UIDL (CUSTOMREQUEST)' POP3, Clear Text, UIDL, CUSTOMREQUEST, RFC2449
FAIL 862: 'POP3 retrieve message header (CUSTOMREQUEST)' POP3, Clear Text, TOP, CUSTOMREQUEST, RFC2449
FAIL 863: 'POP3 RSET (CUSTOMREQUEST)' POP3, Clear Text, RSET, CUSTOMREQUEST
FAIL 864: 'POP3 APOP authentication' POP3, APOP
FAIL 865: 'POP3 plain authentication' POP3, SASL, SASL AUTH PLAIN, RFC1734, RFC4616, RFC5034
FAIL 866: 'POP3 login authentication' POP3, SASL, SASL AUTH LOGIN, RFC1734, RFC5034
FAIL 867: 'POP3 CRAM-MD5 authentication' POP3, SASL, SASL AUTH CRAM-MD5, RFC1734, RFC2195, RFC5034
FAIL 870: 'POP3 OAuth 2.0 (XOAUTH2) authentication' POP3, SASL, SASL AUTH OAUTH2, RFC1734, RFC5034, RFC6749
FAIL 871: 'POP3 plain authentication with initial response' POP3, SASL, SASL AUTH PLAIN, SASL-IR, RFC1734, RFC4616, RFC5034
FAIL 872: 'POP3 login authentication with initial response' POP3, SASL, SASL AUTH LOGIN, SASL-IR, RFC1734, RFC5034
FAIL 874: 'POP3 OAuth 2.0 (XOAUTH2) authentication with initial response' POP3, SASL, SASL AUTH OAUTH2, SASL-IR, RFC1734, RFC5034, RFC6749
FAIL 875: 'POP3 with URL-encoded CR LF in the URL' POP3, CRLF-in-URL
FAIL 876: 'POP3 CRAM-MD5 graceful cancellation' POP3, SASL, SASL AUTH CRAM-MD5, SASL CANCELLATION, RFC1734, RFC2195, RFC5034
FAIL 879: 'POP3 CRAM-MD5 authentication with SASL downgrade' POP3, SASL, SASL AUTH CRAM-MD5, SASL AUTH PLAIN, SASL DOWNGRADE, RFC1734, RFC2195, RFC5034
FAIL 883: 'POP3 external authentication' POP3, SASL, SASL AUTH EXTERNAL, RFC1734, RFC4422, RFC5034
FAIL 884: 'POP3 external authentication without credentials' POP3, SASL, SASL AUTH EXTERNAL, RFC1734, RFC4422, RFC5034
FAIL 885: 'POP3 external authentication with initial response' POP3, SASL, SASL AUTH EXTERNAL, SASL-IR, RFC1734, RFC4422, RFC5034
FAIL 886: 'POP3 external authentication with initial response without credentials' POP3, SASL, SASL AUTH EXTERNAL, SASL-IR, RFC1734, RFC4422, RFC5034
FAIL 887: 'POP3 OAuth 2.0 (OAUTHBEARER) authentication' POP3, SASL, SASL AUTH OAUTH2, RFC1734, RFC5034, RFC6749, RFC7628
FAIL 888: 'POP3 OAuth 2.0 (OAUTHBEARER) authentication with initial response' POP3, SASL, SASL AUTH OAUTH2, SASL-IR, RFC1734, RFC5034, RFC6749, RFC7628
FAIL 889: 'POP3 OAuth 2.0 (OAUTHBEARER) failure as continuation' POP3, SASL, SASL AUTH OAUTH2, RFC1734, RFC5034, RFC6749, RFC7628
FAIL 890: 'POP3 OAuth failure as continuation with initial response' POP3, SASL, SASL AUTH OAUTH2, SASL-IR, RFC1734, RFC5034, RFC6749, RFC7628
FAIL 891: 'POP3 with short authentication response' POP3
FAIL 892: 'POP3 plain authentication with alternative authorization identity' POP3, SASL, SASL AUTH PLAIN, RFC1734, RFC4616, RFC5034
FAIL 893: 'POP3 plain auth with alt authorization identity (Not authorized)' POP3, SASL, SASL AUTH PLAIN, RFC1734, RFC4616, RFC5034
FAIL 894: 'POP3 with CR in username' POP3, Clear Text, RETR
FAIL 895: 'IMAP with --login-options 'AUTH=*'' IMAP, Clear Text, FETCH, --login-options
FAIL 896: 'IMAP with --login-options 'AUTH=dummy' (failing)' IMAP, Clear Text, FETCH, --login-options
FAIL 897: 'IMAP and envelope meta data after body transfer' IMAP, Clear Text, FETCH
FAIL 898: 'HTTP with custom auth and cookies redirected to HTTP on a diff port' HTTP, HTTP proxy, --location, Authorization, cookies
FAIL 899: 'URL with credentials redirects to URL with different credentials' HTTP, HTTP GET, HTTP Basic auth
FAIL 900: 'SMTP' SMTP
FAIL 901: 'SMTP with CRLF-dot-CRLF in data' SMTP
FAIL 902: 'RFC821-only SMTP server (EHLO not supported)' SMTP, SMTP HELO, RFC821
FAIL 903: 'SMTP plain authentication' SMTP, SASL, SASL AUTH PLAIN, RFC4616, RFC4954
FAIL 904: 'SMTP login authentication' SMTP, SASL, SASL AUTH LOGIN, RFC4954
FAIL 905: 'SMTP CRAM-MD5 authentication' SMTP, SASL, SASL AUTH CRAM-MD5, RFC2195, RFC4954
FAIL 908: 'SMTP OAuth 2.0 (XOAUTH2) authentication' SMTP, SASL, SASL AUTH OAUTH2, RFC4954, RFC6749
FAIL 909: 'SMTP without SIZE support' SMTP
FAIL 910: 'SMTP without terminating CRLF' SMTP
FAIL 911: 'SMTP with no mail data' SMTP
FAIL 912: 'SMTP with SIZE support' SMTP, SIZE
FAIL 913: 'SMTP with large message SIZE' SMTP, SIZE
FAIL 914: 'SMTP invalid --mail-from' SMTP
FAIL 915: 'SMTP without --mail-from' SMTP
FAIL 916: 'SMTP with invalid --mail-rcpt' SMTP
FAIL 917: 'SMTP with multiple --mail-rcpt' SMTP
FAIL 918: 'SMTP with multiple and invalid --mail-rcpt' SMTP
FAIL 919: 'SMTP plain authentication with initial response' SMTP, SASL, SASL AUTH PLAIN, SASL-IR, RFC4616, RFC4954
FAIL 920: 'SMTP login authentication with initial response' SMTP, SASL, SASL AUTH LOGIN, SASL-IR, RFC4954
FAIL 922: 'SMTP OAuth 2.0 (XOAUTH2) authentication with initial response' SMTP, SASL, SASL AUTH OAUTH2, SASL-IR, RFC4954, RFC6749
FAIL 923: 'SMTP VRFY' SMTP, VRFY
FAIL 924: 'SMTP ambiguous VRFY' SMTP, VRFY
FAIL 925: 'SMTP external VRFY' SMTP, VRFY
FAIL 926: 'SMTP unknown user VRFY' SMTP, VRFY
FAIL 927: 'SMTP mailing list EXPN (CUSTOMREQUEST)' SMTP, EXPN, CUSTOMREQUEST
FAIL 928: 'SMTP HELP' SMTP, HELP
FAIL 929: 'SMTP NOOP (CUSTOMREQUEST)' SMTP, NOOP, CUSTOMREQUEST
FAIL 930: 'SMTP RSET (CUSTOMREQUEST)' SMTP, RSET, CUSTOMREQUEST
FAIL 931: 'SMTP with URL-encoded CR LF in the URL' SMTP, CRLF-in-URL
FAIL 932: 'SMTP CRAM-MD5 graceful cancellation' SMTP, SASL, SASL AUTH CRAM-MD5, SASL CANCELLATION, RFC2195, RFC4954
FAIL 935: 'SMTP CRAM-MD5 authentication with SASL downgrade' SMTP, SASL, SASL AUTH CRAM-MD5, SASL AUTH PLAIN, SASL DOWNGRADE, RFC2195, RFC4954
FAIL 939: 'RFC821-only SMTP with username and password' SMTP, RFC821
FAIL 940: 'SMTP with username and password but no AUTH capability' SMTP
FAIL 941: 'SMTP with --crlf' SMTP, --crlf
FAIL 942: 'SMTP external authentication' SMTP, SASL, SASL AUTH EXTERNAL, RFC4422, RFC4954
FAIL 943: 'SMTP external authentication without credentials' SMTP, SASL, SASL AUTH EXTERNAL, RFC4422, RFC4954
FAIL 944: 'SMTP external authentication with initial response' SMTP, SASL, SASL AUTH EXTERNAL, SASL-IR, RFC4422, RFC4954
FAIL 945: 'SMTP external authentication with initial response without credentials' SMTP, SASL, SASL AUTH EXTERNAL, SASL-IR, RFC4422, RFC4954
FAIL 946: 'SMTP OAuth 2.0 (OAUTHBEARER) authentication' SMTP, SASL, SASL AUTH OAUTH2, RFC4954, RFC6749, RFC7628
FAIL 947: 'SMTP OAuth 2.0 (OAUTHBEARER) authentication with initial response' SMTP, SASL, SASL AUTH OAUTH2, SASL-IR, RFC4954, RFC6749, RFC7628
FAIL 948: 'SMTP OAuth 2.0 (OAUTHBEARER) failure as continuation' SMTP, SASL, SASL AUTH OAUTH2, RFC4954, RFC6749, RFC7628
FAIL 949: 'SMTP OAuth failure as continuation with initial response' SMTP, SASL, SASL AUTH OAUTH2, SASL-IR, RFC4954, RFC6749, RFC7628
FAIL 950: 'SMTP VRFY with custom request' SMTP, VRFY, --request
FAIL 951: 'SMTP data with dot as first character' SMTP
FAIL 952: 'SMTP data with single dot-only line' SMTP
FAIL 953: 'SMTP plain authentication with alternative authorization identity' SMTP, SASL, SASL AUTH PLAIN, RFC4616, RFC4954
FAIL 954: 'SMTP plain auth with alt authorization identity (Not authorized)' SMTP, SASL, SASL AUTH PLAIN, RFC4616, RFC4954
FAIL 955: 'SMTP without SMTPUTF8 support - UTF-8 based sender (local part only)' SMTP
FAIL 956: 'SMTP without SMTPUTF8 support - UTF-8 based recipient (local part)' SMTP
FAIL 957: 'SMTP VRFY without SMTPUTF8 support - UTF-8 recipient (local part only)' SMTP, VRFY
FAIL 958: 'SMTP external VRFY without SMTPUTF8 - UTF-8 recipient (local part)' SMTP, VRFY
FAIL 962: 'SMTP without SMTPUTF8 support - UTF-8 based sender, with IDN' SMTP, IDN
FAIL 963: 'SMTP without SMTPUTF8 support (IDN) - UTF-8 recipient (host part only)' SMTP, IDN
FAIL 964: 'SMTP external VRFY w/o SMTPUTF8 (IDN) - UTF-8 recipient (host part)' SMTP, VRFY, IDN
FAIL 965: 'SMTP with SMTPUTF8 support - UTF-8 based sender' SMTP, IDN
FAIL 966: 'SMTP with SMTPUTF8 support - UTF-8 based recipient' SMTP, IDN
FAIL 967: 'SMTP external VRFY with SMTPUTF8 support' SMTP, VRFY, IDN
FAIL 968: 'SMTP VRFY with SMTPUTF8 support' SMTP, VRFY, IDN
FAIL 969: 'SMTP mailing list EXPN (CUSTOMREQUEST) with SMTPUTF8 support' SMTP, EXPN, CUSTOMREQUEST, IDN
FAIL 973: 'HTTP with auth redirected to FTP w/o auth' HTTP, FTP, --location
FAIL 974: 'HTTP with auth redirected to HTTP on a diff port w/o auth' HTTP, HTTP proxy, --location
FAIL 975: 'HTTP with auth redirected to FTP allowing auth to continue' HTTP, FTP, --location-trusted
FAIL 976: 'HTTP with auth redirected to HTTP on a diff port --location-trusted' HTTP, HTTP proxy, --location-trusted
FAIL 977: 'URL with trailing dot and receiving a cookie for the TLD with dot' HTTP, HTTP proxy, cookies
FAIL 978: 'verify that --stderr works for -w's stderr as well' HTTP, --stderr
FAIL 979: '-u with redirect to absolute URL using same origin and auth' HTTP, HTTP GET, HTTP Basic auth
FAIL 980: 'SMTP STARTTLS pipelined server response' SMTP, STARTTLS
FAIL 981: 'IMAP STARTTLS pipelined server response' IMAP, STARTTLS
FAIL 982: 'POP3 STARTTLS pipelined server response' POP3, STARTTLS
FAIL 983: 'FTP STARTTLS pipelined server response' FTP, STARTTLS
FAIL 984: 'IMAP require STARTTLS with failing capabilities' IMAP, STARTTLS
FAIL 985: 'POP3 require STARTTLS with failing capabilities' POP3, STARTTLS
FAIL 986: 'FTP require STARTTLS while preauthenticated' FTP, STARTTLS
FAIL 990: 'use -w %output{}' HTTP, HTTP GET, -w
FAIL 991: 'use -w %output{} append' HTTP, HTTP GET, -w
FAIL 992: 'SASL verify default mechanisms are reset by login options' SMTP, SASL, UPLOAD
FAIL 993: 'POP3 LIST 1000 messages' POP3, Clear Text, LIST
FAIL 994: '--skip-existing with globbing' HTTP, HTTP GET
FAIL 995: '--skip-existing without file present' HTTP, HTTP GET
FAIL 996: '--skip-existing with file present' HTTP, HTTP GET
FAIL 997: 'POP3 retrieve STAT (CUSTOMREQUEST)' POP3, Clear Text, STAT, CUSTOMREQUEST, RFC2449
FAIL 998: 'HTTP with auth in URL redirected to another host' HTTP, --location-trusted
FAIL 999: 'HTTP with auth in first URL but not second' HTTP, --location-trusted
FAIL 1000: 'FTP dir list PASV with -I' FTP, PASV, LIST, NOBODY
FAIL 1001: 'HTTP Digest range upload with a modified method' HTTP, HTTP PUT, HTTP proxy, HTTP Digest auth, Range, Content-Range, CUSTOMREQUEST
FAIL 1002: 'HTTP Digest uploads with zero resume offset and custom method' HTTP, HTTP PUT, HTTP proxy, HTTP Digest auth, Resume, CUSTOMREQUEST
FAIL 1003: 'FTP with excessively large server command response line' FTP, RETR, huge response
FAIL 1004: 'HTTP GET with empty proxy' HTTP, HTTP GET, HTTP proxy
FAIL 1005: 'FTP with excessively large number of server command response lines' FTP, RETR, huge response
FAIL 1006: 'FTP with large number of command response lines (boundary condition)' FTP, RETR, huge response
FAIL 1007: 'TFTP send with invalid permission on server' TFTP, TFTP WRQ
FAIL 1009: 'TFTP retrieve with --local-port' TFTP, TFTP RRQ, --local-port
FAIL 1010: 'FTP dir list nocwd' FTP, PASV, LIST
FAIL 1011: 'HTTP POST with 301 redirect' HTTP, HTTP POST, followlocation
FAIL 1012: 'HTTP POST with 301 redirect and --post301' HTTP, HTTP POST, followlocation
FAIL 1013: 'Compare curl --version with curl-config --protocols' curl-config
FAIL 1014: 'Compare curl --version with curl-config --features' curl-config
FAIL 1015: '--data-urlencode' HTTP, HTTP POST, --data-urlencode
FAIL 1016: 'X-Y range on a file:// URL to stdout' FILE, Range
FAIL 1017: '0-Y range on a file:// URL to stdout' FILE, Range
FAIL 1018: 'X-X range on a file:// URL to stdout' FILE, Range
FAIL 1019: 'X- range on a file:// URL to stdout' FILE, Range
FAIL 1020: '-Y range on a file:// URL to stdout' FILE, Range
FAIL 1022: 'Compare curl --version with curl-config --version' curl-config
FAIL 1023: 'Compare curl --version with curl-config --vernum' curl-config
FAIL 1024: 'HTTP Location: following with cookies' HTTP, HTTP GET, followlocation, cookies
FAIL 1025: 'HTTP Location: following with command-line and server cookies' HTTP, HTTP GET, followlocation, cookies
FAIL 1027: 'curl --help' --help
FAIL 1028: 'HTTP Location: redirect to FTP URL' HTTP, HTTP GET, followlocation, FTP, PASV, FILE
FAIL 1029: 'HTTP Location: and 'redirect_url' check' HTTP, HTTP GET, redirect_url, followlocation, --write-out
FAIL 1030: 'HTTP PUT with --anyauth, picking Digest. Persistent connection.' HTTP, HTTP PUT, HTTP Digest auth, --anyauth
FAIL 1031: 'HTTP Location: following to a query string' HTTP, HTTP GET, followlocation
FAIL 1032: 'HTTP HEAD with --range' HTTP, HTTP HEAD, Range
FAIL 1033: 'HTTP GET with 102 response!' HTTP, HTTP GET
FAIL 1034: 'HTTP over proxy with malformatted IDN hostname' HTTP, HTTP GET, HTTP proxy, IDN, config file
FAIL 1035: 'HTTP over proxy with too long IDN hostname' HTTP, HTTP GET, HTTP proxy, IDN
FAIL 1036: 'FTP download resume from end of file' FTP, PASV, RETR, Resume
FAIL 1037: 'FTP download resume from end of empty file' FTP, PASV, RETR, Resume
FAIL 1038: 'FTP PASV upload resume from end of file' FTP, EPSV, APPE, Resume
FAIL 1039: 'FTP PASV upload resume from end of empty file' FTP, EPSV, APPE, Resume
FAIL 1040: 'HTTP GET with resume from end of entirely-downloaded file' HTTP, HTTP GET, Resume
FAIL 1041: 'HTTP PUT rejects automatic upload resume' HTTP, HTTP PUT, Resume
FAIL 1042: 'HTTP GET beyond end of entirely-downloaded file, no server resume' HTTP, HTTP GET, Resume
FAIL 1043: 'HTTP GET with resume from end of file' HTTP, HTTP GET, Resume
FAIL 1044: 'FTP download large file info with -I' FTP, NOBODY, Largefile
FAIL 1045: 'HTTP GET with numeric localhost --interface' HTTP, HTTP GET, --interface
FAIL 1046: 'HTTP-IPv6 GET with numeric localhost --interface' HTTP, HTTP GET, --interface, IPv6
FAIL 1047: 'FTP dir list PASV with localhost --interface' FTP, PASV, LIST, --interface
FAIL 1048: 'FTP-IPv6 dir list PASV with localhost --interface' FTP, FTP-ipv6, IPv6, PASV, LIST, --interface
FAIL 1049: 'TFTP retrieve with localhost --interface' TFTP, TFTP RRQ, --interface
FAIL 1050: 'FTP-IPv6 dir list, EPRT with specified IP' FTP, FTP-ipv6, IPv6, EPRT
FAIL 1051: 'HTTP PUT with Location: following' HTTP, HTTP PUT, followlocation
FAIL 1052: 'HTTP 1.0 PUT with Location: following' HTTP, HTTP PUT, followlocation
FAIL 1053: 'HTTP RFC1867-type formposting from file with Location: following' HTTP, HTTP FORMPOST, HTTP file upload, followlocation
FAIL 1054: 'HTTP POST from file with 301 redirect and --post301' HTTP, HTTP POST, followlocation
FAIL 1055: 'HTTP PUT Location: redirect to FTP URL' HTTP, HTTP PUT, followlocation, FTP, EPSV, STOR
FAIL 1056: 'HTTP follow redirect from IPv4 to IPv6 with scope' HTTP, HTTP GET, followlocation, IPv6
FAIL 1057: 'FTP retrieve a byte-range relative to end of file' FTP, EPSV, RETR, Range
FAIL 1058: 'HTTP range relative to end of file' HTTP, HTTP GET, Content-Range
FAIL 1059: 'HTTP CONNECT with proxytunnel to unsupported FTP URL' HTTP, HTTP CONNECT, proxytunnel, FTP
FAIL 1060: 'HTTP proxy CONNECT auth Digest, large headers and data' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, HTTP proxy Digest auth
FAIL 1061: 'HTTP proxy CONNECT auth Digest, large headers and chunked data' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, chunked Transfer-Encoding, proxytunnel, HTTP proxy Digest auth
FAIL 1062: 'FTP excessively long server command response lines, boundary condition' FTP, RETR, huge response
FAIL 1063: 'Invalid large X- range on a file://' FILE, Range
FAIL 1064: 'HTTP PUT twice' HTTP, HTTP PUT
FAIL 1065: 'HTTP PUT with one file but two URLs' HTTP, HTTP PUT, HTTP GET
FAIL 1066: 'HTTP --dump-header - with two URLs' HTTP, HTTP GET
FAIL 1067: 'HTTP Location: following with auto-referer' HTTP, HTTP GET, followlocation
FAIL 1068: 'HTTP PUT from stdin' HTTP, HTTP PUT, chunked Transfer-Encoding
FAIL 1069: 'HTTP 1.0 PUT from stdin with no content length' HTTP, HTTP PUT, HTTP/1.0
FAIL 1070: 'HTTP POST with server closing connection before (all) data is received' HTTP, HTTP POST
FAIL 1071: 'Downgraded HTTP PUT to HTTP 1.0 with authorization' HTTP, HTTP PUT, HTTP Digest auth, --anyauth, HTTP/1.0
FAIL 1072: 'HTTP chunked PUT to HTTP 1.0 server with authorization' HTTP, HTTP PUT, HTTP Digest auth, --anyauth, HTTP/1.0, chunked Transfer-Encoding
FAIL 1073: 'HTTP chunked PUT to HTTP 1.0 server with redirect' HTTP, HTTP PUT, HTTP/1.0, followlocation, chunked Transfer-Encoding
FAIL 1074: 'HTTP downgrade to HTTP/1.0 on second request' HTTP, HTTP GET, HTTP/1.0, DELAY
FAIL 1075: 'HTTP PUT with --anyauth authorization (picking Basic)' HTTP, HTTP PUT, HTTP Basic auth, --anyauth
FAIL 1076: 'HTTP POST with 302 redirect and --post302' HTTP, HTTP POST, followlocation
FAIL 1077: 'FTP over HTTP proxy with downgrade to HTTP 1.0' FTP, HTTP, HTTP/1.0, HTTP GET, HTTP proxy
FAIL 1078: 'HTTP 1.0 CONNECT with proxytunnel and downgrade GET to HTTP/1.0' HTTP, HTTP/1.0, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 1079: 'HTTP retry after closed connection and empty response' HTTP, HTTP GET, HTTP Digest auth
FAIL 1080: 'HTTP Location: on two URLs 'redirect_url' check' HTTP, HTTP GET, redirect_url, followlocation, --write-out
FAIL 1081: 'HTTP no Location: on second URL 'redirect_url' check' HTTP, HTTP GET, redirect_url, followlocation, --write-out
FAIL 1082: 'HTTP GET with localhost --interface' HTTP, HTTP GET, --interface
FAIL 1083: 'HTTP-IPv6 GET with ip6-localhost --interface' HTTP, HTTP GET, --interface, IPv6
FAIL 1084: 'HTTP GET with invalid --interface' HTTP, HTTP GET, --interface, non-existing host
FAIL 1085: 'HTTP-IPv6 GET with invalid --interface' HTTP, HTTP GET, --interface, IPv6, non-existing host
FAIL 1087: 'HTTP, proxy with --anyauth and Location: to new host' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation, --anyauth
FAIL 1088: 'HTTP, proxy with --anyauth and Location: using location-trusted' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation, --anyauth, --location-trusted
FAIL 1089: 'HTTP GET --write-out with redirected fetch' HTTP, HTTP GET, followlocation, --write-out
FAIL 1090: 'HTTP GET --write-out with redirected fetch and chunked reply' HTTP, HTTP GET, followlocation, chunked Transfer-Encoding, --write-out
FAIL 1091: 'FTP URL with type=i' FTP, RETR, type=
FAIL 1092: 'FTP with type=i over HTTP proxy' FTP, HTTP, HTTP GET, HTTP proxy, type=
FAIL 1093: 'TFTP retrieve with mode=octet' TFTP, TFTP RRQ, mode=
FAIL 1094: 'TFTP retrieve with mode=netascii' TFTP, TFTP RRQ, mode=
FAIL 1095: 'HTTP with Digest and realm with quoted quotes' HTTP, HTTP GET, HTTP Digest auth
FAIL 1096: 'Two FTP downloads, with failed RETR but reused control connection' FTP, PASV, RETR
FAIL 1098: 'FTP RETR twice over proxy confirming persistent connection' FTP, HTTP proxy, CURLOPT_PROXY
FAIL 1099: 'TFTP get first a non-existing file then an existing' TFTP, TFTP RRQ
FAIL 1101: 'NO_PROXY test, with username in URL' HTTP, HTTP GET, HTTP Basic auth, HTTP proxy, http_proxy, NO_PROXY
FAIL 1102: 'FTP OS/400 server name format check' FTP, SYST, SITE, OS400
FAIL 1103: 'FTP non-OS/400 server' FTP, SYST, SITE, OS400
FAIL 1104: 'HTTP cookie expiry date at Jan 1 00:00:00 GMT 1970' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 1105: 'HTTP POST with cookies' HTTP, HTTP POST, cookies, cookiejar
FAIL 1106: 'FTP URL and with ftp_proxy environment variable set' FTP, CURLOPT_PORT, HTTP proxy
FAIL 1107: 'FTP RETR PASV with PRET' FTP, PASV, RETR, PRET
FAIL 1108: 'FTP RETR PASV with PRET not supported' FTP, PASV, RETR, PRET
FAIL 1109: 'HTTP GET with URL that contains fragment after the path' HTTP, CURLOPT_URL
FAIL 1110: 'HTTP GET with URL that contains a fragment after the query part' HTTP, CURLOPT_URL
FAIL 1111: 'HTTP GET with URL whose fragment contains a # (which is illegal)' HTTP, CURLOPT_URL
FAIL 1114: 'FTP wildcard download - skip/correctness/FNMATCH_FUNCTION (DOS)' FTP, wildcardmatch, ftplistparser, libtest
FAIL 1115: 'HTTP GET with unexpected 1xx response' HTTP, HTTP 1xx response code
FAIL 1116: 'HTTP GET with chunked trailer without Trailer:' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1117: 'HTTP with invalid range then another URL' HTTP, HTTP GET, Range, DELAY
FAIL 1118: 'URL without slash and @-letter in query' HTTP, HTTP GET
FAIL 1120: 'FTP with 421 timeout response' FTP, PORT, RETR, 421, timeout
FAIL 1121: 'HTTP multiple provided Host: headers' HTTP
FAIL 1122: 'HTTP GET gzip transfer-encoded content' HTTP, HTTP GET, compressed, Transfer-Encoding
FAIL 1123: 'HTTP GET deflate transfer-encoded content' HTTP, HTTP GET, compressed, Transfer-Encoding
FAIL 1124: 'HTTP GET gzip+chunked transfer-encoded content' HTTP, HTTP GET, compressed, Transfer-Encoding, chunked Transfer-Encoding
FAIL 1125: 'HTTP GET transfer-encoding with custom Connection:' HTTP, HTTP GET, compressed, Transfer-Encoding
FAIL 1126: 'HTTP 200 If-Modified-Since with newer document' HTTP, HTTP GET, If-Modified-Since
FAIL 1127: 'HTTP 200 If-Modified-Since with older document' HTTP, HTTP GET, If-Modified-Since
FAIL 1128: 'HTTP 200 If-Modified-Since with old+new documents' HTTP, HTTP GET, If-Modified-Since
FAIL 1129: 'HTTP POST expect 100-continue with a 404' HTTP, HTTP POST, Expect: 100-continue
FAIL 1130: 'HTTP POST forced expect 100-continue with a 404' HTTP, HTTP POST, Expect: 100-continue
FAIL 1131: 'HTTP PUT expect 100-continue with a 400' HTTP, HTTP PUT, Expect: 100-continue
FAIL 1132: 'MQTT CONNACK with bad Remaining Length' MQTT, MQTT CONNACK
FAIL 1133: 'HTTP formpost with filename/data containing ',', ';', '"'' HTTP, HTTP FORMPOST
FAIL 1134: 'HTTP connection reuse with different credentials' HTTP, HTTP HEAD, -G
FAIL 1136: 'Check cookies against PSL' HTTP, HTTP GET, HTTP proxy, cookies, cookiejar, PSL
FAIL 1137: 'FTP RETR --ignore-content-length' FTP, PASV, RETR, --ignore-content-length
FAIL 1138: 'HTTP redirect with UTF-8 characters' HTTP, HTTP GET, followlocation
FAIL 1141: 'HTTP redirect to http:/// (three slashes!)' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 1142: 'HTTP redirect to http://// (four slashes!)' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 1143: 'HTTP URL with http:/ (one slash!)' HTTP, HTTP GET, followlocation
FAIL 1144: 'HTTP HEAD, receive no headers only body' HTTP, HTTP HEAD, HTTP/0.9
FAIL 1145: 'file:// bad host' FILE
FAIL 1146: '--proto-default file' FILE, --proto-default
FAIL 1147: 'Get -H headers from a file' HTTP, HTTP GET, -H
FAIL 1148: 'progress-bar' HTTP, progressbar
FAIL 1149: 'FTP dir list multicwd then again nocwd' FTP, PASV, LIST
FAIL 1150: 'HTTP proxy with URLs using different ports' HTTP, HTTP GET, HTTP proxy
FAIL 1151: 'HTTP with too long cookies' HTTP, HTTP GET, cookies
FAIL 1152: 'FTP with unclosed quote in PWD response' FTP
FAIL 1153: 'FTP with quoted double quotes' FTP, PASV, LIST
FAIL 1154: 'HTTP GET with 100K (too long) response header' HTTP, HTTP GET
FAIL 1155: 'HTTP cookie with parameter word as name' HTTP, HTTP GET, cookies
FAIL 1156: 'HTTP resume/range fail range-error content-range combinations' HTTP, HTTP GET, Content-Range, Resume, Range, libtest
FAIL 1157: 'Get -H headers from empty file' HTTP, HTTP GET, -H
FAIL 1158: 'HTTP RFC1867-type formposting with filename containing '"'' HTTP, HTTP FORMPOST
FAIL 1159: 'HTTP Location: and 'redirect_url' with non-supported scheme' HTTP, HTTP GET, redirect_url, followlocation, --write-out
FAIL 1160: 'HTTP with long funny format cookie' HTTP, HTTP GET, cookies
FAIL 1161: 'HTTP cookie with path set twice' HTTP, HTTP GET, cookies
FAIL 1164: 'HTTP/0.9 GET and all zeroes' HTTP, HTTP GET
FAIL 1166: 'HTTP response with cookies but not receiving!' HTTP, HTTP GET, followlocation, cookies
FAIL 1168: 'HTTP redirect with credentials using # in user and password' HTTP, HTTP GET, followlocation
FAIL 1170: 'HTTP GET transfer-encoding with removed Connection:' HTTP, HTTP GET, compressed, Transfer-Encoding
FAIL 1171: 'HTTP GET transfer-encoding with blanked Connection:' HTTP, HTTP GET, compressed, Transfer-Encoding
FAIL 1172: 'HTTP/0.9 GET response denied' HTTP, HTTP/0.9
FAIL 1174: 'HTTP/0.9 GET response denied by default' HTTP, HTTP/0.9
FAIL 1176: '--output using #0' globbing
FAIL 1178: 'HTTP proxy auth with credentials longer than 256 bytes' HTTP, HTTP GET, HTTP proxy
FAIL 1180: 'HTTP GET request with proxy and -H "Proxy-Connection: keep-alive"' HTTP, HTTP proxy
FAIL 1181: 'HTTP GET request with proxy and "Proxy-Connection: Keep-Alive"' HTTP, HTTP proxy
FAIL 1183: '%TESTNUMBER used instead of actual test number' HTTP, HTTP GET
FAIL 1186: 'Multipart formposting with backslash-escaping filename containing '"'' HTTP, HTTP FORMPOST
FAIL 1187: 'SMTP multipart with filename escaping' SMTP, MULTIPART
FAIL 1188: '--write-out with %{onerror} and %{urlnum} to stderr' HTTP, HTTP GET, --write-out
FAIL 1189: 'Multipart formposting with backslash-escaping of name= and filename=' HTTP, HTTP FORMPOST
FAIL 1190: 'MQTT SUBSCRIBE' MQTT, MQTT SUBSCRIBE
FAIL 1191: 'MQTT PUBLISH' MQTT, MQTT PUBLISH
FAIL 1192: 'MQTT SUBSCRIBE 2k topic' MQTT, MQTT SUBSCRIBE
FAIL 1193: 'MQTT PUBLISH 2k payload' MQTT, MQTT PUBLISH
FAIL 1194: 'MQTT SUBSCRIBE with PUBLISH before SUBACK' MQTT, MQTT SUBSCRIBE
FAIL 1195: 'MQTT SUBSCRIBE with short PUBLISH' MQTT, MQTT SUBSCRIBE
FAIL 1196: 'MQTT with "unaccaptable protocol version" CONNACK' MQTT, MQTT SUBSCRIBE
FAIL 1197: 'HTTP POST redirected to GET and --write-out method' HTTP, HTTP GET, followlocation, --write-out
FAIL 1198: 'MQTT PUBLISH empty payload, single space topic' MQTT, MQTT SUBSCRIBE
FAIL 1199: 'MQTT PUBLISH empty payload, no topic' MQTT, MQTT SUBSCRIBE
FAIL 1200: 'Gopher index' GOPHER, INDEX
FAIL 1201: 'Gopher selector' GOPHER, SELECTOR
FAIL 1202: 'Gopher query' GOPHER, QUERY
FAIL 1203: 'Gopher IPv6 index' GOPHER-ipv6, IPv6, INDEX
FAIL 1204: 'HTTP with WWW-Authenticate and multiple auths in a single line' HTTP, HTTP GET, HTTP Basic auth, --anyauth
FAIL 1205: 'HTTP GET with 18K HTTP header' HTTP, HTTP GET
FAIL 1206: 'FTP PORT and 425 on download' FTP, PORT, RETR, NODATACONN425
FAIL 1207: 'FTP PORT and 421 on download' FTP, PORT, RETR, NODATACONN421
FAIL 1210: 'HTTP GET with -J without Content-Disposition' HTTP, HTTP GET, -J
FAIL 1212: 'noproxy setting together with socks proxy' HTTP, SOCKS5, NO_PROXY, noproxy
FAIL 1213: 'HTTP with proxy and host-only URL' HTTP, HTTP GET, HTTP proxy
FAIL 1214: 'HTTP with proxy and URL with ? and no slash separator' HTTP, HTTP GET, HTTP proxy
FAIL 1216: 'HTTP cookie domains tailmatching the hostname' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 1217: 'FTP with rubbish before name in 257-response' FTP, PORT, NLST, --data-binary
FAIL 1218: 'HTTP cookies and domains with same prefix' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 1219: 'FTP with no user+password required (230 response)' FTP, PASV, RETR
FAIL 1220: 'file:// URLs with query string' FILE, URL
FAIL 1221: '--url-query with --data-urlencode' HTTP, HTTP POST, --data-urlencode, --url-query
FAIL 1223: 'HTTP GET -w remote_ip and -w remote_port' HTTP, HTTP GET
FAIL 1224: 'FTP fetch a file from the root directory' FTP, PASV, RETR
FAIL 1225: 'FTP fetch two files using absolute paths' FTP, PASV, RETR
FAIL 1226: 'FTP fetch a file from the root directory with singlecwd' FTP, PASV, RETR
FAIL 1227: 'FTP fetch a file from the root directory with nocwd' FTP, PASV, RETR
FAIL 1228: 'HTTP cookie path match' HTTP, HTTP GET, HTTP proxy, cookies, cookie path
FAIL 1229: 'HTTP with Digest authorization with username needing escape' HTTP, HTTP GET, HTTP Digest auth
FAIL 1230: 'HTTP CONNECT to IPv6 numerical address' HTTP, HTTP CONNECT, HTTP proxy, IPv6
FAIL 1231: 'HTTP URL with dotdot removal from path' HTTP, HTTP GET, dotdot removal
FAIL 1232: 'HTTP URL with dotdot removal from path using an HTTP proxy' HTTP, HTTP GET, HTTP proxy, dotdot removal
FAIL 1233: 'FTP failing to connect to EPSV port, switching to PASV' FTP, connect to non-listen
FAIL 1234: 'abusing {}-globbing' globbing, {} list
FAIL 1235: 'multiple requests using {}{} in the URL' HTTP, HTTP GET, globbing, {} list
FAIL 1236: '[] globbing overflowing the range counter' globbing
FAIL 1237: 'URL with 1000+ letter username + password' HTTP, HTTP Basic auth
FAIL 1238: 'slow TFTP retrieve cancel due to -Y and -y' TFTP, TFTP RRQ, timeout, DELAY
FAIL 1239: 'HTTP with -z + -w response_code and simulated 304' HTTP, HTTP GET, -z
FAIL 1240: 'glob [0-1] with stuff after range (7.33.0 regression)' globbing, HTTP
FAIL 1241: 'HTTP _without_ dotdot removal' HTTP, HTTP GET, HTTP proxy
FAIL 1242: 'TFTP retrieve without TFTP options requests' TFTP, TFTP RRQ
FAIL 1243: 'TFTP send without TFTP options requests' TFTP, TFTP WRQ
FAIL 1245: '--proto deny must override --proto-redir allow' FTP, HTTP, HTTP GET, --proto, --proto-redir, followlocation
FAIL 1246: 'URL with '#' at end of hostname instead of '/'' HTTP, HTTP GET, HTTP proxy
FAIL 1247: '--fail-early' HTTP, --fail-early
FAIL 1248: 'Non-proxied host plus --proxy option and --noproxy option' HTTP, HTTP proxy, noproxy
FAIL 1249: 'Non-proxied plus --proxy option and NO_PROXY env var' HTTP, HTTP proxy, NO_PROXY
FAIL 1250: 'Non-proxied host plus http_proxy env var and --noproxy option' HTTP, HTTP proxy, http_proxy, noproxy
FAIL 1251: 'Non-proxied host plus http_proxy env var and NO_PROXY env var' HTTP, HTTP proxy, http_proxy, NO_PROXY
FAIL 1252: '--proxy, override NO_PROXY by --noproxy and access target URL directly' HTTP, HTTP proxy, NO_PROXY, noproxy
FAIL 1253: '--proxy, override NO_PROXY by --noproxy and access URL through proxy' HTTP, HTTP proxy, NO_PROXY, noproxy
FAIL 1254: 'override NO_PROXY by --noproxy and access target URL through proxy' HTTP, HTTP proxy, NO_PROXY, noproxy
FAIL 1255: 'http_proxy, override NO_PROXY by --noproxy and access URL directly' HTTP, HTTP proxy, http_proxy, NO_PROXY, noproxy
FAIL 1256: 'http_proxy, override NO_PROXY by --noproxy host' HTTP, HTTP proxy, http_proxy, NO_PROXY, noproxy
FAIL 1257: 'http_proxy, override NO_PROXY by --noproxy ""' HTTP, HTTP proxy, http_proxy, NO_PROXY, noproxy
FAIL 1258: 'HTTP, use cookies with localhost' HTTP, HTTP GET, HTTP replaced headers, cookies, httponly
FAIL 1259: 'HTTP URL with semicolon in password' HTTP, HTTP GET
FAIL 1260: 'HTTP URL with rubbish after port number' HTTP, HTTP GET
FAIL 1261: ''redirect_url' with --location and --max-redirs' HTTP, HTTP GET, redirect_url, followlocation, --write-out
FAIL 1262: 'FTP request and denied to download an older file with -z' FTP, RETR, -z
FAIL 1263: 'HTTP URL with rubbish after IPv6 bracket' HTTP, HTTP GET
FAIL 1264: 'HTTP URL with space in hostname' HTTP, HTTP GET
FAIL 1265: 'NO_PROXY with IPv6 numerical address' HTTP, HTTP proxy, http_proxy, NO_PROXY, noproxy, IPv6
FAIL 1266: 'HTTP GET with a single-byte HTTP/0.9 response' HTTP/0.9
FAIL 1267: 'HTTP GET with an invalid HTTP/1 response line start' HTTP/0.9
FAIL 1268: 'filename argument looks like a flag' warning
FAIL 1269: 'too large --retry-delay value' --retry-delay
FAIL 1270: 'Basic 'redirect_url'' HTTP, HTTP GET, redirect_url, followlocation, --write-out
FAIL 1271: '--write-out from file with empty file' HTTP, HTTP GET, --write-out
FAIL 1273: '-f and resume transfer of an entirely-downloaded file' HTTP, HTTP GET, Resume
FAIL 1274: 'HTTP header line folding' HTTP, HTTP GET, header line folding
FAIL 1277: 'HTTP GET with both content and transfer encoding' HTTP, HTTP GET, compressed, Transfer-Encoding, Content-Encoding
FAIL 1278: 'verify extra --no-remote-name' --no-remote-name
FAIL 1280: 'simple [a-d] globbing' globbing
FAIL 1281: 'reject non-numerical port number in URL' URL
FAIL 1282: 'FTP with 633 response to auth' FTP, PASV, RETR
FAIL 1283: 'globbing range with same start and stop' HTTP, HTTP GET, globbing, [] range
FAIL 1284: 'HTTP POST --digest with user-specified Content-Length header' HTTP, HTTP POST, HTTP Digest auth
FAIL 1285: 'HTTP PUT --digest with user-specified Content-Length header' HTTP, HTTP PUT, HTTP Digest auth
FAIL 1286: 'HTTP GET --digest increasing nonce-count' HTTP, HTTP GET, HTTP Digest auth, followlocation
FAIL 1287: 'HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses' HTTP, HTTP GET, HTTP CONNECT, proxytunnel, verbose logs
FAIL 1288: 'Suppress proxy CONNECT response headers' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 1289: 'globbing with overflow and bad syntax' HTTP, HTTP GET, globbing
FAIL 1290: 'Verify URL globbing ignores []' HTTP, HTTP GET, globbing
FAIL 1291: 'Attempt to upload 1000 files but fail immediately' HTTP, HTTP PUT
FAIL 1292: 'Replaced internal headers with a blank one' HTTP, HTTP GET, HTTP added headers, HTTP replaced headers
FAIL 1293: 'Multipart formpost to two URLs, the first failing' HTTP, HTTP GET, -F
FAIL 1296: 'HTTP URL with %0a in name part' HTTP, HTTP Basic
FAIL 1297: 'CONNECT to peer that returns nothing' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 1298: 'HTTP GET special path with --request-target' HTTP, HTTP GET, --request-target
FAIL 1299: 'Send "OPTIONS *" with --request-target' HTTP, --request-target
FAIL 1300: 'llist unit tests' unittest, llist
FAIL 1301: 'curl_strequal tests' curl_strequal, libtest
FAIL 1302: 'base64 encode/decode unit tests' unittest, base64
FAIL 1303: 'Curl_timeleft_ms unit tests' unittest, Curl_timeleft_ms
FAIL 1304: 'netrc parsing unit tests' unittest, netrc
FAIL 1305: 'internal hash create/destroy testing' unittest, hash
FAIL 1306: 'internal hash create/add/destroy testing' unittest, hash
FAIL 1308: 'formpost tests' curl_formadd, curl_formget, FORM, libtest
FAIL 1309: 'splay unit tests' unittest, splay
FAIL 1310: 'HTTP GET with -J + --show-headers' HTTP, HTTP GET, -J, --show-headers
FAIL 1311: 'HTTP GET with -J and Content-Disposition' HTTP, HTTP GET, -J
FAIL 1312: 'HTTP GET with -J, Content-Disposition and ; in filename' HTTP, HTTP GET, -J
FAIL 1313: 'HTTP GET with -J, Content-Disposition, uneven quotes' HTTP, HTTP GET, -J
FAIL 1314: 'HTTP Location: following a // prefixed url' HTTP, HTTP GET, HTTP proxy, followlocation
FAIL 1315: 'HTTP -F with three files, one with explicit type' HTTP, HTTP FORMPOST, HTTP file upload
FAIL 1317: 'HTTP with --resolve' HTTP, HTTP GET, --resolve
FAIL 1318: 'HTTP with --resolve and same hostname using different cases' HTTP, HTTP GET, --resolve
FAIL 1319: 'POP3 fetch tunneled through HTTP proxy' POP3, RETR, HTTP, HTTP CONNECT, HTTP proxy
FAIL 1320: 'SMTP send tunneled through HTTP proxy' SMTP, HTTP, HTTP CONNECT, HTTP proxy
FAIL 1321: 'IMAP FETCH tunneled through HTTP proxy' IMAP, FETCH, HTTP, HTTP CONNECT, HTTP proxy
FAIL 1322: 'HTTP with --resolve and hostname with trailing dot' HTTP, HTTP GET, --resolve, trailing-dot
FAIL 1323: 'curlx_tvdiff' unittest, curlx_tvdiff
FAIL 1324: 'HTTP with --resolve and [ipv6address]' HTTP, HTTP GET, IPv6, --resolve
FAIL 1325: 'HTTP 308-redirect with POST' HTTP, HTTP GET, 308, followlocation
FAIL 1326: 'TELNET to HTTP server' TELNET, UPLOAD
FAIL 1327: 'TELNET check of upload with stdout redirected' TELNET, UPLOAD
FAIL 1328: 'HTTP GET a globbed range with -f' HTTP, HTTP GET, globbing, --fail
FAIL 1329: '/-prefixed proxy name' HTTP proxy
FAIL 1331: 'HTTP --proxy-anyauth and 407 with cookies' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 1332: 'HTTP POST with 303 redirect and --post303' HTTP, HTTP POST, followlocation
FAIL 1333: 'HTTP POST zero length, chunked-encoded' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 1334: 'HTTP GET with -O without Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1335: 'HTTP GET with -O without Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1336: 'HTTP GET with -O and Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1337: 'HTTP GET with -O and Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1338: 'HTTP GET with -O -J without Content-Disposition, -D file' HTTP, HTTP GET, -J
FAIL 1339: 'HTTP GET with -O -J without Content-Disposition, -D stdout' HTTP, HTTP GET, -J
FAIL 1340: 'HTTP GET with -O -J and Content-Disposition, -D file' HTTP, HTTP GET, -J
FAIL 1341: 'HTTP GET with -O -J and Content-Disposition, -D stdout' HTTP, HTTP GET, -J
FAIL 1342: 'HTTP GET with -O -i without Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1343: 'HTTP GET with -O -i without Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1344: 'HTTP GET with -O -i and Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1345: 'HTTP GET with -O -i and Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1346: 'HTTP GET with -O -i without Content-Disposition, without -D' HTTP, HTTP GET
FAIL 1347: 'HTTP GET with -O -i and Content-Disposition, without -D' HTTP, HTTP GET
FAIL 1348: 'FTP download, file without Content-Disposition inside, using -O' FTP, RETR
FAIL 1349: 'FTP download, file without C-D inside, using -O -D file' FTP, RETR
FAIL 1350: 'FTP download, file without C-D inside, using -O -D stdout' FTP, RETR
FAIL 1351: 'FTP download, file without C-D inside, using -O -J -D file' FTP, RETR, -J
FAIL 1352: 'FTP download, file without C-D inside, using -O -J -D stdout' FTP, RETR, -J
FAIL 1353: 'FTP download, file without C-D inside, using -O -i -D file' FTP, RETR
FAIL 1354: 'FTP download, file without C-D inside, using -O -i -D stdout' FTP, RETR
FAIL 1355: 'FTP download, file without C-D inside, using -O -i, without -D' FTP, RETR
FAIL 1356: 'FTP download, file with Content-Disposition inside, using -O' FTP, RETR
FAIL 1357: 'FTP download, file with C-D inside, using -O -D file' FTP, RETR
FAIL 1358: 'FTP download, file with C-D inside, using -O -D stdout' FTP, RETR
FAIL 1359: 'FTP download, file with C-D inside, using -O -J -D file' FTP, RETR, -J
FAIL 1360: 'FTP download, file with C-D inside, using -O -J -D stdout' FTP, RETR, -J
FAIL 1361: 'FTP download, file with C-D inside, using -O -i -D file' FTP, RETR
FAIL 1362: 'FTP download, file with C-D inside, using -O -i -D stdout' FTP, RETR
FAIL 1363: 'FTP download, file with C-D inside, using -O -i, without -D' FTP, RETR
FAIL 1364: 'HTTP GET -o fname without Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1365: 'HTTP GET -o fname without Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1366: 'HTTP GET -o fname and Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1367: 'HTTP GET -o fname and Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1368: 'HTTP GET -o fname -J without Content-Disposition, -D file' HTTP, HTTP GET, -J
FAIL 1369: 'HTTP GET -o fname -J without Content-Disposition, -D stdout' HTTP, HTTP GET, -J
FAIL 1370: 'HTTP GET -o fname -J and Content-Disposition, -D file' HTTP, HTTP GET, -J
FAIL 1371: 'HTTP GET -o fname -J and Content-Disposition, -D stdout' HTTP, HTTP GET, -J
FAIL 1372: 'HTTP GET -o fname -i without Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1373: 'HTTP GET -o fname -i without Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1374: 'HTTP GET -o fname -i and Content-Disposition, -D file' HTTP, HTTP GET
FAIL 1375: 'HTTP GET -o fname -i and Content-Disposition, -D stdout' HTTP, HTTP GET
FAIL 1376: 'HTTP GET -o fname -i without Content-Disposition, without -D' HTTP, HTTP GET
FAIL 1377: 'HTTP GET -o fname -i and Content-Disposition, without -D' HTTP, HTTP GET
FAIL 1378: 'FTP DL, file without Content-Disposition inside, using -o fname' FTP, RETR
FAIL 1379: 'FTP DL, file without C-D inside, using -o fname -D file' FTP, RETR
FAIL 1380: 'FTP DL, file without C-D inside, using -o fname -D stdout' FTP, RETR
FAIL 1381: 'FTP DL, file without C-D inside, using -o fname -J -D file' FTP, RETR, -J
FAIL 1382: 'FTP DL, file without C-D inside, using -o fname -J -D stdout' FTP, RETR, -J
FAIL 1383: 'FTP DL, file without C-D inside, using -o fname -i -D file' FTP, RETR
FAIL 1384: 'FTP DL, file without C-D inside, using -o fname -i -D stdout' FTP, RETR
FAIL 1385: 'FTP DL, file without C-D inside, using -o fname -i, without -D' FTP, RETR
FAIL 1386: 'FTP DL, file with Content-Disposition inside, using -o fname' FTP, RETR
FAIL 1387: 'FTP DL, file with C-D inside, using -o fname -D file' FTP, RETR
FAIL 1388: 'FTP DL, file with C-D inside, using -o fname -D stdout' FTP, RETR
FAIL 1389: 'FTP DL, file with C-D inside, using -o fname -J -D file' FTP, RETR, -J
FAIL 1390: 'FTP DL, file with C-D inside, using -o fname -J -D stdout' FTP, RETR, -J
FAIL 1391: 'FTP DL, file with C-D inside, using -o fname -i -D file' FTP, RETR
FAIL 1392: 'FTP DL, file with C-D inside, using -o fname -i -D stdout' FTP, RETR
FAIL 1393: 'FTP DL, file with C-D inside, using -o fname -i, without -D' FTP, RETR
FAIL 1394: 'unit test for parse_cert_parameter()' tunittest
FAIL 1395: 'Curl_dedotdotify' unittest
FAIL 1396: 'curl_easy_escape and curl_easy_unescape' curl_easy_escape, curl_easy_unescape, libtest
FAIL 1397: 'Curl_cert_hostcheck unit tests' unittest, Curl_cert_hostcheck
FAIL 1398: 'curl_msnprintf tests' curl_msnprintf, libtest
FAIL 1399: 'Curl_pgrsTime unit tests' unittest, Curl_pgrsTime
FAIL 1400: '--libcurl for simple HTTP GET' HTTP, HTTP GET, --libcurl
FAIL 1401: '--libcurl for GET with various options' HTTP, HTTP GET, HTTP Basic auth, HTTP set cookie, cookies, --libcurl
FAIL 1402: '--libcurl for simple POST' HTTP, HTTP POST, --libcurl
FAIL 1403: '--libcurl for GET with query' HTTP, HTTP GET, --libcurl
FAIL 1404: '--libcurl plus -F with 3 files, one with explicit type and encoder' HTTP, HTTP FORMPOST, HTTP file upload, --libcurl
FAIL 1405: '--libcurl for FTP with quote ops' FTP, post-quote, pre-quote, --libcurl
FAIL 1406: '--libcurl for SMTP' SMTP, --libcurl
FAIL 1407: '--libcurl for POP3 LIST one message' POP3, Clear Text, LIST, --libcurl
FAIL 1408: 'HTTP receive cookies over IPV6' HTTP, HTTP GET, IPv6, cookies, cookiejar
FAIL 1409: 'Pass in string to -C' cmdline
FAIL 1410: 'Pass in negative number to --max-time' cmdline
FAIL 1411: 'HTTP with zero size file PUT' HTTP, HTTP PUT
FAIL 1412: 'HTTP GET with --anyauth with two URLs (picking Digest)' HTTP, HTTP GET, HTTP Digest auth, --anyauth
FAIL 1413: 'HTTP redirect with fragment in new URL' HTTP, HTTP GET, followlocation
FAIL 1414: 'FTP PORT without SIZE or EPRT support' FTP, PORT, RETR, no SIZE
FAIL 1415: 'Delete expired cookies' HTTP, HTTP GET, HTTP proxy, cookies, cookiejar, delete expired cookie
FAIL 1416: 'HTTP GET with chunked Transfer-Encoding overflowed chunked size' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 1417: 'HTTP GET with chunked encoding and chunked trailer without CRs' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 1418: 'HTTP with --anyauth and connection reuse' HTTP, HTTP GET, HTTP NTLM auth, connection reuse
FAIL 1419: 'HTTP with --anyauth (but no auth!) and connection reuse' HTTP, HTTP GET, HTTP NTLM auth, connection reuse
FAIL 1420: '--libcurl for IMAP FETCH message' IMAP, Clear Text, FETCH, --libcurl
FAIL 1421: 'Reusing HTTP proxy connection for two different hostnames' HTTP, HTTP GET, HTTP proxy
FAIL 1422: 'HTTP GET with -O -J and Content-Disposition (empty file)' HTTP, FILE, HTTP GET, -J
FAIL 1423: 'HTTP GET -o fname without Content-Disposition (empty file)' HTTP, FILE, HTTP GET
FAIL 1424: 'HTTP GET -o fname without Content-Disposition (unmet time condition)' HTTP, HTTP GET, If-Modified-Since, -z
FAIL 1427: 'too large -m timeout value' integer overflow
FAIL 1428: 'HTTP over proxy-tunnel with --proxy-header and --header' HTTP, HTTP GET, HTTP CONNECT, HTTP Basic auth, proxytunnel
FAIL 1429: 'HTTP GET with 999 response code' HTTP, HTTP GET, HTTP/0.9
FAIL 1430: 'HTTP GET with negative response code' HTTP, HTTP GET
FAIL 1431: 'HTTP GET with single-digit response code' HTTP, HTTP GET
FAIL 1432: 'HTTP GET with 100-digit response code and survive' HTTP, HTTP GET
FAIL 1433: 'HTTP GET with 100-digit subversion number in response' HTTP, HTTP GET
FAIL 1434: 'HTTP GET resume at exactly the existing file size is fine' HTTP, HTTP GET, Resume
FAIL 1435: 'simple HTTP GET over Unix socket' HTTP, HTTP GET, UnixSockets
FAIL 1436: 'HTTP requests with multiple connections over Unix socket' HTTP, HTTP GET, UnixSockets
FAIL 1437: 'HTTP with duplicated WWW-Authenticate parameters' HTTP, HTTP GET, HTTP Digest auth
FAIL 1438: 'Check if %{scheme} returns HTTP' HTTP, protocol, --write-out
FAIL 1439: 'Check if %{http_version} returns 1.1' HTTP, --write-out
FAIL 1440: 'Check --write-out with trailing %{' --write-out, FILE
FAIL 1441: 'Check --write-out with trailing %' --write-out, FILE
FAIL 1442: 'Check --write-out with trailing \' --write-out, FILE
FAIL 1443: 'HTTP GET with -O and --remote-time' HTTP, HTTP GET, -O, --remote-time
FAIL 1444: 'FTP with --remote-time' FTP, EPSV, RETR, --remote-time
FAIL 1445: 'file:// with --remote-time' FILE, --remote-time
FAIL 1447: 'Provide illegal proxy name' HTTP proxy
FAIL 1448: 'Redirect following to UTF-8 IDN hostname' HTTP, HTTP GET, IDN, followlocation, --resolve, --write-out
FAIL 1449: 'FTP download range with integer overflow' FTP, PASV, RETR, Resume
FAIL 1450: 'Basic DICT lookup' DICT
FAIL 1452: 'Basic TELNET negotiation' TELNET, UPLOAD
FAIL 1453: 'Too long tftp filename' Too long tftp filename
FAIL 1455: 'HTTP GET when PROXY Protocol enabled' HTTP, HTTP GET, proxy, haproxy
FAIL 1456: 'HTTP-IPv6 GET with PROXY protocol' HTTP, HTTP GET, proxy, haproxy, IPv6
FAIL 1457: 'Check if %{stderr} and %{stdout} switch between stdout and stderr.' HTTP, protocol, --write-out
FAIL 1458: 'HTTP with wildcard --resolve' HTTP, HTTP GET, --resolve
FAIL 1460: 'HTTP GET with -Ji and Content-Disposition with existing file' HTTP, HTTP GET, -J
FAIL 1462: 'curl invalid category --help' --help
FAIL 1463: 'curl file category --help' FILE, --help
FAIL 1464: 'curl file category --help with lower/upper mix' FILE, --help
FAIL 1465: '--libcurl for POST with binary content' HTTP, HTTP POST, --libcurl
FAIL 1466: 'HTTP GET with 3-digit response and only digits in reason' HTTP, HTTP GET
FAIL 1467: 'HTTP GET via SOCKS5 proxy via Unix sockets' HTTP, HTTP GET, SOCKS5, UnixSockets
FAIL 1468: 'HTTP GET with hostname using SOCKS5h via Unix sockets' HTTP, HTTP GET, SOCKS5, SOCKS5h, UnixSockets
FAIL 1469: 'Space in FTP upload URL' FTP, URL
FAIL 1471: 'Fail to resolve .onion TLD' Onion, Tor
FAIL 1472: 'Fail to resolve .onion. TLD' Onion, Tor
FAIL 1473: 'first HTTP header starts with white space' HTTP, HTTP GET, header line folding
FAIL 1474: '--proto -all disables all protocols' HTTP, HTTP GET, --proto
FAIL 1475: '-f and 416 with Content-Range: */size' HTTP, HTTP GET, Resume
FAIL 1476: 'PSL violating cookie with mixed case domain and cookie domain property' HTTP, HTTP GET, cookies
FAIL 1479: 'HTTP/1.1 response followed by HTTP/0.9 response over same connection' HTTP, HTTP/0.9
FAIL 1480: 'HTTP Continue response without final response' HTTP
FAIL 1481: '--libcurl with TLS version options' HTTP, HTTP GET, --libcurl
FAIL 1482: 'HTTP GET with double chunked in TE header' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1483: 'HTTP GET with two Transfer-Encoding: chunked headers' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1484: 'HTTP HEAD with response body to ignore' HTTP, HTTP HEAD
FAIL 1485: 'get curlinfo on last header in callback' HTTP, HTTP GET, libtest
FAIL 1487: 'HTTP GET with -J and Content-Disposition on 301' HTTP, HTTP GET, -J
FAIL 1489: '-D sent to stderr' HTTP, HTTP GET
FAIL 1490: '"upload" with file:// overwriting existing' FILE
FAIL 1491: 'file:// do not overwrite self with --skip-existing' FILE
FAIL 1492: 'HTTP GET with -J + --show-headers but no Content-Disposition:' HTTP, HTTP GET, -J, --show-headers
FAIL 1493: 'HTTP GET with identity + chunked in TE header' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1494: 'HTTP GET with identity twice in TE header' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1495: 'HTTP GET with chunked + identity in TE header' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1496: 'HTTP GET with gzip + chunked transfer-encoding without being asked' HTTP, HTTP GET, chunked Transfer-Encoding, DELAY
FAIL 1497: 'HTTP GET --retry on 503 error with output to /dev/null' HTTP, HTTP GET, retry
FAIL 1498: 'HTTP PUT from stdin using period' HTTP, HTTP PUT, chunked Transfer-Encoding
FAIL 1499: 'HTTP chunked encoding and chunked trailer, twice' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 1500: 'curl_multi_wait' HTTP, HTTP GET, multi, libtest
FAIL 1501: 'FTP with multi interface and slow LIST response' FTP, RETR, multi, LIST, DELAY, libtest
FAIL 1502: 'HTTP multi with CURLOPT_RESOLVE, cleanup sequence UA' HTTP, HTTP GET, multi, CURLOPT_RESOLVE, libtest
FAIL 1503: 'HTTP multi with CURLOPT_RESOLVE, cleanup sequence PA' HTTP, HTTP GET, multi, CURLOPT_RESOLVE, libtest
FAIL 1504: 'HTTP multi with CURLOPT_RESOLVE, cleanup sequence UB' HTTP, HTTP GET, multi, CURLOPT_RESOLVE, libtest
FAIL 1505: 'HTTP multi with CURLOPT_RESOLVE, cleanup sequence PB' HTTP, HTTP GET, multi, CURLOPT_RESOLVE, libtest
FAIL 1506: 'HTTP GET connection cache limit (CURLMOPT_MAXCONNECTS)' HTTP, multi, verbose logs, libtest
FAIL 1507: 'SMTP with multi interface and CURLE_ABORTED_BY_CALLBACK' SMTP, multi, libtest
FAIL 1508: 'Close a multi handle without using it' HTTP, multi, libtest
FAIL 1509: 'http:// through proxytunnel' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, libtest
FAIL 1511: 'HTTP GET time conditions in repeated requests' HTTP, CURLOPT_TIMECONDITION, libtest
FAIL 1513: 'return failure immediately from progress callback' PROGRESSFUNCTION, DELAY, libtest
FAIL 1514: 'HTTP POST with read callback and unknown data size' HTTP, HTTP POST, Content-Length, chunked Transfer-Encoding, libtest
FAIL 1515: 'caching of manual libcurl DNS entries after DNS cache timeout' HTTP, multi, resolve, libtest
FAIL 1516: 'caching of manual libcurl DNS entries after dead connection' HTTP, multi, resolve, libtest
FAIL 1517: 'HTTP POST, server responds before completed send' HTTP, POST, POST callback, slow callback, early response, libtest
FAIL 1518: 'Extract Location: with broken URL' HTTP, libtest
FAIL 1519: 'Extract Location: with broken absolute URL' HTTP, libtest
FAIL 1520: 'SMTP with CRLF-dot-CRLF in upload payload' SMTP, libtest
FAIL 1521: 'Test all curl_easy_setopt and curl_easy_getinfo options' curl_easy_setopt, libtest
FAIL 1522: 'CURLINFO_SIZE_UPLOAD with small SO_SNDBUF' CURLINFO_SIZE_UPLOAD, libtest
FAIL 1523: 'CURLINFO_LOW_SPEED_LIMIT' CURLINFO_LOW_SPEED_LIMIT, DELAY, libtest
FAIL 1524: 'HTTP PUT with 303 redirect' HTTP, HTTP PUT, followlocation
FAIL 1525: 'CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED' HTTP, HTTP PUT, HTTP CONNECT, HTTP proxy, proxytunnel, CURLOPT_PROXYHEADER, libtest
FAIL 1526: 'CURLOPT_PROXYHEADER: separate host/proxy headers' HTTP, HTTP PUT, HTTP CONNECT, HTTP proxy, proxytunnel, CURLOPT_PROXYHEADER, libtest
FAIL 1527: 'Same headers with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED' HTTP, HTTP PUT, HTTP CONNECT, HTTP proxy, proxytunnel, libtest
FAIL 1528: 'Separately specified proxy/server headers sent in a proxy GET' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, libtest
FAIL 1529: 'HTTP request-injection in URL sent over proxy' HTTP, HTTP GET, HTTP proxy, libtest
FAIL 1530: 'CURLOPT_OPENSOCKETFUNCTION returns bad socket' CURLOPT_OPENSOCKETFUNCTION, libtest
FAIL 1531: 'CURLOPT_POSTFIELDS with binary data set after multi_add_handle' CURLOPT_POSTFIELDS, libtest
FAIL 1532: 'Test CURLINFO_RESPONSE_CODE' HTTP, HTTP GET, libtest
FAIL 1533: 'HTTP with CURLOPT_KEEP_SENDING_ON_ERROR and an early error response' HTTP, HTTP POST, CURLOPT_KEEP_SENDING_ON_ERROR, libtest
FAIL 1534: 'CURLINFO_FILETIME init and reset' HTTP, HTTP GET, CURLINFO_FILETIME, libtest
FAIL 1535: 'Test CURLINFO_RESPONSE_CODE CURLINFO_PROTOCOL' HTTP, HTTP GET, libtest
FAIL 1536: 'Test CURLINFO_RESPONSE_CODE CURLINFO_SCHEME' HTTP, HTTP GET, libtest
FAIL 1537: 'libcurl URL escape/unescape tests' URL escape, libtest
FAIL 1538: 'libcurl strerror API call tests' strerror, verbose logs, libtest
FAIL 1539: 'HTTP 1.0 POST with read callback and unknown data size' HTTP, HTTP POST, Content-Length, chunked Transfer-Encoding, libtest
FAIL 1540: 'chunked with trailers and pausing the receive' HTTP, HTTP GET, CURLPAUSE_RECV, chunked Transfer-Encoding, Trailer:, DELAY, libtest
FAIL 1541: 'CURLINFO timer check' HTTP, HTTP GET, chunked Transfer-Encoding, Trailer:, DELAY, libtest
FAIL 1542: 'connection reuse with CURLOPT_MAXLIFETIME_CONN' HTTP, connection reuse, persistent connection, CURLOPT_MAXLIFETIME_CONN, verbose logs, libtest
FAIL 1543: 'CURLOPT_CURLU, URL with space and CURLINFO_EFFECTIVE_URL' HTTP, CURLOPT_CURLU, libtest
FAIL 1545: 'use curl_formadd() data twice with unreadable file' HTTP, HTTP GET, libtest
FAIL 1546: 'HTTP transfer-encoding wrong order' HTTP, HTTP GET, Transfer-Encoding
FAIL 1547: 'FTP dir list PASV overriding PORT' FTP, PASV, LIST
FAIL 1548: 'TELNET read stdin without upload file' TELNET
FAIL 1549: 'Receive expired cookies and CURLINFO_COOKIELIST' HTTP, cookies, libtest
FAIL 1550: 'verify setting pipelining blocklisting options' multi, libtest
FAIL 1551: 're-run redirected transfer without setting URL again' multi, libtest
FAIL 1552: 'IMAP multi transfer error without curl_multi_remove_handle' IMAP, Clear Text, FETCH, libtest
FAIL 1553: 'IMAP cleanup with non-existing hostname' IMAP, Clear Text, FETCH, libtest
FAIL 1554: 'HTTP with shared connection cache' HTTP, HTTP GET, shared connections, libtest
FAIL 1555: 'verify api is protected against calls from callbacks' RECURSIVE_API_CALL, DELAY, libtest
FAIL 1556: 'send long HTTP headers to header callback' HTTP, HTTP GET, libtest
FAIL 1557: 'Remove easy handle in pending connections, no dangling entry' multi, crash, libtest
FAIL 1558: 'CURLINFO_PROTOCOL for file:// transfer' curl_easy_getinfo, CURLINFO_PROTOCOL, libtest
FAIL 1559: 'Set excessive URL lengths' CURLOPT_URL, verbose logs, libtest
FAIL 1560: 'URL API' urlapi, url, libtest
FAIL 1563: 'Make sure redirects to CURLPROTO_GOPHER are forbidden by default' GOPHER, HTTP GET, followlocation
FAIL 1564: 'wakeup before poll with no easy handles' multi, wakeup, libtest
FAIL 1565: 'wakeup from another thread' HTTP, HTTP GET, multi, multi-threaded, wakeup, libtest
FAIL 1566: '--etag-compare that gets a 304 back should not overwrite the file' HTTP, HTTP GET, --etag-compare
FAIL 1567: 're-run redirected transfer without setting CURLU URL again' HTTP, URL API, CURLOPT_CURLU, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1568: 'HTTP with Digest authorization on custom CURLOPT_PORT' HTTP, HTTP GET, HTTP Digest auth, libtest
FAIL 1569: 'FTP first type=A then regular URL' FTP, PASV, RETR, libtest
FAIL 1570: 'FTP first type=D then regular URL' FTP, PASV, RETR, libtest
FAIL 1571: 'CURLFOLLOW_OBEYCODE with custom POST method, 302 => GET' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1572: 'CURLFOLLOW_OBEYCODE with custom POST method, 308 => custom' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1573: 'CURLFOLLOW_OBEYCODE with custom GET method, 301 => custom' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1574: 'CURLFOLLOW_FIRSTONLY with custom GET method, 301 => GET' CURLFOLLOW_FIRSTONLY, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1575: 'CURLFOLLOW_FIRSTONLY with custom POST method, 308 => POST' CURLFOLLOW_FIRSTONLY, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1576: 'CURLFOLLOW_OBEYCODE with custom PUT method, 302 => custom' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1577: 'CURLFOLLOW_OBEYCODE with custom PUT method, 308 => custom' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1578: 'CURLFOLLOW_FIRSTONLY with custom PUT method, 302 => PUT' CURLFOLLOW_FIRSTONLY, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1579: 'CURLFOLLOW_OBEYCODE with custom PUT method, 303 => GET' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1580: 'CURLFOLLOW_FIRSTONLY with custom PUT method, 308 => PUT' CURLFOLLOW_FIRSTONLY, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1581: 'CURLFOLLOW_OBEYCODE with custom POST301 method, 301 => custom' CURLFOLLOW_OBEYCODE, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1584: 'HTTP GET with -J and Content-Disposition including path' HTTP, HTTP GET, -J
FAIL 1585: 'HTTP GET with -J and Content-Disposition including DOS path' HTTP, HTTP GET, -J
FAIL 1588: 'HTTP proxy auth Digest, then change proxy and do it again' HTTP, HTTP GET, HTTP proxy, HTTP proxy Digest auth, multi, libtest
FAIL 1589: 'HTTP proxy auth Digest, then change proxy port and do it again' HTTP, HTTP proxy, HTTP proxy Digest auth, libtest
FAIL 1590: 'IMAP cleanup before a connection was created' IMAP, Clear Text, FETCH, libtest
FAIL 1591: 'HTTP PUT with trailers at the end' HTTP, HTTP PUT, CURLOPT_HTTPTRAILER_FUNCTION, CURLOPT_HTTPTRAILER_DATA, libtest
FAIL 1593: 'HTTP custom header overrides CURLOPT_TIMECONDITION' HTTP, HTTP GET, HTTP replaced headers, CURLOPT_TIMECONDITION, If-Modified-Since, libtest
FAIL 1594: 'HTTP Retry-After header parsing and extraction' HTTP, HTTP GET, HTTP replaced headers, CURLOPT_TIMECONDITION, If-Modified-Since, libtest
FAIL 1595: 'HTTP Retry-After header extraction (without header)' HTTP, HTTP GET, HTTP replaced headers, CURLOPT_TIMECONDITION, If-Modified-Since, libtest
FAIL 1596: 'HTTP Retry-After header parsing using a date' HTTP, HTTP GET, HTTP replaced headers, CURLOPT_TIMECONDITION, If-Modified-Since, libtest
FAIL 1597: 'CURLOPT_PROTOCOLS_STR' CURLOPT_PROTOCOLS_STR, libtest
FAIL 1598: 'HTTP POST with trailers at the end' HTTP, HTTP POST, CURLOPT_HTTPTRAILER_FUNCTION, CURLOPT_HTTPTRAILER_DATA, libtest
FAIL 1599: 'FTP with netrc using no user but control code in password' FTP, netrc, libtest
FAIL 1601: 'MD5 unit tests' unittest, MD5
FAIL 1602: 'Internal hash create/add/destroy testing, exercising clean functions' unittest, hash
FAIL 1603: 'Internal hash add, retrieval, deletion testing' unittest, hash
FAIL 1604: 'Test Windows/MS-DOS filename sanitization' tunittest
FAIL 1605: 'Test negative data lengths as input to libcurl functions' curl_easy_escape, libtest
FAIL 1606: 'verify speedcheck' unittest, speedcheck
FAIL 1607: 'CURLOPT_RESOLVE parsing' unittest, CURLOPT_RESOLVE
FAIL 1608: 'verify DNS shuffling' unittest, curlopt_dns_shuffle_addresses
FAIL 1609: 'Gopher with URL-encoded CR LF in the selector' GOPHER, CRLF-in-URL
FAIL 1610: 'SHA256 unit tests' unittest, SHA256
FAIL 1611: 'MD4 unit tests' unittest, MD4
FAIL 1612: 'HMAC unit tests' unittest, HMAC
FAIL 1613: 'Send "OPTIONS *" with --request-target to a proxy' HTTP, HTTP proxy, --request-target
FAIL 1614: 'noproxy and cidr comparisons' unittest, noproxy
FAIL 1615: 'SHA-512/256 unit tests' unittest, SHA-512/256
FAIL 1616: 'HTTP 407 from a non-proxied host must not set proxy Digest state' HTTP, HTTP GET, HTTP proxy, HTTP proxy Digest auth, libtest
FAIL 1617: 'HTTP GET transfer-encoding with two user Connection: headers' HTTP, HTTP GET, compressed, Transfer-Encoding
FAIL 1618: 'HTTP GET brotli compression bomb' HTTP, HTTP GET, compressed, brotli
FAIL 1619: '--etag-save to stdout' HTTP, HTTP GET
FAIL 1620: 'unit tests for url.c' unittest, URL
FAIL 1621: 'unit tests for stripcredentials from URL' tunittest, stripcredentials
FAIL 1622: 'tool time and size progress output' tunittest, tool-progress
FAIL 1623: 'the size parser for --limit-rate' tunittest, tool-sizeparser
FAIL 1624: 'URL + --url-query with --next and another URL without --url-query' HTTP, --url-query, --next
FAIL 1625: 'Curl_compareheader unit test' unittest, Curl_compareheader
FAIL 1626: 'Curl_copy_header_value unit test' unittest, Curl_copy_header_value
FAIL 1627: 'Curl_get_scheme unit test' unittest, Curl_get_scheme
FAIL 1628: 'HTTP PUT from file with weird letters over an HTTP proxy' HTTP, HTTP PUT
FAIL 1629: 'cookies with trailing dot after PSL domain' HTTP, HTTP GET, --resolve
FAIL 1633: '--retry with a 429 response and Retry-After:' HTTP, HTTP GET, RETRY-AFTER
FAIL 1634: '--retry with a 429 response and Retry-After: and --fail' HTTP, HTTP GET, RETRY-AFTER
FAIL 1635: '--retry with a 429 response and Retry-After: and --fail-with-body' HTTP, HTTP GET, RETRY-AFTER
FAIL 1636: 'time2str and max6out' unittest, time2str, max6out
FAIL 1637: 'HTTP 502 with --fail and --retry 2' HTTP, --retry, --fail
FAIL 1638: 'HSTS duplicate domains where the update adds subdomains' HTTP, HTTP proxy, HSTS
FAIL 1639: '-O with URL without path using many trailing slashes' HTTP, HTTP GET
FAIL 1641: 'HTTP GET -J, a redirect and Content-Disposition in the second response' HTTP, HTTP GET, -J
FAIL 1642: 'HTTP GET -J, redirect, no Content-Disposition use the Location: name' HTTP, HTTP GET, -J
FAIL 1643: 'HTTP -J, two redirects, use the last Location: name' HTTP, HTTP GET, -J
FAIL 1644: '-O with URL with path but using many trailing slashes' HTTP, HTTP GET
FAIL 1645: 'cookies for paths using different case' HTTP, HTTP GET, cookies, cookiejar, --resolve
FAIL 1646: 'netrc parsing without user match but user in URL' netrc, --resolve
FAIL 1648: 'HTTP proxy with auth, change proxy, clear auth' HTTP, HTTP GET, HTTP proxy, HTTP proxy auth, libtest
FAIL 1649: 'Set referer first then NULL it' HTTP, Referer, libtest
FAIL 1650: 'DoH parsing' unittest, DOH
FAIL 1651: 'x509 parsing' unittest, x509
FAIL 1652: 'infof' unittest, infof
FAIL 1653: 'urlapi port number parsing' unittest, urlapi
FAIL 1654: 'alt-svc' unittest, Alt-Svc
FAIL 1655: 'unit test for doh_req_encode' unittest, DOH
FAIL 1656: 'GTime2str unit tests' unittest, GTime2str
FAIL 1657: 'getASN1Element unit tests' unittest, getASN1Element
FAIL 1658: 'unit test for doh_resp_decode_httpsrr' unittest, doh, httpsrr
FAIL 1659: '--connect-to when using file:// URL' --connect-to, FILE
FAIL 1660: 'HSTS' unittest, HSTS
FAIL 1661: 'bufref unit tests' unittest, bufref
FAIL 1663: 'unit tests for interface option parsing' unittest, interface, bind
FAIL 1664: 'unit tests for strparse.c string parsing functions' unittest, strparse
FAIL 1665: 'HTTP with only headers and no final CRLF separator' HTTP
FAIL 1666: 'encodeOID unit tests' unittest, encodeOID, x509asn1
FAIL 1667: 'ASN1tostr unit tests' unittest, ASN1tostr, x509asn1
FAIL 1668: 'ftp_213_date unit tests' unittest, FTP, ftp_213_date
FAIL 1669: 'alt-svc load cache with >5000 entries' unittest, Alt-Svc
FAIL 1670: '-w individual header output' HTTP, HTTP GET, -w, %header
FAIL 1671: '-w header JSON output' HTTP, HTTP GET, -w, %header
FAIL 1672: 'netrc parser skips macdef even with broken quote' netrc, macdef
FAIL 1673: 'HTTP retry upload with missing upload file' HTTP, upload, --retry
FAIL 1674: 'HSTS load more than 10k entries from file' unittest, HSTS
FAIL 1675: 'URL API unit tests' unittest, urlapi
FAIL 1676: 'x509 DH public key parameter extraction' unittest, x509, DH
FAIL 1677: 'HTTP POST response with both chunked and zero Content-Length' HTTP, HTTP POST, chunked Transfer-Encoding, Content-Length
FAIL 1679: '--libcurl resets SSL verification after --next' HTTP, --libcurl, --next, --insecure
FAIL 1680: 'HTTP GET with explicit clobber' HTTP, HTTP GET, --clobber
FAIL 1681: 'HTTP GET without clobber' HTTP, HTTP GET, --no-clobber
FAIL 1682: 'HTTP GET without clobber and --output-dir' HTTP, HTTP GET, --no-clobber
FAIL 1684: 'FTP with malformed MDTM response' FTP, MDTM
FAIL 1685: 'HTTP, reject cookie with tab in path' HTTP, cookies
FAIL 1686: 'HTTP Digest to different origins and switching credentials' HTTP, Digest, libtest
FAIL 1687: '--libcurl resets the handle between --next operations' HTTP, HTTP GET, --libcurl, --next
FAIL 1688: 'RTSP OPTIONS response with a body, CURLOPT_NOBODY set' RTSP, OPTIONS, libtest
FAIL 1691: 'IPFS path with encoded slashes and dotdot stays under the gateway' IPFS
FAIL 1692: 'IPNS path with encoded slashes and dotdot stays under the gateway' IPNS
FAIL 1693: 'MQTT partial sends, would-block, polling and packet ordering' unittest, MQTT
FAIL 1704: 'HTTP/1 doing HTTP/2 Upgrade: getting an HTTP/2 101 response' HTTP, HTTP GET, HTTP/2
FAIL 1711: 'Send >64K over SMTP' SMTP
FAIL 1712: 'config file with argument using single quotes' HTTP, --config
FAIL 1713: 'Filenames pointing to directory failing gracefully' HTTP, HTTP GET, Alt-Svc, cookies, HSTS, netrc
FAIL 1714: 'TELNET download with --max-filesize' TELNET
FAIL 1715: 'HTTP CONNECT with proxy returning Content-Length and chunked' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 1720: 'create_dir_hierarchy()' tunittest
FAIL 1721: 'Keep question mark for empty query' HTTP, HTTP GET
FAIL 1722: 'HTTP with chunked Transfer-Encoding not listed last' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 1723: 'HTTP with two chunked Transfer-Encoding not listed last' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 1724: 'IPFS with --proto-default HTTP' IPFS
FAIL 1740: '--silent suppresses Note: messages when verbose' HTTP, HTTP POST, --silent
FAIL 1741: 'Note: messages are shown when verbose without --silent' HTTP, HTTP POST
FAIL 1742: 'SOCKS5 CURLAUTH_ONLY does not offer the no authentication method' HTTP, HTTP GET, SOCKS5, libtest
FAIL 1743: 'SOCKS5 CURLAUTH_ONLY rejects a proxy that selects no authentication' HTTP, HTTP GET, SOCKS5, libtest
FAIL 1744: 'SOCKS5 CURLAUTH_ONLY does not reuse an unauthenticated connection' HTTP, HTTP GET, SOCKS5, libtest
FAIL 1745: 'SOCKS5 CURLAUTH_ONLY ignores auth done for the FTP data socket' FTP, PASV, RETR, SOCKS5, libtest
FAIL 1791: 'blank COPYPOSTFIELDS and duphandle' CURLOPT_POSTFIELDSIZE_LARGE, duphandle, libtest
FAIL 1800: 'HTTP/2 upgrade refused' HTTP, HTTP/2
FAIL 1802: 'HTTP CONNECT with custom headers for proxy and server' HTTP, HTTP CONNECT
FAIL 1827: 'HTTP CONNECT with faked status line header' HTTPS, HTTP GET, HTTP CONNECT, HTTP proxy
FAIL 1847: 'IMAP FETCH message with custom request' IMAP, Clear Text, FETCH, CUSTOMREQUEST
FAIL 1848: 'IMAP FETCH message with custom request to get list of email.' IMAP, Clear Text, FETCH, CUSTOMREQUEST
FAIL 1851: 'IPFS gateway using default port number' IPFS
FAIL 1876: 'verify no credentials present in effective URL after redirect' netrc
FAIL 1877: 'verify no credentials present in redirect URL after redirect' netrc, CURLINFO_REDIRECT_URL
FAIL 1900: 'HSTS curl_easy_duphandle' HTTP, HSTS, libtest
FAIL 1901: 'Chunked HTTP POST from callback with CURLOPT_POSTFIELDSIZE set' HTTP, HTTP POST, CURLOPT_READFUNCTION, libtest
FAIL 1902: 'set COOKIEFILE and COOKIEJAR but make no transfer' cookies, libtest
FAIL 1903: 'CURLOPT_COOKIEFILE then reset then set again' HTTP, cookies, CURLOPT_COOKIEFILE, libtest
FAIL 1904: 'HTTP CONNECT with 204 response' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 1905: 'CURLOPT_COOKIELIST set to "FLUSH" of a shared cookie object' HTTP, cookies, FLUSH, libtest
FAIL 1906: 'CURLOPT_CURLU and CURLOPT_PORT' CURLOPT_CURLU, CURLOPT_PORT, libtest
FAIL 1907: 'CURLINFO_EFFECTIVE_URL with non-scheme URL' CURLINFO_EFFECTIVE_URL, libtest
FAIL 1909: 'HTTP GET --retry-all-errors to overcome partial transfer' HTTP, HTTP GET, retry
FAIL 1910: 'HTTP credentials with newline and redirect' HTTP, HTTP Basic, CURLOPT_FOLLOWLOCATION, libtest
FAIL 1911: 'verify that curl_easy_setopt() rejects too long string inputs' curl_easy_option, libtest
FAIL 1912: 'Cross validate that gcc-typecheck macros match the option types.' curl_easy_option, typecheck, libtest
FAIL 1913: 'FTP with NOBODY set, getting a missing file' FTP, CURLOPT_NOBODY, libtest
FAIL 1914: 'FTP with NOBODY and FILETIME set, getting a missing file' FTP, CURLOPT_NOBODY, CURLOPT_FILETIME, libtest
FAIL 1915: 'HSTS read/write callbacks' HTTP, HSTS, CURLOPT_HSTSREADFUNCTION, libtest
FAIL 1916: 'MQTT PUBLISH with no POSTFIELDSIZE set' MQTT, MQTT PUBLISH, libtest
FAIL 1917: 'MQTT PUBLISH with CURLOPT_POST set (no payload)' MQTT, MQTT PUBLISH, libtest
FAIL 1918: 'curl_easy_option_by_name() and curl_easy_option_by_id()' curl_easy_option, curl_easy_option_by_name, curl_easy_option_by_id, libtest
FAIL 1919: 'set CURLOPT_XOAUTH2_BEARER and do connection reuse' connection reuse, libtest
FAIL 1920: 'load cookies, perform then reset before cleanup' cookies, libtest
FAIL 1921: 'Set a URL without scheme, then redirect with default scheme' urlapi, libtest
FAIL 1940: 'curl_easy_header' curl_easy_header, libtest
FAIL 1941: 'curl_easy_header with CONNECT' curl_easy_header, CONNECT, libtest
FAIL 1942: 'curl_easy_header with 1xx response' curl_easy_header, CONNECT, libtest
FAIL 1943: 'curl_easy_header with trailers' curl_easy_header, CONNECT, libtest
FAIL 1944: 'curl_easy_header with redirect' curl_easy_header, libtest
FAIL 1945: 'curl_easy_nextheader with server + CONNECT' curl_easy_header, CONNECT, libtest
FAIL 1946: 'curl_easy_header with redirect but get headers from first request' curl_easy_header, libtest
FAIL 1947: 'curl_easy_nextheader on second request after first did redirects' curl_easy_nextheader, libtest
FAIL 1948: 'CURLOPT_POST after CURLOPT_UPLOAD reusing handle' HTTP, HTTP POST, HTTP PUT, libtest
FAIL 1960: 'application hands over already connected socket' HTTP, CURLOPT_SOCKOPTFUNCTION, CURL_SOCKOPT_ALREADY_CONNECTED, libtest
FAIL 1961: 'curlx_inet_ntop() and curlx_inet_pton()' unittest
FAIL 1964: 'HTTP AWS_SIGV4 with X-Xxx-Date header set manually' HTTP, CURLOPT_AWS_SIGV4, libtest
FAIL 1965: 'curl_url_set() different schemes' urlapi, curl_url_set, libtest
FAIL 1966: 'netrc with digest and redirect to other origin' HTTP, HTTP GET, HTTP Digest auth, --resolve
FAIL 1967: 'curl_url_set() a URL without guessing a scheme' HTTP, urlapi, libtest
FAIL 1977: 'CURLOPT_CURLU and CURLINFO_EFFECTIVE_URL' CURLOPT_CURLU, CURLINFO_EFFECTIVE_URL, libtest
FAIL 1979: 'sigv4 canon_string unit tests' unittest, canon_string, aws-sigv4
FAIL 1980: 'sigv4 canon_query unit tests' unittest, canon_query, aws-sigv4
FAIL 1982: 'IMAP two requests, change options for the second' IMAP, Clear Text, FETCH, connection reuse, options
FAIL 1983: 'HTTP DELETE with --follow and 303 redirect' HTTP, HTTP DELETE, followlocation
FAIL 1984: 'HTTP PUT with 303 redirect and --follow' HTTP, HTTP PUT, followlocation
FAIL 1985: 'Digest response when not asked, then use Digest' Digest, libtest
FAIL 1989: 'curl_url_dup preserves guessed_scheme' libtest, urlapi
FAIL 2000: 'FTP RETR followed by FILE' FTP, PASV, FILE, multiprotocol
FAIL 2001: 'HTTP GET followed by FTP RETR followed by FILE' HTTP, HTTP GET, FTP, PASV, FILE, multiprotocol
FAIL 2002: 'HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ' HTTP, HTTP GET, FTP, PASV, FILE, TFTP, TFTP RRQ, multiprotocol
FAIL 2003: 'HTTP GET, FTP RETR, FILE, TFTP RRQ then again in rev order' HTTP, HTTP GET, FTP, PASV, FILE, TFTP, TFTP RRQ, multiprotocol
FAIL 2005: 'netrc match with password only in file, no username. machine follows' HTTP, netrc
FAIL 2006: '.netrc default with redirect plus oauth2-bearer' netrc, HTTP
FAIL 2008: '-G with --proto-default=http and scheme-less URL starting with "ftp"' HTTP, -G, --proto-default, --resolve
FAIL 2012: 'load URLs from a file, upload with a glob' HTTP, HTTP PUT
FAIL 2013: 'upload with a glob' HTTP, HTTP PUT
FAIL 2014: 'upload with glob, output name based on upload glob' HTTP, HTTP PUT
FAIL 2015: 'HTTP with cookie with with -b and redirect to new host' HTTP, HTTP proxy, followlocation, cookies
FAIL 2023: 'HTTP authorization retry (Basic)' HTTP, HTTP GET, HTTP Basic auth, libtest
FAIL 2024: 'HTTP authorization retry (Basic switching to Digest)' HTTP, HTTP GET, HTTP Basic auth, HTTP Digest auth, libtest
FAIL 2026: 'HTTP authorization retry (Digest switching to Basic)' HTTP, HTTP GET, HTTP Basic auth, HTTP Digest auth, libtest
FAIL 2027: 'HTTP authorization retry (Digest)' HTTP, HTTP GET, HTTP Digest auth, libtest
FAIL 2036: 'Attempt to set a default protocol with :// suffix' --proto-default
FAIL 2039: 'FTP optional .netrc with 'default' override; no user/pass, dir list' FTP, EPSV, LIST, netrc
FAIL 2040: 'HTTP Basic authorization, then without authorization' HTTP, HTTP GET, HTTP Basic auth
FAIL 2044: 'Attempt to set a default protocol that does not exist' --proto-default
FAIL 2045: 'Set the default protocol to ftp for a schemeless URL' FTP, --proto-default
FAIL 2046: 'Connection reuse with IDN hostname' HTTP, HTTP GET, IDN, followlocation, --resolve, --write-out
FAIL 2047: 'Connection reuse with IDN hostname over HTTP proxy' HTTP, HTTP GET, HTTP proxy, IDN, followlocation, --write-out
FAIL 2049: 'Connect to specific host' HTTP, HTTP GET, CURLOPT_CONNECT_TO
FAIL 2050: '--connect-to via HTTP proxy (tunnel mode automatically)' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, CURLOPT_CONNECT_TO
FAIL 2051: 'Connect to specific host: Reuse existing connections if possible' HTTP, HTTP GET, CURLOPT_CONNECT_TO
FAIL 2052: '--connect-to: do not mix connections with and w/o a "connect to host"' HTTP, HTTP GET, CURLOPT_CONNECT_TO, --resolve
FAIL 2053: 'Connect to specific host with IP addresses' HTTP, HTTP GET, CURLOPT_CONNECT_TO
FAIL 2054: 'Connect to specific host: use the first "connect-to" string' HTTP, HTTP GET, CURLOPT_CONNECT_TO
FAIL 2055: '--connect-to via SOCKS proxy and HTTP proxy (tunnel mode auto)' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, proxytunnel, CURLOPT_CONNECT_TO, SOCKS5
FAIL 2058: 'HTTP Digest upload with a modified method and SHA-256' HTTP, HTTP PUT, HTTP proxy, HTTP Digest auth, CUSTOMREQUEST
FAIL 2059: 'HTTP Digest upload with a modified method, SHA-256 and userhash' HTTP, HTTP PUT, HTTP proxy, HTTP Digest auth, CUSTOMREQUEST
FAIL 2060: 'HTTP Digest upload with a modified method and SHA-512-256' HTTP, HTTP PUT, HTTP proxy, HTTP Digest auth, CUSTOMREQUEST
FAIL 2061: 'HTTP with RFC7616 SHA256 Digest authorization' HTTP, HTTP GET, HTTP Digest auth
FAIL 2062: 'HTTP with RFC7616 SHA-512-256 Digest authorization and userhash=false' HTTP, HTTP GET, HTTP Digest auth
FAIL 2063: 'HTTP with RFC7616 SHA-256 Digest authorization and userhash=true' HTTP, HTTP GET, HTTP Digest auth
FAIL 2064: 'HTTP with RFC7616 Digest authorization with bad password and SHA256' HTTP, HTTP GET, HTTP Digest auth
FAIL 2065: 'HTTP with RFC7616 Digest, bad password, SHA-512-256 and userhash' HTTP, HTTP GET, HTTP Digest auth
FAIL 2066: 'HTTP with RFC7616 Digest, bad password, SHA-256 and userhash' HTTP, HTTP GET, HTTP Digest auth
FAIL 2067: 'HTTP POST --digest with SHA256 and user-specified Content-Length' HTTP, HTTP POST, HTTP Digest auth
FAIL 2068: 'HTTP POST Digest with SHA-512-256, userhash and set Content-Length' HTTP, HTTP POST, HTTP Digest auth
FAIL 2069: 'HTTP POST Digest with SHA-256, userhash and set Content-Length header' HTTP, HTTP POST, HTTP Digest auth
FAIL 2071: 'basic file:// file with "127.0.0.1" hostname' FILE
FAIL 2072: 'file:// with Unix path for the case of extra slashes' FILE
FAIL 2073: 'HTTP form posts with handle reset' HTTP, HTTP FORMPOST
FAIL 2074: 'HTTP with oauth2-bearer' HTTP, HTTP GET, AUTH OAUTHBEARER
FAIL 2075: 'Verify usernames are not allowed in url' --disallow-username-in-url, HTTP
FAIL 2076: 'HTTP with digest auth and URI contains query' HTTP, HTTP GET, HTTP Digest auth
FAIL 2077: 'curl --fail --negotiate to unauthenticated service fails' HTTP, HTTP GET, GSS-API
FAIL 2078: 'curl --negotiate should not send empty POST request only' HTTP, HTTP GET, GSS-API
FAIL 2080: 'config file with overly long option' FILE, config, --config
FAIL 2081: 'Automatic referrer credential and anchor stripping check' HTTP, HTTP GET, referer, followlocation, --write-out
FAIL 2082: 'Pre-request callback for HTTP' HTTP, libtest
FAIL 2083: 'Pre-request callback for FTP' FTP, libtest
FAIL 2084: 'Pre-request callback for HTTP with callback terminating transfer' HTTP, libtest
FAIL 2085: 'Pre-request callback for HTTP with location following' HTTP, followlocation, libtest
FAIL 2086: 'Pre-request callback for HTTP IPv6' HTTP, IPv6, libtest
FAIL 2091: 'HTTP Digest auth with OWS and escaped quotes' HTTP, HTTP GET, HTTP Digest auth
FAIL 2092: 'glob range that ends with 9223372036854775807' globbing
FAIL 2093: 'HTTP POST a few bytes with 2^63-1 bytes response' HTTP, HTTP GET
FAIL 2105: 'HTTP with spurious CR in received header' HTTP, HTTP GET
FAIL 2106: 'HTTP chunked response with a NUL byte in the trailer' HTTP, HTTP GET, chunked Transfer-Encoding
FAIL 2107: 'HTTP CONNECT response with a NUL byte in a header' HTTP, HTTP CONNECT, HTTP proxy, proxytunnel
FAIL 2108: 'FTP rejects a NUL byte in a server response line' FTP
FAIL 2109: 'MQTT rejects a control byte in the topic' MQTT, MQTT SUBSCRIBE
FAIL 2110: 'SMTP --mail-from with embedded CRLF is rejected' SMTP
FAIL 2113: 'Authorization: with whitespace before colon and redir to new host' HTTP, HTTP proxy, HTTP Basic auth, HTTP proxy Basic auth, followlocation
FAIL 2114: 'FTP username with embedded CRLF is rejected' FTP
FAIL 2115: 'FTP --ftp-account with embedded CRLF is rejected' FTP, ACCT
FAIL 2116: 'FTP --ftp-alternative-to-user with embedded CRLF is rejected' FTP, --ftp-alternative-to-user
FAIL 2119: 'Reject unsolicited Transfer-Encoding token with an identity prefix' HTTP, Transfer-Encoding
FAIL 2173: 'HTTP over proxy-tunnel with site wrong 401 response' HTTP, HTTP GET, HTTP CONNECT, HTTP Basic auth, proxytunnel
FAIL 2200: 'MQTT SUBSCRIBE with user and password, not authorized' MQTT, MQTT SUBSCRIBE
FAIL 2201: 'MQTT PUBLISH with user and password valid' MQTT, MQTT PUBLISH
FAIL 2202: 'MQTT PUBLISH with invalid user and password' MQTT, MQTT PUBLISH
FAIL 2203: 'MQTT with "no user or password" CONNACK' MQTT, MQTT SUBSCRIBE
FAIL 2204: 'MQTT SUBSCRIBE with user and password' MQTT, MQTT SUBSCRIBE
FAIL 2205: 'MQTT with 64 KiB long username' MQTT, MQTT SUBSCRIBE
FAIL 2206: 'MQTT reject PINGRESP with nonzero remaining_length in place of CONNACK' MQTT, MQTT SUBSCRIBE
FAIL 2207: 'MQTT reject DISCONNECT with nonzero remaining_length' MQTT, MQTT SUBSCRIBE
FAIL 2208: 'HTTP auth on redirect with empty URL userinfo' HTTP, HTTP proxy, --location, HTTP Basic auth
FAIL 2270: 'reject HTTP form and MIME upload resume' HTTP, HTTP POST, HTTP MIME, Resume, libtest
FAIL 2271: 'reject automatic HTTP data upload resume' HTTP, HTTP POST, Resume, error detection
FAIL 2272: 'reject automatic HTTP form upload resume' HTTP, HTTP POST, HTTP MIME, Resume, error detection
FAIL 2305: 'HTTP GET gzip compressed content with two concatenated gzip members' HTTP, HTTP GET, compressed
FAIL 2306: 'HTTP GET reused handle with first header folded' HTTP, HTTP GET, libtest
FAIL 2307: 'FTP retrieve a byte-range with end larger than file' FTP, EPSV, RETR, Range
FAIL 2308: 'verify return code when write callback returns error' HTTP, HTTP GET, libtest
FAIL 2309: 'HTTP with .netrc using duped easy handle' netrc, HTTP, libtest
FAIL 2310: 'variable decode and trim' variables
FAIL 2311: 'Cookie from file: control octet rejected, prefixes case sensitive' HTTP, HTTP GET, HTTP proxy, cookies
FAIL 2318: 'Get cookies from PSL domain then use *.domain' cookies
FAIL 2330: 'FTP server response timeout with the socket action API' FTP, timeout, multi_socket, libtest
FAIL 2380: 'curl_mprintf errors on out of space' libtest, curl_mprintf errors
FAIL 2397: 'Get CURLINFO_REFERER set CURLOPT_REFERER' CURLINFO_REFERER, CURLOPT_REFERER, libtest
FAIL 2405: 'checking curl_multi_waitfds functionality' multi, HTTP, libtest
FAIL 2408: 'multiple requests using named {} globs in URL' HTTP, HTTP GET, globbing, {} list
FAIL 2409: 'multiple requests using named [] globs in URL' HTTP, HTTP GET, globbing, {} list
FAIL 2410: 'duplicate named glob' HTTP, HTTP GET, globbing, {} list
FAIL 2411: 'reference a named glob not set' HTTP, HTTP GET, globbing, {} list
FAIL 2412: 'checking curl_multi_fdset on nothing to do' multi, libtest
FAIL 2413: 'Curl_peer unit tests' unittest, Curl_peer
FAIL 2414: 'wakeup, perform and poll needs to exit' multi, wakeup, libtest
FAIL 2415: 'reference a named glob with a literal URL' HTTP, HTTP GET, globbing
FAIL 2429: 'use netrc file with only comments' netrc
FAIL 2453: 'CURLMINFO_XFERS_DONE tracks unread completion messages' HTTP, HTTP GET, CURLMINFO_XFERS_DONE, curl_multi_info_read, libtest
FAIL 2504: 'custom Host with cookie, handle reuse, no custom Host:' HTTP, cookies, libtest
FAIL 2505: 'verify CURLOPT_AUTOREFERER switched off' HTTP, referer, autoreferer, libtest
FAIL 2506: 'netrc with redirect using proxy' HTTP, cookies, libtest
FAIL 2582: 'Get cookies from jar using single-component domain name' cookies
FAIL 2601: 'bufq unit tests' unittest, bufq
FAIL 2602: 'dynhds unit tests' unittest, dynhds
FAIL 2603: 'http1 parser unit tests' unittest, http1
FAIL 2604: 'Curl_get_pathname unit test' unittest
FAIL 2605: 'Curl_ssh_range unit test' unittest, sftp
FAIL 2606: 'Curl_conn_adjust_pollset unit test' unittest
FAIL 2805: 'FTP wildcards with percent sign in file name' FTP, LIST, wildcardmatch, ftplistparser, libtest
FAIL 2824: 'HTTP proxy CONNECT 2 407s, chunked-encoded and 0-length' HTTP, HTTP GET, HTTP CONNECT, HTTP proxy, HTTP proxy Digest auth, chunked Transfer-Encoding
FAIL 2918: 'Ignore content-length with Transfer-Encoding' HTTP, HTTP GET, Transfer-Encoding, --raw
FAIL 2924: 'CURLOPT_HTTP_TRANSFER_DECODING, chunked + Content-Length' CURLOPT_HTTP_TRANSFER_DECODING, chunked Transfer-Encoding, libtest
FAIL 3002: 'SMTP invalid (first) --mail-rcpt and --mail-rcpt-allowfails' SMTP
FAIL 3003: 'SMTP invalid (last) --mail-rcpt and --mail-rcpt-allowfails' SMTP
FAIL 3004: 'SMTP invalid (middle) --mail-rcpt and --mail-rcpt-allowfails' SMTP
FAIL 3005: 'SMTP invalid (all but one) --mail-rcpt and --mail-rcpt-allowfails' SMTP
FAIL 3006: 'SMTP invalid (all) --mail-rcpt and --mail-rcpt-allowfails' SMTP
FAIL 3007: 'SMTP with invalid --mail-rcpt and --mail-rcpt-allowfails' SMTP
FAIL 3008: '--output-dir' -O
FAIL 3009: '--output-dir a non-existing directory' -O
FAIL 3010: 'HTTP retry-after reset' HTTP, HTTP Basic, RETRY-AFTER, libtest
FAIL 3011: '--output-dir with --create-dirs' -O
FAIL 3012: '--output-dir with -J and -R' -O, -J, --output-dir, --remote-time
FAIL 3013: 'Two --output-dir with --next in between' -O, -J, --output-dir
FAIL 3014: 'Check if %{num_headers} returns correct number of headers' HTTP, --write-out
FAIL 3015: 'HTTP GET -w num_headers with redirected fetch (2 connects)' HTTP, HTTP GET, followlocation, chunked Transfer-Encoding, --write-out
FAIL 3016: 'Get current directory using file://' FILE
FAIL 3017: 'MQTT SUBSCRIBE with pathological PUBLISH length' MQTT, MQTT SUBSCRIBE
FAIL 3018: 'MQTT SUBSCRIBE with PUBLISH larger than --max-filesize' MQTT, MQTT SUBSCRIBE, --max-filesize
FAIL 3019: 'HTTP with invalid --resolve syntax' HTTP, HTTP GET, --resolve
FAIL 3020: 'HTTP with invalid --connect-to syntax' HTTP, HTTP GET, --connect-to
FAIL 3025: 'CURLOPT_HTTP200ALIASES' HTTP, HTTP GET, libtest
FAIL 3026: 'curl_global_init thread-safety' curl_global_init, thread-safe, slow, libtest
FAIL 3027: 'Get a file via FTP but 550 after MDTM command' FTP, CURLOPT_FILETIME, MDTM fail, libtest
FAIL 3028: 'HTTP GET when PROXY Protocol enabled behind a proxy' HTTP, HTTP CONNECT
FAIL 3029: 'HTTP with multiple -D' HTTP
FAIL 3030: 'HTTP with multiple transfers in one -D' HTTP
FAIL 3031: '--dump-header with --create-dirs' --dump-header
FAIL 3032: 'HTTP redirect loop 3x swsbounce test' HTTP, --location
FAIL 3033: 'CURLOPT_FRESH_CONNECT=2' curl_easy_setopt, connection reuse, libtest
FAIL 3034: 'Test reset resolves rewind failure' CURLOPT_READFUNCTION, curl_easy_reset, rewind, libtest
FAIL 3035: 'HTTP retry failed download with keep data and auto-resume' HTTP, HTTP GET, Content-Range, Resume, retry
FAIL 3036: '--no-clobber, --retry and --output-dir identifying a file' -O, -J, --output-dir, --retry, --no-clobber
FAIL 3037: 'Do not open output for 103 Early Hints with -J and --show-headers' HTTP, HTTP GET, 103, Early Hints, -J, --show-headers
FAIL 3038: 'Do not open output for ETag with -J, --show-headers, --etag-save' HTTP, HTTP GET, ETag, --etag-save, -J, --show-headers
FAIL 3100: 'RTSP Authentication check' RTSP, RTSP Basic auth, libtest
FAIL 3101: 'HTTP auth without redirection protocols' HTTP, HTTP Basic auth, libtest
FAIL 3103: 'CURLOPT_COOKIELIST without expiry' cookies, libtest
FAIL 3104: 'CURLOPT_COOKIELIST with Netscape format' cookies, libtest
FAIL 3105: 'curl_multi_remove_handle twice' curl_multi_remove_handle, libtest
FAIL 3107: 'reject internal easy handle passed to a notify callback' HTTP, HTTP GET, multi, curl_multi_remove_handle, libtest
FAIL 3200: 'curl_get_line unit tests' unittest, curl_get_line
FAIL 3201: 'HTTP GET when PROXY Protocol enabled and spoofed client IPv4' HTTP, HTTP GET, proxy, haproxy
FAIL 3202: 'HTTP-IPv6 GET with PROXY protocol with spoofed client IP' HTTP, HTTP GET, proxy, haproxy, IPv6
FAIL 3203: 'Get a directory using file://' FILE
FAIL 3204: 'Use --etag-compare and --etag-save on an existing file' HTTP, HTTP GET
FAIL 3205: 'cipher suite name lookup' unittest, cipher_suite
FAIL 3206: 'IMAP custom FETCH with larger literal response (~7KB)' IMAP, Clear Text, FETCH, CUSTOMREQUEST
FAIL 3209: 'Upload message via IMAP with upload flags' IMAP, Clear Text, APPEND, UPLOAD
FAIL 3210: 'Upload message unread via IMAP' IMAP, Clear Text, APPEND, UPLOAD
FAIL 3211: 'uint_bset, u8_strset, u32_ptrset and ptrarray unit tests' unittest, uint_bset, u8_strset, u32_ptrset, ptrarray
FAIL 3212: 'uint32_tbl unit tests' unittest, uint32_tbl
FAIL 3213: 'uint_spbset unit tests' unittest, uint_spbset
FAIL 3214: 'struct size checks' unittest, size
FAIL 3215: 'SMTP DSN' SMTP DSN
FAIL 3216: 'ratelimit unit tests' unittest, ratelimit
FAIL 3217: 'FTP with control characters in PWD response' FTP, PASV, RETR
FAIL 3218: 'FTP with CR control character in PWD response path' FTP, PASV, RETR
FAIL 3219: 'CURLPROTO_MASK checks' unittest, define
FAIL 3220: 'HTTP GET when PROXY Protocol enabled and spoofed client IPv6' HTTP, HTTP GET, proxy, haproxy
FAIL 3221: 'HTTP Digest with CRLF in username' HTTP, HTTP GET, digest
FAIL 3223: 'HTTP connection not reused after partial/aborted response' HTTP, HTTP GET, CURLE_PARTIAL_FILE, connection reuse, --next
FAIL 3224: 'HTTP connection reused across different Basic auth credentials' HTTP, HTTP GET, HTTP Basic auth, connection reuse, --next
FAIL 3225: 'HTTP connection not reused when target host changes' HTTP, HTTP GET, --resolve, connection reuse, --next
FAIL 3226: 'HTTP connection is reused for same host' HTTP, HTTP GET, connection reuse, --next
FAIL 3227: 'reject CR and LF in mail mime part name and filename' unittest, mime, SMTP
FAIL 3228: 'Send custom request headers larger than the response header limit' HTTP, HTTP GET, HTTP added headers
FAIL 3229: 'Reject a custom request header larger than the request buffer' HTTP, HTTP GET, HTTP added headers
FAIL 3230: 'multi timer unit tests' unittest, multi
FAIL 3231: 'CONNECT_ONLY survives the per-host connection limit' HTTP, CONNECT_ONLY, CURLMOPT_MAX_HOST_CONNECTIONS, libtest
FAIL 3232: 'CONNECT_ONLY survives the total connection limit' HTTP, CONNECT_ONLY, CURLMOPT_MAX_TOTAL_CONNECTIONS, libtest
FAIL 3233: 'RTSP session id is not sent to another origin after a redirect' RTSP, SESSION_ID, followlocation, libtest
FAIL 3234: 'CONNECT_ONLY forgets connection when attaching a shared pool' HTTP, CONNECT_ONLY, CURLOPT_SHARE, libtest
FAIL 3271: 'CURLOPT_RESOLVE override' unittest, CURLOPT_RESOLVE
FAIL 3300: 'thrdpool unit tests' unittest, threads
FAIL 3301: 'thrdqueue unit tests' unittest, threads
FAIL 3302: 'CURLOPT_GSSAPI_DELEGATION stores flags in data->set' unittest, CURLOPT_GSSAPI_DELEGATION
FAIL 3303: 'conn-reuse distinguishes mTLS key, cert_type, key_type and key_passwd' unittest, TLS, mTLS
FAIL 3304: 'TLS session cache peer key uses mTLS key, key_type and cert_type' unittest, TLS, mTLS
FAIL 3400: 'capsule protocol encode and decode unit tests' unittest, capsule
FAIL 3555: 'Basic TELNET negotiation over HTTP proxy' TELNET, UPLOAD, proxy
FAIL 3595: 'curl_mime_free' mime, libtest
FAIL 3596: 'Curl_mime_prepare_headers' mime, libtest
FAIL 4039: '--proto-default http with an invalid URL' --proto-default
FAIL 4040: '--proto-default file and invalid URL' --proto-default
FAIL 4644: '--no-clobber with extension and an added number' --no-clobber
FAIL 4781: 'weekday, month name and timezone parsers' unittest, weekday, day, monthname
FAIL 5029: '-w IP info and connect time after TLS handshake timeout' HTTPS, connect timeout
FAIL 5030: '-w IP info and connect time after failed TLS handshake' HTTPS, FTP

TESTFAIL: These test cases failed: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 71 72 73 74 75 77 78 79 80 82 83 84 85 86 87 88 92 93 94 95 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 151 152 153 154 156 157 158 160 161 163 164 165 166 167 168 171 172 173 174 175 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 210 211 212 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 240 241 242 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 266 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 314 315 316 317 318 319 320 321 322 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 357 360 361 362 365 366 367 368 369 370 371 372 373 374 376 378 379 380 381 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 402 405 409 411 415 416 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 434 435 436 440 441 442 443 444 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 467 468 469 470 471 473 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 507 508 509 510 511 512 513 514 515 516 517 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 549 550 551 552 553 554 556 557 559 561 562 563 564 565 566 567 568 569 570 571 572 574 575 576 577 578 579 580 581 584 585 586 588 589 591 592 593 595 596 597 598 599 632 643 645 646 647 648 649 650 651 652 653 654 655 657 658 659 660 661 662 663 666 667 668 669 670 671 672 673 674 675 676 677 679 680 681 682 683 684 685 686 689 690 691 692 693 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 746 747 748 749 750 751 752 754 755 756 757 759 760 761 762 763 764 765 767 768 769 770 771 772 773 774 778 779 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 824 825 826 828 829 830 833 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 870 871 872 874 875 876 879 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 908 909 910 911 912 913 914 915 916 917 918 919 920 922 923 924 925 926 927 928 929 930 931 932 935 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 962 963 964 965 966 967 968 969 973 974 975 976 977 978 979 980 981 982 983 984 985 986 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1022 1023 1024 1025 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1098 1099 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1114 1115 1116 1117 1118 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1136 1137 1138 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1164 1166 1168 1170 1171 1172 1174 1176 1178 1180 1181 1183 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1210 1212 1213 1214 1216 1217 1218 1219 1220 1221 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1273 1274 1277 1278 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1308 1309 1310 1311 1312 1313 1314 1315 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1447 1448 1449 1450 1452 1453 1455 1456 1457 1458 1460 1462 1463 1464 1465 1466 1467 1468 1469 1471 1472 1473 1474 1475 1476 1479 1480 1481 1482 1483 1484 1485 1487 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1511 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1584 1585 1588 1589 1590 1591 1593 1594 1595 1596 1597 1598 1599 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1633 1634 1635 1636 1637 1638 1639 1641 1642 1643 1644 1645 1646 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1679 1680 1681 1682 1684 1685 1686 1687 1688 1691 1692 1693 1704 1711 1712 1713 1714 1715 1720 1721 1722 1723 1724 1740 1741 1742 1743 1744 1745 1791 1800 1802 1827 1847 1848 1851 1876 1877 1900 1901 1902 1903 1904 1905 1906 1907 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1940 1941 1942 1943 1944 1945 1946 1947 1948 1960 1961 1964 1965 1966 1967 1977 1979 1980 1982 1983 1984 1985 1989 2000 2001 2002 2003 2005 2006 2008 2012 2013 2014 2015 2023 2024 2026 2027 2036 2039 2040 2044 2045 2046 2047 2049 2050 2051 2052 2053 2054 2055 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2071 2072 2073 2074 2075 2076 2077 2078 2080 2081 2082 2083 2084 2085 2086 2091 2092 2093 2105 2106 2107 2108 2109 2110 2113 2114 2115 2116 2119 2173 2200 2201 2202 2203 2204 2205 2206 2207 2208 2270 2271 2272 2305 2306 2307 2308 2309 2310 2311 2318 2330 2380 2397 2405 2408 2409 2410 2411 2412 2413 2414 2415 2429 2453 2504 2505 2506 2582 2601 2602 2603 2604 2605 2606 2805 2824 2918 2924 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3100 3101 3103 3104 3105 3107 3200 3201 3202 3203 3204 3205 3206 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3271 3300 3301 3302 3303 3304 3400 3555 3595 3596 4039 4040 4644 4781 5029 5030

make[1]: *** [Makefile:842: nonflaky-test] Error 1
make[1]: Leaving directory '/startdir/src/build-curl/tests'
make: *** [Makefile:1168: test-nonflaky] Error 2
==> ERROR: A failure occurred in check().
    Aborting...
==> ERROR: Build failed, check /home/alhp/workspace/chroot/build_f62e1791-16a7-4f93-aad6-5e37beb0122b/build
